{"id":16258436,"date":"2025-04-24T05:03:09","date_gmt":"2025-04-24T09:03:09","guid":{"rendered":"https:\/\/moovair.com\/?page_id=16258436"},"modified":"2026-02-25T11:37:42","modified_gmt":"2026-02-25T16:37:42","slug":"morelis-heat-pump","status":"publish","type":"page","link":"https:\/\/moovair.com\/en-ca\/morelis-heat-pump\/","title":{"rendered":"Morelis Heat Pump (Ultimate)"},"content":{"rendered":"<p>[et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;d50c1bc5-13b0-4764-b297-558025908a7b&#8221; background_image=&#8221;https:\/\/moovair.com\/wp-content\/uploads\/Moovair-Morelis-Desktop-Banner-1.png&#8221; background_position=&#8221;top_center&#8221; min_height=&#8221;545px&#8221; min_height_phone=&#8221;auto&#8221; height_last_edited=&#8221;off|phone&#8221; hover_enabled=&#8221;0&#8243; background_image_tablet=&#8221;https:\/\/moovair.com\/wp-content\/uploads\/Moovair-Morelis-Desktop-Banner-1.png&#8221; background_image_phone=&#8221;https:\/\/moovair.com\/wp-content\/uploads\/Moovair-Morelis-Mobile-Banner-1.png&#8221; background_position_tablet=&#8221;top_right&#8221; global_colors_info=&#8221;{}&#8221; min_height_last_edited=&#8221;on|phone&#8221; sticky_enabled=&#8221;0&#8243; min_height_tablet=&#8221;545px&#8221;][et_pb_row column_structure=&#8221;3_5,2_5&#8243; custom_padding_last_edited=&#8221;on|phone&#8221; _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; background_color=&#8221;rgba(41,48,60,0.85)&#8221; max_width=&#8221;1360px&#8221; max_width_tablet=&#8221;600px&#8221; max_width_phone=&#8221;80%&#8221; max_width_last_edited=&#8221;on|tablet&#8221; module_alignment=&#8221;center&#8221; custom_margin_tablet=&#8221;0px||||false|false&#8221; custom_margin_phone=&#8221;20px||||false|false&#8221; custom_margin_last_edited=&#8221;on|phone&#8221; custom_padding=&#8221;20px||20px|5px|false|false&#8221; custom_padding_tablet=&#8221;20px||20px|5px|false|false&#8221; custom_padding_phone=&#8221;20px||||false|false&#8221; custom_css_main_element=&#8221;display: flex;||justify-content: center;||align-items: center;&#8221; global_colors_info=&#8221;{}&#8221; custom_css_main_element_last_edited=&#8221;on|phone&#8221; custom_css_main_element_phone=&#8221;display: block;&#8221; custom_css_main_element_tablet=&#8221;display: flex;||justify-content: center;||align-items: center;&#8221;][et_pb_column type=&#8221;3_5&#8243; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; header_font=&#8221;Cera Pro Black|900||on|||||&#8221; header_text_color=&#8221;#FFFFFF&#8221; header_font_size=&#8221;70px&#8221; header_2_font=&#8221;Cera Pro|700||on|||||&#8221; header_2_text_color=&#8221;#FFFFFF&#8221; header_2_font_size=&#8221;42px&#8221; header_3_text_color=&#8221;#FFFFFF&#8221; header_3_font_size=&#8221;28px&#8221; header_3_line_height=&#8221;1.1em&#8221; background_color=&#8221;RGBA(255,255,255,0)&#8221; custom_padding=&#8221;|||25px|false|false&#8221; custom_padding_tablet=&#8221;0px|25px|||false|false&#8221; custom_padding_phone=&#8221;|15px||15px|false|false&#8221; custom_padding_last_edited=&#8221;on|phone&#8221; animation_style=&#8221;fade&#8221; header_font_size_tablet=&#8221;48px&#8221; header_font_size_phone=&#8221;28px&#8221; header_font_size_last_edited=&#8221;on|tablet&#8221; header_2_font_size_phone=&#8221;24px&#8221; header_3_font_size_tablet=&#8221;24px&#8221; header_3_font_size_phone=&#8221;20px&#8221; header_3_font_size_last_edited=&#8221;on|desktop&#8221; global_colors_info=&#8221;%91%93&#8243;]<\/p>\n<p><!--<\/p>\n\n\n\n\n<h1>Morelis (Ultimate)<\/h1>\n\n\n\n\n<h2>Ultimate comfort &amp; efficiency<\/h2>\n\n\n\n\n<h3>Up to 29.4 SEER2 | 12.9 HSPF2 Region 5 | Heating to -30\u00b0C<\/h3>\n\n\n\n\n<p>--><br \/><span style=\"font-family: 'Cera Pro Black', Helvetica, Arial, Lucida, sans-serif; font-weight: 900; text-transform: uppercase; line-height: 1; font-size: 2.8rem; color: #ffffff !important;\">Morelis <span style=\"font-family: Cera Pro;\">(Ultimate)<\/span> <\/span><\/p>\n<p style=\"padding-bottom: 20px; line-height: 1; font-family: 'Cera Pro', Helvetica, Arial, Lucida, sans-serif; font-weight: bold; text-transform: uppercase; font-size: 2rem; color: #ffffff !important;\">Ultimate comfort &amp; efficiency<\/p>\n<p style=\"font-size: 1.2rem; color: #ffffff !important; line-height: 1.1em;\">Up to 29.4 SEER2 | 12.9 HSPF2 Region 5 | Heating to -30\u00b0C<\/p>\n<p>[\/et_pb_text][\/et_pb_column][et_pb_column type=&#8221;2_5&#8243; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_image src=&#8221;https:\/\/moovair.com\/wp-content\/uploads\/Moovair_Morelis_Unit-2.png&#8221; alt=&#8221;Moovair &#8211; Moralis Heat Pump&#8221; title_text=&#8221;Moovair_Morelis_Unit&#8221; _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; width=&#8221;500px&#8221; width_tablet=&#8221;500px&#8221; width_phone=&#8221;500px&#8221; width_last_edited=&#8221;on|desktop&#8221; max_width=&#8221;100%&#8221; max_width_tablet=&#8221;50%&#8221; max_width_phone=&#8221;75%&#8221; max_width_last_edited=&#8221;on|phone&#8221; module_alignment=&#8221;center&#8221; custom_padding=&#8221;|10px|||false|false&#8221; custom_padding_tablet=&#8221;|0px|||false|false&#8221; custom_padding_phone=&#8221;|0px|||false|false&#8221; custom_padding_last_edited=&#8221;on|desktop&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; custom_padding_last_edited=&#8221;off|phone&#8221; _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;cbebb943-82e8-4ec0-947d-cf77e34c50de&#8221; height_tablet=&#8221;auto&#8221; height_phone=&#8221;auto&#8221; custom_margin=&#8221;0px|0px|0px|0px|false|false&#8221; custom_margin_last_edited=&#8221;off|phone&#8221; custom_padding=&#8221;10px|0px|10px|0px|false|false&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_row _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; custom_padding=&#8221;||||false|false&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; header_font=&#8221;||||on|||#e35425|&#8221; header_font_size=&#8221;44px&#8221; header_2_font=&#8221;|700||||||#e35425|solid&#8221; header_font_size_tablet=&#8221;28px&#8221; header_font_size_phone=&#8221;30px&#8221; header_font_size_last_edited=&#8221;on|desktop&#8221; global_colors_info=&#8221;%91%93&#8243;]<\/p>\n<h1 style=\"font-size: 2.8rem; text-decoration: none; text-transform: uppercase; display: inline-block; padding-bottom: 4px;\">Moovair Morelis Heat Pump:<br \/>\n<span style=\"font-size: 0.8em; text-decoration-style: solid; text-decoration-color: #e35425;\">Redefine Home Comfort &amp; Energy Efficiency for Canadian Winters<\/span><\/h1>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row column_structure=&#8221;1_2,1_2&#8243; _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_code _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<style class=\"wpcode-css-snippet\">:not(:defined)>* {\r\n    display: none;\r\n}\r\n\r\n.test-div {\r\n  width: 80%;\r\n  height: 80%;\r\n}\r\n\r\n\r\n\/* Responsive model-viewer *\/\r\nmodel-viewer {\r\n    width: 100%;\r\n    max-width: 640px;\r\n    height: auto;\r\n    aspect-ratio: 4 \/ 3; \/* Keeps proper proportions on all screens *\/\r\n    margin: 0 auto;\r\n    border-radius: 10px;\r\n    background-color: #fff;\r\n    box-sizing: border-box;\r\n    position: relative;\r\n}\r\n\r\n\/* Tablet *\/\r\n@media (min-width: 768px) and (max-width: 1024px) {\r\n    model-viewer {\r\n        width: 90%;\r\n        max-width: 720px;\r\n        aspect-ratio: 4 \/ 3;\r\n    }\r\n}\r\n\r\n\/* Desktop *\/\r\n@media (min-width: 1025px) {\r\n    model-viewer {\r\n        width: 680px;\r\n        height: 540px; \/* Desktop fixed size *\/\r\n        aspect-ratio: unset;\r\n    }\r\n}\r\n\r\n#ar-button {\r\n    background-image: url(https:\/\/cdn2.moovair.com\/ar\/_assets\/ic_view_in_ar_new_googblue_48dp.png);\r\n    background-repeat: no-repeat;\r\n    background-size: 20px 20px;\r\n    background-position: 12px 50%;\r\n    background-color: #fff;\r\n    position: absolute;\r\n    left: 50%;\r\n    transform: translateX(-50%);\r\n    white-space: nowrap;\r\n    bottom: 20px;\r\n    padding: 0px 16px 0px 40px;\r\n    font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", sans-serif;\r\n    font-size: 14px;\r\n    font-weight: 500;\r\n    color: #4285f4;\r\n    height: 36px;\r\n    line-height: 36px;\r\n    border-radius: 18px;\r\n    border: 1px solid #DADCE0;\r\n}\r\n\r\n#ar-button:active {\r\n    background-color: #E8EAED;\r\n}\r\n\r\n#ar-button:focus {\r\n    outline: none;\r\n}\r\n\r\n#ar-button:focus-visible {\r\n    outline: 1px solid #4285f4;\r\n}\r\n\r\n#logo-overlay {\r\n    position: absolute;\r\n    \/* KEY CHANGE: Reduced bottom padding from 20px to 10px *\/\r\n    bottom: -42px;\r\n    right: 10px;\r\n    width: 80px;\r\n    height: 80px;\r\n    object-fit: contain;\r\n    border-radius: 8px;\r\n    pointer-events: none;\r\n}\r\n\r\n.sel {\r\n  margin-top: -15px;\r\n  margin-left: 30px;\r\n  float: left;\r\n  width: 30vw;\r\n  \/* position: absolute; *\/\r\n  \/* display: inline-block; *\/\r\n  \/* left: 175px; *\/\r\n  \/* font-family: Arial, Helvetica, sans-serif; *\/\r\n  \/* background-color: rgb(147, 200, 147); *\/\r\n}\r\n\r\n.label {    \/* capacity *\/\r\n  \/* background-color: red; *\/\r\n  \/* display: inline-block; *\/\r\n  \/* height: 20px; *\/\r\n  \/* width: 78px; *\/\r\n  \/* width: 50vw; *\/\r\n  width: 100%;\r\n  text-align: left;\r\n  vertical-align: middle;\r\n  margin-bottom: 8px;\r\n  font-size: 1.8vh;\r\n  float: left;\r\n  clear: both;\r\n  \/* height: 50%; *\/\r\n\r\n  }\r\n\r\n.dropdown {\r\n  float: left;\r\n  background-color: white;\r\n  clear: both;\r\n  height: 2.5vh;\r\n  \/* width: 50vw; *\/\r\n  \/* width: 100%; *\/\r\n  \/* font-size: 1rem; *\/\r\n  font-size: 1.6vh;\r\n}\r\n\r\n.dropdown option {\r\n   \/* font-size: 1rem; *\/\r\n   font-size: 11pt;\r\n   \/* font-size: 1.6vh; *\/\r\n}\r\n\r\n.btns {\r\n  \/* position: relative; *\/\r\n  position: absolute;\r\n  \/* width: 90%; *\/\r\n  \/* width: 100px; *\/\r\n  \/* height: 50px; *\/\r\n  height: 5vh;\r\n  width: 100vw;\r\n  bottom: 0;\r\n  margin-bottom: 0;\r\n  \/* background-color: rgb(115, 0, 255); *\/\r\n  overflow: visible;\r\n margin-bottom:30px;\r\n}\r\n\r\n\/* measure button *\/\r\n.b1, .b2, .b3 {   \r\n  \/* position: absolute; *\/\r\n  \/* display: inline-block; *\/\r\n  \/* left: 110px; *\/\r\n  margin-left: 30px;\r\n  float: left;\r\n  white-space: nowrap;\r\n  height: 100%;\r\n}\r\n\r\n  .dot {\r\n    display: none;\r\n  }\r\n  \r\n  .glass {\r\n    background: rgba(255, 255, 255, 0.37);\r\n    backdrop-filter: blur(8px) contrast(0.89) saturate(1.27);\r\n    -webkit-backdrop-filter: blur(8px) contrast(0.89) saturate(1.27);\r\n    border: 1px solid rgba(255, 255, 255, 0.4);\r\n    padding: 0.5rem;\r\n    border-radius: 0.5rem;\r\n  }\r\n  \r\n  .dim {\r\n    border-radius: 4px;\r\n    border: none;\r\n    box-sizing: border-box;\r\n    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.25);\r\n    color: rgba(0, 0, 0, 0.8);\r\n    display: block;\r\n    font-family: Futura, Helvetica Neue, sans-serif;\r\n    \/* font-size: 1em; *\/\r\n    font-size: 1.6vh;\r\n    font-weight: 700;\r\n    max-width: 128px;\r\n    overflow-wrap: break-word;\r\n    padding: 8px;\r\n    position: absolute;\r\n    width: max-content;\r\n    height: max-content;\r\n    transform: translate3d(-50%, -50%, 0);\r\n    pointer-events: none;\r\n    --min-hotspot-opacity: 0;\r\n  }\r\n  \r\n  \/* @media only screen and (max-width: 800px) {\r\n    .dim {\r\n      font-size: 3vw;\r\n    }\r\n  } *\/\r\n  \r\n  .dimensionLineContainer {\r\n    pointer-events: none;\r\n    display: block;\r\n  }\r\n  \r\n  .dimensionLine {\r\n    stroke: #16a5e6;\r\n    stroke-width: 2;\r\n    stroke-dasharray: 2;\r\n  }\r\n  \r\n  .hide {\r\n    display: none;\r\n  }\r\n\r\n  :not(:defined)>* {\r\n    display: none;\r\n  }\r\n  \r\n  #ar-button {\r\n    background-image: url(https:\/\/cdn2.moovair.com\/ar\/_assets\/ic_view_in_ar_new_googblue_48dp.png);\r\n    background-repeat: no-repeat;\r\n    background-size: 20px 20px;\r\n    background-position: 12px 50%;\r\n    background-color: #fff;\r\n    position: absolute;\r\n    left: 50%;\r\n    transform: translateX(-50%);\r\n    white-space: nowrap;\r\n    bottom: 132px;\r\n    padding: 0px 16px 0px 40px;\r\n    font-family: Roboto Regular, Helvetica Neue, sans-serif;\r\n    font-size: 14px;\r\n    color:#4285f4;\r\n    height: 36px;\r\n    line-height: 36px;\r\n    border-radius: 18px;\r\n    border: 1px solid #DADCE0;\r\n  }\r\n\r\n  #ar-button:active {\r\n    background-color: #E8EAED;\r\n  }\r\n\r\n  #ar-button:focus {\r\n    outline: none;\r\n  }\r\n\r\n  #ar-button:focus-visible {\r\n    outline: 1px solid #4285f4;\r\n  }\r\n\r\n  @keyframes circle {\r\n    from { transform: translateX(-50%) rotate(0deg) translateX(50px) rotate(0deg); }\r\n    to   { transform: translateX(-50%) rotate(360deg) translateX(50px) rotate(-360deg); }\r\n  }\r\n\r\n  @keyframes elongate {\r\n    from { transform: translateX(100px); }\r\n    to   { transform: translateX(-100px); }\r\n  }\r\n\r\n  model-viewer > #ar-prompt {\r\n    position: absolute;\r\n    left: 50%;\r\n    bottom: 175px;\r\n    animation: elongate 2s infinite ease-in-out alternate;\r\n    display: none;\r\n  }\r\n\r\n  model-viewer[ar-status=\"session-started\"] > #ar-prompt {\r\n    display: block;\r\n  }\r\n\r\n  model-viewer > #ar-prompt > img {\r\n    animation: circle 4s linear infinite;\r\n  }\r\n\r\n  model-viewer > #ar-failure {\r\n    position: absolute;\r\n    left: 50%;\r\n    transform: translateX(-50%);\r\n    bottom: 175px;\r\n    display: none;\r\n  }\r\n\r\n  model-viewer[ar-tracking=\"not-tracking\"] > #ar-failure {\r\n    display: block;\r\n  }<\/style>[\/et_pb_code][et_pb_code _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<!--<link rel=\"stylesheet\" href=\"https:\/\/cdn2.moovair.com\/ar\/_assets\/moovair.css\"> --><!-- [et_pb_line_break_holder] --><!--<script type=\"module\" src=\"https:\/\/cdn2.moovair.com\/ar\/_assets\/moovair.js\"><\/script> --><!-- [et_pb_line_break_holder] --><script><!-- [et_pb_line_break_holder] -->let base_URL = \"https:\/\/cdn2.moovair.com\/ar\/ar\/\";<!-- [et_pb_line_break_holder] --> \/\/ let base_URL = \"ar\/ar\/\";   \/\/ for local tests<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  let type_model = \"outdoor\";<!-- [et_pb_line_break_holder] -->  <!-- [et_pb_line_break_holder] -->  let use_two_outdoor_buttons = false;   \/\/ example: Myriad<!-- [et_pb_line_break_holder] -->  \/\/ let use_two_indoor_buttons = false;   \/\/ example: Mix moov <!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  let capacities = [];<!-- [et_pb_line_break_holder] -->  let widths = [];<!-- [et_pb_line_break_holder] -->  let deeps = [];<!-- [et_pb_line_break_holder] -->  let heights = [];<!-- [et_pb_line_break_holder] -->  let offsets = [];<!-- [et_pb_line_break_holder] -->  let explodes = [];<!-- [et_pb_line_break_holder] -->  let enable_b = [];<!-- [et_pb_line_break_holder] -->  let glbs = [];<!-- [et_pb_line_break_holder] -->  let usdz = [];<!-- [et_pb_line_break_holder] -->  let consolle = [];<!-- [et_pb_line_break_holder] -->  let cassette = [];<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/\/ TO DISABLE A DROPBOX ELEMENT ONLY SET NAME EMPTY<!-- [et_pb_line_break_holder] -->  \/\/ SET ADITIONAL ANIM TO TRUE WHEN IN A DOUBLE FAN MODEL ONLY A FAN ROTATE<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/\/ OUTDOORS 1<!-- [et_pb_line_break_holder] -->  <!-- [et_pb_line_break_holder] -->  \/\/ OUTDOOR A<!-- [et_pb_line_break_holder] -->  let outdoor_a = \"morelis_x4\";<!-- [et_pb_line_break_holder] -->  capacities[outdoor_a] = \"12K BTU\";<!-- [et_pb_line_break_holder] -->  glbs[outdoor_a] = base_URL + outdoor_a + \".glb\";<!-- [et_pb_line_break_holder] -->  usdz[outdoor_a] = base_URL + outdoor_a + \".usdz\";<!-- [et_pb_line_break_holder] -->  widths[outdoor_a ] = \"35 in\";<!-- [et_pb_line_break_holder] -->  deeps[outdoor_a] = \"13.46 in\";<!-- [et_pb_line_break_holder] -->  heights[outdoor_a] = \"26.5 in\";<!-- [et_pb_line_break_holder] -->  offsets[outdoor_a] = 0.5;<!-- [et_pb_line_break_holder] -->  explodes[outdoor_a] = false;<!-- [et_pb_line_break_holder] -->  cassette[outdoor_a] = false;<!-- [et_pb_line_break_holder] -->  consolle[outdoor_a] = false;<!-- [et_pb_line_break_holder] -->  <!-- [et_pb_line_break_holder] -->  \/\/ OUTDOOR B<!-- [et_pb_line_break_holder] -->  let outdoor_b = \"morelis_d\";<!-- [et_pb_line_break_holder] -->  capacities[outdoor_b] = \"18K BTU\";<!-- [et_pb_line_break_holder] -->  glbs[outdoor_b] = base_URL + outdoor_b + \".glb\";<!-- [et_pb_line_break_holder] -->  usdz[outdoor_b] = base_URL + outdoor_b + \".usdz\";<!-- [et_pb_line_break_holder] -->  widths[outdoor_b ] = \"31.0 in\";<!-- [et_pb_line_break_holder] -->  deeps[outdoor_b] = \"16.1 in\";<!-- [et_pb_line_break_holder] -->  heights[outdoor_b] = \"37.2 in\";<!-- [et_pb_line_break_holder] -->  offsets[outdoor_b] = 1.0;<!-- [et_pb_line_break_holder] -->  explodes[outdoor_b] = false;<!-- [et_pb_line_break_holder] -->  cassette[outdoor_b] = false;<!-- [et_pb_line_break_holder] -->  consolle[outdoor_b] = false;<!-- [et_pb_line_break_holder] -->  <!-- [et_pb_line_break_holder] -->  \/\/ OUTDOOR C<!-- [et_pb_line_break_holder] -->  let outdoor_c = \"\";<!-- [et_pb_line_break_holder] -->  capacities[outdoor_c] = \"18K\/24K BTU\";<!-- [et_pb_line_break_holder] -->  glbs[outdoor_c] = base_URL + outdoor_c + \".glb\";<!-- [et_pb_line_break_holder] -->  usdz[outdoor_c] = base_URL + outdoor_c + \".usdz\";<!-- [et_pb_line_break_holder] -->  widths[outdoor_c ] = \"40 in\";<!-- [et_pb_line_break_holder] -->  deeps[outdoor_c] = \"40 in\";<!-- [et_pb_line_break_holder] -->  heights[outdoor_c] = \"40 in\";<!-- [et_pb_line_break_holder] -->  offsets[outdoor_c] = 1.0;<!-- [et_pb_line_break_holder] -->  explodes[outdoor_c] = false;<!-- [et_pb_line_break_holder] -->  cassette[outdoor_c] = true;<!-- [et_pb_line_break_holder] -->  consolle[outdoor_c] = false;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/\/ OUTDOOR D<!-- [et_pb_line_break_holder] -->  let outdoor_d = \"\";<!-- [et_pb_line_break_holder] -->  capacities[outdoor_d] = \"\";<!-- [et_pb_line_break_holder] -->  glbs[outdoor_d] = base_URL + outdoor_d + \".glb\";<!-- [et_pb_line_break_holder] -->  usdz[outdoor_d] = base_URL + outdoor_d + \".usdz\";<!-- [et_pb_line_break_holder] -->  widths[outdoor_d ] = \"\";<!-- [et_pb_line_break_holder] -->  deeps[outdoor_d] = \"\";<!-- [et_pb_line_break_holder] -->  heights[outdoor_d] = \"\";<!-- [et_pb_line_break_holder] -->  offsets[outdoor_d] = 0.2;<!-- [et_pb_line_break_holder] -->  explodes[outdoor_d] = false;<!-- [et_pb_line_break_holder] -->  cassette[outdoor_d] = false;<!-- [et_pb_line_break_holder] -->  consolle[outdoor_d] = false;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/\/ -----------------------------------------------------------<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/\/ OUTDOORS 2  \/\/ only Myriad<!-- [et_pb_line_break_holder] -->  <!-- [et_pb_line_break_holder] -->  \/\/ OUTDOOR 2 A<!-- [et_pb_line_break_holder] -->  let outdoor_2_a = \"\";<!-- [et_pb_line_break_holder] -->  capacities[outdoor_2_a] = \"\";<!-- [et_pb_line_break_holder] -->  glbs[outdoor_2_a] = base_URL + outdoor_2_a + \".glb\";<!-- [et_pb_line_break_holder] -->  usdz[outdoor_2_a] = base_URL + outdoor_2_a + \".usdz\";<!-- [et_pb_line_break_holder] -->  widths[outdoor_2_a ] = \"35.04 in\";<!-- [et_pb_line_break_holder] -->  deeps[outdoor_2_a] = \"13.46 in\";<!-- [et_pb_line_break_holder] -->  heights[outdoor_2_a] = \"12.5 in\";<!-- [et_pb_line_break_holder] -->  offsets[outdoor_2_a] = 0.5;<!-- [et_pb_line_break_holder] -->  explodes[outdoor_2_a] = false;<!-- [et_pb_line_break_holder] -->  cassette[outdoor_2_a] = false;<!-- [et_pb_line_break_holder] -->  consolle[outdoor_2_a] = false;<!-- [et_pb_line_break_holder] -->  <!-- [et_pb_line_break_holder] -->  \/\/ OUTDOOR 2 B<!-- [et_pb_line_break_holder] -->  let outdoor_2_b = \"\";<!-- [et_pb_line_break_holder] -->  capacities[outdoor_2_b] = \"\";<!-- [et_pb_line_break_holder] -->  glbs[outdoor_2_b] = base_URL + outdoor_2_b + \".glb\";<!-- [et_pb_line_break_holder] -->  usdz[outdoor_2_b] = base_URL + outdoor_2_b + \".usdz\";<!-- [et_pb_line_break_holder] -->  widths[outdoor_2_b ] = \"035.04 in\";<!-- [et_pb_line_break_holder] -->  deeps[outdoor_2_b] = \"013.46 in\";<!-- [et_pb_line_break_holder] -->  heights[outdoor_2_b] = \"012.5 in\";<!-- [et_pb_line_break_holder] -->  offsets[outdoor_2_b] = 1.0;<!-- [et_pb_line_break_holder] -->  explodes[outdoor_2_b] = false;<!-- [et_pb_line_break_holder] -->  cassette[outdoor_2_b] = false;<!-- [et_pb_line_break_holder] -->  consolle[outdoor_2_b] = false;<!-- [et_pb_line_break_holder] -->  <!-- [et_pb_line_break_holder] -->  \/\/ OUTDOOR 2 C<!-- [et_pb_line_break_holder] -->  let outdoor_2_c = \"\";<!-- [et_pb_line_break_holder] -->  capacities[outdoor_2_c] = \"\";<!-- [et_pb_line_break_holder] -->  glbs[outdoor_2_c] = base_URL + outdoor_2_c + \".glb\";<!-- [et_pb_line_break_holder] -->  usdz[outdoor_2_c] = base_URL + outdoor_2_c + \".usdz\";<!-- [et_pb_line_break_holder] -->  widths[outdoor_2_c ] = \"40 in\";<!-- [et_pb_line_break_holder] -->  deeps[outdoor_2_c] = \"40 in\";<!-- [et_pb_line_break_holder] -->  heights[outdoor_2_c] = \"40 in\";<!-- [et_pb_line_break_holder] -->  offsets[outdoor_2_c] = 1.0;<!-- [et_pb_line_break_holder] -->  explodes[outdoor_2_c] = false;<!-- [et_pb_line_break_holder] -->  cassette[outdoor_2_c] = false;<!-- [et_pb_line_break_holder] -->  consolle[outdoor_2_c] = false;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/\/ OUTDOOR 2 D<!-- [et_pb_line_break_holder] -->  let outdoor_2_d = \"\";<!-- [et_pb_line_break_holder] -->  capacities[outdoor_2_d] = \"\";<!-- [et_pb_line_break_holder] -->  glbs[outdoor_2_d] = base_URL + outdoor_2_d + \".glb\";<!-- [et_pb_line_break_holder] -->  usdz[outdoor_2_d] = base_URL + outdoor_2_d + \".usdz\";<!-- [et_pb_line_break_holder] -->  widths[outdoor_2_d ] = \"\";<!-- [et_pb_line_break_holder] -->  deeps[outdoor_2_d] = \"\";<!-- [et_pb_line_break_holder] -->  heights[outdoor_2_d] = \"\";<!-- [et_pb_line_break_holder] -->  offsets[outdoor_2_d] = 0.2;<!-- [et_pb_line_break_holder] -->  explodes[outdoor_2_d] = false;<!-- [et_pb_line_break_holder] -->  cassette[outdoor_2_d] = false;<!-- [et_pb_line_break_holder] -->  consolle[outdoor_2_d] = false;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  \/\/ -----------------------------------------------------------<!-- [et_pb_line_break_holder] -->  <!-- [et_pb_line_break_holder] -->  \/\/ INDOOR A<!-- [et_pb_line_break_holder] -->  let indoor_a = \"m-series-wall-mounted-with-sensor\";<!-- [et_pb_line_break_holder] -->  glbs[indoor_a] = base_URL + indoor_a + \".glb\";<!-- [et_pb_line_break_holder] -->  usdz[indoor_a] = base_URL + indoor_a + \".usdz\";<!-- [et_pb_line_break_holder] --> \/\/ widths[indoor_a] = \"40 in\";<!-- [et_pb_line_break_holder] --> \/\/ deeps[indoor_a] = \"9.8 in\";<!-- [et_pb_line_break_holder] --> \/\/ heights[indoor_a] = \"12.6 in\";<!-- [et_pb_line_break_holder] -->   widths[indoor_a] = \"\";<!-- [et_pb_line_break_holder] -->  deeps[indoor_a] = \"\";<!-- [et_pb_line_break_holder] -->  heights[indoor_a] = \"\";<!-- [et_pb_line_break_holder] -->  offsets[indoor_a]  = 10;<!-- [et_pb_line_break_holder] -->  explodes[indoor_a] = true;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    \/\/ INDOOR B<!-- [et_pb_line_break_holder] -->  let indoor_b = \"\";<!-- [et_pb_line_break_holder] -->  glbs[indoor_b] = base_URL + indoor_b + \".glb\";<!-- [et_pb_line_break_holder] -->  usdz[indoor_b] = base_URL + indoor_b + \".usdz\";<!-- [et_pb_line_break_holder] -->  widths[indoor_b] = \"40 in\";<!-- [et_pb_line_break_holder] -->  deeps[indoor_b] = \"9.7 in\";<!-- [et_pb_line_break_holder] -->  heights[indoor_b] = \"26.5 in\";<!-- [et_pb_line_break_holder] -->  offsets[indoor_b]  = 10;<!-- [et_pb_line_break_holder] -->  explodes[indoor_b] = false;<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><\/script><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><model-viewer id=\"viewer\" alt=\"Moovair Morelis\" src=\"\" autoplay ar environment-image=\"https:\/\/cdn2.moovair.com\/ar\/_assets\/neutral.hdr\" poster=\"\" shadow-intensity=\"1\" camera-controls touch-action=\"pan-y\" ios-src=\"\" xr-environment><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <button slot=\"hotspot-dot+X-Y+Z\" class=\"dot\" data-position=\"1 -1 1\" data-normal=\"1 0 0\"><\/button><!-- [et_pb_line_break_holder] -->    <button slot=\"hotspot-dot+X-Y-Z\" class=\"dot\" data-position=\"1 -1 -1\" data-normal=\"1 0 0\"><\/button><!-- [et_pb_line_break_holder] -->    <button slot=\"hotspot-dot+X+Y-Z\" class=\"dot\" data-position=\"1 1 -1\" data-normal=\"0 1 0\"><\/button><!-- [et_pb_line_break_holder] -->    <button slot=\"hotspot-dot-X+Y-Z\" class=\"dot\" data-position=\"-1 1 -1\" data-normal=\"0 1 0\"><\/button><!-- [et_pb_line_break_holder] -->    <button slot=\"hotspot-dot-X-Y-Z\" class=\"dot\" data-position=\"-1 -1 -1\" data-normal=\"-1 0 0\"><\/button><!-- [et_pb_line_break_holder] -->    <button slot=\"hotspot-dot-X-Y+Z\" class=\"dot\" data-position=\"-1 -1 1\" data-normal=\"-1 0 0\"><\/button><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <button slot=\"hotspot-dim+X-Y\" class=\"dim\" data-position=\"1 -1 0\" data-normal=\"1 0 0\"><\/button><!-- [et_pb_line_break_holder] -->    <button slot=\"hotspot-dim+X-Z\" class=\"dim\" data-position=\"1 0 -1\" data-normal=\"1 0 0\"><\/button><!-- [et_pb_line_break_holder] -->    <button slot=\"hotspot-dim+Y-Z\" class=\"dim\" data-position=\"0 -1 -1\" data-normal=\"0 1 0\"><\/button><!-- [et_pb_line_break_holder] -->    <button slot=\"hotspot-dim-X-Z\" class=\"dim\" data-position=\"-1 0 -1\" data-normal=\"-1 0 0\"><\/button><!-- [et_pb_line_break_holder] -->    <button slot=\"hotspot-dim-X-Y\" class=\"dim\" data-position=\"-1 -1 0\" data-normal=\"-1 0 0\"><\/button><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <svg id=\"dimLines\" width=\"100%\" height=\"100%\" xmlns=\"https:\/\/www.w3.org\/2000\/svg\" class=\"dimensionLineContainer\"><!-- [et_pb_line_break_holder] -->      <line class=\"dimensionLine\"><\/line><!-- [et_pb_line_break_holder] -->      <line class=\"dimensionLine\"><\/line><!-- [et_pb_line_break_holder] -->      <line class=\"dimensionLine\"><\/line><!-- [et_pb_line_break_holder] -->      <line class=\"dimensionLine\"><\/line><!-- [et_pb_line_break_holder] -->      <line class=\"dimensionLine\"><\/line><!-- [et_pb_line_break_holder] -->    <\/svg><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->    <\/p>\n<div id=\"thebtns\"  class=\"btns\"><!-- [et_pb_line_break_holder] -->      <input id=\"button_outdoor_A\" class=\"b3 hide\" type=\"image\" src=\"https:\/\/cdn2.moovair.com\/ar\/_assets\/icons\/outdoor.png\"\/><!-- [et_pb_line_break_holder] -->      <input id=\"button_myriad\" class=\"b3 hide\" type=\"image\" src=\"https:\/\/cdn2.moovair.com\/ar\/_assets\/icons\/myriad.png\"\/><!-- [et_pb_line_break_holder] -->      <input id=\"button_myriad_plus\" class=\"b3 hide\" type=\"image\" src=\"https:\/\/cdn2.moovair.com\/ar\/_assets\/icons\/myriad_plus.png\"\/><!-- [et_pb_line_break_holder] -->      <input id=\"button_indoor_A\" class=\"b3\" type=\"image\" src=\"https:\/\/cdn2.moovair.com\/ar\/_assets\/icons\/indoor.png\"\/><!-- [et_pb_line_break_holder] -->      <input id=\"button_console\" class=\"b3 hide\" type=\"image\" src=\"https:\/\/cdn2.moovair.com\/ar\/_assets\/icons\/console.png\"\/><!-- [et_pb_line_break_holder] -->      <input id=\"button_cassette\" class=\"b3 hide\" type=\"image\" src=\"https:\/\/cdn2.moovair.com\/ar\/_assets\/icons\/cassette.png\"\/><!-- [et_pb_line_break_holder] -->      <input id=\"button_measure\" class=\"b1\" type=\"image\" src=\"https:\/\/cdn2.moovair.com\/ar\/_assets\/icons\/measure.png\"\/><!-- [et_pb_line_break_holder] -->      <input id=\"button_explode\" class=\"b2 hide\" type=\"image\" src=\"https:\/\/cdn2.moovair.com\/ar\/_assets\/icons\/explode.png\"\/><!-- [et_pb_line_break_holder] -->      <input id=\"button_implode\" class=\"b2 hide\" type=\"image\" src=\"https:\/\/cdn2.moovair.com\/ar\/_assets\/icons\/implode.png\"\/><!-- [et_pb_line_break_holder] -->      <\/p>\n<div id=\"sel_div\" class=\"sel hide\"><!-- [et_pb_line_break_holder] -->      <label class=\"label\">Capacity<\/label><!-- [et_pb_line_break_holder] -->      <select id=\"capacity_select\" class=\"dropdown\"><\/select><!-- [et_pb_line_break_holder] -->      <select id=\"capacity_select2\" class=\"dropdown hide\"><\/select><!-- [et_pb_line_break_holder] -->     <\/div>\n<p><!-- [et_pb_line_break_holder] -->    <\/div>\n<p><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->  <\/model-viewer>[\/et_pb_code][et_pb_code _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<script>let model_name = \"EMPTY\";\r\nlet model_url = \"EMPTY\";\r\nlet model_usdz = \"EMPTY\";\r\nlet model_glb = \"EMPTY\";\r\nlet width = \"-\";\r\nlet deep = \"-\";\r\nlet height = \"-\";\r\nlet offset = 0;\r\nlet enable_explode = false;\r\nlet center;\r\nlet size;\r\nlet offset_x;\r\nlet offset_y;\r\nlet offset_z;\r\nlet x2;\r\nlet y2;\r\nlet z2;\r\nlet actual_model = outdoor_a;\r\nlet value = outdoor_a;\r\n\r\nlet previus_model = actual_model;\r\nconsole.log(\"model glb: \" + glbs[actual_model]);\r\n\r\nlet show_dimensions = false;\r\nlet model_status = \"implode\";\r\n\r\nconst modelViewer = document.getElementById(\"viewer\");\r\ndocument.getElementById(\"viewer\").setAttribute(\"src\", glbs[actual_model]);\r\n\r\nconst sel_div = document.getElementById(\"sel_div\");\r\nconst select = document.getElementById(\"capacity_select\");\r\nconst select2 = document.getElementById(\"capacity_select2\"); \/\/ Myriad\r\nlet select_changes = 0;\r\n\r\n\/\/-----------------------------------------------------------------------------------------------------\r\n\r\nwindow.onload = function () {\r\n  console.log(\"The website is fully loaded!\");\r\n\r\n  const button_explode = document.getElementById(\"button_explode\");\r\n  const button_implode = document.getElementById(\"button_implode\");\r\n\r\n  const button_measure = document.getElementById(\"button_measure\");\r\n\r\n  const button_indoor_A = document.getElementById(\"button_indoor_A\");\r\n  const button_outdoor_A = document.getElementById(\"button_outdoor_A\");\r\n\r\n  const button_myriad = document.getElementById(\"button_myriad\");\r\n  const button_myriad_plus = document.getElementById(\"button_myriad_plus\");\r\n\r\n  const button_console = document.getElementById(\"button_console\");\r\n  const button_cassette = document.getElementById(\"button_cassette\");\r\n\r\n  sel_div.classList.remove(\"hide\");\r\n\r\n  \/\/ Myriad\r\n  if (use_two_outdoor_buttons) {\r\n    button_outdoor_A.classList.add(\"hide\");\r\n    button_indoor_A.classList.add(\"hide\");\r\n    button_myriad_plus.classList.remove(\"hide\");\r\n  } else {\r\n    \/\/ button_outdoor_A.classList.remove(\"hide\");\r\n    \/\/ button_indoor_A.classList.remove(\"hide\");\r\n    \/\/ button_myriad_plus.classList.remove(\"hide\");\r\n  }\r\n\r\n  const dimLines = modelViewer.querySelectorAll(\"line\");\r\n\r\n  const renderSVG = () => {\r\n    drawLine(\r\n      dimLines[0],\r\n      modelViewer.queryHotspot(\"hotspot-dot+X-Y+Z\"),\r\n      modelViewer.queryHotspot(\"hotspot-dot+X-Y-Z\"),\r\n      modelViewer.queryHotspot(\"hotspot-dim+X-Y\")\r\n    );\r\n    drawLine(\r\n      dimLines[1],\r\n      modelViewer.queryHotspot(\"hotspot-dot+X-Y-Z\"),\r\n      modelViewer.queryHotspot(\"hotspot-dot+X+Y-Z\"),\r\n      modelViewer.queryHotspot(\"hotspot-dim+X-Z\")\r\n    );\r\n\r\n    drawLine(\r\n      dimLines[2],\r\n      modelViewer.queryHotspot(\"hotspot-dot+X+Y-Z\"),\r\n      modelViewer.queryHotspot(\"hotspot-dot-X+Y-Z\"),\r\n      modelViewer.queryHotspot(\"hotspot-dim+Y-Z\")\r\n    ); \/\/ FIX LINE WIDTH\r\n\r\n    drawLine(\r\n      dimLines[3],\r\n      modelViewer.queryHotspot(\"hotspot-dot-X+Y-Z\"),\r\n      modelViewer.queryHotspot(\"hotspot-dot-X-Y-Z\"),\r\n      modelViewer.queryHotspot(\"hotspot-dim-X-Z\")\r\n    );\r\n    drawLine(\r\n      dimLines[4],\r\n      modelViewer.queryHotspot(\"hotspot-dot-X-Y-Z\"),\r\n      modelViewer.queryHotspot(\"hotspot-dot-X-Y+Z\"),\r\n      modelViewer.queryHotspot(\"hotspot-dim-X-Y\")\r\n    );\r\n  };\r\n\r\n  modelViewer.addEventListener(\"camera-change\", renderSVG);\r\n\r\n  function set_option(option, dropdown) {\r\n    if (option !== \"\") {\r\n      var opt = document.createElement(\"option\");\r\n      opt.value = option;\r\n      opt.innerHTML = capacities[option];\r\n      dropdown.appendChild(opt);\r\n    }\r\n  }\r\n\r\n  set_option(outdoor_a, select);\r\n  set_option(outdoor_b, select);\r\n  set_option(outdoor_c, select);\r\n  set_option(outdoor_d, select);\r\n\r\n  set_option(outdoor_2_a, select2);\r\n  set_option(outdoor_2_b, select2);\r\n  set_option(outdoor_2_c, select2);\r\n  set_option(outdoor_2_d, select2);\r\n\r\n  \/\/-----------------------------------------------------------------------------------------------\r\n\r\n  function changeSelect() {\r\n    select_changes += 1;\r\n\r\n    value = select.value;\r\n    console.log(\"Change Select: \" + value);\r\n    previus_model = actual_model;\r\n    actual_model = value;\r\n    show_dimensions = false;\r\n    setVisibility(show_dimensions);\r\n    width = widths[actual_model];\r\n    deep = deeps[actual_model];\r\n    height = heights[actual_model];\r\n    console.log(\r\n      \"width: \" + width + \" \/ deep: \" + deep + \" \/ height: \" + height\r\n    );\r\n\r\n    model_url = glbs[actual_model];\r\n    enable_explode = explodes[actual_model];\r\n    model_glb = glbs[actual_model];\r\n    model_usdz = usdz[actual_model];\r\n\r\n    modelViewer.src = model_glb;\r\n    document.getElementById(\"viewer\").setAttribute(\"src\", model_glb);\r\n    document.getElementById(\"viewer\").setAttribute(\"ios-src\", model_usdz);\r\n  }\r\n\r\n  function changeSelect2() {\r\n    select_changes += 1;\r\n\r\n    value = select2.value;\r\n    console.log(\"Change Select2: \" + value);\r\n    previus_model = actual_model;\r\n    actual_model = value;\r\n    show_dimensions = false;\r\n    setVisibility(show_dimensions);\r\n    width = widths[actual_model];\r\n    deep = deeps[actual_model];\r\n    height = heights[actual_model];\r\n    console.log(\r\n      \"width: \" + width + \" \/ deep: \" + deep + \" \/ height: \" + height\r\n    );\r\n\r\n    model_url = glbs[actual_model];\r\n    enable_explode = explodes[actual_model];\r\n    model_glb = glbs[actual_model];\r\n    model_usdz = usdz[actual_model];\r\n\r\n    modelViewer.src = model_glb;\r\n    document.getElementById(\"viewer\").setAttribute(\"src\", model_glb);\r\n    document.getElementById(\"viewer\").setAttribute(\"ios-src\", model_usdz);\r\n  }\r\n\r\n  select.addEventListener(\"change\", changeSelect);\r\n  select2.addEventListener(\"change\", changeSelect2);\r\n\r\n  \/\/--------------------------------------------------------------------------------------------------\r\n\/\/ New function to encapsulate dimension calculation\r\n\r\n  \r\n\tmodelViewer.addEventListener(\"load\", () => {\r\n    console.log(\r\n      \"VIEWER LOADED actual_model: \" + actual_model + \" type: \" + type_model\r\n    );\r\n\t\t\/\/ Call the new dimension calculation function\r\n  \r\n\r\n    show_dimensions = false;\r\ncenter = modelViewer.getBoundingBoxCenter();\r\n\t\t\r\n    setVisibility(show_dimensions);\r\n\r\n    model_status = \"implode\";\r\n\r\n    button_outdoor_A.classList.add(\"hide\");\r\n    button_indoor_A.classList.add(\"hide\");\r\n    button_explode.classList.add(\"hide\");\r\n    button_implode.classList.add(\"hide\");\r\n\r\n    \/\/center = modelViewer.getBoundingBoxCenter();\r\n\r\n    model_url = glbs[actual_model];\r\n    enable_explode = explodes[actual_model];\r\n    model_glb = glbs[actual_model];\r\n    model_usdz = usdz[actual_model];\r\n\r\n    document.getElementById(\"viewer\").setAttribute(\"ios-src\", model_usdz);\r\n\r\n    if (enable_explode) {\r\n      console.log(\"enable explode\");\r\n      stopx();\r\n      button_explode.classList.remove(\"hide\");\r\n    } else {\r\n      console.log(\"running play\");\r\n      playx();\r\n    }\r\n\r\n    if (type_model == \"outdoor\") {\r\n      console.log(\"TYPE OUT DOOR\");\r\n      button_outdoor_A.classList.add(\"hide\");\r\n      button_indoor_A.classList.add(\"hide\");\r\n      button_cassette.classList.add(\"hide\");\r\n      button_console.classList.add(\"hide\");\r\n\r\n      sel_div.classList.remove(\"hide\");\r\n\r\n      if (consolle[actual_model]) {\r\n        console.log(\"CONSOLE TRUE\");\r\n        button_console.classList.remove(\"hide\");\r\n        sel_div.classList.remove(\"hide\");\r\n      }\r\n      if (cassette[actual_model]) {\r\n        console.log(\"CASSETTE TRUE\");\r\n        button_cassette.classList.remove(\"hide\");\r\n        sel_div.classList.remove(\"hide\");\r\n      }\r\n      if (!cassette[actual_model] && !consolle[actual_model]) {\r\n        console.log(\"NORMAL\");\r\n        button_indoor_A.classList.remove(\"hide\");\r\n      }\r\n    } else {\r\n      button_cassette.classList.add(\"hide\");\r\n      button_console.classList.add(\"hide\");\r\n      button_indoor_A.classList.add(\"hide\");\r\n      button_outdoor_A.classList.remove(\"hide\");\r\n      sel_div.classList.add(\"hide\");\r\n    }\r\n\r\n    \/\/ Myriad\r\n    if (use_two_outdoor_buttons) {\r\n      button_indoor_A.classList.add(\"hide\");\r\n\r\n      \/\/ button_outdoor_A.classList.add(\"hide\");\r\n      \/\/ button_myriad.classList.remove(\"hide\");\r\n      \/\/ button_myriad_plus.classList.remove(\"hide\");\r\n      \/\/ sel_div.classList.remove(\"hide\");\r\n    } else {\r\n    }\r\n\r\n    \/\/ Mix Moov Heat+\r\n    \/\/ if (use_two_indoor_buttons) {\r\n    \/\/   \/\/ button_indoor_A.classList.remove(\"hide\");\r\n    \/\/   \/\/ button_indoor_B.classList.remove(\"hide\");\r\n    \/\/ } else {\r\n    \/\/ }\r\n\r\n    width = widths[actual_model];\r\n    deep = deeps[actual_model];\r\n    height = heights[actual_model];\r\n    offset = offsets[actual_model];\r\n\r\n    size = modelViewer.getDimensions();\r\n    offset_x = (size.x * offset) \/ 100;\r\n    offset_y = (size.y * offset) \/ 100;\r\n    offset_z = (size.z * offset) \/ 100;\r\n    x2 = (size.x + offset_x) \/ 2;\r\n    y2 = (size.y + offset_y) \/ 2;\r\n    z2 = (size.z + offset_z) \/ 2;\r\n  });\r\n  \/\/  END MODEL LO-AD EVENT\r\n\r\n  button_explode.addEventListener(\"click\", explode);\r\n  button_implode.addEventListener(\"click\", implode);\r\n\r\n  const dimElements = [\r\n    ...modelViewer.querySelectorAll(\"button\"),\r\n    modelViewer.querySelector(\"#dimLines\"),\r\n  ];\r\n\r\n  function setVisibility(visible) {\r\n    console.log(\"set-Visibility: \" + visible);\r\n\t\r\n    dimElements.forEach((element) => {\r\n      if (visible) {\r\n       modelViewer.updateHotspot({\r\n        name: \"hotspot-dot+X-Y+Z\",\r\n         position: `${center.x + x2} ${center.y - y2} ${center.z + z2}`,\r\n       });\r\n           \r\n        modelViewer.updateHotspot({\r\n          name: \"hotspot-dim+X-Y\",\r\n          position: `${center.x + x2 * 1} ${center.y - y2 * 1} ${center.z}`,\r\n        });\r\n\r\n        modelViewer.querySelector(\r\n          'button[slot=\"hotspot-dim+X-Y\"]'\r\n        ).textContent = deep;\r\n\r\n        modelViewer.updateHotspot({\r\n          name: \"hotspot-dot+X-Y-Z\",\r\n          position: `${center.x + x2} ${center.y - y2} ${center.z - z2}`,\r\n        });\r\n\r\n        modelViewer.updateHotspot({\r\n          name: \"hotspot-dim+X-Z\",\r\n          position: `${center.x + x2 * 1} ${center.y} ${center.z - z2 * 1}`,\r\n        });\r\n\r\n        modelViewer.querySelector(\r\n          'button[slot=\"hotspot-dim+X-Z\"]'\r\n        ).textContent = height;\r\n\r\n        modelViewer.updateHotspot({\r\n          name: \"hotspot-dot+X+Y-Z\",\r\n          position: `${center.x + x2} ${center.y + y2} ${center.z - z2}`,\r\n        });\r\n\r\n        modelViewer.updateHotspot({\r\n          name: \"hotspot-dim+Y-Z\",\r\n          position: `${center.x} ${center.y + y2 * 1} ${center.z - z2 * 1}`,\r\n        });\r\n\r\n        modelViewer.querySelector(\r\n          'button[slot=\"hotspot-dim+Y-Z\"]'\r\n        ).textContent = width;\r\n\r\n        modelViewer.updateHotspot({\r\n          name: \"hotspot-dot-X+Y-Z\",\r\n          position: `${center.x - x2} ${center.y + y2} ${center.z - z2}`,\r\n        });\r\n\r\n        modelViewer.updateHotspot({\r\n          name: \"hotspot-dim-X-Z\",\r\n          position: `${center.x - x2 * 1} ${center.y} ${center.z - z2 * 1}`,\r\n        });\r\n\r\n        modelViewer.querySelector(\r\n          'button[slot=\"hotspot-dim-X-Z\"]'\r\n        ).textContent = height;\r\n\r\n        modelViewer.updateHotspot({\r\n          name: \"hotspot-dot-X-Y-Z\",\r\n          position: `${center.x - x2} ${center.y - y2} ${center.z - z2}`,\r\n        });\r\n\r\n        modelViewer.updateHotspot({\r\n          name: \"hotspot-dim-X-Y\",\r\n          position: `${center.x - x2 * 1} ${center.y - y2 * 1} ${center.z}`,\r\n        });\r\n\r\n        modelViewer.querySelector(\r\n          'button[slot=\"hotspot-dim-X-Y\"]'\r\n        ).textContent = deep;\r\n\r\n        modelViewer.updateHotspot({\r\n          name: \"hotspot-dot-X-Y+Z\",\r\n          position: `${center.x - x2} ${center.y - y2} ${center.z + z2}`,\r\n        });\r\n\r\n        renderSVG();\r\n\r\n        element.classList.remove(\"hide\");\r\n      } else {\r\n        element.classList.add(\"hide\");\r\n      }\r\n    });\r\n  }\r\n\r\n  button_measure.addEventListener(\"click\", () => {\r\n    console.log(\r\n      \"button measure pressed \/ model_status: \" +\r\n        model_status +\r\n        \" \/ width: \" +\r\n        width +\r\n        \" \/ deep: \" +\r\n        deep +\r\n        \" \/ height: \" +\r\n        height\r\n    );\r\n  \r\n    if (model_status == \"implode\") {\r\n      show_dimensions = !show_dimensions;\r\n      setVisibility(show_dimensions);\r\n    }\r\n\r\n  });\r\n\r\n  button_outdoor_A.addEventListener(\"click\", () => {\r\n    stopx();\r\n    console.log(\"button A pressed\");\r\n    \/\/ button_outdoor_A.classList.add(\"hide\");\r\n    \/\/ button_indoor_A.classList.remove(\"hide\");\r\n    type_model = \"outdoor\";\r\n    actual_model = previus_model;\r\n    console.log(\"actual model: \" + actual_model);\r\n    enable_explode = explodes[actual_model];\r\n    model_glb = glbs[actual_model];\r\n    model_usdz = usdz[actual_model];\r\n    modelViewer.src = model_glb;\r\n    document.getElementById(\"viewer\").setAttribute(\"src\", model_glb);\r\n    document.getElementById(\"viewer\").setAttribute(\"ios-src\", model_usdz);\r\n  });\r\n\r\n  button_indoor_A.addEventListener(\"click\", () => {\r\n    stopx();\r\n    console.log(\"button B pressed\");\r\n    \/\/ button_indoor_A.classList.add(\"hide\");\r\n    \/\/ button_outdoor_A.classList.remove(\"hide\");\r\n    type_model = \"indoor\";\r\n    previus_model = actual_model;\r\n    actual_model = indoor_a;\r\n    console.log(\"actual model: \" + actual_model);\r\n    enable_explode = explodes[actual_model];\r\n    model_glb = glbs[actual_model];\r\n    console.log(\"model glb: \" + model_glb);\r\n    model_usdz = usdz[actual_model];\r\n    console.log(\"model usdz: \" + model_usdz);\r\n    modelViewer.src = model_glb;\r\n    document.getElementById(\"viewer\").setAttribute(\"src\", model_glb);\r\n    document.getElementById(\"viewer\").setAttribute(\"ios-src\", model_usdz);\r\n  });\r\n\r\n  button_cassette.addEventListener(\"click\", () => {\r\n    stopx();\r\n    console.log(\"button cassette pressed\");\r\n    \/\/ button_indoor_A.classList.add(\"hide\");\r\n    \/\/ button_outdoor_A.classList.remove(\"hide\");\r\n    type_model = \"indoor\";\r\n    previus_model = actual_model;\r\n    actual_model = indoor_a;\r\n    console.log(\"actual model: \" + actual_model);\r\n    enable_explode = explodes[actual_model];\r\n    model_glb = glbs[actual_model];\r\n    console.log(\"model glb: \" + model_glb);\r\n    model_usdz = usdz[actual_model];\r\n    console.log(\"model usdz: \" + model_usdz);\r\n    modelViewer.src = model_glb;\r\n    document.getElementById(\"viewer\").setAttribute(\"src\", model_glb);\r\n    document.getElementById(\"viewer\").setAttribute(\"ios-src\", model_usdz);\r\n  });\r\n\r\n  button_console.addEventListener(\"click\", () => {\r\n    stopx();\r\n    console.log(\"button cassette pressed\");\r\n    \/\/ button_indoor_A.classList.add(\"hide\");\r\n    \/\/ button_outdoor_A.classList.remove(\"hide\");\r\n    type_model = \"indoor\";\r\n    previus_model = actual_model;\r\n    actual_model = indoor_b;\r\n    console.log(\"actual model: \" + actual_model);\r\n    enable_explode = explodes[actual_model];\r\n    model_glb = glbs[actual_model];\r\n    console.log(\"model glb: \" + model_glb);\r\n    model_usdz = usdz[actual_model];\r\n    console.log(\"model usdz: \" + model_usdz);\r\n    modelViewer.src = model_glb;\r\n    document.getElementById(\"viewer\").setAttribute(\"src\", model_glb);\r\n    document.getElementById(\"viewer\").setAttribute(\"ios-src\", model_usdz);\r\n  });\r\n\r\n  button_myriad.addEventListener(\"click\", () => {\r\n    stopx();\r\n    console.log(\"button Myriad pressed\");\r\n    type_model = \"outdoor\";\r\n\r\n    button_myriad.classList.add(\"hide\");\r\n    button_myriad_plus.classList.remove(\"hide\");\r\n    select2.classList.add(\"hide\");\r\n    select.classList.remove(\"hide\");\r\n\r\n    \/\/ actual_model = outdoor_a;\r\n    \/\/ actual_model = outdoor_2_a;\r\n    value = select.value;\r\n    previus_model = actual_model;\r\n    actual_model = value;\r\n\r\n    console.log(\"actual model: \" + actual_model);\r\n    enable_explode = explodes[actual_model];\r\n    model_glb = glbs[actual_model];\r\n    model_usdz = usdz[actual_model];\r\n    modelViewer.src = model_glb;\r\n    document.getElementById(\"viewer\").setAttribute(\"src\", model_glb);\r\n    document.getElementById(\"viewer\").setAttribute(\"ios-src\", model_usdz);\r\n  });\r\n\r\n  button_myriad_plus.addEventListener(\"click\", () => {\r\n    stopx();\r\n    console.log(\"button Myriad plus pressed\");\r\n    type_model = \"outdoor\";\r\n\r\n    button_myriad_plus.classList.add(\"hide\");\r\n    button_myriad.classList.remove(\"hide\");\r\n    select.classList.add(\"hide\");\r\n    select2.classList.remove(\"hide\");\r\n\r\n    \/\/ actual_model = outdoor_2_a;\r\n    value = select2.value;\r\n    previus_model = actual_model;\r\n    actual_model = value;\r\n\r\n    console.log(\"actual model: \" + actual_model);\r\n    enable_explode = explodes[actual_model];\r\n    model_glb = glbs[actual_model];\r\n    model_usdz = usdz[actual_model];\r\n    modelViewer.src = model_glb;\r\n    document.getElementById(\"viewer\").setAttribute(\"src\", model_glb);\r\n    document.getElementById(\"viewer\").setAttribute(\"ios-src\", model_usdz);\r\n  });\r\n\r\n  async function playx() {\r\n    console.log(\"play animation\");\r\n    modelViewer.timeScale = 1;\r\n    await modelViewer.updateComplete;\r\n    modelViewer.pause();\r\n    modelViewer.play({ repetitions: 9999 });\r\n    modelViewer.appendAnimation(\"rotate\", {\r\n      weight: parseFloat(100),\r\n      repetitions: 9999,\r\n    });\r\n    modelViewer.appendAnimation(\"rotate2\", {\r\n      weight: parseFloat(100),\r\n      repetitions: 9999,\r\n    });\r\n  }\r\n\r\n  async function stopx() {\r\n    console.log(\"stop animation\");\r\n\tmodelViewer.animationName=\"explode\";\r\n    modelViewer.currentTime = 0;\r\n    modelViewer.timeScale = 0;\r\n    await modelViewer.updateComplete;\r\n    modelViewer.pause();\r\n  }\r\n\r\n  modelViewer.addEventListener(\"ar-model_status\", (event) => {\r\n    setVisibility(\r\n      show_dimensions && event.detail.model_status !== \"session-started\"\r\n    );\r\n  });\r\n\r\n  async function explode() {\r\n    console.log(\"exploding....\");\r\n    model_status = \"exploding\";\r\n    show_dimensions = false;\r\n    setVisibility(show_dimensions);\r\n    modelViewer.animationName = \"explode\";\r\n    modelViewer.timeScale = 1;\r\n    await modelViewer.updateComplete;\r\n    modelViewer.play({\r\n      repetitions: 1,\r\n    });\r\n  }\r\n\r\n  async function implode() {\r\n    console.log(\"imploding....\");\r\n    model_status = \"imploding\";\r\n    modelViewer.animationName = \"implode\";\r\n    modelViewer.timeScale = 1;\r\n    await modelViewer.updateComplete;\r\n    modelViewer.play({\r\n      repetitions: 1,\r\n    });\r\n  }\r\n\r\n  modelViewer.addEventListener(\"finished\", () => {\r\n    console.log(\"animation finished\");\r\n    if (model_status == \"exploding\") {\r\n      model_status = \"explode\";\r\n      console.log(\"Enabling implode button\");\r\n      button_explode.classList.add(\"hide\");\r\n      button_implode.classList.remove(\"hide\");\r\n    }\r\n    if (model_status == \"imploding\") {\r\n      model_status = \"implode\";\r\n      console.log(\"Enabling explode button\");\r\n      button_implode.classList.add(\"hide\");\r\n      button_explode.classList.remove(\"hide\");\r\n    }\r\n  });\r\n\/\/ New function to encapsulate dimension calculation\r\nfunction calculateDimensions() {\r\n    center = modelViewer.getBoundingBoxCenter();\r\n    size = modelViewer.getDimensions();\r\n    offset_x = (size.x * offset) \/ 100;\r\n    offset_y = (size.y * offset) \/ 100;\r\n    offset_z = (size.z * offset) \/ 100;\r\n    x2 = (size.x + offset_x) \/ 2;\r\n    y2 = (size.y + offset_y) \/ 2;\r\n    z2 = (size.z + offset_z) \/ 2;\r\n}\r\n\r\n\r\n  function drawLine(svgLine, dotHotspot1, dotHotspot2, dimensionHotspot) {\r\n    if (dotHotspot1 && dotHotspot2) {\r\n      svgLine.setAttribute(\"x1\", dotHotspot1.canvasPosition.x);\r\n      svgLine.setAttribute(\"y1\", dotHotspot1.canvasPosition.y);\r\n      svgLine.setAttribute(\"x2\", dotHotspot2.canvasPosition.x);\r\n      svgLine.setAttribute(\"y2\", dotHotspot2.canvasPosition.y);\r\n\r\n      if (dimensionHotspot && !dimensionHotspot.facingCamera) {\r\n        svgLine.classList.add(\"hide\");\r\n      } else {\r\n        svgLine.classList.remove(\"hide\");\r\n      }\r\n    }\r\n  }\r\n};<\/script>[\/et_pb_code][et_pb_code _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<script><!-- [et_pb_line_break_holder] -->(function() {<!-- [et_pb_line_break_holder] -->  \/\/ List of model filenames for which the measure button must be hidden<!-- [et_pb_line_break_holder] -->  const HIDE_MEASURE_FOR = [<!-- [et_pb_line_break_holder] -->    'm-series-wall-mounted-with-sensor.glb'<!-- [et_pb_line_break_holder] -->    \/\/ 'other-model.glb',<!-- [et_pb_line_break_holder] -->  ];<!-- [et_pb_line_break_holder] -->  function shouldHideForSrc(src) {<!-- [et_pb_line_break_holder] -->    if (!src) return false;<!-- [et_pb_line_break_holder] -->    return HIDE_MEASURE_FOR.some(name => src.indexOf(name) !== -1);<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  function updateMeasureButton(viewer) {<!-- [et_pb_line_break_holder] -->    const src = viewer.getAttribute('src') || '';<!-- [et_pb_line_break_holder] -->    const hide = shouldHideForSrc(src);<!-- [et_pb_line_break_holder] -->    const measureBtn = viewer.querySelector('#button_measure');<!-- [et_pb_line_break_holder] -->    if (!measureBtn) return;<!-- [et_pb_line_break_holder] -->    measureBtn.classList.toggle('hide', hide);<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  function setupModelViewer(viewer) {<!-- [et_pb_line_break_holder] -->    \/\/ Run once in case the src is already set<!-- [et_pb_line_break_holder] -->    updateMeasureButton(viewer);<!-- [et_pb_line_break_holder] -->    \/\/ When the model actually loads (or src changes), re-check<!-- [et_pb_line_break_holder] -->    viewer.addEventListener('load', function() {<!-- [et_pb_line_break_holder] -->      updateMeasureButton(viewer);<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  document.addEventListener('DOMContentLoaded', function() {<!-- [et_pb_line_break_holder] -->    document.querySelectorAll('model-viewer').forEach(setupModelViewer);<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] -->  \/\/ Optional: handle model-viewers added later<!-- [et_pb_line_break_holder] -->  const observer = new MutationObserver(function(mutations) {<!-- [et_pb_line_break_holder] -->    mutations.forEach(function(mutation) {<!-- [et_pb_line_break_holder] -->      mutation.addedNodes.forEach(function(node) {<!-- [et_pb_line_break_holder] -->        if (node.nodeType !== 1) return; \/\/ ELEMENT_NODE<!-- [et_pb_line_break_holder] -->        if (node.matches && node.matches('model-viewer')) {<!-- [et_pb_line_break_holder] -->          setupModelViewer(node);<!-- [et_pb_line_break_holder] -->        } else if (node.querySelectorAll) {<!-- [et_pb_line_break_holder] -->          node.querySelectorAll('model-viewer').forEach(setupModelViewer);<!-- [et_pb_line_break_holder] -->        }<!-- [et_pb_line_break_holder] -->      });<!-- [et_pb_line_break_holder] -->    });<!-- [et_pb_line_break_holder] -->  });<!-- [et_pb_line_break_holder] -->  observer.observe(document.body, { childList: true, subtree: true });<!-- [et_pb_line_break_holder] -->})();<!-- [et_pb_line_break_holder] --><\/script><!-- [et_pb_line_break_holder] -->[\/et_pb_code][\/et_pb_column][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;|700|||||||&#8221; text_font_size=&#8221;22px&#8221; header_3_font=&#8221;|700|||||||&#8221; header_3_font_size=&#8221;24px&#8221; header_3_line_height=&#8221;1.3em&#8221; custom_padding=&#8221;25px||||false|false&#8221; global_colors_info=&#8221;%91%93&#8243;]<\/p>\n<h3>Designed for Canadian homes, the Moovair Morelis heat pump is your ultimate year-round home heating and cooling solution. As the highest-efficiency model in the Moovair single-zone lineup, Morelis delivers unmatched comfort year-round thanks to advanced HEAT+ and Inverter technology. Enjoy peace of mind with Moovair\u2019s industry-leading, 10-year limited coverage warranty on parts and compressor plus optional labor warranties. Moovair Morelis is the smart choice for home energy savings and reliable heating and cooling comfort.<\/h3>\n<p><a href=\"\/en-ca\/about-heat-pumps\">Learn more about heat pumps<\/a>[\/et_pb_text][et_pb_text _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<\/p>\n<h3>Premium Performance for Every Season<\/h3>\n<p>Experience top-tier heating and cooling with Moovair Morelis, the highest-efficiency model in the Moovair single-zone lineup. Designed for those who demand superior comfort, this system delivers outstanding performance, even in extreme conditions.[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row custom_padding_last_edited=&#8221;on|phone&#8221; _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; custom_margin_tablet=&#8221;&#8221; custom_margin_phone=&#8221;&#8221; custom_margin_last_edited=&#8221;on|tablet&#8221; custom_padding=&#8221;20px||||false|false&#8221; custom_padding_tablet=&#8221;40px||||false|false&#8221; custom_padding_phone=&#8221;40px||||false|false&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; text_font_size=&#8221;20px&#8221; text_line_height=&#8221;1.3em&#8221; header_2_font=&#8221;|700|||||||&#8221; header_2_font_size=&#8221;32px&#8221; header_3_font=&#8221;|700|||||||&#8221; header_3_font_size=&#8221;24px&#8221; text_font_size_tablet=&#8221;22px&#8221; text_font_size_phone=&#8221;22px&#8221; text_font_size_last_edited=&#8221;on|phone&#8221; global_colors_info=&#8221;%91%93&#8243;]<\/p>\n<h3>Why Choose the Morelis?<\/h3>\n<p><img decoding=\"async\" class=\"heat-logo\" alt=\"heat +\" src=\"https:\/\/moovair.com\/wp-content\/uploads\/HEAT-1.png\" width=\"200\" height=\"65\" style=\"float: right;\" \/><\/p>\n<p style=\"text-align: left;\">Morelis systems feature advanced HEAT+ technology, intelligently adjusting compressor operation to minimize temperature fluctuations while maximizing energy efficiency-keeping your home consistently comfortable with lower energy consumption<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row column_structure=&#8221;1_2,1_2&#8243; make_equal=&#8221;on&#8221; _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; locked=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; custom_css_main_element=&#8221;display:flex;&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;||||||||&#8221; text_font_size=&#8221;20px&#8221; text_line_height=&#8221;1.3em&#8221; header_3_font=&#8221;|700|||||||&#8221; header_3_font_size=&#8221;24px&#8221; custom_margin=&#8221;auto||auto||false|false&#8221; global_colors_info=&#8221;%91%93&#8243;]<\/p>\n<h2 style=\"font-size: 1.8em; font-weight: 200; padding-bottom:15px;\">Designed for Homeowners Demanding Peak Performance<\/h2>\n<ul style=\"line-height: 1.8;\">\n<li>Maximum Efficiency: Delivers the highest HSPF\/SEER ratings for lower energy costs: up to 29.4 SEER2 and 12.9 HSPF2 Region 5.<\/li>\n<li>Smart Connectivity: Seamlessly adjust temperature and mode from anywhere using the included WiFi adapter.<\/li>\n<li>Optimal Air Quality &amp; Filtration: A variable-speed indoor fan, horizontal swing, and double filtration system create a healthy indoor environment.<\/li>\n<li>Safe, Reliable Operation: Advanced functionality includes an automatic shutdown during a refrigerant leak and a seamless restart after a power failure.<\/li>\n<li>Cooling Mode: Like a conventional air conditioner, the heat pump extracts heat from inside the home and releases it outdoors, cooling the indoor space.<\/li>\n<\/ul>\n<p>[\/et_pb_text][\/et_pb_column][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_image src=&#8221;https:\/\/moovair.com\/wp-content\/uploads\/HeatOutput_Morelis_EN.png&#8221; alt=&#8221;Graph illustrating heat output percentages for a Moovair system at an indoor temperature of 21\u00b0C and an outdoor temperature of -20\u00b0C, with nominal capacities of 12,000 BTU and 18,000 BTU.&#8221; title_text=&#8221;Graph illustrating heat output percentages for a Moovair system at an indoor temperature of 21\u00b0C and an outdoor temperature of -20\u00b0C, with nominal capacities of 12,000 BTU and 18,000 BTU.&#8221; _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; custom_padding=&#8221;10px||10px||true|false&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]With Morelis heat pumps, you\u2019re not just buying a heating and cooling system\u2014you\u2019re investing in Canadian year-round home comfort, energy savings, and sustainability. The Morelis heat pump systems are engineered to deliver consistent performance, even in the coldest climates.[\/et_pb_text][et_pb_button button_url=&#8221;https:\/\/cdn.master.ca\/documents\/en\/moovair\/brochures\/Moovair_MSeries_202602_EN_V03.pdf&#8221; url_new_window=&#8221;on&#8221; button_text=&#8221;Features and technical specifications available in the full brochure&#8221; button_alignment=&#8221;center&#8221; _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; custom_button=&#8221;on&#8221; button_text_color=&#8221;#FFFFFF&#8221; button_bg_color=&#8221;#e35425&#8243; button_border_radius=&#8221;100px&#8221; button_font=&#8221;||||||||&#8221; custom_padding=&#8221;10px|30px|10px|30px|true|true&#8221; button_text_size_tablet=&#8221;&#8221; button_text_size_phone=&#8221;16px&#8221; button_text_size_last_edited=&#8221;on|phone&#8221; locked=&#8221;off&#8221; global_colors_info=&#8221;%91%93&#8243; button_text_size__hover_enabled=&#8221;on|desktop&#8221; button_text_color__hover_enabled=&#8221;on|hover&#8221; button_text_color__hover=&#8221;#e35425&#8243; button_bg_color__hover_enabled=&#8221;on|desktop&#8221; button_bg_color__hover=&#8221;#FFFFFF&#8221; button_bg_enable_color__hover=&#8221;on&#8221; button_border_color__hover_enabled=&#8221;on|hover&#8221; button_border_color__hover=&#8221;#e35425&#8243;][\/et_pb_button][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text module_class=&#8221;et_pb_text_5&#8243; _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; text_font_size=&#8221;20px&#8221; text_line_height=&#8221;1.3em&#8221; global_colors_info=&#8221;%91%93&#8243;]<\/p>\n<h2 style=\"text-transform: uppercase; display: inline-block; border-bottom: 4px solid #e35425; padding-bottom: 4px; font-size:2.5rem\">Moovair M-Series: Heat pumps that work as hard as you do<\/h2>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row column_structure=&#8221;1_3,1_3,1_3&#8243; module_class=&#8221;cls-logos&#8221; _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; custom_margin=&#8221;0px||0px||false|false&#8221; custom_padding=&#8221;0px||0px||false|false&#8221; locked=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;1_3&#8243; _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_image src=&#8221;https:\/\/moovair.com\/wp-content\/uploads\/MORELIS-1.png&#8221; alt=&#8221;Morelis logo featuring a stylized %22M%22 in orange and the word %22Morelis%22 in gray.&#8221; title_text=&#8221;Morelis logo featuring a stylized \u201cM\u201d in orange and the word \u201cMorelis\u201d in gray.&#8221; _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; background_enable_color=&#8221;off&#8221; max_width=&#8221;200px&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][\/et_pb_column][et_pb_column type=&#8221;1_3&#8243; _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_image src=&#8221;https:\/\/moovair.com\/wp-content\/uploads\/MERIDIAN.png&#8221; alt=&#8221;Logo of the Meridian brand featuring bold gray letters with an orange accent.&#8221; title_text=&#8221;Logo of the Meridian brand featuring bold gray letters with an orange accent.&#8221; align=&#8221;center&#8221; _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; max_width=&#8221;200px&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][\/et_pb_column][et_pb_column type=&#8221;1_3&#8243; _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_image src=&#8221;https:\/\/moovair.com\/wp-content\/uploads\/MISTRAL-1.png&#8221; alt=&#8221;MISTRAL logo featuring bold gray letters with an orange wave element.&#8221; title_text=&#8221;MISTRAL logo featuring bold gray letters with an orange wave element.&#8221; align=&#8221;right&#8221; _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; max_width=&#8221;200px&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text module_class=&#8221;et_pb_text_5&#8243; _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; text_font_size=&#8221;20px&#8221; text_line_height=&#8221;1.3em&#8221; global_colors_info=&#8221;%91%93&#8243;]Moovair heat pumps\u2014Morelis, Meridian, and Mistral\u2014are designed to provide a balance of advanced functionality and everyday reliability. This ensures efficient installations and long-term value for homeowners, without unnecessary complexities.[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row column_structure=&#8221;1_2,1_2&#8243; make_equal=&#8221;on&#8221; _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_image src=&#8221;https:\/\/moovair.com\/wp-content\/uploads\/Inverter-Compressor_EN-2.png&#8221; alt=&#8221;A detailed illustration of an inverter-driven compressor showcasing its internal components and design.&#8221; title_text=&#8221;A detailed illustration of an inverter-driven compressor showcasing its internal components and design.&#8221; align=&#8221;center&#8221; _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; max_width=&#8221;50%&#8221; custom_padding=&#8221;10px||10px||true|false&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][\/et_pb_column][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; custom_css_main_element=&#8221;display:flex;&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; text_font_size=&#8221;20px&#8221; text_line_height=&#8221;1.3em&#8221; header_3_font=&#8221;|700|||||||&#8221; header_3_font_size=&#8221;24px&#8221; custom_margin=&#8221;auto||auto||false|false&#8221; global_colors_info=&#8221;%91%93&#8243;]<\/p>\n<h3>Energy efficiency for every home<\/h3>\n<p>These systems incorporate cutting-edge Inverter drive technology, which modulates compressor operation to limit temperature fluctuations and reduce energy consumption. By adjusting in precise increments up to 100% capacity, the system maintains the set temperature efficiently, offering maximum comfort and energy savings.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row column_structure=&#8221;1_2,1_2&#8243; make_equal=&#8221;on&#8221; _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; locked=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; custom_css_main_element=&#8221;display:flex&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text module_class=&#8221;et_pb_text_5&#8243; _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; custom_margin=&#8221;auto||auto||false|false&#8221; global_colors_info=&#8221;%91%93&#8243;]<\/p>\n<h3><strong>Reliability Guaranteed with our Leading Warranty Coverage<\/strong><\/h3>\n<p>Moovair heat pumps are built to last and come with a comprehensive 10-year limited warranty on both parts and compressor. For added peace of mind, optional labor coverage of 5 and 10 years is also available, ensuring homeowners\u2019 investments remain protected for years to come.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_image src=&#8221;https:\/\/moovair.com\/wp-content\/uploads\/MoovairWarrantyLogo_EN-2.png&#8221; alt=&#8221;Warranty badges displaying 10 years for compressor and parts, along with 5 and 10 years for optional labour warranties.&#8221; title_text=&#8221;Warranty badges displaying 10 years for compressor and parts, along with 5 and 10 years for optional labour warranties.&#8221; _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][\/et_pb_column][\/et_pb_row][et_pb_row column_structure=&#8221;1_2,1_2&#8243; make_equal=&#8221;on&#8221; _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_image src=&#8221;https:\/\/moovair.com\/wp-content\/uploads\/Graphic-EN_WintervsSummer-2.png&#8221; alt=&#8221;Moovair system operation is illustrated with heating mode on the left and cooling mode on the right, showing air flow directions.&#8221; title_text=&#8221;Moovair system operation is illustrated with heating mode on the left and cooling mode on the right, showing air flow directions.&#8221; _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][\/et_pb_column][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; custom_css_main_element=&#8221;display:flex&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text module_class=&#8221;et_pb_text_5&#8243; _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; custom_margin=&#8221;auto||auto||false|false&#8221; global_colors_info=&#8221;%91%93&#8243;]<\/p>\n<h3><strong>Heat pumps offer year-round home comfort<\/strong><\/h3>\n<p>A heat pump serves as an all-in-one climate control solution, providing both heating and cooling to maintain optimal indoor temperatures throughout the year.<\/p>\n<ul>\n<li><span> <strong>Cooling Mode<\/strong>: Like a conventional air conditioner, the heat pump extracts heat from inside the home and releases it outdoors, cooling the indoor space. <\/span><\/li>\n<li><span> <strong>Heating Mode<\/strong>: Operating in reverse, the heat pump captures heat from the outside air and transfers it indoors to warm the home. <\/span><\/li>\n<\/ul>\n<p><span>This dual functionality ensures efficient and consistent comfort in all seasons, with a single system.<\/span><\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row column_structure=&#8221;1_2,1_2&#8243; make_equal=&#8221;on&#8221; _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; custom_css_main_element=&#8221;display:flex;&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;||||||||&#8221; text_font_size=&#8221;20px&#8221; text_line_height=&#8221;1.3em&#8221; header_3_font=&#8221;|700|||||||&#8221; header_3_font_size=&#8221;24px&#8221; custom_margin=&#8221;auto||auto||false|false&#8221; global_colors_info=&#8221;%91%93&#8243;]<\/p>\n<h3>How heat pump capacity impacts comfort<\/h3>\n<p>Heat pump capacity refers to the amount of heating or cooling a unit can provide, typically measured in British Thermal Units per hour (BTU\/h). Capacity can vary based on temperature, with performance often decreasing as outdoor temperatures drop. Designed to withstand these extremes, the Morelis 9,000 BTU\/h unit\u2014as an example\u2014delivers over 9,000 BTU\/h even when it\u2019s a freezing -25\u00b0C outside and 21\u00b0C inside.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_image src=&#8221;https:\/\/moovair.com\/wp-content\/uploads\/MSeries_ComparisonGraph.png&#8221; alt=&#8221;Graph showing the total net capacity (MBH) of three systems\u2014Morelis, Meridian, and Mistral\u2014across varying outdoor temperatures (\u00b0C).&#8221; title_text=&#8221;Graph showing the total net capacity (MBH) of three systems\u2014Morelis, Meridian, and Mistral\u2014across varying outdoor temperatures (\u00b0C).&#8221; _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; custom_padding=&#8221;10px||10px||true|false&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][\/et_pb_column][\/et_pb_row][et_pb_row column_structure=&#8221;1_2,1_2&#8243; make_equal=&#8221;on&#8221; _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_image src=&#8221;https:\/\/moovair.com\/wp-content\/uploads\/COP-Graphic_EN-2.png&#8221; alt=&#8221;A diagram illustrating a Moovair system that absorbs heat from outside air and releases it into indoor air.&#8221; title_text=&#8221;A diagram illustrating a Moovair system that absorbs heat from outside air and releases it into indoor air.&#8221; _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; max_width=&#8221;300px&#8221; module_alignment=&#8221;center&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_image][\/et_pb_column][et_pb_column type=&#8221;1_2&#8243; _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; custom_css_main_element=&#8221;display:flex;&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; text_font_size=&#8221;20px&#8221; text_line_height=&#8221;1.3em&#8221; header_3_font=&#8221;|700|||||||&#8221; header_3_font_size=&#8221;24px&#8221; custom_margin=&#8221;auto||auto||false|false&#8221; global_colors_info=&#8221;%91%93&#8243;]<\/p>\n<h3>The heating cycle and coefficient of performance (COP)<\/h3>\n<p><span>Heat pump efficiency is evaluated using Coefficient of Performance (COP), which is the ratio of heat output (in kW) to electrical energy input (in kW). A higher COP indicates greater efficiency. <\/span><\/p>\n<p><span>For instance, a COP of 3 means that for every unit of electricity consumed, the heat pump produces three units of heat. <\/span><\/p>\n<p><span style=\"margin-bottom: 10px; display: block;\">Advantages of High COP: <\/span><\/p>\n<ul>\n<li><span> <strong>Increased Efficiency<\/strong>: More effective conversion of electricity into heating or cooling. <\/span><\/li>\n<li><span> <strong>Lower Energy Costs<\/strong>: Reduced utility bills due to efficient energy use. <\/span><\/li>\n<li><span> <strong>Environmental Benefits<\/strong>: Decreased carbon footprint through optimized energy consumption.<\/span><\/li>\n<\/ul>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; custom_margin=&#8221;30px||||false|false&#8221; custom_padding=&#8221;||50px||false|false&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; text_font_size=&#8221;20px&#8221; text_line_height=&#8221;1.3em&#8221; header_2_font=&#8221;|700|||||||&#8221; header_2_font_size=&#8221;32px&#8221; header_2_line_height=&#8221;1.1em&#8221; header_2_font_size_phone=&#8221;26px&#8221; global_colors_info=&#8221;%91%93&#8243;]<\/p>\n<h2 style=\"text-align: center;\">DOWNLOAD BROCHURE<\/h2>\n<p style=\"text-align: center;\">To explore more, download <span>the M-Series brochure<\/span>.<\/p>\n<p>[\/et_pb_text][et_pb_button button_url=&#8221;https:\/\/cdn.master.ca\/documents\/en\/moovair\/brochures\/Moovair_MSeries_202602_EN_V03.pdf&#8221; url_new_window=&#8221;on&#8221; button_text=&#8221;DOWNLOAD PDF BROCHURE&#8221; button_alignment=&#8221;center&#8221; _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; custom_button=&#8221;on&#8221; button_text_color=&#8221;#FFFFFF&#8221; button_bg_color=&#8221;#e35425&#8243; button_border_radius=&#8221;100px&#8221; button_font=&#8221;||||||||&#8221; custom_padding=&#8221;10px|30px|10px|30px|true|true&#8221; button_text_size_tablet=&#8221;&#8221; button_text_size_phone=&#8221;16px&#8221; button_text_size_last_edited=&#8221;on|phone&#8221; global_colors_info=&#8221;%91%93&#8243; button_text_size__hover_enabled=&#8221;on|desktop&#8221; button_text_color__hover_enabled=&#8221;on|hover&#8221; button_text_color__hover=&#8221;#e35425&#8243; button_bg_color__hover_enabled=&#8221;on|desktop&#8221; button_bg_color__hover=&#8221;#FFFFFF&#8221; button_bg_enable_color__hover=&#8221;on&#8221; button_border_color__hover_enabled=&#8221;on|hover&#8221; button_border_color__hover=&#8221;#e35425&#8243;][\/et_pb_button][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; custom_padding_last_edited=&#8221;on|phone&#8221; _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;cbebb943-82e8-4ec0-947d-cf77e34c50de&#8221; height_phone=&#8221;auto&#8221; custom_margin=&#8221;||0px||false|false&#8221; custom_padding=&#8221;0px||0px||false|false&#8221; custom_padding_tablet=&#8221;0px||0px||false|false&#8221; custom_padding_phone=&#8221;|20px||20px|false|true&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_row _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; background_color=&#8221;#4a7b9c&#8221; border_radii=&#8221;on|50px|50px|50px|50px&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_text _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; text_font=&#8221;||||||||&#8221; text_text_color=&#8221;#FFFFFF&#8221; text_font_size=&#8221;24px&#8221; text_line_height=&#8221;1.3em&#8221; header_3_font_size=&#8221;36px&#8221; width=&#8221;100%&#8221; custom_margin=&#8221;|20px||20px|true|true&#8221; custom_padding=&#8221;|20px||20px|true|true&#8221; locked=&#8221;off&#8221; global_colors_info=&#8221;%91%93&#8243;]<\/p>\n<p>Moovair dealers are supported by The Master Group, Canada\u2019s largest independently Canadian owned HVAC-R distributor. Through its 70 year history, The Master Group distinguishes itself for its extensive inventory, technical expertise, and exceptional customer service.<\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][et_pb_row _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; custom_padding=&#8221;30px||||false|false&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.18.0&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_button button_url=&#8221;\/dealer-locator\/&#8221; button_text=&#8221;FIND A DEALER FOR A QUOTE&#8221; button_alignment=&#8221;center&#8221; _builder_version=&#8221;4.22.1&#8243; _module_preset=&#8221;default&#8221; custom_button=&#8221;on&#8221; button_text_color=&#8221;#FFFFFF&#8221; button_bg_color=&#8221;#e35425&#8243; button_border_radius=&#8221;100px&#8221; button_font=&#8221;||||||||&#8221; custom_padding=&#8221;10px|30px|10px|30px|true|true&#8221; button_text_size_tablet=&#8221;&#8221; button_text_size_phone=&#8221;16px&#8221; button_text_size_last_edited=&#8221;on|phone&#8221; locked=&#8221;off&#8221; global_colors_info=&#8221;%91%93&#8243; button_text_size__hover_enabled=&#8221;on|desktop&#8221; button_text_color__hover_enabled=&#8221;on|hover&#8221; button_text_color__hover=&#8221;#e35425&#8243; button_bg_color__hover_enabled=&#8221;on|desktop&#8221; button_bg_color__hover=&#8221;#FFFFFF&#8221; button_bg_enable_color__hover=&#8221;on&#8221; button_border_color__hover_enabled=&#8221;on|hover&#8221; button_border_color__hover=&#8221;#e35425&#8243;][\/et_pb_button][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Morelis (Ultimate) Ultimate comfort &amp; efficiency Up to 29.4 SEER2 | 12.9 HSPF2 Region 5 | Heating to -30\u00b0CMoovair Morelis Heat Pump: Redefine Home Comfort &amp; Energy Efficiency for Canadian Winters<style class=\"wpcode-css-snippet\">:not(:defined)>* {\r\n    display: none;\r\n}\r\n\r\n.test-div {\r\n  width: 80%;\r\n  height: 80%;\r\n}\r\n\r\n\r\n\/* Responsive model-viewer *\/\r\nmodel-viewer {\r\n    width: 100%;\r\n    max-width: 640px;\r\n    height: auto;\r\n    aspect-ratio: 4 \/ 3; \/* Keeps proper proportions on all screens *\/\r\n    margin: 0 auto;\r\n    border-radius: 10px;\r\n    background-color: #fff;\r\n    box-sizing: border-box;\r\n    position: relative;\r\n}\r\n\r\n\/* Tablet *\/\r\n@media (min-width: 768px) and (max-width: 1024px) {\r\n    model-viewer {\r\n        width: 90%;\r\n        max-width: 720px;\r\n        aspect-ratio: 4 \/ 3;\r\n    }\r\n}\r\n\r\n\/* Desktop *\/\r\n@media (min-width: 1025px) {\r\n    model-viewer {\r\n        width: 680px;\r\n        height: 540px; \/* Desktop fixed size *\/\r\n        aspect-ratio: unset;\r\n    }\r\n}\r\n\r\n#ar-button {\r\n    background-image: url(https:\/\/cdn2.moovair.com\/ar\/_assets\/ic_view_in_ar_new_googblue_48dp.png);\r\n    background-repeat: no-repeat;\r\n    background-size: 20px 20px;\r\n    background-position: 12px 50%;\r\n    background-color: #fff;\r\n    position: absolute;\r\n    left: 50%;\r\n    transform: translateX(-50%);\r\n    white-space: nowrap;\r\n    bottom: 20px;\r\n    padding: 0px 16px 0px 40px;\r\n    font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", sans-serif;\r\n    font-size: 14px;\r\n    font-weight: 500;\r\n    color: #4285f4;\r\n    height: 36px;\r\n    line-height: 36px;\r\n    border-radius: 18px;\r\n    border: 1px solid #DADCE0;\r\n}\r\n\r\n#ar-button:active {\r\n    background-color: #E8EAED;\r\n}\r\n\r\n#ar-button:focus {\r\n    outline: none;\r\n}\r\n\r\n#ar-button:focus-visible {\r\n    outline: 1px solid #4285f4;\r\n}\r\n\r\n#logo-overlay {\r\n    position: absolute;\r\n    \/* KEY CHANGE: Reduced bottom padding from 20px to 10px *\/\r\n    bottom: -42px;\r\n    right: 10px;\r\n    width: 80px;\r\n    height: 80px;\r\n    object-fit: contain;\r\n    border-radius: 8px;\r\n    pointer-events: none;\r\n}\r\n\r\n.sel {\r\n  margin-top: -15px;\r\n  margin-left: 30px;\r\n  float: left;\r\n  width: 30vw;\r\n  \/* position: absolute; *\/\r\n  \/* display: inline-block; *\/\r\n  \/* left: 175px; *\/\r\n  \/* font-family: Arial, Helvetica, sans-serif; *\/\r\n  \/* background-color: rgb(147, 200, 147); *\/\r\n}\r\n\r\n.label {    \/* capacity *\/\r\n  \/* background-color: red; *\/\r\n  \/* display: inline-block; *\/\r\n  \/* height: 20px; *\/\r\n  \/* width: 78px; *\/\r\n  \/* width: 50vw; *\/\r\n  width: 100%;\r\n  text-align: left;\r\n  vertical-align: middle;\r\n  margin-bottom: 8px;\r\n  font-size: 1.8vh;\r\n  float: left;\r\n  clear: both;\r\n  \/* height: 50%; *\/\r\n\r\n  }\r\n\r\n.dropdown {\r\n  float: left;\r\n  background-color: white;\r\n  clear: both;\r\n  height: 2.5vh;\r\n  \/* width: 50vw; *\/\r\n  \/* width: 100%; *\/\r\n  \/* font-size: 1rem; *\/\r\n  font-size: 1.6vh;\r\n}\r\n\r\n.dropdown option {\r\n   \/* font-size: 1rem; *\/\r\n   font-size: 11pt;\r\n   \/* font-size: 1.6vh; *\/\r\n}\r\n\r\n.btns {\r\n  \/* position: relative; *\/\r\n  position: absolute;\r\n  \/* width: 90%; *\/\r\n  \/* width: 100px; *\/\r\n  \/* height: 50px; *\/\r\n  height: 5vh;\r\n  width: 100vw;\r\n  bottom: 0;\r\n  margin-bottom: 0;\r\n  \/* background-color: rgb(115, 0, 255); *\/\r\n  overflow: visible;\r\n margin-bottom:30px;\r\n}\r\n\r\n\/* measure button *\/\r\n.b1, .b2, .b3 {   \r\n  \/* position: absolute; *\/\r\n  \/* display: inline-block; *\/\r\n  \/* left: 110px; *\/\r\n  margin-left: 30px;\r\n  float: left;\r\n  white-space: nowrap;\r\n  height: 100%;\r\n}\r\n\r\n  .dot {\r\n    display: none;\r\n  }\r\n  \r\n  .glass {\r\n    background: rgba(255, 255, 255, 0.37);\r\n    backdrop-filter: blur(8px) contrast(0.89) saturate(1.27);\r\n    -webkit-backdrop-filter: blur(8px) contrast(0.89) saturate(1.27);\r\n    border: 1px solid rgba(255, 255, 255, 0.4);\r\n    padding: 0.5rem;\r\n    border-radius: 0.5rem;\r\n  }\r\n  \r\n  .dim {\r\n    border-radius: 4px;\r\n    border: none;\r\n    box-sizing: border-box;\r\n    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.25);\r\n    color: rgba(0, 0, 0, 0.8);\r\n    display: block;\r\n    font-family: Futura, Helvetica Neue, sans-serif;\r\n    \/* font-size: 1em; *\/\r\n    font-size: 1.6vh;\r\n    font-weight: 700;\r\n    max-width: 128px;\r\n    overflow-wrap: break-word;\r\n    padding: 8px;\r\n    position: absolute;\r\n    width: max-content;\r\n    height: max-content;\r\n    transform: translate3d(-50%, -50%, 0);\r\n    pointer-events: none;\r\n    --min-hotspot-opacity: 0;\r\n  }\r\n  \r\n  \/* @media only screen and (max-width: 800px) {\r\n    .dim {\r\n      font-size: 3vw;\r\n    }\r\n  } *\/\r\n  \r\n  .dimensionLineContainer {\r\n    pointer-events: none;\r\n    display: block;\r\n  }\r\n  \r\n  .dimensionLine {\r\n    stroke: #16a5e6;\r\n    stroke-width: 2;\r\n    stroke-dasharray: 2;\r\n  }\r\n  \r\n  .hide {\r\n    display: none;\r\n  }\r\n\r\n  :not(:defined)>* {\r\n    display: none;\r\n  }\r\n  \r\n  #ar-button {\r\n    background-image: url(https:\/\/cdn2.moovair.com\/ar\/_assets\/ic_view_in_ar_new_googblue_48dp.png);\r\n    background-repeat: no-repeat;\r\n    background-size: 20px 20px;\r\n    background-position: 12px 50%;\r\n    background-color: #fff;\r\n    position: absolute;\r\n    left: 50%;\r\n    transform: translateX(-50%);\r\n    white-space: nowrap;\r\n    bottom: 132px;\r\n    padding: 0px 16px 0px 40px;\r\n    font-family: Roboto Regular, Helvetica Neue, sans-serif;\r\n    font-size: 14px;\r\n    color:#4285f4;\r\n    height: 36px;\r\n    line-height: 36px;\r\n    border-radius: 18px;\r\n    border: 1px solid #DADCE0;\r\n  }\r\n\r\n  #ar-button:active {\r\n    background-color: #E8EAED;\r\n  }\r\n\r\n  #ar-button:focus {\r\n    outline: none;\r\n  }\r\n\r\n  #ar-button:focus-visible {\r\n    outline: 1px solid #4285f4;\r\n  }\r\n\r\n  @keyframes circle {\r\n    from { transform: translateX(-50%) rotate(0deg) translateX(50px) rotate(0deg); }\r\n    to   { transform: translateX(-50%) rotate(360deg) translateX(50px) rotate(-360deg); }\r\n  }\r\n\r\n  @keyframes elongate {\r\n    from { transform: translateX(100px); }\r\n    to   { transform: translateX(-100px); }\r\n  }\r\n\r\n  model-viewer > #ar-prompt {\r\n    position: absolute;\r\n    left: 50%;\r\n    bottom: 175px;\r\n    animation: elongate 2s infinite ease-in-out alternate;\r\n    display: none;\r\n  }\r\n\r\n  model-viewer[ar-status=\"session-started\"] > #ar-prompt {\r\n    display: block;\r\n  }\r\n\r\n  model-viewer > #ar-prompt > img {\r\n    animation: circle 4s linear infinite;\r\n  }\r\n\r\n  model-viewer > #ar-failure {\r\n    position: absolute;\r\n    left: 50%;\r\n    transform: translateX(-50%);\r\n    bottom: 175px;\r\n    display: none;\r\n  }\r\n\r\n  model-viewer[ar-tracking=\"not-tracking\"] > #ar-failure {\r\n    display: block;\r\n  }<\/style><script>let model_name = \"EMPTY\";\r\nlet model_url = \"EMPTY\";\r\nlet model_usdz = \"EMPTY\";\r\nlet model_glb = \"EMPTY\";\r\nlet width = \"-\";\r\nlet deep = \"-\";\r\nlet height = \"-\";\r\nlet offset = 0;\r\nlet enable_explode = false;\r\nlet center;\r\nlet size;\r\nlet offset_x;\r\nlet offset_y;\r\nlet offset_z;\r\nlet x2;\r\nlet y2;\r\nlet z2;\r\nlet actual_model = outdoor_a;\r\nlet value = outdoor_a;\r\n\r\nlet previus_model = actual_model;\r\nconsole.log(\"model glb: \" + glbs[actual_model]);\r\n\r\nlet show_dimensions = false;\r\nlet model_status = \"implode\";\r\n\r\nconst modelViewer = document.getElementById(\"viewer\");\r\ndocument.getElementById(\"viewer\").setAttribute(\"src\", glbs[actual_model]);\r\n\r\nconst sel_div = document.getElementById(\"sel_div\");\r\nconst select = document.getElementById(\"capacity_select\");\r\nconst select2 = document.getElementById(\"capacity_select2\"); \/\/ Myriad\r\nlet select_changes = 0;\r\n\r\n\/\/-----------------------------------------------------------------------------------------------------\r\n\r\nwindow.onload = function () {\r\n  console.log(\"The website is fully loaded!\");\r\n\r\n  const button_explode = document.getElementById(\"button_explode\");\r\n  const button_implode = document.getElementById(\"button_implode\");\r\n\r\n  const button_measure = document.getElementById(\"button_measure\");\r\n\r\n  const button_indoor_A = document.getElementById(\"button_indoor_A\");\r\n  const button_outdoor_A = document.getElementById(\"button_outdoor_A\");\r\n\r\n  const button_myriad = document.getElementById(\"button_myriad\");\r\n  const button_myriad_plus = document.getElementById(\"button_myriad_plus\");\r\n\r\n  const button_console = document.getElementById(\"button_console\");\r\n  const button_cassette = document.getElementById(\"button_cassette\");\r\n\r\n  sel_div.classList.remove(\"hide\");\r\n\r\n  \/\/ Myriad\r\n  if (use_two_outdoor_buttons) {\r\n    button_outdoor_A.classList.add(\"hide\");\r\n    button_indoor_A.classList.add(\"hide\");\r\n    button_myriad_plus.classList.remove(\"hide\");\r\n  } else {\r\n    \/\/ button_outdoor_A.classList.remove(\"hide\");\r\n    \/\/ button_indoor_A.classList.remove(\"hide\");\r\n    \/\/ button_myriad_plus.classList.remove(\"hide\");\r\n  }\r\n\r\n  const dimLines = modelViewer.querySelectorAll(\"line\");\r\n\r\n  const renderSVG = () => {\r\n    drawLine(\r\n      dimLines[0],\r\n      modelViewer.queryHotspot(\"hotspot-dot+X-Y+Z\"),\r\n      modelViewer.queryHotspot(\"hotspot-dot+X-Y-Z\"),\r\n      modelViewer.queryHotspot(\"hotspot-dim+X-Y\")\r\n    );\r\n    drawLine(\r\n      dimLines[1],\r\n      modelViewer.queryHotspot(\"hotspot-dot+X-Y-Z\"),\r\n      modelViewer.queryHotspot(\"hotspot-dot+X+Y-Z\"),\r\n      modelViewer.queryHotspot(\"hotspot-dim+X-Z\")\r\n    );\r\n\r\n    drawLine(\r\n      dimLines[2],\r\n      modelViewer.queryHotspot(\"hotspot-dot+X+Y-Z\"),\r\n      modelViewer.queryHotspot(\"hotspot-dot-X+Y-Z\"),\r\n      modelViewer.queryHotspot(\"hotspot-dim+Y-Z\")\r\n    ); \/\/ FIX LINE WIDTH\r\n\r\n    drawLine(\r\n      dimLines[3],\r\n      modelViewer.queryHotspot(\"hotspot-dot-X+Y-Z\"),\r\n      modelViewer.queryHotspot(\"hotspot-dot-X-Y-Z\"),\r\n      modelViewer.queryHotspot(\"hotspot-dim-X-Z\")\r\n    );\r\n    drawLine(\r\n      dimLines[4],\r\n      modelViewer.queryHotspot(\"hotspot-dot-X-Y-Z\"),\r\n      modelViewer.queryHotspot(\"hotspot-dot-X-Y+Z\"),\r\n      modelViewer.queryHotspot(\"hotspot-dim-X-Y\")\r\n    );\r\n  };\r\n\r\n  modelViewer.addEventListener(\"camera-change\", renderSVG);\r\n\r\n  function set_option(option, dropdown) {\r\n    if (option !== \"\") {\r\n      var opt = document.createElement(\"option\");\r\n      opt.value = option;\r\n      opt.innerHTML = capacities[option];\r\n      dropdown.appendChild(opt);\r\n    }\r\n  }\r\n\r\n  set_option(outdoor_a, select);\r\n  set_option(outdoor_b, select);\r\n  set_option(outdoor_c, select);\r\n  set_option(outdoor_d, select);\r\n\r\n  set_option(outdoor_2_a, select2);\r\n  set_option(outdoor_2_b, select2);\r\n  set_option(outdoor_2_c, select2);\r\n  set_option(outdoor_2_d, select2);\r\n\r\n  \/\/-----------------------------------------------------------------------------------------------\r\n\r\n  function changeSelect() {\r\n    select_changes += 1;\r\n\r\n    value = select.value;\r\n    console.log(\"Change Select: \" + value);\r\n    previus_model = actual_model;\r\n    actual_model = value;\r\n    show_dimensions = false;\r\n    setVisibility(show_dimensions);\r\n    width = widths[actual_model];\r\n    deep = deeps[actual_model];\r\n    height = heights[actual_model];\r\n    console.log(\r\n      \"width: \" + width + \" \/ deep: \" + deep + \" \/ height: \" + height\r\n    );\r\n\r\n    model_url = glbs[actual_model];\r\n    enable_explode = explodes[actual_model];\r\n    model_glb = glbs[actual_model];\r\n    model_usdz = usdz[actual_model];\r\n\r\n    modelViewer.src = model_glb;\r\n    document.getElementById(\"viewer\").setAttribute(\"src\", model_glb);\r\n    document.getElementById(\"viewer\").setAttribute(\"ios-src\", model_usdz);\r\n  }\r\n\r\n  function changeSelect2() {\r\n    select_changes += 1;\r\n\r\n    value = select2.value;\r\n    console.log(\"Change Select2: \" + value);\r\n    previus_model = actual_model;\r\n    actual_model = value;\r\n    show_dimensions = false;\r\n    setVisibility(show_dimensions);\r\n    width = widths[actual_model];\r\n    deep = deeps[actual_model];\r\n    height = heights[actual_model];\r\n    console.log(\r\n      \"width: \" + width + \" \/ deep: \" + deep + \" \/ height: \" + height\r\n    );\r\n\r\n    model_url = glbs[actual_model];\r\n    enable_explode = explodes[actual_model];\r\n    model_glb = glbs[actual_model];\r\n    model_usdz = usdz[actual_model];\r\n\r\n    modelViewer.src = model_glb;\r\n    document.getElementById(\"viewer\").setAttribute(\"src\", model_glb);\r\n    document.getElementById(\"viewer\").setAttribute(\"ios-src\", model_usdz);\r\n  }\r\n\r\n  select.addEventListener(\"change\", changeSelect);\r\n  select2.addEventListener(\"change\", changeSelect2);\r\n\r\n  \/\/--------------------------------------------------------------------------------------------------\r\n\/\/ New function to encapsulate dimension calculation\r\n\r\n  \r\n\tmodelViewer.addEventListener(\"load\", () => {\r\n    console.log(\r\n      \"VIEWER LOADED actual_model: \" + actual_model + \" type: \" + type_model\r\n    );\r\n\t\t\/\/ Call the new dimension calculation function\r\n  \r\n\r\n    show_dimensions = false;\r\ncenter = modelViewer.getBoundingBoxCenter();\r\n\t\t\r\n    setVisibility(show_dimensions);\r\n\r\n    model_status = \"implode\";\r\n\r\n    button_outdoor_A.classList.add(\"hide\");\r\n    button_indoor_A.classList.add(\"hide\");\r\n    button_explode.classList.add(\"hide\");\r\n    button_implode.classList.add(\"hide\");\r\n\r\n    \/\/center = modelViewer.getBoundingBoxCenter();\r\n\r\n    model_url = glbs[actual_model];\r\n    enable_explode = explodes[actual_model];\r\n    model_glb = glbs[actual_model];\r\n    model_usdz = usdz[actual_model];\r\n\r\n    document.getElementById(\"viewer\").setAttribute(\"ios-src\", model_usdz);\r\n\r\n    if (enable_explode) {\r\n      console.log(\"enable explode\");\r\n      stopx();\r\n      button_explode.classList.remove(\"hide\");\r\n    } else {\r\n      console.log(\"running play\");\r\n      playx();\r\n    }\r\n\r\n    if (type_model == \"outdoor\") {\r\n      console.log(\"TYPE OUT DOOR\");\r\n      button_outdoor_A.classList.add(\"hide\");\r\n      button_indoor_A.classList.add(\"hide\");\r\n      button_cassette.classList.add(\"hide\");\r\n      button_console.classList.add(\"hide\");\r\n\r\n      sel_div.classList.remove(\"hide\");\r\n\r\n      if (consolle[actual_model]) {\r\n        console.log(\"CONSOLE TRUE\");\r\n        button_console.classList.remove(\"hide\");\r\n        sel_div.classList.remove(\"hide\");\r\n      }\r\n      if (cassette[actual_model]) {\r\n        console.log(\"CASSETTE TRUE\");\r\n        button_cassette.classList.remove(\"hide\");\r\n        sel_div.classList.remove(\"hide\");\r\n      }\r\n      if (!cassette[actual_model] && !consolle[actual_model]) {\r\n        console.log(\"NORMAL\");\r\n        button_indoor_A.classList.remove(\"hide\");\r\n      }\r\n    } else {\r\n      button_cassette.classList.add(\"hide\");\r\n      button_console.classList.add(\"hide\");\r\n      button_indoor_A.classList.add(\"hide\");\r\n      button_outdoor_A.classList.remove(\"hide\");\r\n      sel_div.classList.add(\"hide\");\r\n    }\r\n\r\n    \/\/ Myriad\r\n    if (use_two_outdoor_buttons) {\r\n      button_indoor_A.classList.add(\"hide\");\r\n\r\n      \/\/ button_outdoor_A.classList.add(\"hide\");\r\n      \/\/ button_myriad.classList.remove(\"hide\");\r\n      \/\/ button_myriad_plus.classList.remove(\"hide\");\r\n      \/\/ sel_div.classList.remove(\"hide\");\r\n    } else {\r\n    }\r\n\r\n    \/\/ Mix Moov Heat+\r\n    \/\/ if (use_two_indoor_buttons) {\r\n    \/\/   \/\/ button_indoor_A.classList.remove(\"hide\");\r\n    \/\/   \/\/ button_indoor_B.classList.remove(\"hide\");\r\n    \/\/ } else {\r\n    \/\/ }\r\n\r\n    width = widths[actual_model];\r\n    deep = deeps[actual_model];\r\n    height = heights[actual_model];\r\n    offset = offsets[actual_model];\r\n\r\n    size = modelViewer.getDimensions();\r\n    offset_x = (size.x * offset) \/ 100;\r\n    offset_y = (size.y * offset) \/ 100;\r\n    offset_z = (size.z * offset) \/ 100;\r\n    x2 = (size.x + offset_x) \/ 2;\r\n    y2 = (size.y + offset_y) \/ 2;\r\n    z2 = (size.z + offset_z) \/ 2;\r\n  });\r\n  \/\/  END MODEL LO-AD EVENT\r\n\r\n  button_explode.addEventListener(\"click\", explode);\r\n  button_implode.addEventListener(\"click\", implode);\r\n\r\n  const dimElements = [\r\n    ...modelViewer.querySelectorAll(\"button\"),\r\n    modelViewer.querySelector(\"#dimLines\"),\r\n  ];\r\n\r\n  function setVisibility(visible) {\r\n    console.log(\"set-Visibility: \" + visible);\r\n\t\r\n    dimElements.forEach((element) => {\r\n      if (visible) {\r\n       modelViewer.updateHotspot({\r\n        name: \"hotspot-dot+X-Y+Z\",\r\n         position: `${center.x + x2} ${center.y - y2} ${center.z + z2}`,\r\n       });\r\n           \r\n        modelViewer.updateHotspot({\r\n          name: \"hotspot-dim+X-Y\",\r\n          position: `${center.x + x2 * 1} ${center.y - y2 * 1} ${center.z}`,\r\n        });\r\n\r\n        modelViewer.querySelector(\r\n          'button[slot=\"hotspot-dim+X-Y\"]'\r\n        ).textContent = deep;\r\n\r\n        modelViewer.updateHotspot({\r\n          name: \"hotspot-dot+X-Y-Z\",\r\n          position: `${center.x + x2} ${center.y - y2} ${center.z - z2}`,\r\n        });\r\n\r\n        modelViewer.updateHotspot({\r\n          name: \"hotspot-dim+X-Z\",\r\n          position: `${center.x + x2 * 1} ${center.y} ${center.z - z2 * 1}`,\r\n        });\r\n\r\n        modelViewer.querySelector(\r\n          'button[slot=\"hotspot-dim+X-Z\"]'\r\n        ).textContent = height;\r\n\r\n        modelViewer.updateHotspot({\r\n          name: \"hotspot-dot+X+Y-Z\",\r\n          position: `${center.x + x2} ${center.y + y2} ${center.z - z2}`,\r\n        });\r\n\r\n        modelViewer.updateHotspot({\r\n          name: \"hotspot-dim+Y-Z\",\r\n          position: `${center.x} ${center.y + y2 * 1} ${center.z - z2 * 1}`,\r\n        });\r\n\r\n        modelViewer.querySelector(\r\n          'button[slot=\"hotspot-dim+Y-Z\"]'\r\n        ).textContent = width;\r\n\r\n        modelViewer.updateHotspot({\r\n          name: \"hotspot-dot-X+Y-Z\",\r\n          position: `${center.x - x2} ${center.y + y2} ${center.z - z2}`,\r\n        });\r\n\r\n        modelViewer.updateHotspot({\r\n          name: \"hotspot-dim-X-Z\",\r\n          position: `${center.x - x2 * 1} ${center.y} ${center.z - z2 * 1}`,\r\n        });\r\n\r\n        modelViewer.querySelector(\r\n          'button[slot=\"hotspot-dim-X-Z\"]'\r\n        ).textContent = height;\r\n\r\n        modelViewer.updateHotspot({\r\n          name: \"hotspot-dot-X-Y-Z\",\r\n          position: `${center.x - x2} ${center.y - y2} ${center.z - z2}`,\r\n        });\r\n\r\n        modelViewer.updateHotspot({\r\n          name: \"hotspot-dim-X-Y\",\r\n          position: `${center.x - x2 * 1} ${center.y - y2 * 1} ${center.z}`,\r\n        });\r\n\r\n        modelViewer.querySelector(\r\n          'button[slot=\"hotspot-dim-X-Y\"]'\r\n        ).textContent = deep;\r\n\r\n        modelViewer.updateHotspot({\r\n          name: \"hotspot-dot-X-Y+Z\",\r\n          position: `${center.x - x2} ${center.y - y2} ${center.z + z2}`,\r\n        });\r\n\r\n        renderSVG();\r\n\r\n        element.classList.remove(\"hide\");\r\n      } else {\r\n        element.classList.add(\"hide\");\r\n      }\r\n    });\r\n  }\r\n\r\n  button_measure.addEventListener(\"click\", () => {\r\n    console.log(\r\n      \"button measure pressed \/ model_status: \" +\r\n        model_status +\r\n        \" \/ width: \" +\r\n        width +\r\n        \" \/ deep: \" +\r\n        deep +\r\n        \" \/ height: \" +\r\n        height\r\n    );\r\n  \r\n    if (model_status == \"implode\") {\r\n      show_dimensions = !show_dimensions;\r\n      setVisibility(show_dimensions);\r\n    }\r\n\r\n  });\r\n\r\n  button_outdoor_A.addEventListener(\"click\", () => {\r\n    stopx();\r\n    console.log(\"button A pressed\");\r\n    \/\/ button_outdoor_A.classList.add(\"hide\");\r\n    \/\/ button_indoor_A.classList.remove(\"hide\");\r\n    type_model = \"outdoor\";\r\n    actual_model = previus_model;\r\n    console.log(\"actual model: \" + actual_model);\r\n    enable_explode = explodes[actual_model];\r\n    model_glb = glbs[actual_model];\r\n    model_usdz = usdz[actual_model];\r\n    modelViewer.src = model_glb;\r\n    document.getElementById(\"viewer\").setAttribute(\"src\", model_glb);\r\n    document.getElementById(\"viewer\").setAttribute(\"ios-src\", model_usdz);\r\n  });\r\n\r\n  button_indoor_A.addEventListener(\"click\", () => {\r\n    stopx();\r\n    console.log(\"button B pressed\");\r\n    \/\/ button_indoor_A.classList.add(\"hide\");\r\n    \/\/ button_outdoor_A.classList.remove(\"hide\");\r\n    type_model = \"indoor\";\r\n    previus_model = actual_model;\r\n    actual_model = indoor_a;\r\n    console.log(\"actual model: \" + actual_model);\r\n    enable_explode = explodes[actual_model];\r\n    model_glb = glbs[actual_model];\r\n    console.log(\"model glb: \" + model_glb);\r\n    model_usdz = usdz[actual_model];\r\n    console.log(\"model usdz: \" + model_usdz);\r\n    modelViewer.src = model_glb;\r\n    document.getElementById(\"viewer\").setAttribute(\"src\", model_glb);\r\n    document.getElementById(\"viewer\").setAttribute(\"ios-src\", model_usdz);\r\n  });\r\n\r\n  button_cassette.addEventListener(\"click\", () => {\r\n    stopx();\r\n    console.log(\"button cassette pressed\");\r\n    \/\/ button_indoor_A.classList.add(\"hide\");\r\n    \/\/ button_outdoor_A.classList.remove(\"hide\");\r\n    type_model = \"indoor\";\r\n    previus_model = actual_model;\r\n    actual_model = indoor_a;\r\n    console.log(\"actual model: \" + actual_model);\r\n    enable_explode = explodes[actual_model];\r\n    model_glb = glbs[actual_model];\r\n    console.log(\"model glb: \" + model_glb);\r\n    model_usdz = usdz[actual_model];\r\n    console.log(\"model usdz: \" + model_usdz);\r\n    modelViewer.src = model_glb;\r\n    document.getElementById(\"viewer\").setAttribute(\"src\", model_glb);\r\n    document.getElementById(\"viewer\").setAttribute(\"ios-src\", model_usdz);\r\n  });\r\n\r\n  button_console.addEventListener(\"click\", () => {\r\n    stopx();\r\n    console.log(\"button cassette pressed\");\r\n    \/\/ button_indoor_A.classList.add(\"hide\");\r\n    \/\/ button_outdoor_A.classList.remove(\"hide\");\r\n    type_model = \"indoor\";\r\n    previus_model = actual_model;\r\n    actual_model = indoor_b;\r\n    console.log(\"actual model: \" + actual_model);\r\n    enable_explode = explodes[actual_model];\r\n    model_glb = glbs[actual_model];\r\n    console.log(\"model glb: \" + model_glb);\r\n    model_usdz = usdz[actual_model];\r\n    console.log(\"model usdz: \" + model_usdz);\r\n    modelViewer.src = model_glb;\r\n    document.getElementById(\"viewer\").setAttribute(\"src\", model_glb);\r\n    document.getElementById(\"viewer\").setAttribute(\"ios-src\", model_usdz);\r\n  });\r\n\r\n  button_myriad.addEventListener(\"click\", () => {\r\n    stopx();\r\n    console.log(\"button Myriad pressed\");\r\n    type_model = \"outdoor\";\r\n\r\n    button_myriad.classList.add(\"hide\");\r\n    button_myriad_plus.classList.remove(\"hide\");\r\n    select2.classList.add(\"hide\");\r\n    select.classList.remove(\"hide\");\r\n\r\n    \/\/ actual_model = outdoor_a;\r\n    \/\/ actual_model = outdoor_2_a;\r\n    value = select.value;\r\n    previus_model = actual_model;\r\n    actual_model = value;\r\n\r\n    console.log(\"actual model: \" + actual_model);\r\n    enable_explode = explodes[actual_model];\r\n    model_glb = glbs[actual_model];\r\n    model_usdz = usdz[actual_model];\r\n    modelViewer.src = model_glb;\r\n    document.getElementById(\"viewer\").setAttribute(\"src\", model_glb);\r\n    document.getElementById(\"viewer\").setAttribute(\"ios-src\", model_usdz);\r\n  });\r\n\r\n  button_myriad_plus.addEventListener(\"click\", () => {\r\n    stopx();\r\n    console.log(\"button Myriad plus pressed\");\r\n    type_model = \"outdoor\";\r\n\r\n    button_myriad_plus.classList.add(\"hide\");\r\n    button_myriad.classList.remove(\"hide\");\r\n    select.classList.add(\"hide\");\r\n    select2.classList.remove(\"hide\");\r\n\r\n    \/\/ actual_model = outdoor_2_a;\r\n    value = select2.value;\r\n    previus_model = actual_model;\r\n    actual_model = value;\r\n\r\n    console.log(\"actual model: \" + actual_model);\r\n    enable_explode = explodes[actual_model];\r\n    model_glb = glbs[actual_model];\r\n    model_usdz = usdz[actual_model];\r\n    modelViewer.src = model_glb;\r\n    document.getElementById(\"viewer\").setAttribute(\"src\", model_glb);\r\n    document.getElementById(\"viewer\").setAttribute(\"ios-src\", model_usdz);\r\n  });\r\n\r\n  async function playx() {\r\n    console.log(\"play animation\");\r\n    modelViewer.timeScale = 1;\r\n    await modelViewer.updateComplete;\r\n    modelViewer.pause();\r\n    modelViewer.play({ repetitions: 9999 });\r\n    modelViewer.appendAnimation(\"rotate\", {\r\n      weight: parseFloat(100),\r\n      repetitions: 9999,\r\n    });\r\n    modelViewer.appendAnimation(\"rotate2\", {\r\n      weight: parseFloat(100),\r\n      repetitions: 9999,\r\n    });\r\n  }\r\n\r\n  async function stopx() {\r\n    console.log(\"stop animation\");\r\n\tmodelViewer.animationName=\"explode\";\r\n    modelViewer.currentTime = 0;\r\n    modelViewer.timeScale = 0;\r\n    await modelViewer.updateComplete;\r\n    modelViewer.pause();\r\n  }\r\n\r\n  modelViewer.addEventListener(\"ar-model_status\", (event) => {\r\n    setVisibility(\r\n      show_dimensions && event.detail.model_status !== \"session-started\"\r\n    );\r\n  });\r\n\r\n  async function explode() {\r\n    console.log(\"exploding....\");\r\n    model_status = \"exploding\";\r\n    show_dimensions = false;\r\n    setVisibility(show_dimensions);\r\n    modelViewer.animationName = \"explode\";\r\n    modelViewer.timeScale = 1;\r\n    await modelViewer.updateComplete;\r\n    modelViewer.play({\r\n      repetitions: 1,\r\n    });\r\n  }\r\n\r\n  async function implode() {\r\n    console.log(\"imploding....\");\r\n    model_status = \"imploding\";\r\n    modelViewer.animationName = \"implode\";\r\n    modelViewer.timeScale = 1;\r\n    await modelViewer.updateComplete;\r\n    modelViewer.play({\r\n      repetitions: 1,\r\n    });\r\n  }\r\n\r\n  modelViewer.addEventListener(\"finished\", () => {\r\n    console.log(\"animation finished\");\r\n    if (model_status == \"exploding\") {\r\n      model_status = \"explode\";\r\n      console.log(\"Enabling implode button\");\r\n      button_explode.classList.add(\"hide\");\r\n      button_implode.classList.remove(\"hide\");\r\n    }\r\n    if (model_status == \"imploding\") {\r\n      model_status = \"implode\";\r\n      console.log(\"Enabling explode button\");\r\n      button_implode.classList.add(\"hide\");\r\n      button_explode.classList.remove(\"hide\");\r\n    }\r\n  });\r\n\/\/ New function to encapsulate dimension calculation\r\nfunction calculateDimensions() {\r\n    center = modelViewer.getBoundingBoxCenter();\r\n    size = modelViewer.getDimensions();\r\n    offset_x = (size.x * offset) \/ 100;\r\n    offset_y = (size.y * offset) \/ 100;\r\n    offset_z = (size.z * offset) \/ 100;\r\n    x2 = (size.x + offset_x) \/ 2;\r\n    y2 = (size.y + offset_y) \/ 2;\r\n    z2 = (size.z + offset_z) \/ 2;\r\n}\r\n\r\n\r\n  function drawLine(svgLine, dotHotspot1, dotHotspot2, dimensionHotspot) {\r\n    if (dotHotspot1 && dotHotspot2) {\r\n      svgLine.setAttribute(\"x1\", dotHotspot1.canvasPosition.x);\r\n      svgLine.setAttribute(\"y1\", dotHotspot1.canvasPosition.y);\r\n      svgLine.setAttribute(\"x2\", dotHotspot2.canvasPosition.x);\r\n      svgLine.setAttribute(\"y2\", dotHotspot2.canvasPosition.y);\r\n\r\n      if (dimensionHotspot && !dimensionHotspot.facingCamera) {\r\n        svgLine.classList.add(\"hide\");\r\n      } else {\r\n        svgLine.classList.remove(\"hide\");\r\n      }\r\n    }\r\n  }\r\n};<\/script>Designed for Canadian homes, the Moovair Morelis heat pump is your ultimate year-round home heating and cooling solution. As the highest-efficiency model in [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":"","_wp_rev_ctl_limit":""},"dipi_cpt_category":[],"class_list":["post-16258436","page","type-page","status-publish","hentry"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/moovair.com\/en-ca\/wp-json\/wp\/v2\/pages\/16258436","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/moovair.com\/en-ca\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/moovair.com\/en-ca\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/moovair.com\/en-ca\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/moovair.com\/en-ca\/wp-json\/wp\/v2\/comments?post=16258436"}],"version-history":[{"count":15,"href":"https:\/\/moovair.com\/en-ca\/wp-json\/wp\/v2\/pages\/16258436\/revisions"}],"predecessor-version":[{"id":16266697,"href":"https:\/\/moovair.com\/en-ca\/wp-json\/wp\/v2\/pages\/16258436\/revisions\/16266697"}],"wp:attachment":[{"href":"https:\/\/moovair.com\/en-ca\/wp-json\/wp\/v2\/media?parent=16258436"}],"wp:term":[{"taxonomy":"dipi_cpt_category","embeddable":true,"href":"https:\/\/moovair.com\/en-ca\/wp-json\/wp\/v2\/dipi_cpt_category?post=16258436"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}