{"id":59068,"date":"2026-06-10T10:30:13","date_gmt":"2026-06-10T14:30:13","guid":{"rendered":"https:\/\/support.sinopetech.com\/test-contactez-nous\/"},"modified":"2026-07-02T11:08:40","modified_gmt":"2026-07-02T15:08:40","slug":"contact","status":"publish","type":"page","link":"https:\/\/support.sinopetech.com\/en\/contact\/","title":{"rendered":"Contact us"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"59068\" class=\"elementor elementor-59068 elementor-58970\" data-elementor-post-type=\"page\">\n\t\t\t\t\t\t<div class=\"elementor-section elementor-top-section elementor-element elementor-element-4743386 elementor-section-stretched elementor-section-full_width elementor-section-height-min-height contenu-des-pages elementor-section-height-default elementor-section-items-middle\" data-id=\"4743386\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;stretch_section&quot;:&quot;section-stretched&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-09d011d\" data-id=\"09d011d\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t<div class=\"elementor-element elementor-element-734600e elementor-hidden-desktop elementor-hidden-tablet elementor-hidden-mobile e-flex e-con-boxed e-con e-parent\" data-id=\"734600e\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c1ef90e elementor-widget elementor-widget-text-editor\" data-id=\"c1ef90e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p style=\"text-align: center;\" data-start=\"142\" data-end=\"385\"><strong data-start=\"145\" data-end=\"174\">\ud83c\udf84 <span style=\"font-size: 14pt;\">Holiday Schedule 2025-2026<\/span><\/strong><\/p>\n<p style=\"text-align: center;\" data-start=\"142\" data-end=\"385\">Our offices will be <strong>closed from December 25th to January 4th, 2026 inclusive<\/strong> . Technical support will be available by email only for <strong>emergencies on December 29th, 30th and 31st<\/strong> from 8:00 am to 12:00 pm EST.   <\/p>\n<p style=\"text-align: center;\">No orders will be processed during this period. Please allow 5 to 7 business days for processing your orders, starting January 5, 2026. <\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-8787c99 elementor-section-height-min-height entete elementor-section-content-top elementor-section-boxed elementor-section-height-default elementor-invisible\" data-id=\"8787c99\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;,&quot;animation&quot;:&quot;fadeIn&quot;}\">\n\t\t\t\t\t\t\t<div class=\"elementor-background-overlay\"><\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-2bff254\" data-id=\"2bff254\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-c236d8d elementor-hidden-phone elementor-widget elementor-widget-heading\" data-id=\"c236d8d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Contact form <\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c441480 elementor-hidden-phone elementor-widget elementor-widget-heading\" data-id=\"c441480\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">Send us your request and we will respond as soon as possible.<\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fc194b0 elementor-section-height-min-height elementor-section-content-middle elementor-hidden-desktop elementor-hidden-tablet elementor-section-boxed elementor-section-height-default\" data-id=\"fc194b0\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t\t<div class=\"elementor-background-overlay\"><\/div>\n\t\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-d9572e1 elementor-hidden-desktop elementor-hidden-tablet\" data-id=\"d9572e1\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-70c622a elementor-widget elementor-widget-heading\" data-id=\"70c622a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Need help?  <\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1a73503 elementor-widget elementor-widget-heading\" data-id=\"1a73503\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<p class=\"elementor-heading-title elementor-size-default\">Send us your request and we will respond as soon as possible.<\/p>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-3b4b216 e-flex e-con-boxed e-con e-parent\" data-id=\"3b4b216\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4dd43dd elementor-widget elementor-widget-html\" data-id=\"4dd43dd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<script>\/*!\r\n *\r\n *\tjQuery Dropdown\r\n *\r\n *\thttp:\/\/danewilliams.uk\/projects\/jquery-dropdown\r\n *\thttps:\/\/github.com\/daneWilliams\/jquery.dropdown\r\n *\r\n *\t================================================================\r\n *\r\n *\t@version\t\t2.0.4\r\n *\r\n *\t@author\t\t\tDane Williams <dane@danewilliams.uk>\r\n *\t@copyright\t\t2014 Dane Williams\r\n *\t@license\t\tMIT License\r\n *\r\n *\/\r\n\r\n;(function( $, window, document, undefined ) {\r\n\r\n\r\n\t\/**\r\n\t *\r\n\t *\tPlugin constructor\r\n\t *\r\n\t *\t================================================================ *\/\r\n\r\n\tdropdown = function( elem, options ) {\r\n\r\n\t\tvar self = this;\r\n\r\n\t\t\/\/ Store reference to the element\r\n\t\tself.elem  = elem;\r\n\t\tself.$elem = $(elem);\r\n\r\n\t\t\/\/ Instance\r\n\t\tself.instance = {\r\n\r\n\t\t\tuid: null,\r\n\r\n\t\t\titems: {},\r\n\t\t\tmenus: {},\r\n\r\n\t\t\tmenu: {\r\n\t\t\t\tcurrent: null,\r\n\t\t\t\tmain: null\r\n\t\t\t},\r\n\r\n\t\t\tabove: false,\r\n\t\t\topen: false,\r\n\r\n\t\t\topening: false,\r\n\t\t\tclosing: false,\r\n\t\t\tanimating: false,\r\n\t\t\tresizing: false,\r\n\r\n\t\t\tselected: null,\r\n\t\t\tfocused: null,\r\n\t\t\tvalue: null,\r\n\r\n\t\t\tresizeTimeout: null\r\n\r\n\t\t};\r\n\r\n\t\t\/\/ Elements\r\n\t\tself.elements = {};\r\n\r\n\t\t\/\/ Options\r\n\t\tself.options  = options;\r\n\t\tself.metadata = self.$elem.data('dropdown');\r\n\r\n\t\t\/\/ Initialise\r\n\t\tself.init();\r\n\r\n\t};\r\n\r\n\r\n\t\/**\r\n\t *\r\n\t *\tPlugin prototype\r\n\t *\r\n\t *\t================================================================ *\/\r\n\r\n\tdropdown.prototype = {\r\n\r\n\r\n\t\t\/**\r\n\t\t *\r\n\t\t *\tInitialise\r\n\t\t *\r\n\t\t *\t================================================================ *\/\r\n\r\n\t\tinit: function() {\r\n\r\n\t\t\tvar self = this;\r\n\r\n\t\t\t\/\/ Update the options\r\n\t\t\tself.options   = $.extend( true, {}, self.defaults, self.options, self.metadata );\r\n\t\t\tself.templates = $.extend( true, {}, self.templates, self.options.templates );\r\n\t\t\tself.classes   = self._mergeClasses();\r\n\r\n\t\t\t\/\/ Check for transition support\r\n\t\t\tvar s = document.createElement('p').style,\r\n\t\t\t        supportsTransitions = 'transition' in s ||\r\n\t\t\t\t\t'WebkitTransition' in s ||\r\n\t\t\t\t\t'MozTransition' in s ||\r\n\t\t\t\t\t'msTransition' in s ||\r\n\t\t\t\t\t'OTransition' in s;\r\n\r\n\t\t\tif ( !supportsTransitions ) {\r\n\r\n\t\t\t\t\/\/ Disable animation\r\n\t\t\t\tself.options.animate = false;\r\n\r\n\t\t\t}\r\n\r\n\t\t\t\/\/ Build the dropdown\r\n\t\t\tself._buildDropdown();\r\n\r\n\t\t\t\/\/ Populate the dropdown\r\n\t\t\tself._populate();\r\n\r\n\t\t\t\/\/ Bind events\r\n\t\t\tself._bindEvents();\r\n\r\n\t\t\t\/\/ Callback\r\n\t\t\tself.$elem.trigger( 'dropdown-init', self );\r\n\r\n\t\t},\r\n\r\n\r\n\t\t\/**\r\n\t\t *\r\n\t\t *\tOpen the dropdown\r\n\t\t *\r\n\t\t *\t================================================================ *\/\r\n\r\n\t\topen: function( menu ) {\r\n\r\n\t\t\tvar self = this;\r\n\t\t\tvar inst = self.instance,\r\n\t\t\t    opt  = self.options,\r\n\t\t\t    elem = self.elements,\r\n\t\t\t    cls  = self.classes;\r\n\r\n\t\t\t\/\/ Already opening or closing, bail\r\n\t\t\tif ( inst.opening || inst.closing )\r\n\t\t\t\treturn;\r\n\r\n\t\t\t\/\/ Open a menu\r\n\t\t\tif ( menu ) {\r\n\r\n\t\t\t\tself.openMenu( menu );\r\n\t\t\t\treturn;\r\n\r\n\t\t\t}\r\n\r\n\t\t\t\/\/ Callback\r\n\t\t\tself._beforeOpen();\r\n\r\n\t\t\t\/\/ No animation\r\n\t\t\tif ( !opt.animate ) {\r\n\r\n\t\t\t\t\/\/ Callback\r\n\t\t\t\tself._afterOpen();\r\n\t\t\t\treturn;\r\n\r\n\t\t\t}\r\n\r\n\t\t\t\/\/ Set start values\r\n\t\t\tvar start = {\r\n\t\t\t\topacity: 0,\r\n\t\t\t\ty: -( elem.toggleButton.outerHeight() \/ 2 )\r\n\t\t\t};\r\n\r\n\t\t\t\/\/ Set finish values\r\n\t\t\tvar finish = {\r\n\t\t\t\topacity: 1,\r\n\t\t\t\ty: 0\r\n\t\t\t};\r\n\r\n\t\t\t\/\/ Above?\r\n\t\t\tif ( inst.above ) {\r\n\r\n\t\t\t\tstart.y = ( elem.toggleButton.outerHeight() \/ 2 );\r\n\r\n\t\t\t} \r\n\r\n\t\t\t\/\/ Mobile?\r\n\t\t\tvar mobile = ( elem.menuWrapper.css( 'position' ) == 'fixed' ? true : false );\r\n\r\n\t\t\tif ( mobile ) {\r\n\r\n\t\t\t\tstart.y = '100%';\r\n\r\n\t\t\t}\r\n\r\n\t\t\t\/\/ Update state\r\n\t\t\tinst.animating = true;\r\n\r\n\t\t\t\/\/ Update classes\r\n\t\t\telem.dropdown.addClass( cls.animating );\r\n\r\n\t\t\t\/\/ Animate\r\n\t\t\telem.menuWrapper.show().css( start );\r\n\r\n\t\t\tif ( mobile ) {\r\n\r\n\t\t\t\telem.overlay.show().css( { opacity: 0 } ).transition( { opacity: 1 }, opt.speed );\r\n\r\n\t\t\t}\r\n\r\n\t\t\telem.menuWrapper.transition( finish, opt.speed, function() {\r\n\r\n\t\t\t\t\/\/ Upate state\r\n\t\t\t\tinst.animating = false;\r\n\r\n\t\t\t\t\/\/ Update classes\r\n\t\t\t\telem.dropdown.removeClass( cls.animating );\r\n\r\n\t\t\t\t\/\/ Callback\r\n\t\t\t\tself._afterOpen();\r\n\r\n\t\t\t});\r\n\r\n\t\t},\r\n\r\n\r\n\t\t\/**\r\n\t\t *\r\n\t\t *\tClose the dropdown\r\n\t\t *\r\n\t\t *\t================================================================ *\/\r\n\r\n\t\tclose: function( menu ) {\r\n\r\n\t\t\tvar self = this;\r\n\t\t\tvar inst = self.instance,\r\n\t\t\t    opt  = self.options,\r\n\t\t\t    elem = self.elements,\r\n\t\t\t    cls  = self.classes;\r\n\r\n\t\t\t\/\/ Already closing or opening, bail\r\n\t\t\tif ( inst.closing || inst.opening )\r\n\t\t\t\treturn;\r\n\r\n\t\t\t\/\/ Close a menu\r\n\t\t\tif ( menu ) {\r\n\r\n\t\t\t\tself.closeMenu( menu );\r\n\t\t\t\treturn;\r\n\r\n\t\t\t}\r\n\r\n\t\t\t\/\/ Callback\r\n\t\t\tself._beforeClose();\r\n\r\n\t\t\t\/\/ No animation\r\n\t\t\tif ( !opt.animate ) {\r\n\r\n\t\t\t\t\/\/ Callback\r\n\t\t\t\tself._afterClose();\r\n\t\t\t\treturn;\r\n\r\n\t\t\t}\r\n\r\n\t\t\t\/\/ Set start values\r\n\t\t\tvar start = {\r\n\t\t\t\topacity: 1,\r\n\t\t\t\ty: 0\r\n\t\t\t};\r\n\r\n\t\t\t\/\/ Set finish values\r\n\t\t\tvar finish = {\r\n\t\t\t\topacity: 0,\r\n\t\t\t\ty: -( elem.toggleButton.outerHeight() \/ 2 )\r\n\t\t\t};\r\n\r\n\t\t\t\/\/ Above?\r\n\t\t\tif ( inst.above ) {\r\n\r\n\t\t\t\tfinish.y = ( elem.toggleButton.outerHeight() \/ 2 );\r\n\r\n\t\t\t} \r\n\r\n\t\t\t\/\/ Mobile?\r\n\t\t\tvar mobile = ( elem.menuWrapper.css( 'position' ) == 'fixed' ? true : false );\r\n\r\n\t\t\tif ( mobile ) {\r\n\r\n\t\t\t\tfinish.y = '100%';\r\n\r\n\t\t\t}\r\n\r\n\t\t\t\/\/ Update state\r\n\t\t\tinst.animating = true;\r\n\r\n\t\t\t\/\/ Update classes\r\n\t\t\telem.dropdown.addClass( cls.animating );\r\n\r\n\t\t\t\/\/ Animate\r\n\t\t\telem.menuWrapper.show().css( start );\r\n\r\n\t\t\tif ( mobile ) {\r\n\r\n\t\t\t\telem.overlay.transition( { opacity: 0 }, opt.speed );\r\n\r\n\t\t\t}\r\n\r\n\t\t\telem.menuWrapper.transition( finish, opt.speed, function() {\r\n\r\n\t\t\t\t\/\/ Upate state\r\n\t\t\t\tinst.animating = false;\r\n\r\n\t\t\t\t\/\/ Update classes\r\n\t\t\t\telem.dropdown.removeClass( cls.animating );\r\n\r\n\t\t\t\t\/\/ Hide the menu\r\n\t\t\t\telem.menuWrapper.hide();\r\n\r\n\t\t\t\t\/\/ Callback\r\n\t\t\t\tself._afterClose();\r\n\r\n\t\t\t});\r\n\r\n\t\t},\r\n\r\n\r\n\t\t\/**\r\n\t\t *\r\n\t\t *\tOpen a menu\r\n\t\t *\r\n\t\t *\t================================================================ *\/\r\n\r\n\t\topenMenu: function( menu ) {\r\n\r\n\t\t\tvar self = this;\r\n\t\t\tvar inst = self.instance,\r\n\t\t\t    opt  = self.options,\r\n\t\t\t    elem = self.elements,\r\n\t\t\t    cls  = self.classes;\r\n\r\n\t\t\t\/\/ Already opening, bail\r\n\t\t\tif ( inst.opening )\r\n\t\t\t\treturn;\r\n\r\n\t\t\t\/\/ Get the menu\r\n\t\t\tmenu = self.getMenu( menu );\r\n\r\n\t\t\t\/\/ Get the current menu\r\n\t\t\tvar current = self.getMenu();\r\n\r\n\t\t\t\/\/ Callback\r\n\t\t\tself._beforeOpenMenu( menu, current );\r\n\r\n\t\t\t\/\/ No animation\r\n\t\t\tif ( !opt.animate || menu.uid == current.uid ) {\r\n\r\n\t\t\t\t\/\/ Callback\r\n\t\t\t\tself._afterOpenMenu( menu, current );\r\n\t\t\t\treturn;\r\n\r\n\t\t\t}\r\n\r\n\t\t\t\/\/ Set start values\r\n\t\t\tvar start = {\r\n\t\t\t\tx: '100%'\r\n\t\t\t};\r\n\r\n\t\t\tmenu.elem.show().css( start );\r\n\t\t\tcurrent.elem.css({ x: 0 });\r\n\r\n\t\t\t\/\/ Set finish values\r\n\t\t\tvar finish = {\r\n\t\t\t\tx: 0\r\n\t\t\t};\r\n\r\n\t\t\t\/\/ Update state\r\n\t\t\tinst.animating = true;\r\n\r\n\t\t\t\/\/ Update classes\r\n\t\t\telem.dropdown.addClass( cls.animating );\r\n\r\n\t\t\t\/\/ Animate\r\n\t\t\tcurrent.elem.transition({ x: '-100%' }, opt.speed );\r\n\t\t\tmenu.elem.transition( finish, opt.speed, function() {\r\n\r\n\t\t\t\t\/\/ Upate state\r\n\t\t\t\tinst.animating = false;\r\n\r\n\t\t\t\t\/\/ Update classes\r\n\t\t\t\telem.dropdown.removeClass( cls.animating );\r\n\r\n\t\t\t\t\/\/ Callback\r\n\t\t\t\tself._afterOpenMenu( menu, current );\r\n\r\n\t\t\t});\r\n\r\n\t\t},\r\n\r\n\r\n\t\t\/**\r\n\t\t *\r\n\t\t *\tClose a menu\r\n\t\t *\r\n\t\t *\t================================================================ *\/\r\n\r\n\t\tcloseMenu: function( menu ) {\r\n\r\n\t\t\tvar self = this;\r\n\t\t\tvar inst = self.instance,\r\n\t\t\t    opt  = self.options,\r\n\t\t\t    elem = self.elements,\r\n\t\t\t    cls  = self.classes;\r\n\r\n\t\t\t\/\/ Already closing, bail\r\n\t\t\tif ( inst.closing )\r\n\t\t\t\treturn;\r\n\r\n\t\t\t\/\/ Get the menu\r\n\t\t\tmenu = self.getMenu( menu );\r\n\r\n\t\t\t\/\/ Get the target menu\r\n\t\t\tvar target = false;\r\n\r\n\t\t\tif ( menu.parent ) {\r\n\r\n\t\t\t\tvar item   = self.getItem( menu.parent );\r\n\t\t\t\tvar target = self.getMenu( item.menu );\r\n\r\n\t\t\t}\r\n\r\n\t\t\t\/\/ Callback\r\n\t\t\tself._beforeCloseMenu( menu, target );\r\n\r\n\t\t\t\/\/ No animation\r\n\t\t\tif ( !opt.animate || !target ) {\r\n\r\n\t\t\t\tif ( !target )\r\n\t\t\t\t\tself.close();\r\n\r\n\t\t\t\t\/\/ Callback\r\n\t\t\t\tself._afterCloseMenu( menu, target );\r\n\t\t\t\treturn;\r\n\r\n\t\t\t}\r\n\r\n\t\t\t\/\/ Set start values\r\n\t\t\tvar start = {\r\n\t\t\t\tx: 0\r\n\t\t\t};\r\n\r\n\t\t\tmenu.elem.css( start );\r\n\t\t\ttarget.elem.show().css({ x: '-100%' });\r\n\r\n\t\t\t\/\/ Set finish values\r\n\t\t\tvar finish = {\r\n\t\t\t\tx: '100%'\r\n\t\t\t};\r\n\r\n\t\t\t\/\/ Update state\r\n\t\t\tinst.animating = true;\r\n\r\n\t\t\t\/\/ Update classes\r\n\t\t\telem.dropdown.addClass( cls.animating );\r\n\r\n\t\t\t\/\/ Animate\r\n\t\t\ttarget.elem.transition({ x: 0 }, opt.speed );\r\n\t\t\tmenu.elem.transition( finish, opt.speed, function() {\r\n\r\n\t\t\t\t\/\/ Upate state\r\n\t\t\t\tinst.animating = false;\r\n\r\n\t\t\t\t\/\/ Update classes\r\n\t\t\t\telem.dropdown.removeClass( cls.animating );\r\n\r\n\t\t\t\t\/\/ Callback\r\n\t\t\t\tself._afterCloseMenu( menu, target );\r\n\r\n\t\t\t});\r\n\r\n\t\t},\r\n\r\n\r\n\t\t\/**\r\n\t\t *\r\n\t\t *\tResize the dropdown\r\n\t\t *\r\n\t\t *\t================================================================ *\/\r\n\r\n\t\tresize: function( menu, noAnimation ) {\r\n\r\n\t\t\tvar self = this;\r\n\t\t\tvar inst = self.instance,\r\n\t\t\t    opt  = self.options,\r\n\t\t\t    obj  = self.objects,\r\n\t\t\t    elem = self.elements,\r\n\t\t\t    cls  = self.classes;\r\n\r\n\t\t\t\/\/ Already resizing, bail\r\n\t\t\tif ( inst.resizing )\r\n\t\t\t\treturn;\r\n\r\n\t\t\tvar animate = ( noAnimation ? false : ( menu ? true : false ) );\r\n\r\n\t\t\t\/\/ Get the menu\r\n\t\t\tif ( menu )\r\n\t\t\t\tmenu = self.getMenu( menu );\r\n\r\n\t\t\t\/\/ Menu doesn't exist, get current one\r\n\t\t\tif ( !menu )\r\n\t\t\t\tmenu = self.getMenu();\r\n\r\n\t\t\t\/\/ Get values\r\n\t\t\tvar resize = $.extend( true, {}, obj.resize );\r\n\r\n\t\t\t\/\/ Callback\r\n\t\t\tself._beforeResize( menu, resize );\r\n\r\n\t\t\t\/\/ Window dimensions\r\n\t\t\tresize.height.viewport = $(window).height();\r\n\t\t\tresize.width.viewport  = $(window).width();\r\n\r\n\t\t\t\/\/ Show the dropdown if needed\r\n\t\t\tif ( !inst.open ) {\r\n\r\n\t\t\t\telem.menuWrapper.show().css({ opacity: 0 });\r\n\r\n\t\t\t}\r\n\r\n\t\t\t\/\/ Wrapper dimensions\r\n\t\t\tresize.height.wrapper = elem.menuWrapper.outerHeight(true);\r\n\t\t\tresize.width.wrapper  = elem.menuWrapper.outerWidth(true);\r\n\r\n\t\t\tresize.height.diff = resize.height.wrapper - elem.menuWrapper.height();\r\n\t\t\tresize.width.diff  = resize.width.wrapper - elem.menuWrapper.width();\r\n\r\n\t\t\t\/\/ Show the menu\r\n\t\t\tmenu.elem.show().css({ opacity: 0, position: 'fixed', height: '', width: '' });\r\n\r\n\t\t\t\/\/ List dimensions\r\n\t\t\tvar $list = menu.elem.children( '.' + cls.core.menuList ).eq(0);\r\n\r\n\t\t\t$list.css({ height: '', width: '' });\r\n\r\n\t\t\tresize.height.list = $list.height();\r\n\t\t\tresize.width.list  = $list.width();\r\n\r\n\t\t\t\/\/ Menu dimensions\r\n\t\t\tresize.height.menu = menu.elem.outerHeight(true);\r\n\t\t\tresize.width.menu  = menu.elem.outerWidth(true);\r\n\r\n\t\t\t\/\/ Get collision values\r\n\t\t\tvar collision = self._collisionValues( menu, resize );\r\n\r\n\t\t\t\/\/ Reset\r\n\t\t\tif ( !inst.open ) {\r\n\r\n\t\t\t\telem.menuWrapper.css({ display: '', opacity: '' });\r\n\r\n\t\t\t}\r\n\r\n\t\t\tmenu.elem.css({ display: '', opacity: '', position: '' });\r\n\r\n\t\t\t$list.css({ height: resize.collision.height.list });\r\n\r\n\t\t\t\/\/ No animation\r\n\t\t\tif ( !animate || !opt.animate ) {\r\n\r\n\t\t\t\telem.menuWrapper.css({ height: resize.collision.height.menu });\r\n\r\n\t\t\t\t\/\/ Callback\r\n\t\t\t\tself._afterResize( menu, resize );\r\n\t\t\t\treturn resize;\r\n\r\n\t\t\t}\r\n\r\n\t\t\t\/\/ Animate\r\n\t\t\telem.menuWrapper.transition({ height: resize.collision.height.menu }, opt.speed, function() {\r\n\r\n\t\t\t\t\/\/ Callback\r\n\t\t\t\tself._afterResize( menu, resize );\r\n\r\n\t\t\t});\r\n\r\n\t\t\treturn resize;\r\n\r\n\t\t},\r\n\r\n\r\n\t\t\/**\r\n\t\t *\r\n\t\t *\tSelect an item\r\n\t\t *\r\n\t\t *\t================================================================ *\/\r\n\r\n\t\tselect: function( item ) {\r\n\r\n\t\t\tvar self = this;\r\n\t\t\tvar inst = self.instance,\r\n\t\t\t    opt  = self.options,\r\n\t\t\t    elem = self.elements,\r\n\t\t\t    cls  = self.classes;\r\n\r\n\t\t\t\/\/ Get the item\r\n\t\t\titem = self.getItem( item );\r\n\r\n\t\t\tif ( !item )\r\n\t\t\t\treturn;\r\n\r\n\t\t\t\/\/ Parent, open menu\r\n\t\t\tif ( item.children.menu ) {\r\n\r\n\t\t\t\tself.openMenu( item.children.menu );\r\n\t\t\t\treturn;\r\n\r\n\t\t\t}\r\n\r\n\t\t\t\/\/ Not selectable\r\n\t\t\tif ( !item.selectable ) {\r\n\r\n\t\t\t\t\/\/ Link?\r\n\t\t\t\tif ( item.href )\r\n\t\t\t\t\twindow.location.href = item.href;\r\n\r\n\t\t\t\treturn; \r\n\r\n\t\t\t}\r\n\r\n\t\t\t\/\/ Get currently selected item\r\n\t\t\tvar previous = false;\r\n\r\n\t\t\tif ( !opt.multiple )\r\n\t\t\t\tprevious = self.getItem( inst.selected );\r\n\r\n\t\t\tif ( previous.uid == item.uid )\r\n\t\t\t\tprevious = false;\r\n\r\n\t\t\t\/\/ Callback\r\n\t\t\tself._beforeSelect( item, previous );\r\n\r\n\t\t\tif ( opt.multiple ) {\r\n\r\n\t\t\t\tif ( item.selected ) {\r\n\r\n\t\t\t\t\t\/\/ Deselect\r\n\t\t\t\t\titem.selected = false;\r\n\t\t\t\t\titem.elem.removeClass( cls.selected );\r\n\r\n\t\t\t\t\tvar index = $.inArray( item.uid, inst.selected );\r\n\r\n\t\t\t\t\tinst.selected.splice( index, 1 );\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\/\/ Select\r\n\t\t\t\t\titem.selected = true;\r\n\t\t\t\t\titem.elem.addClass( cls.selected );\r\n                    if( inst.selected == null ){\r\n                        inst.selected = []\r\n                    }\r\n\t\t\t\t\tinst.selected.push( item.uid );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\t\/\/ Deselect\r\n\t\t\t\tif ( previous ) {\r\n\r\n\t\t\t\t\tprevious.selected = false;\r\n\t\t\t\t\tprevious.elem.removeClass( cls.selected );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\t\/\/ Select\r\n\t\t\t\tinst.selected = item.uid;\r\n\r\n\t\t\t\titem.selected = true;\r\n\t\t\t\titem.elem.addClass( cls.selected );\r\n\r\n\t\t\t}\r\n\r\n\t\t\t\/\/ Select\/deselect parent\r\n\t\t\tself.selectParent( item );\r\n\r\n\t\t\tif ( previous ) {\r\n\r\n\t\t\t\tself.selectParent( previous );\r\n\r\n\t\t\t}\r\n\r\n\t\t\t\/\/ Update toggle text\r\n\t\t\tif ( opt.autoToggle ) {\r\n\r\n\t\t\t\tif ( !elem.dropdown.find( '.' + cls.core.selected ).length ) {\r\n\r\n\t\t\t\t\tif ( opt.multiple )\r\n\t\t\t\t\t\tself.toggleTextMulti();\r\n\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\tself.toggleText();\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tif ( opt.multiple )\r\n\t\t\t\t\t\tself.toggleTextMulti( item.text );\r\n\r\n\t\t\t\t\telse\r\n\t\t\t\t\t\tself.toggleText( item.text );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n            \r\n    \t\t\/\/ Close the dropdown\r\n    \t\tif ( ! opt.multiple ){\r\n        \t\tself.close();\r\n    \t\t}\r\n            \r\n\r\n\t\t\t\/\/ Callback\r\n\t\t\tself._afterSelect( item, previous );\r\n\r\n\t\t},\r\n\r\n\r\n\t\t\/**\r\n\t\t *\r\n\t\t *\tSelect a parent item\r\n\t\t *\r\n\t\t *\t================================================================ *\/\r\n\r\n\t\tselectParent: function( item ) {\r\n\r\n\t\t\tvar self = this;\r\n\t\t\tvar opt  = self.settings,\r\n\t\t\t\telem = self.elements,\r\n\t\t\t\tcls  = self.classes;\r\n\r\n\t\t\t\/\/ Get the parent\r\n\t\t\tvar parent = self.getItem( item.parent );\r\n\r\n\t\t\t\/\/ No parent, bail\r\n\t\t\tif ( !parent )\r\n\t\t\t\treturn false;\r\n\r\n\t\t\t\/\/ Update parent\r\n\t\t\tif ( item.selected ) {\r\n\r\n\t\t\t\t\/\/ Select parent\r\n\t\t\t\tparent.selected = true;\r\n\t\t\t\tparent.elem.addClass( cls.selected );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tvar selected = 0;\r\n\r\n\t\t\t\t$.each( parent.children.items, function( i, uid ) {\r\n\r\n\t\t\t\t\tvar child = self.getItem( uid );\r\n\r\n\t\t\t\t\tif ( child && child.selected ) {\r\n\r\n\t\t\t\t\t\tselected++;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif ( !selected ) {\r\n\r\n\t\t\t\t\t\/\/ Deselect parent\r\n\t\t\t\t\tparent.selected = false;\r\n\t\t\t\t\tparent.elem.removeClass( cls.selected );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t\/\/ Does this item have a parent too?\r\n\t\t\tif ( parent.parent ) {\r\n\r\n\t\t\t\tself.selectParent( parent );\r\n\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\r\n\t\t\/**\r\n\t\t *\r\n\t\t *\tFocus an item\r\n\t\t *\r\n\t\t *\t================================================================ *\/\r\n\r\n\t\tfocus: function( item ) {\r\n\r\n\t\t\tvar self = this;\r\n\t\t\tvar inst = self.instance,\r\n\t\t\t    opt  = self.options,\r\n\t\t\t    cls  = self.classes;\r\n\r\n\t\t\t\/\/ Remove current focus\r\n\t\t\tif ( inst.focused ) {\r\n\r\n\t\t\t\tvar focused = self.getItem( inst.focused );\r\n\t\t\t\tfocused.elem.removeClass( cls.focused );\r\n\r\n\t\t\t\tinst.focused = null;\r\n\r\n\t\t\t}\r\n\r\n\t\t\t\/\/ No item, bail\r\n\t\t\tif ( !item )\r\n\t\t\t\treturn;\r\n\r\n\t\t\t\/\/ Get the item\r\n\t\t\titem = self.getItem( item );\r\n\r\n\t\t\t\/\/ No item, bail\r\n\t\t\tif ( !item )\r\n\t\t\t\treturn;\r\n\r\n\t\t\t\/\/ Update classes\r\n\t\t\titem.elem.addClass( cls.focused );\r\n\r\n\t\t\t\/\/ Update state\r\n\t\t\tinst.focused = item.uid;\r\n\r\n\t\t},\r\n\r\n\r\n\t\t\/**\r\n\t\t *\r\n\t\t *\tGet an item\r\n\t\t *\r\n\t\t *\t================================================================ *\/\r\n\r\n\t\tgetItem: function( item ) {\r\n\r\n\t\t\tvar self = this;\r\n\t\t\tvar inst = self.instance,\r\n\t\t\t    elem = self.elements;\r\n\r\n\t\t\t\/\/ No item, bail\r\n\t\t\tif ( !item )\r\n\t\t\t\treturn false;\r\n\r\n\t\t\t\/\/ Get by ID\r\n\t\t\tif ( typeof item == 'string' ) {\r\n\r\n\t\t\t\tif ( inst.items[ item ] ) {\r\n\r\n\t\t\t\t\treturn inst.items[ item ];\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tif ( elem.dropdown.find( '#' + item ).length ) {\r\n\r\n\t\t\t\t\t\titem = elem.dropdown.find( '#' + item );\r\n\r\n\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\treturn false;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t\/\/ Get from jQuery object\r\n\t\t\tif ( item.jquery ) {\r\n\r\n\t\t\t\tvar uid = item.data( 'dropdown-uid' );\r\n\r\n\t\t\t\tif ( !uid || !inst.items[ uid ] )\r\n\t\t\t\t\treturn false;\r\n\r\n\t\t\t\treturn inst.items[ uid ];\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( typeof item != 'object' )\r\n\t\t\t\treturn false;\r\n\r\n\t\t\treturn item;\r\n\r\n\t\t},\r\n\r\n\r\n\t\t\/**\r\n\t\t *\r\n\t\t *\tGet a menu\r\n\t\t *\r\n\t\t *\t================================================================ *\/\r\n\r\n\t\tgetMenu: function( menu ) {\r\n\r\n\t\t\tvar self = this;\r\n\t\t\tvar inst = self.instance,\r\n\t\t\t    elem = self.elements;\r\n\r\n\t\t\t\/\/ Check if this is an item\r\n\t\t\tvar item = self.getItem( menu );\r\n\r\n\t\t\tif ( item ) {\r\n\r\n\t\t\t\tmenu = item.menu;\r\n\r\n\t\t\t}\r\n\r\n\t\t\t\/\/ Get current menu\r\n\t\t\tif ( !menu )\r\n\t\t\t\tmenu = inst.menu.current;\r\n\r\n\t\t\t\/\/ Get default menu\r\n\t\t\tif ( 'default' == menu )\r\n\t\t\t\tmenu = inst.menu.main;\r\n\r\n\t\t\t\/\/ Get by ID\r\n\t\t\tif ( typeof menu == 'string' ) {\r\n\r\n\t\t\t\tif ( inst.menus[ menu ] ) {\r\n\r\n\t\t\t\t\treturn inst.menus[ menu ];\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tif ( elem.dropdown.find( '#' + menu ).length ) {\r\n\r\n\t\t\t\t\t\tmenu = elem.dropdown.find( '#' + menu );\r\n\r\n\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\treturn false;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t\/\/ Get from jQuery object\r\n\t\t\tif ( menu.jquery ) {\r\n\r\n\t\t\t\tvar uid = menu.data( 'dropdown-uid' );\r\n\r\n\t\t\t\tif ( !uid || !inst.menus[ uid ] )\r\n\t\t\t\t\treturn false;\r\n\r\n\t\t\t\treturn inst.menus[ uid ];\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( !typeof menu != 'object' )\r\n\t\t\t\treturn false;\r\n\r\n\t\t\treturn menu;\r\n\r\n\t\t},\r\n\r\n\r\n\t\t\/**\r\n\t\t *\r\n\t\t *\tAdd an item\r\n\t\t *\r\n\t\t *\t================================================================ *\/\r\n\r\n\t\taddItem: function( item, menu ) {\r\n\r\n\t\t\tvar self = this;\r\n\t\t\tvar inst = self.instance,\r\n\t\t\t    opt  = self.options;\r\n\r\n\t\t\t\/\/ Make sure this is an array\r\n\t\t\tvar items = item;\r\n\t\t\tvar added = [];\r\n\r\n\t\t\t\/\/ Get the menu\r\n\t\t\tmenu = self.getMenu( menu );\r\n\r\n\t\t\t\/\/ Loop through the items\r\n\t\t\t$.each( items, function( i, item ) {\r\n\r\n\t\t\t\titem = $.extend( true, {}, self.objects.item, item );\r\n\r\n\t\t\t\t\/\/ Get unique ID\r\n\t\t\t\tif ( !item.uid )\r\n\t\t\t\t\titem.uid = self.getID();\r\n\r\n\t\t\t\tif ( !item.menu )\r\n\t\t\t\t\titem.menu = menu.uid;\r\n\r\n\t\t\t\t\/\/ Add to plugin\r\n\t\t\t\tinst.items[ item.uid ] = item;\r\n\t\t\t\tadded.push( item );\r\n\r\n\t\t\t\t\/\/ Selected?\r\n\t\t\t\tif ( item.selected && !item.children.items ) {\r\n\r\n\t\t\t\t\tif ( opt.multiple ) {\r\n\r\n\t\t\t\t\t\tif ( !inst.selected )\r\n\t\t\t\t\t\t\tinst.selected = [];\r\n\r\n\t\t\t\t\t\tinst.selected.push( item.uid );\r\n\r\n\t\t\t\t\t\t\/\/ Update toggle text\r\n\t\t\t\t\t\tif ( opt.autoToggle ) {\r\n\r\n\t\t\t\t\t\t\tself.toggleTextMulti( item.text );\r\n\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\tinst.selected = item.uid;\r\n\r\n\t\t\t\t\t\t\/\/ Update toggle text\r\n\t\t\t\t\t\tif ( opt.autoToggle ) {\r\n\r\n\t\t\t\t\t\t\tself.toggleText( item.text );\r\n\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\t\/\/ Any child items?\r\n\t\t\t\tif ( item.children.items.length ) {\r\n\r\n\t\t\t\t\t\/\/ Add new menu\r\n\t\t\t\t\tif ( !item.children.menu ) {\r\n\r\n\t\t\t\t\t\tvar submenu = self.addMenu([{ parent: item.uid }]);\r\n\r\n\t\t\t\t\t\titem.children.menu = submenu[0].uid;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar children = self.addItem( item.children.items, item.children.menu );\r\n\r\n\t\t\t\t\titem.children.items = [];\r\n\r\n\t\t\t\t\t\/\/ Modify child items and parent\r\n\t\t\t\t\t$.each( children, function( j, child ) {\r\n\r\n\t\t\t\t\t\tinst.items[ child.uid ].parent = item.uid;\r\n\r\n\t\t\t\t\t\titem.children.items.push( child.uid );\r\n\r\n\t\t\t\t\t\tif ( child.selected )\r\n\t\t\t\t\t\t\titem.selected = true;\r\n\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\t\/\/ Get element\r\n\t\t\t\titem.elem = self._buildItem( item );\r\n\r\n\t\t\t});\r\n\r\n\t\t\treturn added;\r\n\r\n\t\t},\r\n\r\n\r\n\t\t\/**\r\n\t\t *\r\n\t\t *\tAdd a menu\r\n\t\t *\r\n\t\t *\t================================================================ *\/\r\n\r\n\t\taddMenu: function( menu ) {\r\n\r\n\t\t\tvar self = this;\r\n\t\t\tvar inst = self.instance,\r\n\t\t\t    opt  = self.options,\r\n\t\t\t    cls  = self.classes;\r\n\r\n\t\t\t\/\/ Make sure this is an array\r\n\t\t\tvar menus = menu;\r\n\t\t\tvar added = [];\r\n\r\n\t\t\t$.each( menus, function( i, menu ) {\r\n\r\n\t\t\t\tmenu = $.extend( true, {}, self.objects.menu, menu );\r\n\r\n\t\t\t\t\/\/ Get unique ID\r\n\t\t\t\tif ( !menu.uid )\r\n\t\t\t\t\tmenu.uid = self.getID();\r\n\r\n\t\t\t\t\/\/ Add to plugin\r\n\t\t\t\tinst.menus[ menu.uid ] = menu;\r\n\t\t\t\tadded.push( menu );\r\n\r\n\t\t\t\t\/\/ Set title\r\n\t\t\t\tif ( !menu.title ) {\r\n\r\n\t\t\t\t\tmenu.title = opt.titleText;\r\n\r\n\t\t\t\t\tif ( opt.autoTitle && menu.parent ) {\r\n\r\n\t\t\t\t\t\tvar parent = self.getItem( menu.parent );\r\n\r\n\t\t\t\t\t\tif ( parent ) {\r\n\r\n\t\t\t\t\t\t\tmenu.title = parent.text;\r\n\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\t\/\/ Get element\r\n\t\t\t\tmenu.elem = self._buildMenu( menu );\r\n\r\n\t\t\t\t\/\/ Any items?\r\n\t\t\t\tif ( menu.items ) {\r\n\r\n\t\t\t\t\tself.addItem( menu.items, menu.uid );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\t\/\/ Default?\r\n\t\t\t\tif ( !inst.menu.main ) {\r\n\r\n\t\t\t\t\tinst.menu.main = menu.uid;\r\n\t\t\t\t\tinst.menu.current = menu.uid;\r\n\r\n\t\t\t\t\tmenu.open = true;\r\n\t\t\t\t\tmenu.elem.addClass( cls.menuOpen );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t});\r\n\r\n\t\t\treturn added;\r\n\r\n\t\t},\r\n\r\n\r\n\t\t\/**\r\n\t\t *\r\n\t\t *\tGet unique ID\r\n\t\t *\r\n\t\t *\t================================================================ *\/\r\n\r\n\t\tgetID: function() {\r\n\r\n\t\t\tvar id = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(\/[xy]\/g, function(c) {\r\n\t\t\t\tvar r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);\r\n\t\t\t\treturn v.toString(16);\r\n\t\t\t});\r\n\r\n\t\t\treturn id;\r\n\r\n\t\t},\r\n\r\n\r\n\t\t\/**\r\n\t\t *\r\n\t\t *\tSet title text\r\n\t\t *\r\n\t\t *\t================================================================ *\/\r\n\r\n\t\ttitleText: function( text, menu ) {\r\n\r\n\t\t\tvar self = this;\r\n\t\t\tvar elem = self.elements,\r\n\t\t\t    cls  = self.classes;\r\n\r\n\t\t\t\/\/ Get menu\r\n\t\t\tmenu = self.getMenu( menu );\r\n\r\n\t\t\t\/\/ No menu, bail\r\n\t\t\tif ( !menu )\r\n\t\t\t\treturn;\r\n\r\n\t\t\tvar $title = menu.elem.find( '.' + cls.core.menuTitle );\r\n\r\n\t\t\tif ( text ) {\r\n\r\n\t\t\t\t\/\/ Store the original\r\n\t\t\t\tif ( !menu.elem.data('dropdown-title') )\r\n\t\t\t\t\tmenu.elem.data('dropdown-title', $title.html() );\r\n\r\n\t\t\t\t$title.html( text );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\t$title.html( menu.elem.data('dropdown-title') );\r\n\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\r\n\t\t\/**\r\n\t\t *\r\n\t\t *\tSet toggle text\r\n\t\t *\r\n\t\t *\t================================================================ *\/\r\n\r\n\t\ttoggleText: function( text ) {\r\n\r\n\t\t\tvar self = this;\r\n\t\t\tvar elem = self.elements;\r\n\r\n\t\t\tif ( text ) {\r\n\r\n\t\t\t\t\/\/ Store the original\r\n\t\t\t\tif ( !elem.toggleButton.data( 'dropdown-text' ) )\r\n\t\t\t\t\telem.toggleButton.data( 'dropdown-text', elem.toggleText.text() );\r\n\r\n\t\t\t\telem.toggleText.html( text );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\telem.toggleText.html( elem.toggleButton.data( 'dropdown-text' ) );\r\n\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\r\n\t\t\/**\r\n\t\t *\r\n\t\t *\tSet multiple toggle text\r\n\t\t *\r\n\t\t *\t================================================================ *\/\r\n\r\n\t\ttoggleTextMulti: function( text ) {\r\n\r\n\t\t\tvar self = this;\r\n\t\t\tvar elem = self.elements;\r\n\t\t\tvar vals = elem.toggleButton.data( 'dropdown-text-multi' );\r\n\r\n\t\t\tif ( text ) {\r\n\r\n\t\t\t\t\/\/ Store the original\r\n\t\t\t\tif ( !elem.toggleButton.data( 'dropdown-text' ) )\r\n\t\t\t\t\telem.toggleButton.data( 'dropdown-text', elem.toggleText.text() );\r\n\r\n\t\t\t\t\/\/ Check for values\r\n\t\t\t\tif ( !vals )\r\n\t\t\t\t\tvals = [];\r\n\r\n\t\t\t\t\/\/ Check if text already exists\r\n\t\t\t\tvar index = vals.indexOf( text );\r\n\r\n\t\t\t\t\/\/ Text already exists, remove it\r\n\t\t\t\tif ( index != -1 ) {\r\n\r\n\t\t\t\t\tvals.splice( index, 1 );\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tvals.push( text );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\t\/\/ No values\r\n\t\t\t\tif ( !vals ) {\r\n\r\n\t\t\t\t\tvar str = elem.toggleButton.data( 'dropdown-text' );\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\/\/ Create text string\r\n\t\t\t\t\tvar str = vals.join( ', ' );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\t\/\/ Store values\r\n\t\t\t\telem.toggleButton.data( 'dropdown-text-multi', vals );\r\n\r\n\t\t\t\t\/\/ Update\r\n\t\t\t\telem.toggleText.html( str );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tvals = [];\r\n\r\n\t\t\t\telem.toggleButton.data( 'dropdown-text-multi', vals );\r\n\t\t\t\telem.toggleText.html( elem.toggleButton.data( 'dropdown-text' ) );\r\n\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\r\n\t\t\/**\r\n\t\t *\r\n\t\t *\tBind events\r\n\t\t *\r\n\t\t *\t================================================================ *\/\r\n\r\n\t\t_bindEvents: function() {\r\n\r\n\t\t\tvar self = this;\r\n\t\t\tvar inst = self.instance,\r\n\t\t\t    opt  = self.options,\r\n\t\t\t    cls  = self.classes,\r\n\t\t\t    elem = self.elements;\r\n\r\n\t\t\t\/\/ Toggle\r\n\t\t\tself.$elem.on( 'dropdown-toggle', function() {\r\n\r\n\t\t\t\tif ( !inst.open )\r\n\t\t\t\t\tself.open();\r\n\r\n\t\t\t\telse\r\n\t\t\t\t\tself.close();\r\n\r\n\t\t\t});\r\n\r\n\t\t\telem.toggleButton.on( 'click', function(e) {\r\n\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tself.$elem.trigger( 'dropdown-toggle' );\r\n\r\n\t\t\t});\r\n\r\n\t\t\t\/\/ Open dropdown\r\n\t\t\telem.dropdown.on( 'open', function() {\r\n\r\n\t\t\t\tself.open();\r\n\r\n\t\t\t});\r\n\r\n\t\t\t\/\/ Close dropdown\r\n\t\t\telem.dropdown.on( 'close', function() {\r\n\r\n\t\t\t\tself.close();\r\n\r\n\t\t\t});\r\n\r\n\t\t\telem.dropdown.on( 'click', '.' + cls.core.closeButton, function(e) {\r\n\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tself.close();\r\n\r\n\t\t\t});\r\n\r\n\t\t\telem.dropdown.on( 'click', '.' + cls.core.menuItem, function(e) {\r\n\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tvar item = $(this).data( 'dropdown-uid' );\r\n\r\n\t\t\t\tself.select( item );\r\n\r\n\t\t\t});\r\n\r\n\t\t\t\/\/ Close menu\r\n\t\t\telem.dropdown.on( 'click', '.' + cls.core.backButton, function(e) {\r\n\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tself.closeMenu();\r\n\r\n\t\t\t});\r\n\r\n\t\t\t\/\/ Auto close\r\n\t\t\tif ( opt.autoClose ) {\r\n\t\t\r\n\r\n\t\t\t\t$(document).on( 'mousedown', function(e) {\r\n\r\n\t\t\t\t\tvar $target   = $(e.target);\r\n\t\t\t\t\tvar $dropdown = $target.parents( '.' + cls.core.dropdown );\r\n\r\n\t\t\t\t\tif ( !$dropdown.length ) {\r\n\r\n\t\t\t\t\t\t$( '.' + cls.core.open ).trigger( 'close' );\r\n\t\t\t\t\t\treturn;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t});\r\n\r\n\t\t\t}\r\n\r\n\t\t\t\/\/ Auto resize\r\n\t\t\tif ( opt.autoResize ) {\r\n\r\n\t\t\t\t$(window).resize(function() {\r\n\r\n\t\t\t\t\tif ( inst.resizeTimeout ) \r\n\t\t\t\t\t\tclearTimeout( inst.resizeTimeout );\r\n\r\n\t\t\t\t\tinst.resizeTimeout = setTimeout(function() {\r\n\r\n\t\t\t\t\t\tself._autoResize();\r\n\r\n\t\t\t\t\t}, opt.autoResize );\r\n\r\n\t\t\t\t});\r\n\r\n\t\t\t}\r\n\r\n\t\t\t\/\/ Keyboard navigation\r\n\t\t\tif ( opt.keyboard ) {\r\n\r\n\t\t\t\t$(document).on( 'keypress', function(e) {\r\n\r\n\t\t\t\t\t\/\/ Ignore this dropdown\r\n\t\t\t\t\tif ( !inst.open && !elem.toggleButton.is(':focus') )\r\n\t\t\t\t\t\treturn;\r\n\r\n\t\t\t\t\t\/\/ Get the focused item\r\n\t\t\t\t\tvar focused = inst.focused;\r\n\r\n\t\t\t\t\tif ( focused ) {\r\n\r\n\t\t\t\t\t\tfocused = self.getItem( focused );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\/\/ Get the pressed key\r\n\t\t\t\t\tvar keyCode = ( e.keyCode ? e.keyCode : e.which );\r\n\r\n\t\t\t\t\tswitch ( keyCode ) {\r\n\r\n\t\t\t\t\t\t\/\/ Tab\r\n\t\t\t\t\t\tcase 9 :\r\n\r\n\t\t\t\t\t\t\t\/\/ Close\r\n\t\t\t\t\t\t\tif ( elem.toggleButton.is(':focus') && inst.open ) {\r\n\r\n\t\t\t\t\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\t\t\t\t\tself.close();\r\n\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\/\/ Enter\r\n\t\t\t\t\t\tcase 13 :\r\n\r\n\t\t\t\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\t\t\t\t\/\/ Select an item\r\n\t\t\t\t\t\t\tif ( focused ) {\r\n\r\n\t\t\t\t\t\t\t\t\/\/ Check for menu\r\n\t\t\t\t\t\t\t\tif ( focused.children.menu ) {\r\n\r\n\t\t\t\t\t\t\t\t\t\/\/ Get the menu\r\n\t\t\t\t\t\t\t\t\tvar menu = self.getMenu( focused.children.menu );\r\n\r\n\t\t\t\t\t\t\t\t\t\/\/ Focus the first or selected item\r\n\t\t\t\t\t\t\t\t\tvar target = menu.elem.find( '.' + cls.core.menuItem );\r\n\r\n\t\t\t\t\t\t\t\t\tif ( menu.elem.find( '.' + cls.core.selected ).length )\r\n\t\t\t\t\t\t\t\t\t\ttarget = menu.elem.find( '.' + cls.core.selected );\r\n\r\n\t\t\t\t\t\t\t\t\tself.focus( target.eq(0) );\r\n\r\n\t\t\t\t\t\t\t\t\t\/\/ Open the menu\r\n\t\t\t\t\t\t\t\t\tself.open( focused.children.menu );\r\n\r\n\t\t\t\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\t\t\t\t\/\/ Select the item\r\n\t\t\t\t\t\t\t\t\tself.select( focused );\r\n\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\t\t\t\/\/ Toggle dropdown\r\n\t\t\t\t\t\t\t\tif ( elem.toggleButton.is(':focus') ) {\r\n\r\n\t\t\t\t\t\t\t\t\tif ( !inst.open )\r\n\t\t\t\t\t\t\t\t\t\tself.open();\r\n\r\n\t\t\t\t\t\t\t\t\telse\r\n\t\t\t\t\t\t\t\t\t\tself.close();\r\n\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\/\/ Escape\r\n\t\t\t\t\t\tcase 27 :\r\n\r\n\t\t\t\t\t\t\t\/\/ Close dropdown\r\n\t\t\t\t\t\t\tif ( inst.open ) {\r\n\r\n\t\t\t\t\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\t\t\t\t\tself.close();\r\n\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tbreak;\t\r\n\r\n\t\t\t\t\t\t\/\/ Down\r\n\t\t\t\t\t\tcase 40:\r\n\r\n\t\t\t\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\t\t\t\tvar menu = self.getMenu();\r\n\r\n\t\t\t\t\t\t\t\/\/ Open dropdown\r\n\t\t\t\t\t\t\tif ( elem.toggleButton.is(':focus') && !inst.open ) {\r\n\r\n\t\t\t\t\t\t\t\tself.open();\r\n\r\n\t\t\t\t\t\t\t\t\/\/ Focus the first or selected item\r\n\t\t\t\t\t\t\t\tvar target = menu.elem.find( '.' + cls.core.menuItem );\r\n\r\n\t\t\t\t\t\t\t\tif ( menu.elem.find( '.' + cls.core.selected ).length ) {\r\n\r\n\t\t\t\t\t\t\t\t\ttarget = menu.elem.find( '.' + cls.core.selected );\r\n\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tself.focus( target.eq(0) );\r\n\r\n\t\t\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\t\t\t\/\/ Focus the first or selected item\r\n\t\t\t\t\t\t\t\tif ( !focused ) {\r\n\r\n\t\t\t\t\t\t\t\t\t\/\/ Focus the first or selected item\r\n\t\t\t\t\t\t\t\t\tvar target = menu.elem.find( '.' + cls.core.menuItem );\r\n\r\n\t\t\t\t\t\t\t\t\tif ( menu.elem.find( '.' + cls.core.selected ).length ) {\r\n\r\n\t\t\t\t\t\t\t\t\t\ttarget = menu.elem.find( '.' + cls.core.selected );\r\n\r\n\t\t\t\t\t\t\t\t\t\tif ( target.next().length )\r\n\t\t\t\t\t\t\t\t\t\t\ttarget = target.next();\r\n\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\tself.focus( target.eq(0) );\r\n\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif ( focused ) {\r\n\r\n\t\t\t\t\t\t\t\t\/\/ Focus the next item\r\n\t\t\t\t\t\t\t\tif ( focused.elem.next().length ) {\r\n\r\n\t\t\t\t\t\t\t\t\tself.focus( focused.elem.next() );\r\n\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\/\/ Left\r\n\t\t\t\t\t\tcase 37 :\r\n\r\n\t\t\t\t\t\t\t\/\/ Close menu\r\n\t\t\t\t\t\t\tif ( inst.open && inst.menu.main != inst.menu.current ) {\r\n\r\n\t\t\t\t\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\t\t\t\t\t\/\/ Get the target item\r\n\t\t\t\t\t\t\t\tvar menu = self.getMenu();\r\n\t\t\t\t\t\t\t\tvar item = self.getItem( menu.parent );\r\n\r\n\t\t\t\t\t\t\t\t\/\/ Close the menu\r\n\t\t\t\t\t\t\t\tself.closeMenu();\r\n\r\n\t\t\t\t\t\t\t\t\/\/ Focus the item\r\n\t\t\t\t\t\t\t\tself.focus( item );\r\n\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tbreak;\t\r\n\r\n\t\t\t\t\t\t\/\/ Up\r\n\t\t\t\t\t\tcase 38:\r\n\r\n\t\t\t\t\t\t\tif ( inst.open && focused ) {\r\n\r\n\t\t\t\t\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\t\t\t\t\t\/\/ Defocus\r\n\t\t\t\t\t\t\t\tif ( !focused.elem.prev().length ) {\r\n\r\n\t\t\t\t\t\t\t\t\tself.focus( false );\r\n\t\t\t\t\t\t\t\t\telem.toggleButton.focus();\r\n\r\n\t\t\t\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\t\t\t\t\/\/ Focus the previous item\r\n\t\t\t\t\t\t\t\t\tself.focus( focused.elem.prev() );\r\n\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\/\/ Right\r\n\t\t\t\t\t\tcase 39 :\r\n\r\n\t\t\t\t\t\t\t\/\/ Open menu\r\n\t\t\t\t\t\t\tif ( inst.open && focused ) {\r\n\r\n\t\t\t\t\t\t\t\tif ( focused.children.menu ) {\r\n\r\n\t\t\t\t\t\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\t\t\t\t\t\t\/\/ Get the menu\r\n\t\t\t\t\t\t\t\t\tvar menu = self.getMenu( focused.children.menu );\r\n\r\n\t\t\t\t\t\t\t\t\t\/\/ Focus the first or selected item\r\n\t\t\t\t\t\t\t\t\tvar target = menu.elem.find( '.' + cls.core.menuItem );\r\n\r\n\t\t\t\t\t\t\t\t\tif ( menu.elem.find( '.' + cls.core.selected ).length )\r\n\t\t\t\t\t\t\t\t\t\ttarget = menu.elem.find( '.' + cls.core.selected );\r\n\r\n\t\t\t\t\t\t\t\t\tself.focus( target.eq(0) );\r\n\r\n\t\t\t\t\t\t\t\t\t\/\/ Open the menu\r\n\t\t\t\t\t\t\t\t\tself.open( focused.children.menu );\r\n\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tbreak;\t\t\t \r\n\r\n\t\t\t\t\t}\r\n\r\n\r\n\t\t\t\t});\r\n\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\r\n\t\t\/**\r\n\t\t *\r\n\t\t *\tBuild the dropdown\r\n\t\t *\r\n\t\t *\t================================================================ *\/\r\n\r\n\t\t_buildDropdown: function() {\r\n\r\n\t\t\tvar self = this;\r\n\t\t\tvar opt  = self.options,\r\n\t\t\t    cls  = self.classes,\r\n\t\t\t    tpl  = self.templates,\r\n\t\t\t    elem = self.elements;\r\n\r\n\t\t\t\/\/ Loop through each template\r\n\t\t\t$.each( self.templates, function( name, tpl ) {\r\n\r\n\t\t\t\telem[ name ] = $( tpl );\r\n\r\n\t\t\t\t\/\/ Add classes\r\n\t\t\t\tif ( cls[ name ] )\r\n\t\t\t\t\telem[ name ].addClass( cls[ name ] );\r\n\r\n\t\t\t});\r\n\r\n\t\t\t\/\/ Add unique ID\r\n\t\t\tvar uid = self.getID();\r\n\r\n\t\t\tself.instance.uid = uid;\r\n\t\t\telem.dropdown.data( 'dropdown-uid', uid );\r\n\r\n\t\t\t\/\/ Build the structure\r\n\t\t\telem.overlay.appendTo( elem.dropdown );\r\n\r\n\t\t\telem.toggleButton.appendTo( elem.dropdown );\r\n\t\t\telem.toggleIcon.appendTo( elem.toggleButton );\r\n\t\t\telem.toggleText.appendTo( elem.toggleButton );\r\n\r\n\t\t\telem.menuWrapper.appendTo( elem.dropdown );\r\n\t\t\telem.menuContainer.appendTo( elem.menuWrapper );\r\n\r\n\t\t\telem.menuMask.prependTo( elem.menuWrapper );\r\n\r\n\t\t\t\/\/ Add text\r\n\t\t\telem.toggleText.html( opt.toggleText );\r\n\r\n\t\t\t\/\/ Add to plugin\r\n\t\t\tself.elements = elem;\r\n\r\n\t\t\t\/\/ Add to page\r\n\t\t\tself.$elem.hide().after( elem.dropdown );\r\n\r\n\t\t\t\/\/ Add default menu\r\n\t\t\tself.addMenu( [{}] );\r\n\r\n\t\t},\r\n\r\n\r\n\t\t\/**\r\n\t\t *\r\n\t\t *\tBuild an item\r\n\t\t *\r\n\t\t *\t================================================================ *\/\r\n\r\n\r\n\t\t_buildItem: function( item ) {\r\n\r\n\t\t\tvar self = this;\r\n\t\t\tvar cls  = self.classes,\r\n\t\t\t    tpl  = self.templates,\r\n\t\t\t    elem = self.elements;\r\n\r\n\t\t\t\/\/ Get the menu\r\n\t\t\tvar menu = self.getMenu( item.menu );\r\n\r\n\t\t\t\/\/ No menu, bail\r\n\t\t\tif ( !menu )\r\n\t\t\t\treturn;\r\n\r\n\t\t\t\/\/ Create elements\r\n\t\t\tvar $item = $( tpl.menuItem ).addClass( cls.menuItem );\r\n\r\n\t\t\tif ( item.html ) {\r\n\r\n\t\t\t\t$( item.html ).appendTo( $item );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tvar $link = $( tpl.menuLink ).addClass( cls.menuLink ).appendTo( $item );\r\n\t\t\t\tvar $text = $( tpl.menuText ).addClass( cls.menuText ).appendTo( $link );\r\n\r\n\t\t\t\t\/\/ Set href\r\n\t\t\t\tif ( item.href ) {\r\n\r\n\t\t\t\t\t$link.attr( 'href', item.href );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\t\/\/ Set text\r\n\t\t\t\t$text.html( item.text );\r\n\r\n\t\t\t\t\/\/ Add icon\r\n\t\t\t\tif ( item.children.items ) {\r\n\r\n\t\t\t\t\tvar $icon = $( tpl.iconNext ).addClass( cls.iconNext ).prependTo( $link );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t\/\/ Set ID\r\n\t\t\t$item.data( 'dropdown-uid', item.uid );\r\n\r\n\t\t\tif ( item.id ) {\r\n\r\n\t\t\t\t$item.attr( 'id', item.id );\r\n\r\n\t\t\t}\r\n\r\n\t\t\t\/\/ Selected?\r\n\t\t\tif ( item.selected ) {\r\n\r\n\t\t\t\t$item.addClass( cls.selected );\r\n\r\n\t\t\t}\r\n\r\n\t\t\t\/\/ Add to menu\r\n\t\t\tmenu.elem.children( '.' + cls.core.menuList ).append( $item );\r\n\r\n\t\t\treturn $item;\r\n\r\n\t\t},\r\n\r\n\r\n\t\t\/**\r\n\t\t *\r\n\t\t *\tBuild a menu\r\n\t\t *\r\n\t\t *\t================================================================ *\/\r\n\r\n\t\t_buildMenu: function( menu ) {\r\n\r\n\t\t\tvar self = this;\r\n\t\t\tvar opt  = self.options,\r\n\t\t\t    cls  = self.classes,\r\n\t\t\t    tpl  = self.templates,\r\n\t\t\t    elem = self.elements;\r\n\r\n\t\t\t\/\/ Create elements\r\n\t\t\tvar $menu = $( tpl.menuObject ).clone().addClass( cls.menuObject );\r\n\r\n\t\t\tvar $header = $( tpl.menuHeader ).addClass( cls.menuHeader ).appendTo( $menu );\r\n\t\t\tvar $title  = $( tpl.menuTitle ).addClass( cls.menuTitle ).appendTo( $header );\r\n\r\n\t\t\tvar $close = $( tpl.closeButton ).addClass( cls.closeButton ).appendTo( $header );\r\n\t\t\tvar $back  = $( tpl.backButton ).addClass( cls.backButton ).prependTo( $header );\r\n\r\n\t\t\tvar $closeIcon = $( tpl.closeIcon ).addClass( cls.closeIcon ).appendTo( $close );\r\n\t\t\tvar $closeText = $( tpl.closeText ).addClass( cls.closeText ).appendTo( $close );\r\n\r\n\t\t\tvar $backIcon = $( tpl.backIcon ).addClass( cls.backIcon ).appendTo( $back );\r\n\t\t\tvar $backText = $( tpl.backText ).addClass( cls.backText ).appendTo( $back );\r\n\r\n\t\t\tvar $list = $( tpl.menuList ).addClass( cls.menuList ).appendTo( $menu );\r\n\r\n\t\t\t\/\/ Add child classes\r\n\t\t\tif ( menu.parent ) {\r\n\r\n\t\t\t\t$menu.addClass( cls.menuChild );\r\n\r\n\t\t\t}\r\n\r\n\t\t\t\/\/ Set title text\r\n\t\t\t$title.html( menu.title );\r\n\r\n\t\t\t\/\/ Add button text\r\n\t\t\t$closeText.html( opt.closeText );\r\n\t\t\t$backText.html( opt.backText );\r\n\r\n\t\t\t\/\/ Set ID\r\n\t\t\t$menu.data( 'dropdown-uid', menu.uid );\r\n\r\n\t\t\tif ( menu.id ) {\r\n\r\n\t\t\t\t$menu.attr( 'id', menu.id );\r\n\r\n\t\t\t}\r\n\r\n\t\t\t\/\/ Add to dropdown\r\n\t\t\telem.menuContainer.append( $menu );\r\n\r\n\t\t\treturn $menu;\r\n\r\n\t\t},\r\n\r\n\r\n\t\t\/**\r\n\t\t *\r\n\t\t *\tPopulate the dropdown\r\n\t\t *\r\n\t\t *\t================================================================ *\/\r\n\r\n\t\t_populate: function() {\r\n\r\n\t\t\tvar self = this;\r\n\r\n\t\t\t\/\/ No children, bail\r\n\t\t\tif ( !self.$elem.children().length )\r\n\t\t\t\treturn;\r\n\r\n\t\t\t\/\/ Get the tagname\r\n\t\t\tvar tag = self.$elem.prop('tagName');\r\n\r\n\t\t\t\/\/ Form select\r\n\t\t\tif ( tag == 'SELECT' ) {\r\n\r\n\t\t\t\tself._populateSelect();\r\n\t\t\t\treturn;\r\n\r\n\t\t\t}\r\n\r\n\t\t\t\/\/ List\r\n\t\t\tif ( tag == 'UL' || tag == 'OL' ) {\r\n\r\n\t\t\t\tself._populateList();\r\n\t\t\t\treturn;\r\n\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\r\n\t\t\/**\r\n\t\t *\r\n\t\t *\tPopulate from form select\r\n\t\t *\r\n\t\t *\t================================================================ *\/\r\n\r\n\t\t_populateSelect: function( $parent ) {\r\n\r\n\t\t\tvar self = this;\r\n\r\n\t\t\tvar items   = [];\r\n\t\t\tvar $target = ( $parent ? $parent : self.$elem );\r\n\r\n\t\t\t$target.children().each(function() {\r\n\r\n\t\t\t\tvar $this = $(this);\r\n\r\n\t\t\t\tvar item = {\r\n\t\t\t\t\tuid:   self.getID(),\r\n\t\t\t\t\ttext:  '',\r\n\t\t\t\t\tvalue: null,\r\n\t\t\t\t\tchildren: {\r\n\t\t\t\t\t\titems: false\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\tif ( 'OPTGROUP' == $this.prop('tagName') ) {\r\n\r\n\t\t\t\t\titem.text = $this.attr('label');\r\n\r\n\t\t\t\t\tvar children = self._populateSelect( $this );\r\n\r\n\t\t\t\t\titem.children.items = []\r\n\r\n\t\t\t\t\t$.each( children, function( i, child ) {\r\n\r\n\t\t\t\t\t\titem.children.items.push( $.extend( {}, child, { parent: item.uid } ) );\r\n\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\titem.text  = $this.text();\r\n\t\t\t\t\titem.value = $this.attr('value');\r\n\r\n\t\t\t\t\t\/\/ Default to text value\r\n\t\t\t\t\tif ( !item.value && item.value !== '0' )\r\n\t\t\t\t\t\titem.value = item.text;\r\n\r\n\t\t\t\t\t\/\/ Selected?\r\n\t\t\t\t\tif ( $this.is(':selected') )\r\n\t\t\t\t\t\titem.selected = true;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\t\/\/ Add to items\r\n\t\t\t\titems.push( item );\r\n\r\n\t\t\t});\r\n\r\n\t\t\t\/\/ Return child items\r\n\t\t\tif ( $parent )\r\n\t\t\t\treturn items;\r\n\r\n\t\t\t\/\/ Add to dropdown\r\n\t\t\tself.addItem( items );\r\n\r\n\t\t},\r\n\r\n\r\n\t\t\/**\r\n\t\t *\r\n\t\t *\tPopulate from ordered or unordered list\r\n\t\t *\r\n\t\t *\t================================================================ *\/\r\n\r\n\t\t_populateList: function( $parent ) {\r\n\r\n\t\t\tvar self = this;\r\n\t\t\tvar cls  = self.classes;\r\n\r\n\t\t\tvar items   = [];\r\n\t\t\tvar $target = ( $parent ? $parent : self.$elem );\r\n\r\n\t\t\t$target.children().each(function() {\r\n\r\n\t\t\t\tvar $this = $(this);\r\n\r\n\t\t\t\tvar item = {\r\n\t\t\t\t\ttext:  '',\r\n\t\t\t\t\tvalue: null,\r\n\t\t\t\t\tchildren: {\r\n\t\t\t\t\t\titems: false\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\r\n\t\t\t\titem = $.extend( {}, item, $this.data('dropdown') );\r\n\r\n\t\t\t\tif ( !item.uid )\r\n\t\t\t\t\titem.uid = self.getID();\r\n\r\n\t\t\t\t\/\/ Get child items\r\n\t\t\t\tif ( $this.children('ul, ol').length ) {\r\n\r\n\t\t\t\t\tvar children = self._populateList( $this.children('ul, ol') );\r\n\r\n\t\t\t\t\titem.children.items = []\r\n\r\n\t\t\t\t\t$.each( children, function( i, child ) {\r\n\r\n\t\t\t\t\t\titem.children.items.push( $.extend( {}, child, { parent: item.uid } ) );\r\n\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tif ( !item.text ) {\r\n\r\n\t\t\t\t\t\titem.text = $this.html();\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\t\/\/ Check for text\r\n\t\t\t\tif ( $this.data('dropdown-text') ) {\r\n\r\n\t\t\t\t\titem.text = $this.data('dropdown-text');\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( $this.children('span').length ) {\r\n\r\n\t\t\t\t\tvar $text = $this.children('span');\r\n\r\n\t\t\t\t\tif ( !$this.data('dropdown-text') ) {\r\n\r\n\t\t\t\t\t\titem.text = $text.html();\r\n\r\n\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\tif ( !item.header )\r\n\t\t\t\t\t\t\titem.header = $text.html();\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\t\/\/ Check for link\r\n\t\t\t\tif ( $this.children('a').length ) {\r\n\r\n\t\t\t\t\tvar $link = $this.children('a');\r\n\r\n\t\t\t\t\titem.href = $link.attr('href');\r\n\t\t\t\t\titem.text = $link.html();\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\t\/\/ Selected?\r\n\t\t\t\tif ( $this.hasClass( '.' + cls.core.selected ) )\r\n\t\t\t\t\titem.selected = true;\r\n\r\n\t\t\t\t\/\/ Add to items\r\n\t\t\t\titems.push( item );\r\n\r\n\t\t\t});\r\n\r\n\t\t\t\/\/ Return child items\r\n\t\t\tif ( $parent )\r\n\t\t\t\treturn items;\r\n\r\n\t\t\t\/\/ Add to dropdown\r\n\t\t\tself.addItem( items );\r\n\r\n\t\t},\r\n\r\n\r\n\t\t\/**\r\n\t\t *\r\n\t\t *\tCalled before the dropdown is opened\r\n\t\t *\r\n\t\t *\t================================================================ *\/\r\n\r\n\t\t_beforeOpen: function() {\r\n\r\n\t\t\tvar self = this;\r\n\t\t\tvar inst = self.instance,\r\n\t\t\t    elem = self.elements,\r\n\t\t\t    cls  = self.classes;\r\n\r\n\t\t\t\/\/ Update state\r\n\t\t\tinst.opening = true;\r\n\r\n\t\t\t\/\/ Resize\r\n\t\t\tvar resize = self.resize( false, true );\r\n\r\n\t\t\t\/\/ Set position\r\n\t\t\tif ( resize.collision.position.y == 'top' ) {\r\n\r\n\t\t\t\telem.dropdown.removeClass( cls.below );\r\n\t\t\t\telem.dropdown.addClass( cls.above );\r\n\r\n\t\t\t\tinst.above = true;\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\telem.dropdown.removeClass( cls.above );\r\n\t\t\t\telem.dropdown.addClass( cls.below );\r\n\r\n\t\t\t\tinst.above = false;\r\n\r\n\t\t\t}\r\n\r\n\t\t\t\/\/ Scroll to selected item\r\n\t\t\tself._scrollSelected( false, resize );\r\n\r\n\t\t\t\/\/ Update classes\r\n\t\t\telem.dropdown.addClass( cls.opening );\r\n\r\n\t\t\t\/\/ Close any other dropdowns\r\n\t\t\t$( '.' + cls.core.open ).trigger( 'close' );\r\n\r\n\t\t\t\/\/ Event\r\n\t\t\tself.$elem.trigger( 'dropdown-before-open', self );\r\n\r\n\t\t},\r\n\r\n\r\n\t\t\/**\r\n\t\t *\r\n\t\t *\tCalled after the dropdown is opened\r\n\t\t *\r\n\t\t *\t================================================================ *\/\r\n\r\n\t\t_afterOpen: function() {\r\n\r\n\t\t\tvar self = this;\r\n\t\t\tvar inst = self.instance,\r\n\t\t\t    elem = self.elements,\r\n\t\t\t    cls  = self.classes;\r\n\r\n\t\t\t\/\/ Update state\r\n\t\t\tinst.opening = false;\r\n\t\t\tinst.open = true;\r\n\r\n\t\t\t\/\/ Update classes\r\n\t\t\telem.dropdown.removeClass( cls.opening );\r\n\t\t\telem.dropdown.addClass( cls.open );\r\n\r\n\t\t\t\/\/ Focus the toggle button\r\n\t\t\telem.toggleButton.focus();\r\n\r\n\t\t\t\/\/ Event\r\n\t\t\tself.$elem.trigger( 'dropdown-after-open', self );\r\n\r\n\t\t},\r\n\r\n\r\n\t\t\/**\r\n\t\t *\r\n\t\t *\tCalled before the dropdown is closed\r\n\t\t *\r\n\t\t *\t================================================================ *\/\r\n\r\n\t\t_beforeClose: function() {\r\n\r\n\t\t\tvar self = this;\r\n\t\t\tvar inst = self.instance,\r\n\t\t\t    elem = self.elements,\r\n\t\t\t    cls  = self.classes;\r\n\r\n\t\t\t\/\/ Update state\r\n\t\t\tinst.closing = true;\r\n\r\n\t\t\t\/\/ Update classes\r\n\t\t\telem.dropdown.addClass( cls.closing );\r\n\r\n\t\t\t\/\/ Defocus\r\n\t\t\tself.focus( false );\r\n\r\n\t\t\t\/\/ Event\r\n\t\t\tself.$elem.trigger( 'dropdown-before-close', self );\r\n\r\n\t\t},\r\n\r\n\r\n\t\t\/**\r\n\t\t *\r\n\t\t *\tCalled after the dropdown is closed\r\n\t\t *\r\n\t\t *\t================================================================ *\/\r\n\r\n\t\t_afterClose: function() {\r\n\r\n\t\t\tvar self = this;\r\n\t\t\tvar inst = self.instance,\r\n\t\t\t    elem = self.elements,\r\n\t\t\t    cls  = self.classes;\r\n\r\n\t\t\t\/\/ Update state\r\n\t\t\tinst.closing = false;\r\n\t\t\tinst.open = false;\r\n\r\n\t\t\t\/\/ Update classes\r\n\t\t\telem.dropdown.removeClass( cls.closing );\r\n\t\t\telem.dropdown.removeClass( cls.open );\r\n\r\n\t\t\t\/\/ Reset overlay\r\n\t\t\telem.overlay.css({ display: '', opacity: '' });\r\n\r\n\t\t\t\/\/ Reset menus\r\n\t\t\tself.open( 'default', true );\r\n\r\n\t\t\t\/\/ Reset dimensions\r\n\t\t\telem.menuWrapper.css({ height: '' });\r\n\r\n\t\t\t\/\/ Event\r\n\t\t\tself.$elem.trigger( 'dropdown-after-close', self );\r\n\r\n\t\t},\r\n\r\n\r\n\t\t\/**\r\n\t\t *\r\n\t\t *\tCalled before a menu is opened\r\n\t\t *\r\n\t\t *\t================================================================ *\/\r\n\r\n\t\t_beforeOpenMenu: function( target, current ) {\r\n\r\n\t\t\tvar self = this;\r\n\t\t\tvar inst = self.instance,\r\n\t\t\t    elem = self.elements,\r\n\t\t\t    cls  = self.classes;\r\n\r\n\t\t\t\/\/ Resize\r\n\t\t\tvar resize = self.resize( target.uid );\r\n\r\n\t\t\t\/\/ Update state\r\n\t\t\tinst.opening = true;\r\n\r\n\t\t\t\/\/ Update classes\r\n\t\t\ttarget.elem.addClass( cls.menuOpening );\r\n\t\t\tcurrent.elem.addClass( cls.menuClosing );\r\n\r\n\t\t\t\/\/ Scroll to selected item\r\n\t\t\tself._scrollSelected( target.uid, resize );\r\n\r\n\t\t\t\/\/ Event\r\n\t\t\tself.$elem.trigger( 'dropdown-before-open-menu', [ target, current, self ] );\r\n\r\n\t\t},\r\n\r\n\r\n\t\t\/**\r\n\t\t *\r\n\t\t *\tCalled after a menu is opened\r\n\t\t *\r\n\t\t *\t================================================================ *\/\r\n\r\n\t\t_afterOpenMenu: function( target, current ) {\r\n\r\n\t\t\tvar self = this;\r\n\t\t\tvar inst = self.instance,\r\n\t\t\t    elem = self.elements,\r\n\t\t\t    cls  = self.classes;\r\n\r\n\t\t\t\/\/ Update state\r\n\t\t\tinst.opening = false;\r\n\t\t\tcurrent.open = false;\r\n\t\t\ttarget.open  = true;\r\n\r\n\t\t\t\/\/ Update plugin\r\n\t\t\tinst.menu.current = target.uid;\r\n\r\n\t\t\t\/\/ Update classes\r\n\t\t\ttarget.elem.removeClass( cls.menuOpening );\r\n\t\t\tcurrent.elem.removeClass( cls.menuClosing );\r\n\r\n\t\t\tcurrent.elem.removeClass( cls.menuOpen );\r\n\t\t\ttarget.elem.addClass( cls.menuOpen );\r\n\r\n\t\t\t\/\/ Reset dimensions\r\n\t\t\tcurrent.elem.find( '.' + cls.core.menuList ).eq(0).css({ height: '' });\r\n\r\n\t\t\t\/\/ Event\r\n\t\t\tself.$elem.trigger( 'dropdown-after-open-menu', [ target, current, self ] );\r\n\r\n\t\t},\r\n\r\n\r\n\t\t\/**\r\n\t\t *\r\n\t\t *\tCalled before a menu is closed\r\n\t\t *\r\n\t\t *\t================================================================ *\/\r\n\r\n\t\t_beforeCloseMenu: function( current, target ) {\r\n\r\n\t\t\tvar self = this;\r\n\t\t\tvar inst = self.instance,\r\n\t\t\t    elem = self.elements,\r\n\t\t\t    cls  = self.classes;\r\n\r\n\t\t\t\/\/ Resize\r\n\t\t\tif ( target ) {\r\n\r\n\t\t\t\tself.resize( target.uid );\r\n\r\n\t\t\t}\r\n\r\n\t\t\t\/\/ Update state\r\n\t\t\tinst.closing = true;\r\n\r\n\t\t\t\/\/ Update classes\r\n\t\t\tcurrent.elem.addClass( cls.menuClosing );\r\n\r\n\t\t\tif ( target ) {\r\n\r\n\t\t\t\ttarget.elem.addClass( cls.menuOpening );\r\n\r\n\t\t\t}\r\n\r\n\t\t\t\/\/ Event\r\n\t\t\tself.$elem.trigger( 'dropdown-before-close-menu', [ current, target, self ] );\r\n\r\n\t\t},\r\n\r\n\r\n\t\t\/**\r\n\t\t *\r\n\t\t *\tCalled after a menu is closed\r\n\t\t *\r\n\t\t *\t================================================================ *\/\r\n\r\n\t\t_afterCloseMenu: function( current, target ) {\r\n\r\n\t\t\tvar self = this;\r\n\t\t\tvar inst = self.instance,\r\n\t\t\t    elem = self.elements,\r\n\t\t\t    cls  = self.classes;\r\n\r\n\t\t\t\/\/ Update state\r\n\t\t\tinst.closing = false;\r\n\t\t\tcurrent.open = false;\r\n\r\n\t\t\tif ( target ) {\r\n\r\n\t\t\t\ttarget.open = true;\r\n\r\n\t\t\t}\r\n\r\n\t\t\t\/\/ Update plugin\r\n\t\t\tif ( target ) {\r\n\r\n\t\t\t\tinst.menu.current = target.uid;\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tinst.menu.current = inst.menu.main;\r\n\r\n\t\t\t}\r\n\r\n\t\t\t\/\/ Update classes\r\n\t\t\tcurrent.elem.removeClass( cls.menuClosing );\r\n\t\t\tcurrent.elem.removeClass( cls.menuOpen );\r\n\r\n\t\t\tif ( target ) {\r\n\r\n\t\t\t\ttarget.elem.removeClass( cls.menuOpening );\r\n\t\t\t\ttarget.elem.addClass( cls.menuOpen );\r\n\r\n\t\t\t}\r\n\r\n\t\t\t\/\/ Reset dimensions\r\n\t\t\tcurrent.elem.find( '.' + cls.core.menuList ).eq(0).css({ height: '' });\r\n\r\n\t\t\t\/\/ Event\r\n\t\t\tself.$elem.trigger( 'dropdown-after-close-menu', [ current, target, self ] );\r\n\r\n\t\t},\r\n\r\n\r\n\t\t\/**\r\n\t\t *\r\n\t\t *\tCalled before the dropdown is resized\r\n\t\t *\r\n\t\t *\t================================================================ *\/\r\n\r\n\t\t_beforeResize: function( menu, resize ) {\r\n\r\n\t\t\tvar self = this;\r\n\t\t\tvar inst = self.instance,\r\n\t\t\t    elem = self.elements,\r\n\t\t\t    cls  = self.classes;\r\n\r\n\t\t\t\/\/ Update state\r\n\t\t\tinst.resizing = true;\r\n\r\n\t\t\t\/\/ Event\r\n\t\t\tself.$elem.trigger( 'dropdown-before-resize', [ menu, resize, self ] );\r\n\r\n\t\t},\r\n\r\n\r\n\t\t\/**\r\n\t\t *\r\n\t\t *\tCalled after the dropdown is resized\r\n\t\t *\r\n\t\t *\t================================================================ *\/\r\n\r\n\t\t_afterResize: function( menu, resize ) {\r\n\r\n\t\t\tvar self = this;\r\n\t\t\tvar inst = self.instance;\r\n\r\n\t\t\t\/\/ Update state\r\n\t\t\tinst.resizing = false;\r\n\r\n\t\t\t\/\/ Event\r\n\t\t\tself.$elem.trigger( 'dropdown-after-resize', [ menu, resize, self ] );\r\n\r\n\t\t},\r\n\r\n\r\n\t\t\/**\r\n\t\t *\r\n\t\t *\tAuto resize\r\n\t\t *\r\n\t\t *\t================================================================ *\/\r\n\r\n\t\t_autoResize: function() {\r\n\r\n\t\t\tvar self = this;\r\n\t\t\tvar inst = self.instance;\r\n\r\n\t\t\tif ( inst.open ) {\r\n\r\n\t\t\t\tself.resize( false, true );\r\n\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\r\n\t\t\/**\r\n\t\t *\r\n\t\t *\tGet resize collision values\r\n\t\t *\r\n\t\t *\t================================================================ *\/\r\n\r\n\t\t_collisionValues: function( menu, resize ) {\r\n\r\n\t\t\tvar self = this;\r\n\t\t\tvar inst = self.instance,\r\n\t\t\t    opt  = self.options,\r\n\t\t\t\telem = self.elements,\r\n\t\t\t\tcls  = self.classes;\r\n\r\n\t\t\t\/\/ Get scroll distances\r\n\t\t\tvar scrolled = {\r\n\t\t\t\tx: $(document).scrollLeft(),\r\n\t\t\t\ty: $(document).scrollTop()\r\n\t\t\t};\r\n\r\n\t\t\t\/\/ Get position\r\n\t\t\tvar position = {\r\n\t\t\t\tx: 'left',\r\n\t\t\t\ty: 'bottom'\r\n\t\t\t};\r\n\r\n\t\t\tvar offset = {\r\n\t\t\t\tx: elem.dropdown.offset().left,\r\n\t\t\t\ty: elem.dropdown.offset().top\r\n\t\t\t};\r\n\r\n\t\t\t\/\/ Get available space\r\n\t\t\tvar space = {\r\n\t\t\t\ttop:    ( offset.y - scrolled.y ),\r\n\t\t\t\tbottom: ( $(window).height() + scrolled.y ) - offset.y - elem.toggleButton.outerHeight(true),\r\n\t\t\t\tleft:   ( offset.x - scrolled.x ),\r\n\t\t\t\tright:  ( $(window).width() + scrolled.x ) - offset.x\r\n\t\t\t};\r\n\r\n\t\t\t\/\/ Account for margin\r\n\t\t\t$.each( space, function( i, value ) {\r\n\r\n\t\t\t\tspace[ i ] = value - opt.margin;\r\n\r\n\t\t\t});\r\n\r\n\t\t\t\/\/ Check for mobile\r\n\t\t\tvar mobile = ( elem.menuWrapper.css('position') == 'fixed' ? true: false );\r\n\r\n\t\t\t\/\/ Get new heights\r\n\t\t\tvar height = $.extend( {}, resize.height );\r\n\r\n\t\t\theight.total = ( height.menu + height.diff );\r\n\r\n\t\t\tif ( mobile ) {\r\n\r\n\t\t\t\tif ( height.menu > height.wrapper ) {\r\n\r\n\t\t\t\t\theight.menu = ( height.wrapper - height.diff );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\t\/\/ Exceeds maximum height?\r\n\t\t\t\tif ( height.total > space.bottom || ( inst.above && height.total > space.top ) ) {\r\n\r\n\t\t\t\t\theight.menu = ( space.bottom - height.diff );\r\n\r\n\t\t\t\t\t\/\/ More space above?\r\n\t\t\t\t\tif ( space.top > space.bottom ) {\r\n\r\n\t\t\t\t\t\tposition.y = 'top';\r\n\r\n\t\t\t\t\t\tif ( height.total > space.top ) {\r\n\r\n\t\t\t\t\t\t\theight.menu = ( space.top - height.diff );\r\n\r\n\t\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\t\theight.menu = resize.height.menu;\r\n\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\theight.list = height.menu - ( resize.height.menu - resize.height.list );\r\n\r\n\t\t\t\/\/ Get new width\r\n\t\t\tvar width = $.extend( {}, resize.width );\r\n\r\n\t\t\t\/\/ Add to values\r\n\t\t\tresize.collision.height   = height;\r\n\t\t\tresize.collision.width    = width;\r\n\t\t\tresize.collision.scrolled = scrolled;\r\n\t\t\tresize.collision.position = position;\r\n\t\t\tresize.collision.offset   = offset;\r\n\t\t\tresize.collision.space    = space;\r\n\r\n\t\t\treturn resize;\r\n\r\n\t\t},\r\n\r\n\r\n\t\t\/**\r\n\t\t *\r\n\t\t *\tScroll to selected item\r\n\t\t *\r\n\t\t *\t================================================================ *\/\r\n\r\n\t\t_scrollSelected: function( menu, resize ) {\r\n\r\n\t\t\tvar self = this;\r\n\t\t\tvar inst = self.instance,\r\n\t\t\t    opt  = self.options,\r\n\t\t\t\telem = self.elements,\r\n\t\t\t\tcls  = self.classes;\r\n\r\n\t\t\t\/\/ Get the menu\r\n\t\t\tmenu = self.getMenu( menu );\r\n\r\n\t\t\t\/\/ No menu, bail\r\n\t\t\tif ( !menu )\r\n\t\t\t\treturn;\r\n\r\n\t\t\t\/\/ Show the dropdown if needed\r\n\t\t\tif ( !inst.open ) {\r\n\r\n\t\t\t\telem.menuWrapper.show().css({ opacity: 0 });\r\n\r\n\t\t\t}\r\n\r\n\t\t\t\/\/ Show the menu if needed\r\n\t\t\tif ( !menu.open ) {\r\n\r\n\t\t\t\tmenu.elem.show().css({ opacity: 0 });\r\n\r\n\t\t\t}\r\n\r\n\t\t\t\/\/ Get list\r\n\t\t\tvar $list = menu.elem.children( '.' + cls.core.menuList ).eq(0);\r\n\r\n\t\t\t\/\/ Get selected position\r\n\t\t\tvar selectedOffset = 0;\r\n\r\n\t\t\tvar $selected = menu.elem.find( '.' + cls.core.selected ).eq(0);\r\n\r\n\t\t\tif ( $selected.length ) {\r\n\r\n\t\t\t\tselectedOffset = $selected.position().top;\r\n\r\n\t\t\t\tif ( selectedOffset < 0 || selectedOffset > resize.collision.height.list ) {\r\n\r\n\t\t\t\t\tselectedOffset = selectedOffset + $list.scrollTop();\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tselectedOffset = selectedOffset - ( resize.collision.height.menu - resize.collision.height.list );\r\n\r\n\t\t\t}\r\n\r\n\t\t\t\/\/ Scroll\r\n\t\t\t$list.animate( { scrollTop: selectedOffset }, 1 );\r\n\r\n\t\t\t\/\/ Reset\r\n\t\t\tif ( !inst.open ) {\r\n\r\n\t\t\t\telem.menuWrapper.css({ display: '', opacity: '' });\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( !menu.open ) {\r\n\r\n\t\t\t\tmenu.elem.css({ display: '', opacity: '' });\r\n\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\r\n\t\t\/**\r\n\t\t *\r\n\t\t *\tCalled before an item is selected\r\n\t\t *\r\n\t\t *\t================================================================ *\/\r\n\r\n\t\t_beforeSelect: function( item, previous ) {\r\n\r\n\t\t\tvar self = this;\r\n\r\n\t\t\t\/\/ Event\r\n\t\t\tself.$elem.trigger( 'dropdown-before-select', [ item, previous, self ] );\r\n\r\n\t\t},\r\n\r\n\r\n\t\t\/**\r\n\t\t *\r\n\t\t *\tCalled after an item is selected\r\n\t\t *\r\n\t\t *\t================================================================ *\/\r\n\r\n\t\t_afterSelect: function( item, previous ) {\r\n\r\n\t\t\tvar self = this;\r\n\r\n\t\t\t\/\/ Event\r\n\t\t\tself.$elem.trigger( 'dropdown-after-select', [ item, previous, self ] );\r\n\r\n\t\t},\r\n\r\n\r\n\t\t\/**\r\n\t\t *\r\n\t\t *\tMerge classes\r\n\t\t *\r\n\t\t *\t================================================================ *\/\r\n\r\n\t\t_mergeClasses: function() {\r\n\r\n\t\t\tvar self = this;\r\n\r\n\t\t\tvar user = self.options.classes;\r\n\t\t\tvar core = $.extend( {}, self.classes );\r\n\r\n\t\t\tvar classes = {};\r\n\r\n\t\t\t$.each( core, function( i, coreClass ) {\r\n\r\n\t\t\t\t\/\/ Add the core class\r\n\t\t\t\tif ( !classes.core )\r\n\t\t\t\t\tclasses.core = {};\r\n\r\n\t\t\t\tclasses.core[i] = coreClass;\r\n\r\n\t\t\t\tvar classStr = coreClass;\r\n\r\n\t\t\t\t\/\/ Check for user class\r\n\t\t\t\tif ( user[i] ) {\r\n\r\n\t\t\t\t\tclassStr += ' ';\r\n\t\t\t\t\tclassStr += user[i];\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\t\/\/ Add to object\r\n\t\t\t\tclasses[i] = classStr;\r\n\r\n\t\t\t});\r\n\r\n\t\t\treturn classes;\r\n\r\n\t\t},\r\n\r\n\r\n\t\t\/**\r\n\t\t *\r\n\t\t *\tObjects\r\n\t\t *\r\n\t\t *\t================================================================ *\/\r\n\r\n\t\tobjects: {\r\n\r\n\t\t\titem: {\r\n\r\n\t\t\t\tuid: null,\r\n\t\t\t\tid: null,\r\n\r\n\t\t\t\ttext: '',\r\n\t\t\t\tvalue: null,\r\n\t\t\t\thref: false,\r\n\r\n\t\t\t\tselected: false,\r\n\t\t\t\tselectable: true,\r\n\r\n\t\t\t\tmenu: false,\r\n\t\t\t\tparent: false,\r\n\t\t\t\tchildren: {\r\n\t\t\t\t\tmenu: false,\r\n\t\t\t\t\titems: false\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\r\n\t\t\tmenu: {\r\n\r\n\t\t\t\tuid: null,\r\n\t\t\t\tid: null,\r\n\r\n\t\t\t\ttitle: '',\r\n\r\n\t\t\t\topen: false,\r\n\r\n\t\t\t\tparent: false,\r\n\t\t\t\tchildren: false\r\n\r\n\t\t\t},\r\n\r\n\t\t\tresize: {\r\n\r\n\t\t\t\twidth: {\r\n\t\t\t\t\tviewport: 0,\r\n\t\t\t\t\twrapper: 0,\r\n\t\t\t\t\tdiff: 0,\r\n\t\t\t\t\tmenu: 0,\r\n\t\t\t\t\tlist: 0\r\n\t\t\t\t},\r\n\r\n\t\t\t\theight: {\r\n\t\t\t\t\tviewport: 0,\r\n\t\t\t\t\twrapper: 0,\r\n\t\t\t\t\tdiff: 0,\r\n\t\t\t\t\tmenu: 0,\r\n\t\t\t\t\tlist: 0\r\n\t\t\t\t},\r\n\r\n\t\t\t\tcollision: {\r\n\r\n\t\t\t\t\twidth: {},\r\n\t\t\t\t\theight: {},\r\n\r\n\t\t\t\t\toffset: {\r\n\t\t\t\t\t\tx: 0,\r\n\t\t\t\t\t\ty: 0\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\tposition: {\r\n\t\t\t\t\t\tx: 'left',\r\n\t\t\t\t\t\ty: 'bottom'\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\tscrolled: {\r\n\t\t\t\t\t\tx: 0,\r\n\t\t\t\t\t\ty: 0\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\tspace: {\r\n\t\t\t\t\t\tabove: 0,\r\n\t\t\t\t\t\tbelow: 0,\r\n\t\t\t\t\t\tleft: 0,\r\n\t\t\t\t\t\tright: 0\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\r\n\t\t\/**\r\n\t\t *\r\n\t\t *\tDefaults\r\n\t\t *\r\n\t\t *\t================================================================ *\/\r\n\r\n\t\tdefaults: {\r\n\r\n\t\t\t\/\/ Animation\r\n\t\t\tanimate: false,\r\n\t\t\tspeed: 300,\r\n\r\n\t\t\t\/\/ Auto\r\n\t\t\tautoClose: true,\r\n\t\t\tautoToggle: true,\r\n\t\t\tautoTitle: true,\t\t\t\r\n\t\t\tautoResize: 300,\r\n\r\n\t\t\t\/\/ Nesting\r\n\t\t\tnested: true,\r\n\r\n\t\t\t\/\/ Multiple\r\n\t\t\tmultiple: false,\r\n\r\n\t\t\t\/\/ Keyboard navigation\r\n\t\t\tkeyboard: true,\r\n\r\n\t\t\t\/\/ Spacing\r\n\t\t\tmaxHeight: 0,\r\n\t\t\tmaxWidth: 0,\r\n\t\t\tmargin: 30,\r\n\r\n\t\t\t\/\/ Text\r\n\t\t\ttoggleText: 'Please select',\r\n\t\t\ttitleText: 'Please select',\r\n\t\t\tbackText: 'Back',\r\n\t\t\tcloseText: 'Close',\r\n\r\n\t\t\t\/\/ Classes\r\n\t\t\tclasses: {\r\n\r\n\t\t\t\t\/\/  Font Awesome icons\r\n\t\t\t\ttoggleIcon: 'fa fa-sort',\r\n\r\n\t\t\t\tbackIcon: 'fa fa-arrow-left',\r\n\t\t\t\tcloseIcon: 'fa fa-remove',\r\n\r\n\t\t\t\ticonPrev: 'fa fa-angle-left',\r\n\t\t\t\ticonNext: 'fa fa-angle-right'\r\n\r\n\t\t\t},\r\n\r\n\t\t\t\/\/ Templates\r\n\t\t\ttemplates: {}\r\n\r\n\t\t},\r\n\r\n\r\n\t\t\/**\r\n\t\t *\r\n\t\t *\tHTML templates\r\n\t\t *\r\n\t\t *\t================================================================ *\/\r\n\r\n\t\ttemplates: {\r\n\r\n\t\t\tdropdown:      '<div \/>',\r\n\t\t\toverlay:       '<div \/>',\r\n\r\n\t\t\t\/\/ Menu\r\n\t\t\tmenuObject:    '<div \/>',\r\n\t\t\tmenuWrapper:   '<div \/>',\r\n\t\t\tmenuContainer: '<nav \/>',\r\n\t\t\tmenuHeader:    '<header \/>',\r\n\t\t\tmenuTitle:     '<div \/>',\r\n\t\t\tmenuMask:      '<div \/>',\r\n\t\t\tmenuList:      '<ul role=\"menu\" \/>',\r\n\t\t\tmenuItem:      '<li role=\"presentation\" \/>',\r\n\t\t\tmenuHeading:   '<li role=\"presentation\" \/>',\r\n\t\t\tmenuDivider:   '<li role=\"presentation\" \/>',\r\n\t\t\tmenuLink:      '<a href=\"#\" role=\"menuitem\" \/>',\r\n\t\t\tmenuText:      '<span \/>',\r\n\r\n\t\t\t\/\/ Toggle\r\n\t\t\ttoggleButton:  '<a href=\"#\" \/>',\r\n\t\t\ttoggleText:    '<span \/>',\r\n\t\t\ttoggleIcon:    '<span \/>',\r\n\r\n\t\t\t\/\/ Back\r\n\t\t\tbackButton:    '<a href=\"#\" title=\"Back\" \/>',\r\n\t\t\tbackText:      '<span \/>',\r\n\t\t\tbackIcon:      '<span \/>',\r\n\r\n\t\t\t\/\/ Close\r\n\t\t\tcloseButton:   '<a href=\"#\" title=\"Close\" \/>',\r\n\t\t\tcloseText:     '<span \/>',\r\n\t\t\tcloseIcon:     '<span \/>',\r\n\r\n\t\t\t\/\/ Icons\r\n\t\t\ticonPrev:      '<span \/>',\r\n\t\t\ticonNext:      '<span \/>'\r\n\r\n\t\t},\r\n\r\n\r\n\t\t\/**\r\n\t\t *\r\n\t\t *\tClasses\r\n\t\t *\r\n\t\t *\t================================================================ *\/\r\n\r\n\t\tclasses: {\r\n\r\n\t\t\tdropdown:       'dropdown',\r\n\t\t\toverlay:        'dropdown-overlay',\r\n\r\n\t\t\t\/\/ Menu\r\n\t\t\tmainMenu:       'dropdown-main-menu',\r\n\t\t\tmenuObject:     'dropdown-menu',\r\n\t\t\tmenuWrapper:    'dropdown-menu-wrapper',\r\n\t\t\tmenuContainer:  'dropdown-menu-container',\r\n\t\t\tmenuHeader:     'dropdown-header',\r\n\t\t\tmenuTitle:      'dropdown-title',\r\n\t\t\tmenuHeading:    'dropdown-heading',\r\n\t\t\tmenuDivider:    'dropdown-divider',\r\n\t\t\tmenuMask:       'dropdown-mask',\r\n\t\t\tmenuParent:     'dropdown-parent',\r\n\t\t\tmenuChild:      'dropdown-child',\r\n\t\t\tmenuList:       'dropdown-list',\r\n\t\t\tmenuItem:       'dropdown-item',\r\n\r\n\t\t\tmenuLink:       'dropdown-link',\r\n\t\t\tmenuText:       'dropdown-text',\r\n\t\t\tmenuAbove:      'dropdown-above',\r\n\r\n\t\t\t\/\/ Back\r\n\t\t\tbackButton:     'dropdown-back',\r\n\t\t\tbackText:       'dropdown-text',\r\n\t\t\tbackIcon:       'dropdown-icon',\r\n\r\n\t\t\t\/\/ Toggle\r\n\t\t\ttoggleButton:   'dropdown-toggle',\r\n\t\t\ttoggleText:     'dropdown-text',\r\n\t\t\ttoggleIcon:     'dropdown-icon',\r\n\r\n\t\t\t\/\/ Close\r\n\t\t\tcloseButton:    'dropdown-close',\r\n\t\t\tcloseText:      'dropdown-text',\r\n\t\t\tcloseIcon:      'dropdown-icon',\r\n\r\n\t\t\t\/\/ Icons\r\n\t\t\ticonPrev:       'dropdown-icon',\r\n\t\t\ticonNext:       'dropdown-icon',\r\n\r\n\t\t\t\/\/ States\r\n\t\t\tabove:          'dropdown-above',\r\n\t\t\tbelow:          'dropdown-below',\r\n\r\n\t\t\topen:           'dropdown-open',\r\n\t\t\tmenuOpen:       'dropdown-menu-open',\r\n\t\t\tclosed:         'dropdown-closed',\r\n\t\t\tdisabled:       'dropdown-disabled',\r\n\r\n\t\t\topening:        'dropdown-opening',\r\n\t\t\tclosing:        'dropdown-closing',\r\n\t\t\tanimating:      'dropdown-animating',\r\n\t\t\tresize:         'dropdown-resizing',\r\n\t\t\tloading:        'dropdown-loading',\r\n\t\t\tmenuOpening:    'dropdown-menu-opening',\r\n\t\t\tmenuClosing:    'dropdown-menu-closing',\r\n\r\n\t\t\tselected:       'dropdown-selected',\r\n\t\t\tselectedParent: 'dropdown-parent-selected',\r\n\r\n\t\t\tfocused:        'dropdown-focus'\r\n\r\n\t\t}\r\n\r\n\r\n\t};\r\n\r\n\r\n\t\/**\r\n\t *\r\n\t *\tPlugin wrapper\r\n\t *\r\n\t *\t================================================================ *\/\r\n\r\n\t$.fn.dropdown = function(options) {\r\n\r\n\t\tvar args = arguments;\r\n\r\n\t\tif ( options === undefined || typeof options === 'object' ) {\r\n\r\n\t\t\treturn this.each( function() {\r\n\r\n\t\t\t\tif ( !$.data( this, 'dw.plugin.dropdown' ) ) {\r\n\t\t\t\t\t$.data( this, 'dw.plugin.dropdown', new dropdown(this, options) );\r\n\t\t\t\t}\r\n\r\n\t\t\t});\r\n\r\n\t\t} else if ( typeof options === 'string' && options[0] !== '_' && options !== 'init' ) {\r\n\r\n\t\t\tvar returns;\r\n\r\n\t\t\tthis.each( function() {\r\n\r\n\t\t\t\tvar instance = $.data( this, 'dw.plugin.dropdown' );\r\n\r\n\t\t\t\t\/\/ Allow access to public methods\r\n\t\t\t\tif ( instance instanceof dropdown && typeof instance[options] === 'function' ) {\r\n\t\t\t\t\treturns = instance[options].apply( instance, Array.prototype.slice.call( args, 1 ) );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t\/\/ Allow instances to be destroyed via the 'destroy' method\r\n\t\t\t\tif ( options === 'destroy' ) {\r\n\t\t\t\t\t$.data( this, 'dw.plugin.dropdown', null );\r\n\t\t\t\t}\r\n\r\n\t\t\t});\r\n\r\n\t\t\treturn returns !== undefined ? returns : this;\r\n\r\n\t\t}\r\n\r\n\t};\r\n\r\n\r\n\tif ( !window.dw ) window.dw = {};\r\n\twindow.dw.dropdown = dropdown;\r\n\r\n\r\n})( jQuery, window, document );\r\n\r\n\r\n\r\n\/*!\r\n* jQuery Transit - CSS3 transitions and transformations\r\n* (c) 2011-2014 Rico Sta. Cruz\r\n* MIT Licensed.\r\n*\r\n* http:\/\/ricostacruz.com\/jquery.transit\r\n* http:\/\/github.com\/rstacruz\/jquery.transit\r\n*\/\r\n\r\n(function(t,e){if(typeof define===\"function\"&&define.amd){define([\"jquery\"],e)}else if(typeof exports===\"object\"){module.exports=e(require(\"jquery\"))}else{e(t.jQuery)}})(this,function(t){t.transit={version:\"0.9.12\",propertyMap:{marginLeft:\"margin\",marginRight:\"margin\",marginBottom:\"margin\",marginTop:\"margin\",paddingLeft:\"padding\",paddingRight:\"padding\",paddingBottom:\"padding\",paddingTop:\"padding\"},enabled:true,useTransitionEnd:false};var e=document.createElement(\"div\");var n={};function i(t){if(t in e.style)return t;var n=[\"Moz\",\"Webkit\",\"O\",\"ms\"];var i=t.charAt(0).toUpperCase()+t.substr(1);for(var r=0;r<n.length;++r){var s=n[r]+i;if(s in e.style){return s}}}function r(){e.style[n.transform]=\"\";e.style[n.transform]=\"rotateY(90deg)\";return e.style[n.transform]!==\"\"}var s=navigator.userAgent.toLowerCase().indexOf(\"chrome\")>-1;n.transition=i(\"transition\");n.transitionDelay=i(\"transitionDelay\");n.transform=i(\"transform\");n.transformOrigin=i(\"transformOrigin\");n.filter=i(\"Filter\");n.transform3d=r();var a={transition:\"transitionend\",MozTransition:\"transitionend\",OTransition:\"oTransitionEnd\",WebkitTransition:\"webkitTransitionEnd\",msTransition:\"MSTransitionEnd\"};var o=n.transitionEnd=a[n.transition]||null;for(var u in n){if(n.hasOwnProperty(u)&&typeof t.support[u]===\"undefined\"){t.support[u]=n[u]}}e=null;t.cssEase={_default:\"ease\",\"in\":\"ease-in\",out:\"ease-out\",\"in-out\":\"ease-in-out\",snap:\"cubic-bezier(0,1,.5,1)\",easeInCubic:\"cubic-bezier(.550,.055,.675,.190)\",easeOutCubic:\"cubic-bezier(.215,.61,.355,1)\",easeInOutCubic:\"cubic-bezier(.645,.045,.355,1)\",easeInCirc:\"cubic-bezier(.6,.04,.98,.335)\",easeOutCirc:\"cubic-bezier(.075,.82,.165,1)\",easeInOutCirc:\"cubic-bezier(.785,.135,.15,.86)\",easeInExpo:\"cubic-bezier(.95,.05,.795,.035)\",easeOutExpo:\"cubic-bezier(.19,1,.22,1)\",easeInOutExpo:\"cubic-bezier(1,0,0,1)\",easeInQuad:\"cubic-bezier(.55,.085,.68,.53)\",easeOutQuad:\"cubic-bezier(.25,.46,.45,.94)\",easeInOutQuad:\"cubic-bezier(.455,.03,.515,.955)\",easeInQuart:\"cubic-bezier(.895,.03,.685,.22)\",easeOutQuart:\"cubic-bezier(.165,.84,.44,1)\",easeInOutQuart:\"cubic-bezier(.77,0,.175,1)\",easeInQuint:\"cubic-bezier(.755,.05,.855,.06)\",easeOutQuint:\"cubic-bezier(.23,1,.32,1)\",easeInOutQuint:\"cubic-bezier(.86,0,.07,1)\",easeInSine:\"cubic-bezier(.47,0,.745,.715)\",easeOutSine:\"cubic-bezier(.39,.575,.565,1)\",easeInOutSine:\"cubic-bezier(.445,.05,.55,.95)\",easeInBack:\"cubic-bezier(.6,-.28,.735,.045)\",easeOutBack:\"cubic-bezier(.175, .885,.32,1.275)\",easeInOutBack:\"cubic-bezier(.68,-.55,.265,1.55)\"};t.cssHooks[\"transit:transform\"]={get:function(e){return t(e).data(\"transform\")||new f},set:function(e,i){var r=i;if(!(r instanceof f)){r=new f(r)}if(n.transform===\"WebkitTransform\"&&!s){e.style[n.transform]=r.toString(true)}else{e.style[n.transform]=r.toString()}t(e).data(\"transform\",r)}};t.cssHooks.transform={set:t.cssHooks[\"transit:transform\"].set};t.cssHooks.filter={get:function(t){return t.style[n.filter]},set:function(t,e){t.style[n.filter]=e}};if(t.fn.jquery<\"1.8\"){t.cssHooks.transformOrigin={get:function(t){return t.style[n.transformOrigin]},set:function(t,e){t.style[n.transformOrigin]=e}};t.cssHooks.transition={get:function(t){return t.style[n.transition]},set:function(t,e){t.style[n.transition]=e}}}p(\"scale\");p(\"scaleX\");p(\"scaleY\");p(\"translate\");p(\"rotate\");p(\"rotateX\");p(\"rotateY\");p(\"rotate3d\");p(\"perspective\");p(\"skewX\");p(\"skewY\");p(\"x\",true);p(\"y\",true);function f(t){if(typeof t===\"string\"){this.parse(t)}return this}f.prototype={setFromString:function(t,e){var n=typeof e===\"string\"?e.split(\",\"):e.constructor===Array?e:[e];n.unshift(t);f.prototype.set.apply(this,n)},set:function(t){var e=Array.prototype.slice.apply(arguments,[1]);if(this.setter[t]){this.setter[t].apply(this,e)}else{this[t]=e.join(\",\")}},get:function(t){if(this.getter[t]){return this.getter[t].apply(this)}else{return this[t]||0}},setter:{rotate:function(t){this.rotate=b(t,\"deg\")},rotateX:function(t){this.rotateX=b(t,\"deg\")},rotateY:function(t){this.rotateY=b(t,\"deg\")},scale:function(t,e){if(e===undefined){e=t}this.scale=t+\",\"+e},skewX:function(t){this.skewX=b(t,\"deg\")},skewY:function(t){this.skewY=b(t,\"deg\")},perspective:function(t){this.perspective=b(t,\"px\")},x:function(t){this.set(\"translate\",t,null)},y:function(t){this.set(\"translate\",null,t)},translate:function(t,e){if(this._translateX===undefined){this._translateX=0}if(this._translateY===undefined){this._translateY=0}if(t!==null&&t!==undefined){this._translateX=b(t,\"px\")}if(e!==null&&e!==undefined){this._translateY=b(e,\"px\")}this.translate=this._translateX+\",\"+this._translateY}},getter:{x:function(){return this._translateX||0},y:function(){return this._translateY||0},scale:function(){var t=(this.scale||\"1,1\").split(\",\");if(t[0]){t[0]=parseFloat(t[0])}if(t[1]){t[1]=parseFloat(t[1])}return t[0]===t[1]?t[0]:t},rotate3d:function(){var t=(this.rotate3d||\"0,0,0,0deg\").split(\",\");for(var e=0;e<=3;++e){if(t[e]){t[e]=parseFloat(t[e])}}if(t[3]){t[3]=b(t[3],\"deg\")}return t}},parse:function(t){var e=this;t.replace(\/([a-zA-Z0-9]+)\\((.*?)\\)\/g,function(t,n,i){e.setFromString(n,i)})},toString:function(t){var e=[];for(var i in this){if(this.hasOwnProperty(i)){if(!n.transform3d&&(i===\"rotateX\"||i===\"rotateY\"||i===\"perspective\"||i===\"transformOrigin\")){continue}if(i[0]!==\"_\"){if(t&&i===\"scale\"){e.push(i+\"3d(\"+this[i]+\",1)\")}else if(t&&i===\"translate\"){e.push(i+\"3d(\"+this[i]+\",0)\")}else{e.push(i+\"(\"+this[i]+\")\")}}}}return e.join(\" \")}};function c(t,e,n){if(e===true){t.queue(n)}else if(e){t.queue(e,n)}else{t.each(function(){n.call(this)})}}function l(e){var i=[];t.each(e,function(e){e=t.camelCase(e);e=t.transit.propertyMap[e]||t.cssProps[e]||e;e=h(e);if(n[e])e=h(n[e]);if(t.inArray(e,i)===-1){i.push(e)}});return i}function d(e,n,i,r){var s=l(e);if(t.cssEase[i]){i=t.cssEase[i]}var a=\"\"+y(n)+\" \"+i;if(parseInt(r,10)>0){a+=\" \"+y(r)}var o=[];t.each(s,function(t,e){o.push(e+\" \"+a)});return o.join(\", \")}t.fn.transition=t.fn.transit=function(e,i,r,s){var a=this;var u=0;var f=true;var l=t.extend(true,{},e);if(typeof i===\"function\"){s=i;i=undefined}if(typeof i===\"object\"){r=i.easing;u=i.delay||0;f=typeof i.queue===\"undefined\"?true:i.queue;s=i.complete;i=i.duration}if(typeof r===\"function\"){s=r;r=undefined}if(typeof l.easing!==\"undefined\"){r=l.easing;delete l.easing}if(typeof l.duration!==\"undefined\"){i=l.duration;delete l.duration}if(typeof l.complete!==\"undefined\"){s=l.complete;delete l.complete}if(typeof l.queue!==\"undefined\"){f=l.queue;delete l.queue}if(typeof l.delay!==\"undefined\"){u=l.delay;delete l.delay}if(typeof i===\"undefined\"){i=t.fx.speeds._default}if(typeof r===\"undefined\"){r=t.cssEase._default}i=y(i);var p=d(l,i,r,u);var h=t.transit.enabled&&n.transition;var b=h?parseInt(i,10)+parseInt(u,10):0;if(b===0){var g=function(t){a.css(l);if(s){s.apply(a)}if(t){t()}};c(a,f,g);return a}var m={};var v=function(e){var i=false;var r=function(){if(i){a.unbind(o,r)}if(b>0){a.each(function(){this.style[n.transition]=m[this]||null})}if(typeof s===\"function\"){s.apply(a)}if(typeof e===\"function\"){e()}};if(b>0&&o&&t.transit.useTransitionEnd){i=true;a.bind(o,r)}else{window.setTimeout(r,b)}a.each(function(){if(b>0){this.style[n.transition]=p}t(this).css(l)})};var z=function(t){this.offsetWidth;v(t)};c(a,f,z);return this};function p(e,i){if(!i){t.cssNumber[e]=true}t.transit.propertyMap[e]=n.transform;t.cssHooks[e]={get:function(n){var i=t(n).css(\"transit:transform\");return i.get(e)},set:function(n,i){var r=t(n).css(\"transit:transform\");r.setFromString(e,i);t(n).css({\"transit:transform\":r})}}}function h(t){return t.replace(\/([A-Z])\/g,function(t){return\"-\"+t.toLowerCase()})}function b(t,e){if(typeof t===\"string\"&&!t.match(\/^[\\-0-9\\.]+$\/)){return t}else{return\"\"+t+e}}function y(e){var n=e;if(typeof n===\"string\"&&!n.match(\/^[\\-0-9\\.]+\/)){n=t.fx.speeds[n]||t.fx.speeds._default}return b(n,\"ms\")}t.transit.getTransitionValue=d;return t});<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-efba744 elementor-widget__width-inherit elementor-widget elementor-widget-html\" data-id=\"efba744\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<select id=\"ticket-form-select\" class=\"form-loader\">\r\n    <option value=\"\"><\/option>\r\n<\/select>\r\n\r\n<div id=\"btn-container\"><\/div>\r\n\r\n<form id=\"dynamic-form-container\" style=\"display: none; margin-top: 20px;\">\r\n    \r\n    <div id=\"form-title\"><\/div>\r\n  \r\n    <div class=\"fields-list-container\">\r\n            \r\n        <div class=\"field-container\">  \r\n            <label for=\"requester-nom\">Your name\r\n <span class=\"required\">*<\/span><\/label>\r\n            <input type=\"nom\" id=\"requester-nom\" required=\"\">\r\n        <\/div>\r\n        \r\n        <div class=\"field-container\">  \r\n            <label for=\"requester-email\">Your email\r\n <span class=\"required\">*<\/span><\/label>\r\n            <input name=\"requester-email\" type=\"email\" id=\"requester-email\" required=\"\">\r\n        <\/div>\r\n        \r\n        <div class=\"field-container\">  \r\n            <label for=\"requester-subject\">Subject of the request\r\n <span class=\"required\">*<\/span><\/label>\r\n            <input type=\"text\" id=\"requester-subject\" required=\"\">\r\n        <\/div>\r\n    \r\n    <\/div>\r\n    \r\n    <div id=\"fields-wrapper\" class=\"fields-list-container\"><\/div>\r\n    \r\n    <div class=\"fields-list-container\">\r\n        \r\n        <div id=\"file-up\" class=\"field-container\">  \r\n            <label for=\"ticket-attachment\"><span id=\"message-image-upload\"><\/span><\/label>\r\n            <input type=\"file\" multiple id=\"ticket-attachment\" accept=\"image\/*\">\r\n        <\/div>\r\n        \r\n        <button type=\"submit\" id=\"submit-btn\">Submit<\/button>\r\n    \r\n    <\/div>\r\n    \r\n<\/form>\r\n\r\n<div class=\"container-drop\"><\/div>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7ebe48c elementor-widget elementor-widget-html\" data-id=\"7ebe48c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<script>\r\n    const support_url = \"https:\/\/support.sinopetech.com\/zd-support\"\r\n\r\n    let isDirty = false;\r\n    var langue\r\n    window.addEventListener( \"load\", function(){\r\n    \r\n    const html_langue = document.querySelector( \"html\" ).getAttribute( \"lang\" )\r\n    \r\n    if( html_langue.indexOf( \"fr\" ) > -1 ){\r\n        langue = \"fr-CA\"\r\n    }else{\r\n        langue = \"en-CA\"\r\n    }\r\n    \r\n    document.body.classList.add( \"profil_reset\" )\r\n    \r\n    \/\/ --- 1. Load the initial dropdown (From previous step) ---\r\n    async function loadTicketForms() {\r\n        const selectElement = document.getElementById('ticket-form-select');\r\n        try {\r\n            \r\n            const response = await fetch( support_url + \"?langue=\" + langue );\r\n            const forms = await response.json();\r\n            \r\n           \/\/   console.log( \"langue\" )\r\n           \/\/  console.log( langue )\r\n            \r\n            if( langue.indexOf( \"en\" ) > -1 ){\r\n                    selectElement.innerHTML = '<option value=\"\">Select a request type<\/option>';\r\n            }else{\r\n                 selectElement.innerHTML = '<option value=\"\">S\u00e9lectionnez votre demande <\/option>';\r\n            }\r\n           \r\n            \r\n            forms.forEach(form => {\r\n                const option = document.createElement('option');\r\n                option.value = form.id;\r\n                option.textContent = form.name;\r\n                selectElement.appendChild(option);\r\n                \r\n                document.getElementById( \"ticket-form-select\" ).classList.remove( \"form-loader\" )\r\n            });\r\n            \r\n             \/\/ --- 2. Listen for selection and render fields ---\r\n            document.getElementById('ticket-form-select')\r\n            .addEventListener('change', (event) => {\r\n                const formId = event.target.value;\r\n                const el = event.target;\r\n                const form_title = el.options[el.selectedIndex].text;\r\n                fetch_form_data( formId, form_title )\r\n            })\r\n            \r\n            loadTicketButtons( forms )\r\n            \r\n        } catch (error) {\r\n            \r\n            if( langue.indexOf( \"en\" ) > -1 ){\r\n                    selectElement.innerHTML = '<option value=\"\">Error during when loading forms<\/option>';\r\n            }else{\r\n                 selectElement.innerHTML = '<option value=\"\">Erreur durant le chargement des formulaires.<\/option>';\r\n            }\r\n            \r\n            \r\n        }\r\n        \r\n        \r\n    }\r\n    \r\n    loadTicketForms()\r\n    \r\n    \r\n    function loadTicketButtons( forms ){\r\n        \r\n       \/\/ console.log( \"load buttons\")\r\n        \r\n         document.getElementById( \"btn-container\" ).classList.add( \"form-loader\" )\r\n         \r\n         let btns_list = document.createElement('div');\r\n         btns_list.classList.add( \"btns-list\" )\r\n         btns_list.setAttribute( \"id\", \"btns_list\" )\r\n         let button_container = document.getElementById( \"btn-container\")\r\n         \/\/console.log( forms )\r\n         forms.forEach(form => {\r\n                const anchor = document.createElement('a');\r\n                anchor.setAttribute( \"href\", form.id );\r\n                anchor.textContent = form.name;\r\n                btns_list.appendChild(anchor);\r\n            });\r\n            \r\n        \/\/console.log( btns_list )\r\n        \r\n        button_container.appendChild(btns_list) \r\n        \r\n        document.getElementById( \"btn-container\" ).classList.remove( \"form-loader\" )\r\n        \r\n        const form_btns = document.querySelectorAll( \"#btns_list a\" )\r\n        form_btns.forEach( (btn) => {\r\n            \/\/console.log( btn )\r\n            btn.addEventListener( \"click\", function(e){\r\n                e.preventDefault()\r\n                e.stopPropagation()\r\n                const form_id = e.target.getAttribute('href');\r\n               \/\/ console.log( e.target )\r\n               \/\/ console.log( e.target.innerText )\r\n                const form_title = e.target.innerText\r\n                fetch_form_data( form_id, form_title ) \r\n            })\r\n            \r\n        })\r\n        \r\n    }\r\n    \r\n\r\n\r\n\r\n\r\nasync function fetch_form_data( formId, form_title ){\r\n\r\n    const formContainer = document.getElementById('dynamic-form-container');\r\n    const fieldsWrapper = document.getElementById('fields-wrapper');\r\n    \r\n    if (!formId) {\r\n        formContainer.style.display = 'none';\r\n        return;\r\n    }\r\n    \r\n    const file_upload_label = document.getElementById( \"message-image-upload\" )\r\n    \r\n    jQuery(\"#file-up\").addClass(\"show\")\r\n            \r\n    \/\/ change le texte du upload field\r\n    if( formId == \"49845507442459\" ){\r\n        \r\n        \/\/ les ventes\r\n        if( langue.indexOf( \"fr\") > -1 ){\r\n            file_upload_label.innerText = \"Pour nous aider \u00e0 mieux vous conseiller, ajoutez une photo de votre installation actuelle (si applicable).\"\r\n        }else{\r\n            file_upload_label.innerText = \"To help us advise you better, please add a photo of your current installation (if applicable).\"\r\n        }\r\n        \r\n    }else if ( formId == \"50565255885339\" ){\r\n        \r\n    \/\/ cyber securit\u00e9\r\n    jQuery(\"#file-up\").removeClass(\"show\")\r\n    file_upload_label.innerText = \"\"\r\n        \r\n    }else if ( formId == \"45705514108443\" ){\r\n        \r\n    \/\/ soutient technique\r\n    \r\n        if( langue.indexOf( \"fr\") > -1 ){\r\n            file_upload_label.innerText = \" Pour nous aider \u00e0 mieux vous conseiller, ajoutez une photo de votre produit (si applicable).\"\r\n        }else{\r\n            file_upload_label.innerText = \"To help us advise you better, please add a photo of your product (if applicable).\"\r\n        }\r\n    \r\n    }else if ( formId == \"49668240773147\" ){\r\n        \r\n    \/\/ demande de retour\r\n    \r\n        if( langue.indexOf( \"fr\") > -1 ){\r\n            file_upload_label.innerText = \"Ajoutez une photo de l\u2019arri\u00e8re du produit ainsi qu\u2019une copie de votre facture.\"\r\n        }else{\r\n            file_upload_label.innerText = \"Add a photo of the back of the product as well as a copy of your invoice.\"\r\n        }\r\n        \r\n    }\r\n            \r\n    \r\n    document.body.classList.remove( \"ticket-sent\" )\r\n    \r\n    const formTitle = document.getElementById( \"form-title\" )\r\n    formTitle.innerText = form_title\r\n\r\n    document.body.classList.remove( \"client-hq\", \"client-hilo-hq\", \"requis_nom_entreprise\", \"requis_telephone\", \"requis_distributeur\", \"nom_entreprise_mendate\")\r\n    \r\n    jQuery( \".valid-email\" ).each( function(index,value){\r\n        jQuery( value ).removeClass( \"valid-email\" )\r\n    })\r\n    jQuery( \".invalid-email\" ).each( function(index,value){\r\n        jQuery( value ).removeClass( \"invalid-email\" )\r\n    })\r\n    \r\n    \r\n     if( langue.indexOf( \"en\" ) > -1 ){\r\n           fieldsWrapper.innerHTML = '<p class=\"form-loader\">&nbsp;<\/p>';\r\n     }else{\r\n        fieldsWrapper.innerHTML = '<p class=\"form-loader\">&nbsp;<\/p>';\r\n     }\r\n            \r\n    \r\n    \r\n    formContainer.style.display = 'block';\r\n\r\n\r\n    try {\r\n        \/\/ Fetch the fields for this specific form\r\n        const response = await fetch( support_url + `\/get_form_fields.php?form_id=${formId}&langue=${langue}`);\r\n        \r\n        const result = await response.json();\r\n        const fields = result.fields;\r\n        const sort_order = result.sort_order;\r\n        \r\n        fields.sort((a, b) => sort_order.indexOf(a.id) - sort_order.indexOf(b.id));\r\n        \r\n        \r\n        \/\/console.log( \"retour get_form_fields.php\" )\r\n        \/\/console.log( fields )\r\n        \r\n        fieldsWrapper.innerHTML = ''; \/\/ Clear loading text\r\n\r\n        fields.forEach(field => {\r\n            \r\n            let special_field;\r\n            \r\n            const id = field.id\r\n               \r\n            \/\/ Create the wrapper for the field\r\n            const fieldDiv = document.createElement('div');\r\n            fieldDiv.classList.add( \"field-container\" )\r\n            fieldDiv.setAttribute( \"field_id\", id )\r\n            \r\n            \/\/ Create the label\r\n            const label = document.createElement('label');\r\n            label.textContent = field.title_in_portal;\r\n            if (field.required_in_portal || id == 50276376016923 ) {\r\n                \r\n               \r\n                if( langue.indexOf( \"en\" ) > -1 ){\r\n                     label.innerHTML += ' <span class=\"required\">*<\/span>';\r\n                }else{\r\n                     label.innerHTML += ' <span class=\"requis\">*<\/span>';\r\n                }\r\n                \r\n                \r\n            }\r\n            \r\n            if (field.type !== 'checkbox'){\r\n                fieldDiv.appendChild(label);\r\n            }else{\r\n                fieldDiv.classList.add( \"checkbox_field\" )\r\n            }\r\n\r\n            \/\/ Add description if it exists\r\n            \/\/ if (field.description) {\r\n                const desc = document.createElement('p');\r\n                desc.classList.add( \"field-description\" )\r\n                desc.style.fontSize = '12px';\r\n                desc.style.color = '#666';\r\n                desc.style.margin = '0 0 5px 0';\r\n                if (field.description) {\r\n                    desc.textContent = field.description;\r\n                }\r\n                \/\/else{\r\n                \/\/    desc.innerHTML = `&nbsp;`;\r\n                \/\/}\r\n                \r\n                if (field.type !== 'checkbox'){\r\n                    fieldDiv.appendChild(desc);\r\n                }\r\n                \r\n            \/\/ }\r\n\r\n            \/\/ Render the correct input based on field type\r\n            let inputElement;\r\n\r\n            if (field.type === 'text' || field.type === 'subject') {\r\n                \r\n                inputElement = document.createElement('input');\r\n                if( id == 49841829152155 ){\r\n                    inputElement.type = 'email';\r\n                }else{\r\n                    inputElement.type = 'text';\r\n                }\r\n                \r\n                inputElement.name = `field_${field.id}`;\r\n                if (field.required_in_portal) {\r\n                    inputElement.required = true;\r\n                }\r\n                \r\n            }\r\n            else if (field.type === 'integer' ) {\r\n                \r\n                inputElement = document.createElement('input');\r\n                if( field.title.indexOf( \"phone\" ) > -1 ){\r\n                    inputElement.type = 'tel';\r\n                    inputElement.inputMode = 'numeric';\r\n                    inputElement.placeholder = \"123-456-7890\"\r\n                }else{\r\n                    inputElement.type = 'number';\r\n                    inputElement.inputMode = 'numeric';\r\n                }\r\n                inputElement.name = `field_${field.id}`;\r\n                if (field.required_in_portal) {\r\n                    inputElement.required = true;\r\n                }\r\n                \r\n            } \r\n            else if (field.type === 'textarea' || field.type === 'description') {\r\n                \r\n                inputElement = document.createElement('textarea');\r\n                fieldDiv.classList.add( \"larger\" )\r\n                inputElement.rows = 4;\r\n                inputElement.name = `field_${field.id}`;\r\n                if (field.required_in_portal) {\r\n                    inputElement.required = true;\r\n                }\r\n                \r\n            } \r\n            else if (field.type === 'tagger' || field.type === 'multiselect' ) { \/\/ Zendesk calls dropdowns 'tagger'\r\n            \r\n            \r\n                \r\n                \r\n                \/\/ if( id == 49841901733531 ){\r\n                if( id == 50223240340635 ){   \r\n                    \r\n                    \/\/console.log( \"Mod\u00e8le de l'appareil deteced\" )\r\n                    \/\/console.log( field.custom_field_options )\r\n                    \r\n                    let models = []\r\n                    \r\n                    field.custom_field_options.forEach( (item) => {\r\n                        \r\n                       const model_data = item.name.split( \"::\" )\r\n                       const model_value = item.value\r\n                       let data\r\n                       \r\n                       if(  model_data[1] == null ){\r\n                           \r\n                            data = {\r\n                                categorie   : model_data[0],\r\n                                titre       : model_data[0],\r\n                                original    : model_value\r\n                            }\r\n                            \r\n                       }else if( model_data[2] == null ){\r\n                           \r\n                            data = {\r\n                                categorie   : model_data[0],\r\n                                titre       : model_data[1],\r\n                                original    : model_value\r\n                            }\r\n                           \r\n                       }else if( model_data[3] == null ){\r\n                           \r\n                            data = {\r\n                                categorie   : model_data[0],\r\n                                titre       : model_data[1],\r\n                                protocol    : model_data[2],\r\n                                original    : model_value\r\n                            }\r\n                           \r\n                       }else{\r\n                           \r\n                            data = {\r\n                                categorie   : model_data[0],\r\n                                titre       : model_data[1],\r\n                                protocol    : model_data[2],\r\n                                sku         : model_data[3],\r\n                                original    : model_value\r\n                            }\r\n                           \r\n                       }\r\n                        \r\n                        models.push( data )\r\n                        \r\n                    })\r\n                    \r\n                   \/\/ console.log( \"models\" )\r\n                   \/\/ console.log( models )\r\n                    \r\n                    const final = generateNestedHTMLList( models, \"modeles\" )\r\n                    \r\n                    inputElement = document.createElement('input');\r\n                    inputElement.type = \"text\"\r\n                    inputElement.setAttribute( \"required\", \"required\" )\r\n                    inputElement.classList.add(\"hidden-input\")\r\n                    \r\n                    special_field = document.createElement( 'div' )\r\n                    special_field.classList.add( `field_container_${field.id}`, `dropmenu-list` )\r\n                    special_field.setAttribute( \"field-id\", field.id )\r\n                    special_field.innerHTML = final;\r\n                    \r\n                }else if( id == 49845718868251 ){\r\n                    \r\n                    \r\n                    let models = []\r\n                    \r\n                    field.custom_field_options.forEach( (item) => {\r\n                        \r\n                       const model_data = item.name.split( \"::\" )\r\n                       const model_value = item.value\r\n                        \r\n                       let data = {\r\n                            categorie   : model_data[0],\r\n                            titre       : model_data[1],\r\n                            original    : model_value\r\n                        }\r\n                        \r\n                        models.push( data )\r\n                        \r\n                    })\r\n                    \r\n                    const final = generateNestedHTMLList( models, \"modeles\" )\r\n                    \r\n                    inputElement = document.createElement('input');\r\n                    inputElement.setAttribute( \"required\", \"required\" )\r\n                    inputElement.classList.add( \"hidden-input\" )\r\n                    inputElement.type = \"text\"\r\n                \r\n                    special_field = document.createElement( 'div' )\r\n                    special_field.classList.add( `field_container_${field.id}`, `dropmenu-list` )\r\n                    special_field.setAttribute( \"field-id\", field.id )\r\n                    special_field.innerHTML = final;\r\n                   \r\n                    \r\n                }else if( id === 50038105976091 ){\r\n                    \r\n                    let final = \"<ul id='modeles' class='jquery-dropmenu multiselect-drop'>\";\r\n                    \r\n                \r\n                    \r\n                    field.custom_field_options.forEach( (item) => {\r\n                        \r\n                       const model_data = item.name\r\n                       \r\n                       end_list_values[item.name] = item.value\r\n                       \r\n                       final += `<li data-value='`+item.value+`' data-dropdown-text=\"`+item.name+`\">`\r\n                         +item.name\r\n                       +`<\/li>`\r\n                       \r\n                    })\r\n                    \r\n                    final += `<\/ul>`\r\n                    \r\n                    inputElement = document.createElement('input');\r\n                    inputElement.setAttribute( \"required\", \"required\" )\r\n                    inputElement.classList.add( \"hidden-input\", \"multiselect\" )\r\n                    inputElement.type = \"text\"\r\n                \r\n                    special_field = document.createElement( 'div' )\r\n                    special_field.classList.add( `field_container_${field.id}`, `dropmenu-list` )\r\n                    special_field.setAttribute( \"field-id\", field.id )\r\n                    special_field.innerHTML = final;\r\n                    \r\n                \r\n                }else{\r\n                    \r\n                    inputElement = document.createElement('select');\r\n                    \r\n                    if( id === 50276376016923 ){\r\n                        inputElement.setAttribute( \"required\", \"required\")\r\n                    }\r\n                    \r\n                    \r\n                     if( langue.indexOf( \"en\" ) > -1 ){\r\n                         inputElement.innerHTML = '<option value=\"\">-<\/option>';\r\n                    }else{\r\n                         inputElement.innerHTML = '<option value=\"\">-<\/option>';\r\n                   \r\n                    }\r\n                \r\n                    \r\n                    \r\n                    field.custom_field_options.forEach(option => {\r\n                        const opt = document.createElement('option');\r\n                        opt.value = option.value;\r\n                        opt.textContent = option.name;\r\n                        inputElement.appendChild(opt);\r\n                    });\r\n                    \r\n                }\r\n                \r\n                \r\n                \r\n            } \r\n            else if (field.type === 'checkbox') {\r\n                \r\n                inputElement = document.createElement('input');\r\n                inputElement.type = 'checkbox';\r\n                inputElement.style.width = 'auto'; \r\n                \r\n                \r\n                \/\/ Assign name and required status\r\n                inputElement.name = `field_${field.id}`;\r\n                if (field.required_in_portal) {\r\n                    inputElement.required = true;\r\n                }\r\n                \r\n                label.appendChild(inputElement)\r\n                fieldDiv.appendChild(label);\r\n                \r\n                fieldDiv.appendChild(desc);\r\n    \r\n               \/\/ fieldDiv.appendChild(inputElement);\r\n                \/\/if( special_field != null ){\r\n                \/\/    fieldDiv.appendChild( special_field );\r\n                \/\/}\r\n                fieldsWrapper.appendChild(fieldDiv);\r\n                return;\r\n                \r\n            } else {\r\n                \/\/ Fallback for unsupported types\r\n                inputElement = document.createElement('input');\r\n                inputElement.type = 'text';\r\n                inputElement.placeholder = `Unsupported field type: ${field.type}`;\r\n            }\r\n\r\n            \/\/ Assign name and required status\r\n            inputElement.name = `field_${field.id}`;\r\n            if (field.required_in_portal) {\r\n                inputElement.required = true;\r\n            }\r\n\r\n\r\n            fieldDiv.appendChild(inputElement);\r\n            if( special_field != null ){\r\n                fieldDiv.appendChild( special_field );\r\n            }\r\n            \r\n            fieldsWrapper.appendChild(fieldDiv);\r\n            \r\n        });\r\n        \r\n        \r\n            \r\n            jQuery( '.jquery-dropmenu' ).each(function(index, dropmenu){\r\n                \r\n              \/\/ console.log( dropmenu )\r\n                const el = jQuery(dropmenu).parents( \".dropmenu-list\" );\r\n                \/\/console.log( el ) \r\n                const field_id = jQuery(el).attr( \"field-id\" )\r\n                \/\/console.log( field_id )\r\n               \/\/ console.log( [\"50038105976091\"].includes( field_id ) ? true : false )\r\n                \r\n                jQuery(dropmenu).dropdown({\r\n                    toggleText: '-',\r\n        \t\t\ttitleText: '-',\r\n        \t\t\tbackText: '',\r\n        \t\t\tcloseText: '',\r\n                    animate: false,\r\n                    multiple: [\"50038105976091\"].includes( field_id ) ? true : false,\r\n                    autoClose: false\r\n                })\r\n                \r\n            })\r\n            \r\n            \r\n    document.body.classList.add( \"est_distributeur\" )   \r\n     \r\n     \r\n     \r\n     \r\n    \/\/ RESET ALL FIELDS ON FORM LOAD\r\n    \r\n    document.body.classList.add( \"profil_reset\" )\r\n    \r\n    jQuery(\"input[name='field_50223240340635']\").removeAttr(\"required\")\r\n    jQuery(\"input[name='field_502232403406353']\").val(\"\")\r\n    \r\n    document.body.classList.remove( \"requis_nom_entreprise\" )\r\n    document.body.classList.remove( \"requis_telephone\" )\r\n    document.body.classList.remove( \"requis_distributeur\" )\r\n    document.body.classList.remove( \"client-hq\" )\r\n    document.body.classList.remove( \"nom_entreprise_mendate\" )\r\n    document.body.classList.remove( \"client-hilo-hq\" )\r\n    \r\n    jQuery(\"input[name='field_52077645901723']\").removeAttr(\"required\")\r\n    jQuery(\"input[name='field_52077645901723']\").val(\"\")\r\n    \r\n    jQuery(\"input[name='field_52077580644891']\").removeAttr(\"required\")\r\n    jQuery(\"input[name='field_52077580644891']\").val(\"\")\r\n    \r\n    jQuery(\"select[name='field_50276376016923']\").val(\"\")\r\n    jQuery(\"select[name='field_50276376016923']\").removeAttr(\"required\")\r\n    \r\n    jQuery(\"input[name='field_50086557738395']\").val(\"\")\r\n    jQuery(\"input[name='field_50086557738395']\").removeAttr(\"required\")\r\n    jQuery(\"input[name='field_50073346434971']\").val(\"\")\r\n    jQuery(\"input[name='field_50073346434971']\").removeAttr(\"required\")\r\n    jQuery(\"input[name='field_49842254373659']\").val(\"\")\r\n    jQuery(\"input[name='field_49842254373659']\").removeAttr(\"required\")\r\n    jQuery(\"input[name='field_50230431983387']\").val(\"\")\r\n    jQuery(\"input[name='field_50230431983387']\").removeAttr(\"required\")\r\n    jQuery(\"input[name='field_50072921002651']\").prop('checked', false);\r\n    jQuery(\"input[name='field_49841829152155']\").val(\"\")\r\n    jQuery(\"input[name='field_49841829152155']\").removeAttr(\"required\")\r\n    \r\n    \/\/ END RESET ALL FIELDS\r\n     \r\n                \r\n    jQuery( '.dropdown' ).on(\"click\", function(e){\r\n        \r\n        if( this.classList.contains( \"dropdown\" ) ){\r\n            \r\n    const input = jQuery(this).parent().prev()\r\n    const selections = this.querySelectorAll( \".dropdown-selected\" )\r\n    \r\n    if( selections.length > 0 ){\r\n        \r\n        let final_values = []\r\n        \r\n        selections.forEach( (sel) => {\r\n            \r\n         const text = sel.querySelector( \".dropdown-text\" ).innerText\r\n        \r\n        \/\/ console.log( \"click\" )\r\n         \/\/console.log( text )\r\n            \r\n         const titre = text\r\n         const value = end_list_values[ text ];\r\n         \r\n         \r\n            \r\n            if( end_list_values[ text ] != null && !final_values.includes( value ) ){\r\n                \r\n                final_values.push( end_list_values[ text ]  )\r\n                \r\n            }\r\n            \r\n           \/\/ console.log( \"prev\" )\r\n            \/\/console.log( jQuery(this).parent().prev() )\r\n            \r\n            jQuery(this).parent().prev().val( final_values.join( \",\" ) )\r\n            \r\n            \r\n            \/\/console.log( \"val\" )\r\n            \/\/console.log( jQuery(this).parent().prev().val() )\r\n            \r\n            \/\/console.log( \"dropmenu-list\" )\r\n            \/\/console.log( jQuery( this ).parents( \".dropmenu-list\" ) )\r\n            \/\/console.log( \"field-id\" )\r\n            \/\/console.log( jQuery( this ).parents( \".dropmenu-list\" ).attr(\"field-id\") )\r\n            \r\n if( jQuery( this ).parents( \".dropmenu-list\" ).attr(\"field-id\") == \"49845718868251\" ){   \r\n             \r\n             document.body.classList.remove( \"profil_reset\" )\r\n             \r\n            \/\/ Conditions\r\n             switch( text ){\r\n                \r\n                case \"Condominium\":\r\n                case \"Business\":\r\n                case \"Entreprise\":\r\n                case \"Propri\u00e9t\u00e9 unifamiliale\":\r\n                case \"Single-family property\":\r\n                    \/\/console.log( \"profil 1 selected\")\r\n                    \/\/ affiche le checkbox installed par HydroQuebec\r\n                document.body.classList.add( \"client-hq\" )\r\n                document.body.classList.remove( \"requis_nom_entreprise\" )\r\n                jQuery(\"input[name='field_50073346434971']\").val(\"\")\r\n                jQuery(\"input[name='field_50073346434971']\").removeAttr(\"required\")\r\n                document.body.classList.remove( \"requis_telephone\" )\r\n                jQuery(\"input[name='field_49842254373659']\").val(\"\")\r\n                jQuery(\"input[name='field_49842254373659']\").removeAttr(\"required\")\r\n                document.body.classList.remove( \"requis_distributeur\" )\r\n                jQuery(\"input[name='field_50230431983387']\").val(\"\")\r\n                jQuery(\"input[name='field_50230431983387']\").removeAttr(\"required\")\r\n                break;\r\n                \r\n                case \"\u00c9lectricien\":\r\n                case \"Electrician\":\r\n                case 'Plumber':\r\n                case \"Plombier\":\r\n                case 'General Contractor':\r\n                case \"Entrepreneur g\u00e9n\u00e9ral\":\r\n                    \/\/console.log( \"profil 2 selected\")\r\n                    document.body.classList.remove( \"client-hq\" )\r\n                    document.body.classList.remove( \"client-hilo-hq\" )\r\n                    document.body.classList.add( \"requis_nom_entreprise\" )\r\n                    jQuery(\"input[name='field_50086557738395']\").attr(\"required\", \"required\")\r\n                    document.body.classList.add( \"requis_telephone\" )\r\n                    jQuery(\"input[name='field_49842254373659']\").attr(\"required\", \"required\")\r\n                    document.body.classList.add( \"requis_distributeur\" )\r\n                    jQuery(\"input[name='field_50230431983387']\").attr(\"required\", \"required\")\r\n                    jQuery(\"input[name='field_50073346434971']\").val(\"\")\r\n                    jQuery(\"input[name='field_50073346434971']\").removeAttr(\"required\")\r\n                    jQuery(\"input[name='field_49842254373659']\").val(\"\")\r\n                    jQuery(\"input[name='field_50230431983387']\").val(\"\")\r\n                    jQuery(\"input[name='field_50230431983387']\").removeAttr(\"required\")\r\n                    document.body.classList.remove( \"client-hq\" )\r\n                    jQuery(\"input[name='field_50072921002651']\").prop('checked', false);\r\n                    jQuery(\"input[name='field_49841829152155']\").val(\"\")\r\n                    jQuery(\"input[name='field_49841829152155']\").removeAttr(\"required\")\r\n                break;\r\n                \r\n                case \"Gestionnaire d'immeuble\":\r\n                case 'Property Manager':\r\n                    \/\/console.log( \"profil 3 selected\")\r\n                    document.body.classList.remove( \"client-hq\" )\r\n                    document.body.classList.remove( \"client-hilo-hq\" )\r\n                    document.body.classList.add( \"requis_nom_entreprise\" )\r\n                    jQuery(\"input[name='field_50086557738395']\").attr(\"required\", \"required\")\r\n                    document.body.classList.add( \"requis_telephone\" )\r\n                    jQuery(\"input[name='field_49842254373659']\").attr(\"required\", \"required\")\r\n                    \r\n                    document.body.classList.remove( \"requis_distributeur\" )\r\n                    \r\n                    \r\n                    jQuery(\"input[name='field_50230431983387']\").removeAttr(\"required\")\r\n                    jQuery(\"input[name='field_50230431983387']\").val(\"\")\r\n                    jQuery(\"input[name='field_50230431983387']\").removeAttr(\"required\")\r\n                    document.body.classList.remove( \"client-hq\" )\r\n                    jQuery(\"input[name='field_50072921002651']\").prop('checked', false);\r\n                    jQuery(\"input[name='field_50072921002651']\").removeAttr(\"required\")\r\n                    jQuery(\"input[name='field_49841829152155']\").val(\"\")\r\n                    jQuery(\"input[name='field_49841829152155']\").removeAttr(\"required\")\r\n                break;\r\n                case \"Distributeur\":\r\n                case 'Distributor':\r\n                    \r\n                    document.body.classList.add( \"est_distributeur\" )\r\n                    \r\n                    \/\/ Select the file input element\r\n                    const fileInput = document.getElementById('file-up');\r\n                    \/\/ Clear the selected file\r\n                    fileInput.value = \"\"; \r\n                    \r\n                    jQuery(\"input[name='field_52077645901723']\").attr(\"required\", \"required\")\r\n                    jQuery(\"input[name='field_52077645901723']\").val(\"\")\r\n                    \r\n                    \/\/ jQuery(\"input[name='field_52077580644891']\").attr(\"required\", \"required\")\r\n                   \/\/ jQuery(\"input[name='field_52077580644891']\").val(\"\")\r\n                    \r\n                    \r\n                    jQuery(\"input[name='field_50223240340635']\").removeAttr(\"required\")\r\n                    jQuery(\"input[name='field_502232403406353']\").val(\"\")\r\n                    \r\n                    jQuery(\"select[name='field_50223240340635']\").removeAttr(\"required\")\r\n                    jQuery(\"select[name='field_502232403406353']\").val(\"\")\r\n                    \r\n                    \/\/console.log( \"profil 3 selected\")\r\n                    document.body.classList.remove( \"client-hq\" )\r\n                    document.body.classList.remove( \"client-hilo-hq\" )\r\n                    document.body.classList.add( \"requis_nom_entreprise\" )\r\n                    jQuery(\"input[name='field_50086557738395']\").attr(\"required\", \"required\")\r\n                    document.body.classList.add( \"requis_telephone\" )\r\n                    jQuery(\"input[name='field_49842254373659']\").attr(\"required\", \"required\")\r\n                    \r\n                    document.body.classList.remove( \"requis_distributeur\" )\r\n                    \r\n                    \r\n                    jQuery(\"select[name='field_50276376016923']\").removeAttr(\"required\")\r\n                    \r\n                    jQuery(\"select[name='field_50276376016923']\").val(\"\")\r\n                     \r\n                    jQuery(\"input[name='field_50230431983387']\").removeAttr(\"required\")\r\n                    jQuery(\"input[name='field_50230431983387']\").val(\"\")\r\n                    jQuery(\"input[name='field_50230431983387']\").removeAttr(\"required\")\r\n                    document.body.classList.remove( \"client-hq\" )\r\n                    jQuery(\"input[name='field_50072921002651']\").prop('checked', false);\r\n                    jQuery(\"input[name='field_50072921002651']\").removeAttr(\"required\")\r\n                    jQuery(\"input[name='field_49841829152155']\").val(\"\")\r\n                    jQuery(\"input[name='field_49841829152155']\").removeAttr(\"required\")\r\n                break;\r\n                \r\n                case \"Chauffagiste\":\r\n                case 'HVAC':\r\n                case \"Int\u00e9grateur Control4\":\r\n                case 'Control4 Integrator':\r\n                    \/\/console.log( \"profil 4 selected\")\r\n                    document.body.classList.remove( \"client-hq\" )\r\n                    document.body.classList.remove( \"client-hilo-hq\" )\r\n                    document.body.classList.add( \"requis_nom_entreprise\" )\r\n                    jQuery(\"input[name='field_50086557738395']\").attr(\"required\", \"required\")\r\n                    document.body.classList.add( \"requis_telephone\" )\r\n                    jQuery(\"input[name='field_49842254373659']\").attr(\"required\", \"required\")\r\n                    document.body.classList.add( \"requis_distributeur\" )\r\n                    jQuery(\"input[name='field_50230431983387']\").attr(\"required\", \"required\")\r\n                    document.body.classList.remove( \"client-hq\" )\r\n                    jQuery(\"input[name='field_50072921002651']\").prop('checked', false);\r\n                    jQuery(\"input[name='field_49841829152155']\").val(\"\")\r\n                    jQuery(\"input[name='field_49841829152155']\").removeAttr(\"required\")\r\n                break;\r\n                \r\n                default:\r\n                \r\n                    jQuery(\"input[name='field_50223240340635']\").attr(\"required\", \"required\")\r\n                    jQuery(\"input[name='field_502232403406353']\").val(\"\")\r\n                    \r\n                    \/\/console.log( \"profil 5 selected\")\r\n                    document.body.classList.remove( \"est_distributeur\" )\r\n                    \r\n                    document.body.classList.remove( \"requis_nom_entreprise\" )\r\n                    document.body.classList.remove( \"requis_telephone\" )\r\n                    document.body.classList.remove( \"requis_distributeur\" )\r\n                    document.body.classList.remove( \"client-hq\" )\r\n                    document.body.classList.remove( \"nom_entreprise_mendate\" )\r\n                    document.body.classList.remove( \"client-hilo-hq\" )\r\n                    \r\n                    jQuery(\"input[name='field_52077645901723']\").removeAttr(\"required\")\r\n                    jQuery(\"input[name='field_52077645901723']\").val(\"\")\r\n                    \r\n                    jQuery(\"input[name='field_52077580644891']\").removeAttr(\"required\")\r\n                    jQuery(\"input[name='field_52077580644891']\").val(\"\")\r\n                    \r\n                    jQuery(\"select[name='field_50276376016923']\").val(\"\")\r\n                    jQuery(\"select[name='field_50276376016923']\").attr(\"required\", \"required\")\r\n                    \r\n                    jQuery(\"input[name='field_50086557738395']\").val(\"\")\r\n                    jQuery(\"input[name='field_50086557738395']\").removeAttr(\"required\")\r\n                    jQuery(\"input[name='field_50073346434971']\").val(\"\")\r\n                    jQuery(\"input[name='field_50073346434971']\").removeAttr(\"required\")\r\n                    jQuery(\"input[name='field_49842254373659']\").val(\"\")\r\n                    jQuery(\"input[name='field_49842254373659']\").removeAttr(\"required\")\r\n                    jQuery(\"input[name='field_50230431983387']\").val(\"\")\r\n                    jQuery(\"input[name='field_50230431983387']\").removeAttr(\"required\")\r\n                    jQuery(\"input[name='field_50072921002651']\").prop('checked', false);\r\n                    jQuery(\"input[name='field_49841829152155']\").val(\"\")\r\n                    jQuery(\"input[name='field_49841829152155']\").removeAttr(\"required\")\r\n                break;\r\n            }\r\n            \r\n   \/*\r\n   if( jQuery( '.field-container[field_id=\"52077645901723\"] label .required' ).length == 0 && jQuery( '.field-container[field_id=\"52077645901723\"] label .requis' ).length == 0 ){\r\n            jQuery( '.field-container[field_id=\"52077645901723\"] label' ).append( \"<span class='required'>*<\/span>\" )\r\n        }\r\n        \r\n    if( jQuery( '.field-container[field_id=\"52077580644891\"] label .required' ).length == 0 && jQuery( '.field-container[field_id=\"52077580644891\"] label .requis' ).length == 0 ){\r\n        jQuery( '.field-container[field_id=\"52077580644891\"] label' ).append( \"<span class='required'>*<\/span>\" )\r\n    }\r\n    \r\n    if( jQuery( '.field-container[field_id=\"50086557738395\"] label .required' ).length == 0 && jQuery( '.field-container[field_id=\"50086557738395\"] label .requis' ).length == 0 ){\r\n        jQuery( '.field-container[field_id=\"50086557738395\"] label' ).append( \"<span class='required'>*<\/span>\" )\r\n    }\r\n    \r\n    *\/\r\n    \r\n    const fields = jQuery( \".field-container input[required], .field-container select[required]\" )\r\n    jQuery(fields).each(function(index, element ){\r\n        const container = jQuery( element ).parents(\".field-container\")\r\n        const le_label = jQuery( container ).find( \"label\" )\r\n        const required_star = jQuery( container ).find( \"label .required\" )\r\n        const required_star2 = jQuery( container ).find( \"label .requis\" )\r\n        if( required_star.length == 0 && required_star2.length == 0  ){\r\n            console.log( \"missing Required Star\" )\r\n            jQuery( le_label ).append( '<span class=\"requis\">*<\/span>' )\r\n        }\r\n    })\r\n        \r\n       \r\n            \r\n            toggle_numero_commande()\r\n            \r\n }\r\n            \r\n            \r\n        })\r\n        \r\n    }else{\r\n        jQuery( input ).val(\"\")\r\n    }\r\n        \r\n    \/\/ end_list_values[ selection ]\r\n            \r\n            \r\n        }\r\n        \r\n        \r\n    })\r\n    \r\n            \r\n        \r\n        const installation_hq_checkbox = document.querySelector( \"input[type='checkbox'][name='field_50072921002651']\" )\r\n\r\n        if( installation_hq_checkbox != null ){\r\n            \r\n          installation_hq_checkbox.addEventListener( \"change\", function(e){\r\n              if( e.target.checked ){\r\n                  \r\n                document.body.classList.add( \"client-hilo-hq\" )\r\n                \r\n                jQuery(\"input[name='field_50073346434971']\").val(\"\")\r\n                jQuery(\"input[name='field_50073346434971']\").attr(\"required\", \"required\")\r\n                \r\n                jQuery(\"input[name='field_49841829152155']\").val(\"\")\r\n                jQuery(\"input[name='field_49841829152155']\").attr(\"required\", \"required\")\r\n                \r\n                 const market_place = jQuery(  \"select[name='field_50276376016923']\" ).val() \r\n                \r\n                \/\/console.log( market_place )\r\n                \r\n               \/\/ jQuery(\"input[name='field_50034857922331']\").val(\"\")\r\n               \/\/ jQuery(\"input[name='field_50034857922331']\").removeAttr(\"required\")\r\n                \r\n                if( jQuery( '.field-container[field_id=\"50073346434971\"] label .required' ).length == 0 ){\r\n                    jQuery( '.field-container[field_id=\"50073346434971\"] label' ).append( \"<span class='required'>*<\/span>\" )\r\n                }\r\n                \r\n                if( jQuery( '.field-container[field_id=\"49841829152155\"] label .required' ).length == 0 ){\r\n                    jQuery( '.field-container[field_id=\"49841829152155\"] label' ).append( \"<span class='required'>*<\/span>\" )\r\n                }\r\n                \r\n                \r\n                const parent_box = jQuery( installation_hq_checkbox ).parents(\".field-container\")\r\n    \r\n                if( jQuery( parent_box ).find('.field-container[field_id=\"50073346434971\"] input[name=\"field_50073346434971\"]').length == 0 ){\r\n                    \r\n                    jQuery( '.field-container[field_id=\"50073346434971\"]' ).appendTo( parent_box )\r\n                    \r\n                    jQuery( '.field-container[field_id=\"49841829152155\"]' ).appendTo( parent_box )\r\n                    \r\n                }\r\n                \r\n                toggle_numero_commande()\r\n                  \r\n              }else{\r\n                  \r\n                 const market_place = jQuery(  \"select[name='field_50276376016923']\" ).val() \r\n                 \r\n                 \/\/console.log( market_place )\r\n                  \r\n                if( ! [\"amazon\",\"sinopetech.com\"].includes( market_place ) ){\r\n                    document.body.classList.remove( \"demande-controle-temperature\" )\r\n                }\r\n                  \r\n                document.body.classList.remove( \"client-hilo-hq\" )\r\n              \r\n                jQuery(\"input[name='field_50073346434971']\").val(\"\")\r\n                jQuery(\"input[name='field_50073346434971'] label .required\").remove()\r\n                jQuery(\"input[name='field_50073346434971']\").removeAttr(\"required\")\r\n                \r\n                jQuery(\"input[name='field_49841829152155']\").val(\"\")\r\n                jQuery(\"input[name='field_49841829152155'] label .required\").remove()\r\n                jQuery(\"input[name='field_49841829152155']\").removeAttr(\"required\")\r\n                \r\n                \r\n              }\r\n              \r\n              toggle_numero_commande()\r\n              \r\n          })  \r\n          \r\n    }\r\n    \r\n    \r\n     const installation_controle_temperateur_checkbox = document.querySelector( \"input[type='checkbox'][name='field_50290330191131']\" )\r\n\r\n        if( installation_controle_temperateur_checkbox != null ){\r\n            \r\n         installation_controle_temperateur_checkbox.addEventListener( \"change\", \r\n          function(e){\r\n              if( e.target.checked ){\r\n                  \r\n                  \r\n                  \r\n               \r\n                \r\n                document.body.classList.add( \"demande-controle-temperature\" )\r\n                \r\n                jQuery(\"input[name='field_50290900175643']\").val(\"\")\r\n                jQuery(\"input[name='field_50290900175643']\").attr(\"required\", \"required\")\r\n                \r\n                jQuery(\"input[name='field_50337889737755']\").val(\"\")\r\n                jQuery(\"input[name='field_50337889737755']\").attr(\"required\", \"required\")\r\n                \r\n                if( jQuery( '.field-container[field_id=\"50290900175643\"] label .required' ).length == 0 ){\r\n                    jQuery( '.field-container[field_id=\"50290900175643\"] label' ).append( \"<span class='required'>*<\/span>\" )\r\n                }\r\n                \r\n                if( jQuery( '.field-container[field_id=\"50337889737755\"] label .required' ).length == 0 ){\r\n                    jQuery( '.field-container[field_id=\"50337889737755\"] label' ).append( \"<span class='required'>*<\/span>\" )\r\n                }\r\n                \r\n                  \r\n                  \r\n                const parent_box = jQuery( installation_controle_temperateur_checkbox ).parents(\".field-container\")\r\n             \r\n                  \r\n                 if( jQuery( parent_box ).find('.field-container[field_id=\"50290900175643\"] input[name=\"field_50290900175643\"]').length == 0 ){\r\n                    \r\n                    jQuery( '.field-container[field_id=\"50290900175643\"]' )\r\n                    .appendTo( parent_box )\r\n                    \r\n                    jQuery( '.field-container[field_id=\"50337889737755\"]' )\r\n                    .appendTo( parent_box )\r\n                    \r\n                }\r\n                \r\n                \r\n              }else{\r\n                  \r\n                \r\n                    \r\n                jQuery(\"input[name='field_50290900175643']\").val(\"\")\r\n                jQuery(\"input[name='field_50290900175643']\").removeAttr(\"required\")\r\n                \r\n                jQuery(\"input[name='field_50337889737755']\").val(\"\")\r\n                jQuery(\"input[name='field_50337889737755']\").removeAttr(\"required\")\r\n                \r\n                jQuery( '.field-container[field_id=\"50290900175643\"] label .required' ).remove()\r\n                jQuery( '.field-container[field_id=\"50337889737755\"] label .required' ).remove()\r\n                  \r\n              }\r\n                \r\n                  \r\n          })\r\n          \r\n    }\r\n    \r\n    jQuery('input[type=\"email\"]').on('blur', function() {\r\n         \r\n        var email = jQuery(this).val();\r\n        var emailReg = \/^([\\w-\\.]+@([\\w-]+\\.)+[\\w-]{2,4})?$\/;\r\n        \r\n        if (!emailReg.test(email) || email === \"\") {\r\n            \/\/ alert('Please enter a valid email address.');\r\n            jQuery(this).addClass(\"invalid-email\");\r\n            jQuery(this).removeClass(\"valid-email\");\r\n        } else {\r\n            jQuery(this).addClass(\"valid-email\");\r\n            jQuery(this).removeClass(\"invalid-email\");\r\n        }\r\n        \r\n    });\r\n    \r\n    \r\n    const numericFields = document.querySelectorAll('input[inputmode=\"numeric\"]');\r\n    \r\n    numericFields.forEach( (numField) => {\r\n        numField.addEventListener('input', (event) => {\r\n          \/\/ The global regex \/[^0-9]\/g targets any character that is NOT a digit from 0 to 9\r\n          event.target.value = event.target.value.replace(\/[^0-9]\/g, '');\r\n        });\r\n    })\r\n    \r\n\r\n    document.body.classList.add( \"form-is-loaded\" )    \r\n    \r\n        \r\n\r\n    } catch (error) {\r\n        \r\n        \/\/console.error('Error:', error);\r\n        \r\n        document.body.classList.remove( \"form-is-loaded\" )  \r\n        \r\n       \r\n     if( langue.indexOf( \"en\" ) > -1 ){\r\n             fieldsWrapper.innerHTML = '<p style=\"color:red;\">Error loading fields.<\/p>';\r\n     }else{\r\n             fieldsWrapper.innerHTML = '<p style=\"color:red;\">Error durant le chargement des champs.<\/p>';\r\n     }\r\n        \r\n        \r\n    }\r\n    \r\n    \r\n};\r\n\r\n\r\n\r\n\r\n\r\n\/\/ --- 3. Handle Form Submission ---\r\ndocument.getElementById('dynamic-form-container').addEventListener('submit', async (e) => {\r\n    e.preventDefault();\r\n\r\n    const submitBtn = document.getElementById('submit-btn');\r\n    submitBtn.disabled = true;\r\n    \r\n     if( langue.indexOf( \"en\" ) > -1 ){\r\n            submitBtn.textContent = \"Submitting ...\";\r\n     }else{\r\n         submitBtn.textContent = \"Envoi ...\";\r\n    }\r\n    \r\n    \/\/ const invalidEmails = jQuery( \".invalid-email\" )\r\n    \/\/ if( invalidEmails.length > 0 ){\r\n    \/\/     const invalidEmail = invalidEmails.first()\r\n    \/\/     invalidEmail.scrollIntoView();\r\n    \/\/     return;\r\n    \/\/ }\r\n    \r\n    const formContainer = e.target;\r\n    \r\n    let langue_prefix = \"fr\";\r\n    if( langue.indexOf( \"en\" ) > -1 ){\r\n        langue_prefix = \"en\"\r\n    }else{\r\n        langue_prefix = \"fr\"\r\n    }\r\n    \r\n    \/\/ Build our JSON payload exactly like before\r\n    const payload = {\r\n        ticket_form_id: document.getElementById('ticket-form-select').value,\r\n        requester_email: document.getElementById('requester-email').value,\r\n        requester_subject: document.getElementById('requester-subject').value,\r\n        requester_name: document.getElementById('requester-nom').value, \r\n        requester_locale: langue_prefix ?? \"fr\",\r\n        requester_body: \"\",\r\n        custom_fields: []\r\n    };\r\n\r\n    const dynamicInputs = document.querySelectorAll('#fields-wrapper input, #fields-wrapper select, #fields-wrapper textarea');\r\n\r\n    dynamicInputs.forEach(input => {\r\n        \r\n        if (input.name && input.name.startsWith('field_')) {\r\n            \r\n            const fieldId = parseInt(input.name.replace('field_', ''));\r\n            let val = input.type === 'checkbox' ? (input.checked ? true : false) : input.value;\r\n            \r\n            if( input.classList.contains( \"multiselect\" ) ){\r\n                val = val.split(\",\")\r\n            }\r\n            \r\n            if( jQuery(input).parent().find(\"label\").text().indexOf(\"Description\") > -1 ){\r\n                \r\n                payload.requester_body = jQuery(input).val()\r\n                \r\n            }\r\n            \r\n            payload.custom_fields.push({ id: fieldId, value: val });\r\n        }\r\n        \r\n    });\r\n\r\n    \/\/ NEW: Prepare the FormData\r\n    const formData = new FormData();\r\n    \r\n    \/\/ Append the JSON data as a stringified string\r\n    formData.append('payload', JSON.stringify(payload));\r\n    \r\n    \/\/ Append the file if the user selected one\r\n    const fileInput = document.getElementById('ticket-attachment');\r\n    if (fileInput.files.length > 0) {\r\n       \/\/  formData.append('attachment', fileInput.files[0]);\r\n       for (let i = 0; i < fileInput.files.length; i++) {\r\n            \/\/ 'attachments[]' tells PHP to treat this as an array of files\r\n            formData.append('attachments[]', fileInput.files[i]);\r\n        }\r\n    }\r\n\r\n    try {\r\n        \/\/ Send the FormData to the PHP backend\r\n        const response = await fetch( support_url + '\/submit_ticket_multiple.php', {\r\n            method: 'POST',\r\n            \/\/ DO NOT SET 'Content-Type': 'application\/json' here!\r\n            \/\/ The browser will automatically set 'multipart\/form-data' \r\n            \/\/ when it detects the FormData object.\r\n            body: formData\r\n        });\r\n\r\n        const result = await response.json();\r\n\r\n        if ( result.success ) {\r\n            \r\n            if( langue.indexOf( \"en\" ) > -1 ){\r\n                 jQuery( \"#ticket-envoye-message h2\" ).text(\"Request submitted!\");\r\n                 \/\/ alert(\"Ticket successfully submitted!\");\r\n            }else{\r\n                jQuery( \"#ticket-envoye-message h2\" ).text(\"Demande envoy\u00e9e!\");\r\n                \/\/ alert(\"Ticket envoy\u00e9!\");\r\n            }\r\n            \r\n            formContainer.reset();\r\n            \r\n            formContainer.style.display = 'none';\r\n            document.getElementById('ticket-form-select').value = '';\r\n            \r\n            document.body.classList.remove( \"client-hilo-hq\" )\r\n            \r\n            document.body.classList.add( \"ticket-sent\" )\r\n            \r\n            \/\/ Reset the file input explicitly just in case\r\n            fileInput.value = ''; \r\n            \r\n            const la_position = jQuery(\"#ticket-envoye-message\").offset()\r\n            \r\n            window.scrollTo({\r\n              top: la_position.top - 50,\r\n              behavior: 'smooth'\r\n            });\r\n            \r\n            isDirty = false;\r\n            \r\n            jQuery( \"#ticket-envoye-message .elementor-widget-lottie svg\" ).trigger( \"click\" )\r\n    \r\n        } else {\r\n            \/\/console.error(\"Zendesk Error Details:\", result.zendesk_response || result);\r\n            \r\n            if( langue.indexOf( \"en\" ) > -1 ){\r\n                 alert(\"Failed to submit ticket. See console for details.\");\r\n            }else{\r\n                 alert(\"\u00c9chec durant l'envoi du ticket. Voir la console pour plus de d\u00e9tails.\");\r\n            }\r\n            \r\n        }\r\n    } catch (error) {\r\n       \/\/ console.error(\"Network Error:\", error);\r\n        \r\n          if( langue.indexOf( \"en\" ) > -1 ){\r\n              alert(\"A network error occurred while submitting.\");\r\n          }else{\r\n              alert(\"Une erreur de r\u00e9seau est survenue\");\r\n        }\r\n        \r\n    } finally {\r\n        submitBtn.disabled = false;\r\n        \r\n        let submit_ticket_btn = \"Envoyer\"\r\n        \r\n        if( langue.indexOf( \"en\" ) > -1 ){\r\n                submit_ticket_btn =\"Submit\";\r\n        }\r\n        \r\n        submitBtn.textContent = submit_ticket_btn;\r\n    }\r\n});\r\n\r\n\r\njQuery( document ).on( \"change\",  \"select[name='field_49842364247067']\", function(e){\r\n    e.preventDefault()\r\n    const value = jQuery(this).val()\r\n    switch( value ){\r\n        case \"autres\":\r\n            document.body.classList.add( \"autre_raison\" )\r\n        break;\r\n        default:\r\n            document.body.classList.remove( \"autre_raison\" )\r\n        break;\r\n    }\r\n})\r\n\r\n\r\n\r\njQuery( document ).on( \"change\",  \"select[name='field_50276376016923']\", function(e){\r\n   \r\n    e.preventDefault()\r\n    toggle_numero_commande()\r\n   \r\n})\r\n\r\n\r\n\r\n\r\n\r\n    const form = document.querySelector('#dynamic-form-container');\r\n    \r\n    form.addEventListener('input', () => {\r\n        isDirty = true;\r\n    });\r\n    \r\n    \/\/ Example: Warning the user before they leave\r\n    window.addEventListener('beforeunload', function (e) {\r\n        \r\n        if (isDirty) {\r\n            e.preventDefault();\r\n            e.returnValue = '';\r\n        };\r\n        \r\n    });\r\n    \r\n    \r\n    \r\n})\r\n\r\n\r\n\r\n\/**\r\n * Generates a deeply nested HTML list from the provided JSON array.\r\n * Levels: Category -> Title -> Protocol -> SKU\r\n * * @param {Array} data - The JSON array containing the models data.\r\n * @returns {string} - The generated HTML string.\r\n *\/\r\n\r\nlet end_list_values = {} \r\n\r\nfunction generateNestedHTMLList(data, dropName) {\r\n    \r\n    \/\/ console.log( \"DATA\" )\r\n    \/\/ console.log( data )\r\n    \r\n  const tree = {};\r\n  \r\n  let sku_path_pairs = {}\r\n\r\n  \/\/ 1. Build the hierarchical tree from the flat JSON data\r\n  data.forEach(item => {\r\n      \r\n    const cat = item.categorie || \"Inconnu\";\r\n\r\n    \/\/ Handle categories that have no other properties (e.g., \"Accessoire\")\r\n    if (Object.keys(item).length === 1 && item.categorie) {\r\n      if (!tree[cat]) {\r\n        tree[cat] = \"EMPTY\";\r\n      }\r\n      return;\r\n    }\r\n\r\n    const titre = item.titre;\r\n    if (!titre) return; \/\/ Skip if no title is present but it's not a pure category\r\n\r\n    \/\/ Initialize category if it's new or was previously marked EMPTY\r\n    if (!tree[cat] || tree[cat] === \"EMPTY\") {\r\n      tree[cat] = {};\r\n    }\r\n    \r\n    \r\n\r\n    \/\/ Determine protocol and sku\r\n    const protocolKey = item.protocol !== undefined ? item.protocol : \"Sans protocole\";\r\n    \r\n    const sku = item.sku !== undefined ? item.sku : null;\r\n    \r\n    const original_value = item.original;\r\n    \r\n    \r\n\r\n    \/\/ Initialize title and protocol levels\r\n    if (!tree[cat][titre]) {\r\n      tree[cat][titre] = {};\r\n    }\r\n    \r\n    \r\n     if( item.protocol == undefined ){\r\n        end_list_values[titre] = original_value\r\n        \/\/ return;\r\n    }\r\n    \r\n    \r\n    \r\n    \/\/if (!tree[cat][titre][protocolKey]) {\r\n    \/\/  tree[cat][titre][protocolKey] = [];\r\n    \/\/}\r\n\r\n    \/\/ Add SKU to the array (even if null, so we know the protocol exists)\r\n    \/\/tree[cat][titre][protocolKey].push(sku);\r\n    \r\n    end_list_values[sku] = original_value\r\n    \r\n  });\r\n\r\n\r\n  \/\/console.log( \"Tree\" )\r\n  \/\/console.log( tree )\r\n\r\n  \/\/ 2. Generate the HTML string from the tree\r\n  let html = \"<ul id='\"+dropName+\"' class='jquery-dropmenu'>\\n\";\r\n\r\n  for (const [cat, titres] of Object.entries(tree)) {\r\n    \/\/ If it's an empty category, close the <li> on the same line or next line\r\n    if (titres === \"EMPTY\" || Object.keys(titres).length === 0) {\r\n      html += `  <li 11 data-dropdown-text=\"${cat}\"><\/li>\\n`;\r\n      continue;\r\n    }\r\n    \r\n    html += `  <li 22 data-dropdown-text=\"${cat}\">\\n `\r\n    \r\n    if( cat in titres ){\r\n         html += `<\/li>`\r\n         continue;\r\n    }else{\r\n        html += `<ul>\\n`\r\n    }\r\n    \r\n    for (const [titre, protocols] of Object.entries(titres)) {\r\n        \r\n      if( cat == titre ) {\r\n          continue;\r\n      }  \r\n    \r\n      html += `      <li 33 data-dropdown-text=\"${titre}\">\\n`;\r\n      \r\n      if (Object.keys(protocols).length > 0) {\r\n        html += \"        <ul>\\n\";\r\n        \r\n        for (const [protocol, skus] of Object.entries(protocols)) {\r\n          html += `          <li 44 data-dropdown-text=\"${protocol}\">\\n`;\r\n          \r\n          \/\/ Filter out null SKUs (in case an item only had a protocol but no SKU)\r\n          const validSkus = skus.filter(s => s !== null);\r\n          \r\n          if (validSkus.length > 0) {\r\n            html += \"            <ul>\\n\";\r\n            for (const sku of validSkus) {\r\n              html += `              <li 55>${sku}<\/li>\\n`;\r\n            }\r\n            html += \"            <\/ul>\\n\";\r\n          }\r\n          \r\n          html += \"          <\/li>\\n\";\r\n        }\r\n        \r\n        html += \"        <\/ul>\\n\";\r\n      }\r\n      \r\n      html += \"      <\/li>\\n\";\r\n    }\r\n    \r\n    html += \"    <\/ul>\\n  <\/li>\\n\";\r\n  }\r\n\r\n  html += \"<\/ul>\";\r\n  \r\n  \/\/console.log( \"html\" )\r\n  \/\/console.log( html )\r\n  \r\n  \/\/console.log( \"end_list_values\" )\r\n  \/\/console.log( end_list_values )\r\n  \r\n  return html;\r\n}\r\n\r\n\r\nwindow.addEventListener( \"load\", function(){\r\n    \r\n    document.body.addEventListener( \"click\", function(e){\r\n        \r\n        if( e.target.closest( \".dropdown\" ) == null ){\r\n            jQuery( \".dropdown.dropdown-open\" ).each( function(index, value){\r\n                jQuery( value ).trigger( \"close\" )\r\n            })\r\n        }\r\n        \r\n        if( e.target.classList.contains( \"dropdown-overlay\") ){\r\n            jQuery( \".dropdown.dropdown-open\" ).each( function(index, value){\r\n                jQuery( value ).trigger( \"close\" )\r\n            })\r\n        }\r\n        \r\n    })\r\n    \r\n   \r\n    setTimeout(() => {\r\n       window.scrollTo({\r\n          top: 0,\r\n          behavior: 'smooth'\r\n        });\r\n    }, 1000);\r\n    \r\n    \r\n})\r\n\r\nfunction toggle_numero_commande(){\r\n    \r\n    \/\/console.log( \"toggle_numero_commande\")\r\n    \r\n    const point_de_vente_value = jQuery('select[name=\"field_50276376016923\"]').val()\r\n    \r\n    \/\/console.log( point_de_vente_value )\r\n                \r\n               switch( point_de_vente_value ){\r\n                \r\n                case \"amazon\":\r\n                case \"sinopetech.com\":\r\n                \r\n    jQuery(\"input[name='field_50034857922331']\").val(\"\")\r\n    if( jQuery( '.field-container[field_id=\"50034857922331\"] label .required' ).length == 0 ){\r\n    jQuery( '.field-container[field_id=\"50034857922331\"] label' ).append( \"<span class='required'>*<\/span>\" )\r\n    }\r\n    jQuery(\"input[name='field_50034857922331']\").attr(\"required\", \"required\")\r\n                \r\n    document.body.classList.add( \"demande-numero-commande\" )\r\n                \r\n                break;\r\n                default:\r\n                \r\n                \r\n                \r\n       const installation_hq_checkbox = jQuery( \"input[type='checkbox'][name='field_50072921002651']\" )\r\n       \r\n       \/*const profile_type = jQuery(\"[name='field_49845718868251']\").val();\r\n       \r\n       if( profile_type.indexOf( \"profes\") > -1 ){\r\n           \r\n            jQuery(\"input[name='field_50034857922331']\").val(\"\")\r\n            jQuery( '.field-container[field_id=\"50034857922331\"] label .required' ).remove()\r\n            jQuery(\"input[name='field_50034857922331']\").removeAttr(\"required\")\r\n                \r\n            document.body.classList.remove( \"demande-numero-commande\" )\r\n            \r\n            return;\r\n\r\n       }*\/\r\n       \r\n       \r\n       \/\/ if( installation_hq_checkbox != null ){\r\n            \r\n            \r\n         \/\/    if( jQuery( installation_hq_checkbox ).is( \":checked\" )){\r\n                 \r\n                \/\/  console.log( \"check is checked\")\r\n                    \r\n    jQuery(\"input[name='field_50034857922331']\").val(\"\")\r\n    jQuery( '.field-container[field_id=\"50034857922331\"] label .required' ).remove()\r\n    jQuery(\"input[name='field_50034857922331']\").removeAttr(\"required\")\r\n                \r\n    document.body.classList.remove( \"demande-numero-commande\" )\r\n    \r\n              \/*  }else{\r\n                    \r\n                     console.log( \"check pas checked\")\r\n                    \r\n    jQuery(\"input[name='field_50034857922331']\").val(\"\")\r\n    if( jQuery( '.field-container[field_id=\"50034857922331\"] label .required' ).length == 0 ){\r\n    jQuery( '.field-container[field_id=\"50034857922331\"] label' ).append( \"<span class='required'>*<\/span>\" )\r\n    }\r\n    jQuery(\"input[name='field_50034857922331']\").attr(\"required\", \"required\")\r\n                \r\n    document.body.classList.add( \"demande-numero-commande\" )\r\n    \r\n                    \r\n                }\r\n            \r\n        }\r\n          *\/      \r\n               \r\n                    \r\n        break;\r\n                \r\n                \r\n     }\r\n}\r\n\r\n\/\/ ==========================================\r\n\/\/ Example Usage:\r\n\/\/ ==========================================\r\n\r\n\/\/ Assuming you fetch your JSON or have it assigned to a variable `jsonData`\r\n\/*\r\nfetch('liste-modeles.json')\r\n  .then(response => response.json())\r\n  .then(jsonData => {\r\n    const htmlOutput = generateNestedHTMLList(jsonData);\r\n    \r\n    \/\/ Inject the result into your webpage\r\n    \/\/ document.getElementById('my-dropdown-container').innerHTML = htmlOutput;\r\n    \r\n    console.log(htmlOutput);\r\n  });\r\n*\/\r\n\r\n\r\n\r\n\r\n<\/script>\r\n\r\n\r\n\r\n<!--\r\n<ul class=\"test-dropmenu\">\r\n    <li data-dropdown-text=\"Propri\u00e9t\u00e9 unifamiliale\"><\/li>\r\n    <li data-dropdown-text=\"Condominium\"><\/li>\r\n    <li data-dropdown-text=\"Entreprise\"><\/li>\r\n<\/ul>\r\n-->\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f4df592 elementor-widget elementor-widget-html\" data-id=\"f4df592\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\r\n<style class=\"notranslate\">\r\n\r\n   \r\n    \r\n    select,\r\n    input, \r\n    textarea { \r\n        width: 100%; \r\n        padding: 8px; \r\n        margin-top: 5px; \r\n        margin-bottom: 10px; \r\n        font-size: 1rem; \r\n        box-sizing: border-box;\r\n        border: solid 1px #b0b8be!important;\r\n        border-radius: 3px;\r\n        outline:none;\r\n        font-size: 0.8rem;\r\n    }\r\n    \r\n    label { \r\n        font-weight: bold; \r\n    }\r\n    \r\n    .required,\r\n    .requis{ \r\n        color: red!important;\r\n        padding: 0 0.3rem;\r\n        font-size: 0.8rem;\r\n    }\r\n    \r\n    button { 1rem; \r\n        cursor: pointer; \r\n        background: #007bff; \r\n        color: white; \r\n        border: none; \r\n        border-radius: 4px; \r\n    }\r\n    \r\n    button#submit-btn{\r\n        margin-top:20px;\r\n    }\r\n    \r\n    .form-loader{\r\n        position:relative;\r\n        font-size: 0.875rem;\r\n    }\r\n    \r\n    .form-loader {\r\n        background-image: url(https:\/\/support.sinopetech.com\/wp-content\/uploads\/2026\/05\/loading-anim.gif);\r\n        background-repeat: no-repeat;\r\n        background-position: 50% 50%;\r\n        background-size: 960px 124px;\r\n        width: 100%;\r\n    }\r\n    \r\n    p.form-loader{\r\n        position:relative;\r\n        padding-right: 100px;\r\n    }\r\n    \r\n\r\n\/**\r\n *\t=Structure\r\n *\t---------------------------------------------------------------- *\/\r\n.dropdown {\r\n  display: block;\r\n  max-width: 100%;\r\n  position: relative;\r\n  border: solid 1px #b0b8be;\r\n  margin-bottom: 1rem;\r\n  margin-top:5px;\r\n  border-radius: 3px;\r\n  outline:none;\r\n}\r\n.dropdown-list,\r\n.dropdown-item {\r\n  list-style-type: none;\r\n  margin: 0;\r\n  padding: 0;\r\n}\r\n.dropdown-list {\r\n  overflow: hidden;\r\n  overflow-y: auto;\r\n  -webkit-overflow-scrolling: touch;\r\n}\r\n.dropdown-menu-wrapper {\r\n  overflow: hidden;\r\n  opacity: 0;\r\n  filter: alpha(opacity=0);\r\n  padding: 0;\r\n}\r\n.dropdown-menu-container,\r\n.dropdown-menu {\r\n  position: relative;\r\n}\r\n.dropdown-menu {\r\n  width: inherit;\r\n}\r\n.dropdown-item,\r\n.dropdown-header {\r\n  zoom: 1;\r\n}\r\n.dropdown-item:before,\r\n.dropdown-header:before,\r\n.dropdown-item:after,\r\n.dropdown-header:after {\r\n  content: '';\r\n  display: table;\r\n}\r\n.dropdown-item:after,\r\n.dropdown-header:after {\r\n  clear: both;\r\n}\r\n.dropdown-overlay,\r\n.dropdown-menu-wrapper,\r\n.dropdown-menu-container,\r\n.dropdown-menu {\r\n  -webkit-transform: translate3d(0, 0, 0);\r\n  -webkit-backface-visibility: hidden;\r\n}\r\n.dropdown-menu-wrapper,\r\n.dropdown-menu,\r\n.dropdown-header,\r\n.dropdown-mask,\r\n.dropdown-overlay,\r\n.dropdown-title,\r\n.dropdown-close,\r\n.dropdown-back {\r\n  display: none;\r\n}\r\n.dropdown-open .dropdown-menu-wrapper,\r\n.dropdown-animating .dropdown-mask,\r\n.dropdown-menu-open,\r\n.dropdown-main-menu,\r\n.dropdown-child .dropdown-header,\r\n.dropdown-child .dropdown-title,\r\n.dropdown-child .dropdown-back {\r\n  display: block;\r\n}\r\n.dropdown-open .dropdown-menu-wrapper {\r\n  opacity: 1;\r\n  filter: alpha(opacity=100);\r\n}\r\n\/**\r\n *\t=Positioning\r\n *\t---------------------------------------------------------------- *\/\r\n.dropdown-open {\r\n  z-index: 1002;\r\n}\r\n.dropdown-opening {\r\n  z-index: 1003;\r\n}\r\n.dropdown-closing {\r\n  z-index: 1001;\r\n}\r\n.dropdown-mask {\r\n  z-index: 999;\r\n}\r\n.dropdown-overlay,\r\n.dropdown-mask,\r\n.dropdown-menu {\r\n  position: absolute;\r\n  top: 0;\r\n  left: 0;\r\n}\r\n.dropdown-overlay,\r\n.dropdown-mask {\r\n  right: 0;\r\n  bottom: 0;\r\n}\r\n.dropdown-menu-open {\r\n  position: relative;\r\n}\r\n.dropdown-menu-wrapper {\r\n  position: absolute;\r\n  z-index: 2;\r\n  min-width: 280px;\r\n  left: 0;\r\n  padding: 0px 0;\r\n}\r\n.dropdown-below .dropdown-menu-wrapper {\r\n  top: 100%;\r\n  width :100%;\r\n  bottom: auto;\r\n  margin: 1px 0 0;\r\n}\r\n.dropdown-above .dropdown-menu-wrapper {\r\n  top: auto;\r\n  bottom: 100%;\r\n  margin: 0 0 3px;\r\n}\r\n.dropdown-menu-container,\r\n.dropdown-child,\r\n.dropdown-parent {\r\n  width: 100%;\r\n}\r\n.dropdown-divider {\r\n  margin: 5px 0;\r\n  border-bottom: 1px solid #b0b8be;\r\n}\r\n\/**\r\n *\t=Styles\r\n *\t---------------------------------------------------------------- *\/\r\n.dropdown {\r\n  font-size: 1.2rem;\r\n  outline-style: auto;\r\n  outline-width: 2px;\r\n  outline:none;\r\n}\r\n.dropdown-overlay {\r\n  background: #000;\r\n  background: rgba(0, 0, 0, 0.5);\r\n  position: fixed;\r\n  z-index: 1;\r\n  opacity: 1;\r\n  filter: alpha(opacity=100);\r\n}\r\n.dropdown-icon {\r\n  float: right;\r\n  line-height: inherit;\r\n}\r\n.dropdown-toggle {\r\ncursor: pointer;\r\nheight: auto;\r\ndisplay: flex;\r\nmax-width: 100%;\r\nflex-direction: row;\r\nline-height: 28px;\r\njustify-content: flex-start;\r\ncolumn-gap: 1rem;\r\ncolor: #000;\r\nposition: relative;\r\npadding: 6px 38px 6px 14px;\r\nbackground: #fff;\r\n-webkit-border-radius: 1px;\r\n-moz-border-radius: 1px;\r\nborder-radius: 1px;\r\n-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);\r\n-moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);\r\nbox-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);\r\n-webkit-box-sizing: border-box;\r\n-moz-box-sizing: border-box;\r\nbox-sizing: border-box;\r\n}\r\n.dropdown-toggle:hover {\r\n  text-decoration: none;\r\n}\r\n\r\n.dropdown-toggle .dropdown-icon {\r\n    opacity: 1;\r\n    text-align: center;\r\n    line-height: 28px;\r\n    right: 12px;\r\n    background-image: url(https:\/\/support.sinopetech.com\/wp-content\/uploads\/2026\/05\/chevron.svg);\r\n    background-repeat: no-repeat;\r\n    background-position: 98% 50%;\r\n    width: 15px;\r\n    height: 5px;\r\n    top: 50%;\r\n    position: absolute;\r\n}\r\n\r\n.dropdown-toggle .dropdown-text {\r\n  display: block;\r\n  white-space: nowrap;\r\n  text-overflow: ellipsis;    \r\n  line-height: 2;\r\n  overflow: visible;\r\n}\r\n.dropdown-menu-wrapper {\r\n  background: #fff;\r\n  -webkit-border-radius: 1px;\r\n  -moz-border-radius: 1px;\r\n  border-radius: 1px;\r\n  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);\r\n  -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);\r\n  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);\r\n}\r\n.dropdown-item {\r\n  margin: 0 0 1px;\r\n}\r\n.dropdown-item:last-child {\r\n  margin-bottom: 0;\r\n}\r\n\r\n.dropdown-link\r\n {\r\n    display: block;\r\n    line-height: 30px;\r\n    color: #333;\r\n    position: relative;\r\n    white-space: nowrap;\r\n    overflow: hidden;\r\n    text-overflow: ellipsis;\r\n    padding: 5px 15px;\r\n    line-height: 2em !important;\r\n}\r\n\r\n.dropdown-link,\r\n.dropdown-link:hover {\r\n  text-decoration: none;\r\n}\r\n.dropdown-link:hover {\r\n  background: #f1f1f1;\r\n  color: #000;\r\n}\r\n.dropdown-link:focus {\r\n  outline: none;\r\n}\r\n\r\n.dropdown-toggle .dropdown-icon {\r\n    opacity: 1;\r\n    text-align: center;\r\n    line-height: 28px;\r\n    right: 12px;\r\n    background-image: url(https:\/\/support.sinopetech.com\/wp-content\/uploads\/2026\/05\/chevron.svg);\r\n    background-repeat: no-repeat;\r\n    background-position: 98% 50%;\r\n    width: 15px;\r\n    height: 5px;\r\n    top: 50%;\r\n    position: absolute;\r\n}\r\n\r\n.fa-sort:before {\r\n    content: unset!important;\r\n    display:none!important;\r\n}\r\n\r\n.dropdown-focus .dropdown-link {\r\n  background: #eee;\r\n  color: #000;\r\n}\r\n\r\n\r\ninput:focus,\r\ntextarea:focus,\r\nselect:focus{\r\n    border-color: transparent;\r\n}\r\n\r\n\r\nselect:focus-visible {\r\n    outline: transparent solid 2px;\r\n    outline-offset: 1px;\r\n    box-shadow: rgb(255, 255, 255) 0px 0px 0px 1px, rgb(81, 119, 122) 0px 0px 0px 3px;\r\n    border-color: #b0b8be;\r\n}\r\n\r\n\r\nselect {\r\n    -webkit-appearance: none;\r\n    -moz-appearance: none;\r\n    appearance: none;\r\n    \/* Remove default arrow *\/\r\n    background-image: url(https:\/\/support.sinopetech.com\/wp-content\/uploads\/2026\/05\/chevron.svg);\r\n    background-repeat: no-repeat;\r\n    background-position: 98% 50%;\r\n    \/* Add custom arrow *\/\r\n}\r\n\r\n.dropdown.dropdown-open{\r\n    outline-color: #b0b8be;\r\n    outline-offset: 0px;\r\n}\r\n\r\n.dropdown.dropdown-open .dropdown-toggle{\r\n}\r\n\r\n.dropdown-selected .dropdown-link {\r\n  background: #428bca;\r\n  color: #fff;\r\n  text-decoration: none;\r\n  outline: none;\r\n}\r\n.dropdown-title {\r\n    font-weight: bold;\r\n    position: relative;\r\n    text-align: left;\r\n    line-height: 20px;\r\n    min-height: 20px;\r\n    padding: 7px 45px 5px;\r\n    margin: 0 0 0px;\r\n    border-bottom: 1px solid #b0b8be;\r\n    font-size: 0.8rem;\r\n    font-weight: 400 !important;\r\n}\r\n.dropdown-heading {\r\n  line-height: 20px;\r\n  color: #000;\r\n  font-weight: bold;\r\n  font-size: 1.2rem;\r\n  text-transform: uppercase;\r\n  padding: 15px 15px 5px;\r\n  margin: 5px 0 0;\r\n  border-top: 1px solid #b0b8be;\r\n}\r\n.dropdown-heading:first-child {\r\n  padding-top: 10px;\r\n  margin-top: 0;\r\n  border-width: 0;\r\n}\r\n.dropdown-close,\r\n.dropdown-back {\r\n  position: absolute;\r\n  z-index: 2;\r\n  top: 0px;\r\n  width: 40px;\r\n  height: 32px;\r\n  text-align: center;\r\n  line-height: 40px;\r\n  color: #000;\r\n}\r\n.dropdown-close:hover,\r\n.dropdown-back:hover {\r\n  background: #f5f5f5;\r\n  color: #000;\r\n}\r\n.dropdown-close,\r\n.dropdown-back,\r\n.dropdown-close:hover,\r\n.dropdown-back:hover {\r\n  text-decoration: none;\r\n}\r\n.dropdown-close .dropdown-icon,\r\n.dropdown-back .dropdown-icon {\r\n  float: none;\r\n  display: block;\r\n  text-align: center;\r\n  line-height: 32px;\r\n}\r\n.dropdown-close .dropdown-text,\r\n.dropdown-back .dropdown-text {\r\n  display: none;\r\n}\r\n.dropdown-close {\r\n  right: 0;\r\n}\r\n.dropdown-back {\r\n  left: 0;\r\n}\r\n.dropdown a{\r\n    font-size: 0.8rem;\r\n}\r\n\r\n\r\nform label{\r\n    font-size: 0.824rem;\r\n    display: flex;\r\n    line-height: 1;\r\n    vertical-align: middle;\r\n    flex-direction: row;\r\n    justify-content: flex-start;\r\n    align-items: flex-start;\r\n    font-weight: 500;\r\n    color: #000;\r\n    margin-bottom: 6px;\r\n    margin-top: 10px;\r\n}\r\n\r\nform a{\r\n    line-height:1.7em!important;\r\n}\r\n\r\n\r\n\r\n.jquery-drop-menu{\r\n    background-color: rgba(0,200,255,.05);\r\n    padding:10px;\r\n}\r\n\r\n.dropdown-menu-wrapper {\r\n    height: fit-content !important;\r\n}\r\n\r\nspan.dropdown-text{\r\n    width: fit-content;\r\n    display: block;\r\n    padding-right: 20px;\r\n}\r\n\r\n.fields-list-container{\r\n    display: flex;\r\n    flex-direction: row;\r\n    flex-wrap: wrap;\r\n    align-items: flex-start;\r\n    column-gap: 2rem;\r\n}\r\n\r\n.fields-list-container .field-container{\r\n    display:flex;\r\n    flex-direction:column;\r\n    justify-content: space-between;\r\n    width: 100%;\r\n    flex-grow: 1;\r\n    position:relative;\r\n    \/*min-height: -webkit-fill-available;*\/\r\n    pointer-events:auto;\r\n}\r\n\r\n.fields-list-container .field-container input[type=\"checkbox\"]{\r\n    margin:0;\r\n    margin-left: 10px;\r\n}\r\n\r\n\r\n.fields-list-container .field-container.larger{\r\n    width :100%\r\n}\r\n\r\n#ticket-form-select{\r\n    display:flex;\r\n    align-items:center;\r\n    overflow-y: auto;\r\n    transition: border-color 0.25s ease-in-out, box-shadow 0.1s ease-in-out, background-color 0.25s ease-in-out, color 0.25s ease-in-out;\r\n    border: 1px solid #b0b8be;\r\n    border-radius: 4px;\r\n    cursor: pointer;\r\n    box-sizing: border-box;\r\n    padding: 3px 12px;\r\n    min-height: 40px;\r\n    max-height: 40px;\r\n    font-size: 14px;\r\n    color-scheme: light only;\r\n    background-color: rgb(255, 255, 255);\r\n    color: rgb(47, 57, 65);\r\n}\r\n\r\n\/* 1. Opt-in to the customizable select model *\/\r\nselect#dynamic-form-container {\r\n    appearance: base-select;\r\n    width: 100%; \r\n    padding: 8px; \r\n    margin-top: 5px; \r\n    margin-bottom: 15px; \r\n    font-size: 1rem; \r\n    box-sizing: border-box;\r\n    border: none;\r\n}\r\n\r\nselect#dynamic-form-container {\r\n    appearance: base-select;\r\n    outline: solid 2px #17ff0042;\r\n    background-color: #edffed;\r\n}\r\n\r\n\/* 2. Target the dropdown picker specifically *\/\r\nselect::picker(select) {\r\n  appearance: base-select;\r\n  outline: solid 2px #b0b8be;\r\n  border: none;\r\n  background-color: #edffed;\r\n}\r\n\r\n\r\nselect:focus{\r\n    border-color: gray;\r\n    outline:none;\r\n}\r\n\r\nselect{\r\n    position:relative;\r\n}\r\n\r\nselect::picker-icon{\r\n    position:absolute;\r\n    right:10px; \r\n    top:50%;\r\n    font-size:10px;\r\n    transform: translate(0, -50%);\r\n}\r\n\r\n\r\n.field-container[field_id=\"50034857922331\"],\r\n.field-container[field_id=\"50230431983387\"],\r\n.field-container[field_id=\"50073346434971\"],\r\n.field-container[field_id=\"49841829152155\"],\r\n.field-container[field_id=\"50086557738395\"],\r\n.field-container[field_id=\"50072921002651\"],\r\n.field-container[field_id=\"49842254373659\"],\r\n.field-container[field_id=\"50239388582171\"],\r\n.field-container[field_id=\"50337889737755\"],\r\n.field-container[field_id=\"50290900175643\"]{\r\n    display:none;\r\n}\r\n\r\n\r\nbody.client-hq .field-container[field_id=\"50072921002651\"]{\r\n    display:flex!important;\r\n}\r\n\r\n\r\nbody.client-hq.client-hilo-hq .field-container[field_id=\"49841829152155\"],\r\nbody.client-hq.client-hilo-hq .field-container[field_id=\"50073346434971\"]{\r\n    display:flex!important;\r\n}\r\n\r\n\/*\r\nbody.client-hq .field-container[field_id=\"50034857922331\"]{\r\n    display:flex!important;\r\n}*\/\r\n\r\nbody.client-hq.client-hilo-hq .field-container[field_id=\"50034857922331\"]{\r\n    display:none!important;\r\n}\r\n\r\n\r\nbody.demande-numero-commande .field-container[field_id=\"50034857922331\"]{\r\n    display:flex!important;\r\n}\r\n\r\nbody.client-hq.client-hilo-hq.demande-numero-commande  .field-container[field_id=\"50034857922331\"]{\r\n    display:flex!important;\r\n}\r\n\r\n\r\n\r\n\r\nbody.demande-controle-temperature .field-container[field_id=\"50337889737755\"],\r\nbody.demande-controle-temperature .field-container[field_id=\"50290900175643\"]{\r\n    display:flex!important;\r\n}\r\n\r\nbody.requis_nom_entreprise .field-container[field_id=\"50086557738395\"]{\r\n    display:flex;\r\n}\r\n\r\nbody.requis_telephone .field-container[field_id=\"49842254373659\"]{\r\n    display:flex;\r\n}\r\n\r\nbody.requis_distributeur .field-container[field_id=\"50230431983387\"]{\r\n    display:flex;\r\n}\r\n\r\nbody.autre_raison .field-container[field_id=\"50239388582171\"]{\r\n    display:flex;\r\n}\r\n\r\n\r\n\r\np.field-description {\r\n    font-size: 0.7647rem !important;\r\n    font-weight: 400;\r\n    line-height:1.2;\r\n}\r\n\r\n.checkbox_field label{\r\n    margin: auto 0;\r\n}\r\n\r\n\r\n\r\n.checkbox_field input[type=\"checkbox\"]:checked{\r\n margin-bottom:1rem;\r\n}\r\n\r\n.field-container.checkbox_field{\r\n    margin: 1em 0;\r\n    padding: 1em;\r\n    border: 1px solid #b9b9b9;\r\n    border-radius: 3px;\r\n}\r\n\r\n.hidden-input{\r\n    position:absolute;\r\n    opacity:0;\r\n    pointer-events:none;\r\n}\r\n\r\n\r\n#btn-container{\r\n    display:none!important;\r\n}\r\n\r\n\r\n#file-up:not(.show){\r\n    display:none!important;\r\n}\r\n\r\n\r\nbody.est_distributeur .field-container[field_id=\"50276376016923\"]{\r\n    display:none;\r\n    pointer-events:none;\r\n}\r\n\r\nbody.est_distributeur .field-container[field_id='502232403406353']{\r\n    display:none;\r\n    pointer-events:none;\r\n}\r\n\r\nbody.est_distributeur .field-container[field_id='50223240340635']{\r\n    display:none;\r\n    pointer-events:none;\r\n}\r\n\r\n.field-container[field_id='52077645901723'],\r\nbody.profil_reset .field-container[field_id='52077645901723'],\r\n.field-container[field_id='52077580644891'],\r\nbody.profil_reset .field-container[field_id='52077580644891']{\r\n    display:none;\r\n    pointer-events:none;\r\n}\r\n\r\nbody:not(.profil_reset).est_distributeur .field-container[field_id='52077645901723'],\r\nbody:not(.profil_reset).est_distributeur .field-container[field_id='52077580644891']{\r\n    display:flex!important;\r\n    pointer-events:auto!important;\r\n}\r\n\r\n\r\n\r\nbody.est_distributeur #file-up{\r\n    display:none!important;\r\n    pointer-events:none!important;\r\n    position:absolute!important;\r\n    opacity:0!important;\r\n    visibility:hidden!important;\r\n}\r\n\r\n@media (max-width:1024px){\r\n    .fields-list-container .field-container{\r\n        min-height: unset;\r\n    }\r\n    \r\n    .checkbox_field input[type=\"checkbox\"]:checked{\r\n        margin-bottom:1rem!important;\r\n    }\r\n    .fields-list-container .field-container input[type=\"checkbox\"]{\r\n        width: 25px!important;\r\n        height:25px;\r\n    }\r\n\r\n}\r\n\r\n\/**\r\n *\t=Responsive\r\n *\t---------------------------------------------------------------- *\/\r\n@media all and (max-width: 600px) {\r\n  .dropdown-menu-wrapper {\r\n    width: auto !important;\r\n    height: auto !important;\r\n    position: fixed;\r\n    top: 8px;\r\n    bottom: 8px;\r\n    left: 8px;\r\n    right: 8px;\r\n    margin: 0;\r\n    border: 0;\r\n    -webkit-border-radius: 0;\r\n    -moz-border-radius: 0;\r\n    border-radius: 0;\r\n  }\r\n  .dropdown-above .dropdown-menu-wrapper,\r\n  .dropdown-below .dropdown-menu-wrapper {\r\n    transform: translate(0, -50%);\r\n    top: 50%;\r\n    margin: 0;\r\n  }\r\n  .dropdown-header,\r\n  .dropdown-close,\r\n  .dropdown-title,\r\n  .dropdown-open .dropdown-overlay {\r\n    display: block;\r\n  }\r\n  \r\n  .field-container{\r\n      width: 100%!important;\r\n  }\r\n  \r\n  \r\n  #submit-btn{\r\n      width: 100%!important;\r\n  }\r\n  \r\n}\r\n\r\n\r\n@media all and (min-width: 601px) {\r\n  .dropdown-overlay {\r\n    display: none !important;\r\n  }\r\n}\r\n\r\n.jquery-drop-menu *,\r\n.jquery-drop-menu ul,\r\n.jquery-drop-menu ul li{\r\n    transition: unset!important;\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nselect {\r\n  appearance: none;\r\n  @supports (appearance: base-select) {\r\n    &,\r\n    &::picker(select) {\r\n      appearance: base-select;\r\n    }\r\n  }\r\n}\r\n\r\nselect,\r\n::picker(select) {\r\n  appearance: base-select!important;\r\n  border:none!important;\r\n  outline: solid 1px #b0b8be;\r\n  \/* #b0b8be *\/\r\n}\r\n\r\nselect {\r\n    outline: solid 1px #b0b8be!important;\r\n  \/*display: flex;\r\n  justify-content: space-between;*\/\r\n \/* min-width: unset;\r\n  align-items: center;\r\n  color: white;\r\n  padding-block: 0;\r\n  padding-inline: 0;\r\n  border-radius:0;\r\n  border: none;\r\n  cursor: pointer;\r\n  font-weight: 700;*\/\r\n  \/*background: #fff;\r\n    url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='%23FFF' class='size-6'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='m19.5 8.25-7.5 7.5-7.5-7.5' \/%3E%3C\/svg%3E%0A\")\r\n    right 10px center \/ 20px no-repeat;*\/\r\n  @supports (appearance: base-select) {\r\n    \/*padding-inline: 0;\r\n    background-image: none;*\/\r\n    padding: 0.4rem 1rem;\r\n    &::picker-icon {\r\n      display:none!important;\r\n      \/*content: \"\";\r\n      width: 0px;\r\n      height: 0px;\r\n      background-image: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' fill='none' viewBox='0 0 24 24' stroke-width='1.5' stroke='%23FFF' class='size-6'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='m19.5 8.25-7.5 7.5-7.5-7.5' \/%3E%3C\/svg%3E%0A\");\r\n      transition: rotate 0.2s ease-out;\r\n      *\/\r\n    }\r\n    &:open::picker-icon {\r\n      \/*rotate: 180deg;*\/\r\n    }\r\n    &::picker(select) {\r\n       \r\n     \/* \r\n      border:none!important;\r\n     padding: 0;\r\n      margin-top: 0;\r\n      border: none;\r\n      background: white;\r\n      border-radius: 0;\r\n      font-weight: 400;\r\n\r\n      opacity: 0;\r\n      height: 0;\r\n      overflow: clip;\r\n      transition: height 0.5s ease-out, opacity 0.5s ease-out, overlay 0.5s,\r\n      display 0.5s;\r\n\r\n      transition-behavior: allow-discrete;\r\n      *\/\r\n    }\r\n    &:open::picker(select) {\r\n        border:none!important;\r\n         outline: solid 1px #b0b8be;\r\n      @starting-style {\r\n          border:none!important;\r\n      }\r\n    }\r\n    option {\r\n        border:none!important;\r\n        background-color:#fff;\r\n        padding: 0.5rem;\r\n          &:where(:hover, :focus, :active) {\r\n            background-color: #f1f1f1;\r\n            color: #000;\r\n          }\r\n          &:checked {\r\n            background-color: #f1f1f1;\r\n            color: #000;\r\n          }\r\n          &::checkmark {\r\n            display: none;\r\n          }\r\n          &:first-child {\r\n            border: 0;\r\n            background-color: #fff;\r\n            color: #000;\r\n          }\r\n    }\r\n  }\r\n}\r\n\r\n\r\n*,\r\n*::before,\r\n*::after {\r\n  box-sizing: border-box;\r\n}\r\n\r\n\r\n@media (max-width: 1024px){\r\n    \r\n    select, input, textarea{\r\n        font-size: 16px!important;\r\n    }\r\n    \r\n    input[type=\"color\"],\r\n    input[type=\"date\"],\r\n    input[type=\"datetime\"],\r\n    input[type=\"datetime-local\"],\r\n    input[type=\"email\"],\r\n    input[type=\"month\"],\r\n    input[type=\"number\"],\r\n    input[type=\"password\"],\r\n    input[type=\"search\"],\r\n    input[type=\"tel\"],\r\n    input[type=\"text\"],\r\n    input[type=\"time\"],\r\n    input[type=\"url\"],\r\n    input[type=\"week\"],\r\n    select:focus,\r\n    textarea {\r\n      font-size: 16px!important;\r\n    }\r\n    \r\n    select {\r\n        background-color:#fff!important;\r\n    }\r\n    \r\n    .dropdown-toggle .dropdown-icon{\r\n        right: 6px!important;\r\n    }\r\n    \r\n    span.dropdown-text{\r\n        left: -7px!important;\r\n    }\r\n}\r\n\r\n.sr-only {\r\n  clip: rect(0 0 0 0);\r\n  clip-path: inset(50%);\r\n  height: 1px;\r\n  overflow: hidden;\r\n  position: absolute;\r\n  white-space: nowrap;\r\n  width: 1px;\r\n}\r\n\r\n.dropdown .dropdown-menu-wrapper{\r\n    outline: solid 1px #b0b8be;\r\n}\r\n\r\n.field-container input.invalid-email{\r\n    outline: solid 1px red!important;\r\n}\r\n\r\n.field-container input.valid-email{\r\n    outline: solid 1px green!important;\r\n}\r\n\r\n\r\n\r\n.btns-list{\r\n    display: flex;\r\n    flex-direction: row;\r\n    align-items: stretch;\r\n    flex-wrap: nowrap;\r\n    box-shadow: rgba(0,0,0,0.2) 0 10px 10px -10px;\r\n}\r\n\r\n.btns-list a {\r\n    display: flex;\r\n    align-items: center;\r\n    flex-direction: row;\r\n    justify-content: center;\r\n    font-size: 1rem;\r\n    text-align: center;\r\n    padding: 1rem;\r\n    background-color: #fff;\r\n    position:relative;\r\n    box-shadow: inset rgba(0, 90, 150, 0.5) 0 -10px 20px -16px;\r\n}\r\n\r\n.btns-list a:hover{\r\n   background-color: #f1f8ff;\r\n   color: navy;\r\n}\r\n\r\n#btns_list > a:first-child{\r\n    border-radius: 4px 0 0 4px!important;\r\n    border: solid 1px #b0b8be !important;\r\n}\r\n\r\n#btns_list > a:last-child{\r\n    border-radius: 0 4px 4px 0!important;\r\n    border-top: solid 1px #b0b8be !important;\r\n    border-bottom: solid 1px #b0b8be !important;\r\n    border-right: solid 1px #b0b8be !important;\r\n}\r\n\r\n#btns_list > a:not(:first-of-type):not(:last-of-type){\r\n    border-radius: 0 0 0 0!important;\r\n    border-top: solid 1px #b0b8be !important;\r\n    border-bottom: solid 1px #b0b8be !important;\r\n    border-right: solid 1px #b0b8be !important;\r\n}\r\n\r\n@media (max-width :600px){\r\n    \r\n    \r\n    .btns-list{\r\n        display: flex;\r\n        flex-direction: column;\r\n        align-items: stretch;\r\n        flex-wrap: nowrap;\r\n        box-shadow: rgba(0,0,0,0.2) 0 10px 10px -10px;\r\n    }\r\n    \r\n    #btns_list > a:first-child{\r\n        border-radius: 4px 4px 0px 0px!important;\r\n        border: solid 1px #b0b8be !important;\r\n    }\r\n    \r\n    #btns_list > a:last-child{\r\n        border-radius: 0 0 4px 4px!important;\r\n        border-top:none!important;\r\n        border-right: solid 1px #b0b8be !important;\r\n        border-bottom: solid 1px #b0b8be !important;\r\n        border-left: solid 1px #b0b8be !important;\r\n    }\r\n    \r\n    #btns_list > a:not(:first-of-type):not(:last-of-type){\r\n        border-radius: 0 0 0 0!important;\r\n        border-top:none!important;\r\n        border-right: solid 1px #b0b8be !important;\r\n        border-bottom: solid 1px #b0b8be !important;\r\n        border-left: solid 1px #b0b8be !important;\r\n    }\r\n    \r\n}\r\n\r\n\r\n<\/style>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c63d256 champ_obligatoires elementor-widget elementor-widget-heading\" data-id=\"c63d256\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"elementor-heading-title elementor-size-default\">Fields marked with an asterisk (*) are required.<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-b4a90b4 e-con-full e-flex e-con e-child\" data-id=\"b4a90b4\" data-element_type=\"container\" data-e-type=\"container\" id=\"ticket-envoye-message\">\n\t\t\t\t<div class=\"elementor-element elementor-element-961ab47 elementor-align-center elementor-widget elementor-widget-lottie\" data-id=\"961ab47\" data-element_type=\"widget\" data-e-type=\"widget\" data-settings=\"{&quot;source_json&quot;:{&quot;url&quot;:&quot;https:\\\/\\\/support.sinopetech.com\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/Success-check-mark-indication.json&quot;,&quot;id&quot;:57505,&quot;size&quot;:&quot;&quot;,&quot;alt&quot;:&quot;&quot;,&quot;source&quot;:&quot;library&quot;},&quot;trigger&quot;:&quot;on_click&quot;,&quot;end_point&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:64,&quot;sizes&quot;:[]},&quot;source&quot;:&quot;media_file&quot;,&quot;caption_source&quot;:&quot;none&quot;,&quot;link_to&quot;:&quot;none&quot;,&quot;play_speed&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:1,&quot;sizes&quot;:[]},&quot;start_point&quot;:{&quot;unit&quot;:&quot;%&quot;,&quot;size&quot;:0,&quot;sizes&quot;:[]},&quot;renderer&quot;:&quot;svg&quot;}\" data-widget_type=\"lottie.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"e-lottie__container\"><div class=\"e-lottie__animation\"><\/div><\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bff7943 elementor-widget elementor-widget-heading\" data-id=\"bff7943\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Request sent!<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7d8f22e e-con-full e-flex e-con e-parent\" data-id=\"7d8f22e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t\n<hr class=\"e-0e69dfe-5139c87 e-divider-base\" data-interaction-id=\"0e69dfe\"  data-e-type=\"widget\" data-id=\"0e69dfe\" \/>\n\t\t\t\t<\/div>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-878191b elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"878191b\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-a684f30\" data-id=\"a684f30\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-inner-section elementor-element elementor-element-fcccb04 icones-sinope elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"fcccb04\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-f6b0711\" data-id=\"f6b0711\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-721642a elementor-widget__width-initial icone-type-produit elementor-view-default elementor-position-block-start elementor-mobile-position-block-start elementor-widget elementor-widget-icon-box\" data-id=\"721642a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon-box.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-box-wrapper\">\n\n\t\t\t\t\t\t<div class=\"elementor-icon-box-icon\">\n\t\t\t\t<span  class=\"elementor-icon\">\n\t\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" xmlns:xlink=\"http:\/\/www.w3.org\/1999\/xlink\" id=\"Calque_1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 101.21 101.21\" style=\"enable-background:new 0 0 101.21 101.21;\" xml:space=\"preserve\"> <path style=\"fill:#666666;\" d=\"M50.69,101.31c-27.9,0-50.6-22.7-50.6-50.6S22.78,0.1,50.69,0.1c27.9,0,50.6,22.7,50.6,50.61 S78.59,101.31,50.69,101.31 M50.69,1.95C23.8,1.95,1.93,23.82,1.93,50.7c0,26.88,21.87,48.75,48.75,48.75 c26.88,0,48.75-21.87,48.75-48.75C99.44,23.82,77.57,1.95,50.69,1.95\"><\/path> <path style=\"fill:none;stroke:#666666;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;\" d=\"M50.84,13.69 c-15.64,0-28.35,12.72-28.35,28.35c0,9.36,4.56,17.68,11.58,22.84l14.65,21.43c0.48,0.7,1.28,1.12,2.13,1.12s1.65-0.42,2.13-1.12 l14.65-21.43c7.02-5.17,11.58-13.48,11.58-22.84C79.19,26.41,66.47,13.69,50.84,13.69z M54.07,61.54c-1.05,0.12-2.13,0.19-3.24,0.19 c-1.11,0-2.19-0.07-3.24-0.19c-9.36-1.55-16.53-9.7-16.53-19.49c0-10.9,8.87-19.76,19.76-19.76c10.9,0,19.76,8.86,19.76,19.76 C70.6,51.84,63.44,59.99,54.07,61.54z\"><\/path> <path style=\"fill:none;stroke:#666666;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;\" d=\"M50.84,31.73 c5.69,0,10.31,4.62,10.31,10.31c0,5.69-4.62,10.31-10.31,10.31c-5.69,0-10.31-4.62-10.31-10.31C40.53,36.35,45.14,31.73,50.84,31.73 z\"><\/path> <\/svg>\t\t\t\t<\/span>\n\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t<div class=\"elementor-icon-box-content\">\n\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-box-title\">\n\t\t\t\t\t\t<span  >\n\t\t\t\t\t\t\tFind us\t\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<p class=\"elementor-icon-box-description\">\n\t\t\t\t\t\t705, Montrichard Avenue<br class=\"breaker\" \/> Saint-Jean-sur-Richelieu<br class=\"breaker\" \/> Quebec, Canada (J2X 5K8)\t\t\t\t\t<\/p>\n\t\t\t\t\n\t\t\t<\/div>\n\t\t\t\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c5b2842 elementor-widget__width-initial icone-type-produit elementor-view-default elementor-position-block-start elementor-mobile-position-block-start elementor-widget elementor-widget-icon-box\" data-id=\"c5b2842\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"icon-box.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-icon-box-wrapper\">\n\n\t\t\t\t\t\t<div class=\"elementor-icon-box-icon\">\n\t\t\t\t<span  class=\"elementor-icon\">\n\t\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" xmlns:xlink=\"http:\/\/www.w3.org\/1999\/xlink\" id=\"Calque_1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 101.21 101.21\" style=\"enable-background:new 0 0 101.21 101.21;\" xml:space=\"preserve\"> <path style=\"fill:#666666;\" d=\"M50.69,101.31c-27.9,0-50.6-22.7-50.6-50.61c0-27.9,22.7-50.6,50.6-50.6c27.9,0,50.6,22.7,50.6,50.6 C101.29,78.6,78.59,101.31,50.69,101.31 M50.69,1.95C23.8,1.95,1.93,23.82,1.93,50.7c0,26.88,21.87,48.75,48.75,48.75 c26.88,0,48.75-21.87,48.75-48.75C99.44,23.82,77.57,1.95,50.69,1.95\"><\/path> <path style=\"fill:none;stroke:#666666;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;\" d=\"M50.69,14.78 c-19.81,0-35.92,16.11-35.92,35.92c0,19.81,16.11,35.92,35.92,35.92c19.8,0,35.92-16.11,35.92-35.92 C86.6,30.9,70.49,14.78,50.69,14.78z M50.69,81.47c-16.97,0-30.77-13.8-30.77-30.77c0-16.96,13.8-30.77,30.77-30.77 c16.97,0,30.77,13.8,30.77,30.77C81.45,67.67,67.65,81.47,50.69,81.47z\"><\/path> <path style=\"fill:none;stroke:#666666;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;\" d=\"M69.15,50.1H52.27 V31.65c0-1.42-1.15-2.57-2.57-2.57s-2.57,1.15-2.57,2.57v21.02c0,1.42,1.15,2.58,2.57,2.58h19.45c1.42,0,2.57-1.15,2.57-2.58 C71.73,51.25,70.57,50.1,69.15,50.1z\"><\/path> <\/svg>\t\t\t\t<\/span>\n\t\t\t<\/div>\n\t\t\t\n\t\t\t\t\t\t<div class=\"elementor-icon-box-content\">\n\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-icon-box-title\">\n\t\t\t\t\t\t<span  >\n\t\t\t\t\t\t\tHourly\t\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t<p class=\"elementor-icon-box-description\">\n\t\t\t\t\t\tMonday to Friday - 8am to 4:30pm EST\n Saturday &amp; Sunday \u2013 Closed  \n\t\t\t\t\t<\/p>\n\t\t\t\t\n\t\t\t<\/div>\n\t\t\t\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"","protected":false},"author":8,"featured_media":0,"parent":0,"menu_order":8,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":"","_wp_rev_ctl_limit":"20"},"categories":[],"tags":[],"unique_id":[],"class_list":["post-59068","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Contact us - Support Sinop\u00e9<\/title>\n<meta name=\"description\" content=\"Our team is here to help you. Contact Sinop\u00e9 support for technical assistance or information about our products.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/support.sinopetech.com\/en\/contact\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Contact us - Support Sinop\u00e9\" \/>\n<meta property=\"og:description\" content=\"Our team is here to help you. Contact Sinop\u00e9 support for technical assistance or information about our products.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/support.sinopetech.com\/en\/contact\/\" \/>\n<meta property=\"og:site_name\" content=\"Support Sinop\u00e9\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-02T15:08:40+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/support.sinopetech.com\\\/en\\\/contact\\\/\",\"url\":\"https:\\\/\\\/support.sinopetech.com\\\/en\\\/contact\\\/\",\"name\":\"Contact us - Support Sinop\u00e9\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/support.sinopetech.com\\\/en\\\/#website\"},\"datePublished\":\"2026-06-10T14:30:13+00:00\",\"dateModified\":\"2026-07-02T15:08:40+00:00\",\"description\":\"Our team is here to help you. Contact Sinop\u00e9 support for technical assistance or information about our products.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/support.sinopetech.com\\\/en\\\/contact\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/support.sinopetech.com\\\/en\\\/contact\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/support.sinopetech.com\\\/en\\\/contact\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/support.sinopetech.com\\\/en\\\/home\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Contact us\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/support.sinopetech.com\\\/en\\\/#website\",\"url\":\"https:\\\/\\\/support.sinopetech.com\\\/en\\\/\",\"name\":\"Support Sinop\u00e9\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/support.sinopetech.com\\\/en\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/support.sinopetech.com\\\/en\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/support.sinopetech.com\\\/en\\\/#organization\",\"name\":\"Support Sinop\u00e9\",\"url\":\"https:\\\/\\\/support.sinopetech.com\\\/en\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/support.sinopetech.com\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/support.sinopetech.com\\\/wp-content\\\/uploads\\\/2020\\\/04\\\/logo-sinope-gris.png\",\"contentUrl\":\"https:\\\/\\\/support.sinopetech.com\\\/wp-content\\\/uploads\\\/2020\\\/04\\\/logo-sinope-gris.png\",\"width\":994,\"height\":358,\"caption\":\"Support Sinop\u00e9\"},\"image\":{\"@id\":\"https:\\\/\\\/support.sinopetech.com\\\/en\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Contact us - Support Sinop\u00e9","description":"Our team is here to help you. Contact Sinop\u00e9 support for technical assistance or information about our products.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/support.sinopetech.com\/en\/contact\/","og_locale":"en_US","og_type":"article","og_title":"Contact us - Support Sinop\u00e9","og_description":"Our team is here to help you. Contact Sinop\u00e9 support for technical assistance or information about our products.","og_url":"https:\/\/support.sinopetech.com\/en\/contact\/","og_site_name":"Support Sinop\u00e9","article_modified_time":"2026-07-02T15:08:40+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/support.sinopetech.com\/en\/contact\/","url":"https:\/\/support.sinopetech.com\/en\/contact\/","name":"Contact us - Support Sinop\u00e9","isPartOf":{"@id":"https:\/\/support.sinopetech.com\/en\/#website"},"datePublished":"2026-06-10T14:30:13+00:00","dateModified":"2026-07-02T15:08:40+00:00","description":"Our team is here to help you. Contact Sinop\u00e9 support for technical assistance or information about our products.","breadcrumb":{"@id":"https:\/\/support.sinopetech.com\/en\/contact\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/support.sinopetech.com\/en\/contact\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/support.sinopetech.com\/en\/contact\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/support.sinopetech.com\/en\/home\/"},{"@type":"ListItem","position":2,"name":"Contact us"}]},{"@type":"WebSite","@id":"https:\/\/support.sinopetech.com\/en\/#website","url":"https:\/\/support.sinopetech.com\/en\/","name":"Support Sinop\u00e9","description":"","publisher":{"@id":"https:\/\/support.sinopetech.com\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/support.sinopetech.com\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/support.sinopetech.com\/en\/#organization","name":"Support Sinop\u00e9","url":"https:\/\/support.sinopetech.com\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/support.sinopetech.com\/en\/#\/schema\/logo\/image\/","url":"https:\/\/support.sinopetech.com\/wp-content\/uploads\/2020\/04\/logo-sinope-gris.png","contentUrl":"https:\/\/support.sinopetech.com\/wp-content\/uploads\/2020\/04\/logo-sinope-gris.png","width":994,"height":358,"caption":"Support Sinop\u00e9"},"image":{"@id":"https:\/\/support.sinopetech.com\/en\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/support.sinopetech.com\/en\/wp-json\/wp\/v2\/pages\/59068","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/support.sinopetech.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/support.sinopetech.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/support.sinopetech.com\/en\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/support.sinopetech.com\/en\/wp-json\/wp\/v2\/comments?post=59068"}],"version-history":[{"count":8,"href":"https:\/\/support.sinopetech.com\/en\/wp-json\/wp\/v2\/pages\/59068\/revisions"}],"predecessor-version":[{"id":59460,"href":"https:\/\/support.sinopetech.com\/en\/wp-json\/wp\/v2\/pages\/59068\/revisions\/59460"}],"wp:attachment":[{"href":"https:\/\/support.sinopetech.com\/en\/wp-json\/wp\/v2\/media?parent=59068"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/support.sinopetech.com\/en\/wp-json\/wp\/v2\/categories?post=59068"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/support.sinopetech.com\/en\/wp-json\/wp\/v2\/tags?post=59068"},{"taxonomy":"unique_id","embeddable":true,"href":"https:\/\/support.sinopetech.com\/en\/wp-json\/wp\/v2\/unique_id?post=59068"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}