{"id":323850,"date":"2023-07-05T03:26:39","date_gmt":"2023-07-05T01:26:39","guid":{"rendered":"https:\/\/www.engeniustech.com\/eu\/?page_id=323850"},"modified":"2023-07-05T03:32:19","modified_gmt":"2023-07-05T01:32:19","slug":"downloads","status":"publish","type":"page","link":"https:\/\/www.engeniustech.com\/eu\/downloads\/","title":{"rendered":"Download Center"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"323850\" class=\"elementor elementor-323850\" data-elementor-post-type=\"page\">\n\t\t\t\t\t\t<section class=\"has_eae_slider elementor-section elementor-top-section elementor-element elementor-element-322fc69 elementor-section-full_width elementor-section-height-min-height elementor-hidden-tablet elementor-hidden-mobile elementor-section-height-default elementor-section-items-middle\" data-eae-slider=\"19915\" data-id=\"322fc69\" 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-no\">\n\t\t\t\t\t<div class=\"has_eae_slider elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-4ad60c14\" data-eae-slider=\"51777\" data-id=\"4ad60c14\" 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-180b5242 elementor-widget elementor-widget-heading\" data-id=\"180b5242\" 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\">Download Center<\/h2>\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=\"has_eae_slider elementor-section elementor-top-section elementor-element elementor-element-7892f2e8 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-eae-slider=\"84790\" data-id=\"7892f2e8\" 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=\"has_eae_slider elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-5c0abc94\" data-eae-slider=\"84859\" data-id=\"5c0abc94\" 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-392d2645 elementor-widget elementor-widget-shortcode\" data-id=\"392d2645\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><div id=\"product-menu-section\">\n    <p class=\"download-title\">Find your product by product category<\/p>\n    <div class=\"product-menu-wrap\">\n        <div id=\"product_type\">\n            <button class=\"option1\">Product Category<\/button>\n            <ul id=\"type\" style=\"display: none;\">\n                <li data-value=\"access_point\"><span>Indoor Wireless<\/span><\/li>\n                <li data-value=\"access_point2\"><span>Outdoor Wireless<\/span><\/li>\n                <li data-value=\"switch\"><span>Managed Switches<\/span><\/li>\n                <li data-value=\"gateways\"><span>VPN Firewalls<\/span><\/li>\n                <li data-value=\"cameras\"><span>AI Cameras<\/span><\/li>\n                <li data-value=\"pdu\"><span>Power Distribution Units<\/span><\/li>\n                <li data-value=\"management\"><span>Network Management<\/span><\/li>\n                <li data-value=\"accessories\"><span>Accessories<\/span><\/li>\n                <li data-value=\"antenna\"><span>Sector Antennas<\/span><\/li>\n                <li data-value=\"data_center\"><span>Data Center<\/span><\/li>\n            <\/ul>\n        <\/div>\n        <div id=\"product_series\">\n            <button class=\"option2\">Product Series<\/button>\n            <ul id=\"series_type\" style=\"display: none;\">\n                <li data-value=\"enGenius_cloud\"><span>EnGenius Cloud<\/span><\/li>\n                <li data-value=\"enGenius_fit\"><span>EnGenius Fit<\/span><\/li>\n                <li data-value=\"eoc\"><span>Broadband Outdoor<\/span><\/li>\n                <li data-value=\"enStation_outdoors\"><span>Station Outdoor<\/span><\/li>\n                <li data-value=\"legacy_product\"><span>Legacy products<\/span><\/li>\n                <li data-value=\"server\"><span>DC-MHS Server<\/span><\/li>\n                <li data-value=\"smartnic\"><span>SmartNIC<\/span><\/li>\n            <\/ul>\n        <\/div>\n        <div id=\"product_model\">\n            <button class=\"option3\">Model No.<\/button>\n            <ul id=\"model_number\" style=\"display: none; max-height: 500px; overflow-y: auto;\"><\/ul>\n        <\/div>\n    <\/div>\n    <div class=\"download-divider\">\n        <div class=\"divider-text\">Or<\/div>\n        <div class=\"divider-line\"><\/div>\n    <\/div>\n<\/div>\n\n<script>\njQuery(document).ready(function($) {\n    const typeSelect = $('#type');\n    const seriesSelect = $('#series_type');\n    const modelNumbersSelect = $('#model_number');\n\n    let lastSelectedType = null;\n    let lastSelectedSeries = null;\n\n    \/\/ \u985e\u578b\u5c0d\u61c9\u9700\u8981\u96b1\u85cf\u7684\u7cfb\u5217\n    const seriesFilterMap = {\n        access_point: ['eoc', 'enStation_outdoors'],\n        switch: ['eoc', 'enStation_outdoors'],\n        gateways: ['eoc', 'enStation_outdoors', 'legacy_product'],\n        cameras: ['enGenius_fit', 'eoc', 'enStation_outdoors', 'legacy_product'],\n        pdu: ['enGenius_fit', 'eoc', 'enStation_outdoors', 'legacy_product'],\n        management: ['enGenius_cloud', 'enStation_outdoors', 'legacy_product']\n    };\n\n    \/\/ \u5207\u63db dropdown \u986f\u793a\n    function showMenu(menuToShow) {\n        [typeSelect, seriesSelect, modelNumbersSelect].forEach(menu => {\n            if (menu.is(menuToShow)) {\n                menu.hasClass('visible') ? menu.slideUp(500).removeClass('visible') : menu.slideDown(500).addClass('visible');\n            } else {\n                if (menu.hasClass('visible')) menu.slideUp(500).removeClass('visible');\n            }\n        });\n    }\n\n    $('.option1').on('click', () => showMenu(typeSelect));\n    $('.option2').on('click', () => showMenu(seriesSelect));\n    $('.option3').on('click', () => showMenu(modelNumbersSelect));\n\n    \/\/ \u9ede\u64ca type\n\ttypeSelect.on('click', 'li', function() {\n\t\tlastSelectedType?.removeClass('selected');\n\t\t$(this).addClass('selected');\n\t\tlastSelectedType = $(this);\n\n\t\t$('.option1').text($(this).text());\n\t\tconst selectedType = $(this).data('value');\n\n\t\tif (selectedType === 'accessories' || selectedType === 'antenna') {\n\t\t\t$('#product_series').hide();\n\t\t\ttypeSelect.slideUp(500).removeClass('visible');\n\t\t\tpopulateModelNumbers();\n\t\t\tmodelNumbersSelect.slideDown(500).addClass('visible');\n\t\t} else {\n\t\t\tseriesSelect.find('li').show();\n\n\t\t\tif (selectedType === 'data_center') {\n\t\t\t\t\/\/ Data Center \u53ea\u986f\u793a\u9019\u5169\u500b\u7cfb\u5217\n\t\t\t\tseriesSelect.find('li').hide();\n\t\t\t\tseriesSelect.find('li[data-value=\"server\"], li[data-value=\"smartnic\"]').show();\n\t\t\t} else {\n\t\t\t\t\/\/ \u5176\u4ed6\u985e\u578b\u96b1\u85cf server \/ smartnic\n\t\t\t\tseriesSelect.find('li[data-value=\"server\"], li[data-value=\"smartnic\"]').hide();\n\t\t\t\t\/\/ \u518d\u5957\u7528\u539f\u672c\u7684\u7be9\u9078\u898f\u5247\n\t\t\t\t(seriesFilterMap[selectedType] || []).forEach(val => \n\t\t\t\t\tseriesSelect.find(`li[data-value=\"${val}\"]`).hide()\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t$('#product_series').show();\n\t\t\tshowMenu(seriesSelect);\n\t\t}\n\t});\n\n    \/\/ \u9ede\u64ca series\n    seriesSelect.on('click', 'li', function() {\n        lastSelectedSeries?.removeClass('selected');\n        $(this).addClass('selected');\n        lastSelectedSeries = $(this);\n\n        $('.option2').text($(this).text());\n        const selectedSeries = $(this).data('value');\n\n        populateModelNumbers(selectedSeries);\n        seriesSelect.slideUp(500).removeClass('visible');\n    });\n\n    \/\/ \u9ede\u64ca model\n    modelNumbersSelect.on('click', 'li', function () {\n        const customUrl = $(this).data('url');\n        const postId = $(this).data('post-id');\n        if (customUrl) window.location.href = customUrl;\n        else if (postId) window.location.href = '\/eu\/download-result?post_id=' + postId;\n    });\n\n    \/\/ \u751f\u6210\u578b\u865f\u5217\u8868\n    function populateModelNumbers(selectedSeries) {\n        const selectedType = typeSelect.find('li.selected').data('value');\n        modelNumbersSelect.hide();\n\n        \/\/ \u7ba1\u7406\u5de5\u5177\u7279\u6b8a\u8655\u7406\n        if (selectedType === 'management' && selectedSeries === 'eoc') {\n            const staticModels = [\n                { label: 'SkyPoint NMS', url: '\/eu\/download-result\/skypoint\/' },\n                { label: 'SkyLink Tool', url: '\/eu\/download-result\/skylink' },\n                { label: 'SkyLocator Tool', url: '\/eu\/download-result\/skylocator' }\n            ];\n            modelNumbersSelect.html(staticModels.map(m => `<li data-url=\"${m.url}\"><span>${m.label}<\/span><\/li>`).join(''));\n            modelNumbersSelect.slideDown(500).addClass('visible');\n            return;\n        }\n\n        if (selectedType && (selectedSeries || selectedType === 'accessories' || selectedType === 'antenna')) {\n            let requestData = { action: 'dynamic_form', type: selectedType };\n            if (selectedSeries) requestData.series_type = selectedSeries;\n\n            modelNumbersSelect.html('<li><span style=\"color: red;\">Loading...<\/span><\/li>').slideDown(500).addClass('visible');\n\n            $.ajax({\n                url: '\/eu\/wp-admin\/admin-ajax.php',\n                method: 'POST',\n                data: requestData,\n                dataType: 'json',\n                success: function(response) {\n                    if (!response.length) {\n                        modelNumbersSelect.html('<li id=\"noProductMessage\"><span>Product not found.<\/span><\/li>');\n                    } else {\n                        const html = response.map(r => {\n                            const label = r.label;\n                            const value = r.value;\n                            const postId = r.postId;\n                            return `<li data-value=\"${value}\" data-post-id=\"${postId}\"><span>${value ? label + ' | ' + value : label}<\/span><\/li>`;\n                        }).join('');\n                        modelNumbersSelect.html(html);\n                    }\n                },\n                error: function(xhr, status, error) {\n                    modelNumbersSelect.html('<li><span style=\"color: red;\">Error loading products. Please try again later.<\/span><\/li>');\n                    console.error('AJAX error:', error);\n                }\n            });\n        }\n    }\n\n    \/\/ \u9ede\u64ca\u5916\u90e8\u95dc\u9589\u9078\u55ae\n    $(document).on('click', function(event) {\n        if (!$(event.target).closest('.product-menu-wrap').length) {\n            [typeSelect, seriesSelect, modelNumbersSelect].forEach(menu => menu.hasClass('visible') && menu.slideUp(500).removeClass('visible'));\n        }\n    });\n});\n<\/script>\n<\/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<section class=\"has_eae_slider elementor-section elementor-top-section elementor-element elementor-element-6584733d elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-eae-slider=\"49940\" data-id=\"6584733d\" 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=\"has_eae_slider elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-728c0a12\" data-eae-slider=\"23236\" data-id=\"728c0a12\" 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-7b0d6b3f elementor-widget elementor-widget-shortcode\" data-id=\"7b0d6b3f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><div id=\"download-search-section\">\n  <p class=\"download-title\">Search by product model name\/ number<\/p>\n  <form id=\"search-form\">\n    <div class=\"search-input-wrapper\">\n      <input type=\"text\" id=\"search-input\" placeholder=\"Product model name\/number\">\n      <button type=\"button\" class=\"clear-button\"><\/button>\n    <\/div>\n    <div id=\"search-count\"><\/div>\n    <div id=\"search-results\"><\/div>\n  <\/form>\n<\/div>\n\n<script>\n  const searchInput = document.getElementById('search-input');\n  const searchForm = document.getElementById('search-form');\n  const searchResultsContainer = document.getElementById('search-results');\n  const searchCountContainer = document.getElementById('search-count');\n\n  let debounceTimer;\n\n  searchForm.addEventListener('input', function(event) {\n    clearTimeout(debounceTimer);\n\n    const keyword = searchInput.value.trim();\n\n    if (keyword === '') {\n      searchResultsContainer.innerHTML = '';\n      searchCountContainer.textContent = '';\n      return;\n    }\n\n    debounceTimer = setTimeout(() => {\n      const encodedKeyword = encodeURIComponent(keyword);\n\n      fetch(`\/eu\/wp-admin\/admin-ajax.php?action=perform_search&keyword=${encodedKeyword}`)\n        .then(response => response.json())\n        .then(data => {\n          const results = data.results;\n          const totalCount = data.total_count;\n          displaySearchResults(results, keyword, totalCount);\n        });\n    }, 300);\n  });\n\n\tsearchForm.addEventListener('submit', function(event) {\n\t  event.preventDefault();\n\t});\n\t\n  function displaySearchResults(results, keyword, totalCount) {\n    searchResultsContainer.innerHTML = '';\n\n    searchCountContainer.textContent = `Your search has returned ${totalCount} results.`;\n\n    if (results.length > 0) {\n      results.forEach(result => {\n        const resultItem = document.createElement('div');\n        resultItem.classList.add('search-result');\n\t\tif(result.model_number){\n\t\t\tresultItem.innerHTML = `\n\t\t\t  <a href=\"${result.permalink}\">\n\t\t\t\t<span>${highlightKeyword(result.title, keyword)}<\/span>\n\t\t\t\t<span> - ${highlightKeyword(result.model_number, keyword)}<\/span>\n\t\t\t\t<span>${highlightKeyword(result.excerpt, keyword)}<\/span>\n\t\t\t  <\/a>\n\t\t\t`;\n\t\t}else{\n\t\t\tresultItem.innerHTML = `\n\t\t\t  <a href=\"${result.permalink}\">\n\t\t\t\t<span>${highlightKeyword(result.title, keyword)}<\/span>\n\t\t\t\t<span>${highlightKeyword(result.model_number, keyword)}<\/span>\n\t\t\t\t<span>${highlightKeyword(result.excerpt, keyword)}<\/span>\n\t\t\t  <\/a>\n\t\t\t`;\n\t\t}\n\n        searchResultsContainer.appendChild(resultItem);\n      });\n    } else {\n      const noResultsMessage = document.createElement('p');\n      noResultsMessage.textContent = 'No Results Returned.';\n      searchResultsContainer.appendChild(noResultsMessage);\n    }\n  }\n\n  function highlightKeyword(text, keyword) {\n    const regex = new RegExp(keyword, 'gi');\n    return text.replace(regex, match => `<mark class=\"marked\">${match}<\/mark>`);\n  }\n\n  const clearButton = document.querySelector('.clear-button');\n\n  clearButton.addEventListener('click', function() {\n    searchInput.value = '';\n    searchResultsContainer.innerHTML = '';\n    searchCountContainer.textContent = '';\n  });\n<\/script>\n<\/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<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Download Center<\/p>\n","protected":false},"author":30,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"categories":[],"tags":[],"class_list":["post-323850","page","type-page","status-publish","hentry"],"acf":{"special_sections":false,"youtube_videos":""},"pure_taxonomies":[],"_links":{"self":[{"href":"https:\/\/www.engeniustech.com\/eu\/wp-json\/wp\/v2\/pages\/323850","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.engeniustech.com\/eu\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.engeniustech.com\/eu\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.engeniustech.com\/eu\/wp-json\/wp\/v2\/users\/30"}],"replies":[{"embeddable":true,"href":"https:\/\/www.engeniustech.com\/eu\/wp-json\/wp\/v2\/comments?post=323850"}],"version-history":[{"count":0,"href":"https:\/\/www.engeniustech.com\/eu\/wp-json\/wp\/v2\/pages\/323850\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.engeniustech.com\/eu\/wp-json\/wp\/v2\/media?parent=323850"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.engeniustech.com\/eu\/wp-json\/wp\/v2\/categories?post=323850"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.engeniustech.com\/eu\/wp-json\/wp\/v2\/tags?post=323850"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}