{"id":9,"date":"2026-04-27T08:54:23","date_gmt":"2026-04-27T08:54:23","guid":{"rendered":"https:\/\/trial.aitsolutionsoffice.org\/?page_id=9"},"modified":"2026-05-18T03:49:04","modified_gmt":"2026-05-18T03:49:04","slug":"home","status":"publish","type":"page","link":"https:\/\/trial.aitsolutionsoffice.org\/","title":{"rendered":"Home"},"content":{"rendered":"\n<figure class=\"wp-block-gallery alignfull has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-full is-style-default\"><img loading=\"lazy\" decoding=\"async\" width=\"3611\" height=\"1167\" data-id=\"261\" src=\"https:\/\/trial.aitsolutionsoffice.org\/wp-content\/uploads\/2026\/05\/ACECOMS-Website-banners-A.jpg\" alt=\"\" class=\"wp-image-261\"\/><\/figure>\n<\/figure>\n\n\n\n<div id=\"acs-single-row-container\">\n        <div class=\"row-header\">\n            <div class=\"ace-row-title\">ACECOMS<\/div>\n            <a href=\"#\" class=\"view-all-link\">\n                View All\n                <i class=\"fas fa-arrow-right\"><\/i>\n            <\/a>\n        <\/div>\n\n        <div id=\"single-row-cards\">\n            <!-- News Card 1 -->\n            <article class=\"acs-news-card\">\n                <div class=\"acs-card-image\">\n                    <img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/05\/about-acs.png\"\n                        alt=\"About\">\n\n                <\/div>\n                <div class=\"card-content\">\n\n                    <div class=\"news-title\">About ACECOMS<\/div>\n                    <p class=\"news-excerpt\">Established in 1995, ACECOMS (Asian Center for Engineering Computations and\n                        Software) advances engineering computations through research, software solutions, and\n                        specialized professional training. As the official Channel Partner of Computers and Structures,\n                        Inc. (CSI), USA) for Thailand, the Philippines, Myanmar, and Sri Lanka, ACECOMS promotes\n                        industry-leading software such as SAP2000, ETABS, and SAFE, while delivering hands-on training\n                        programs that combine strong theoretical foundations with practical engineering applications.\n                    <\/p>\n                    <div id=\"aboutACE\" class=\"read-more\">Read More <i class=\"fas fa-arrow-right\"><\/i><\/div>\n                <\/div>\n            <\/article>\n\n            <!-- News Card 2 -->\n            <article class=\"acs-news-card\">\n                <div class=\"acs-card-image\">\n                    <img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/05\/acs-events-2.png\"\n                        alt=\"Events\">\n\n                <\/div>\n                <div class=\"card-content\">\n                    <div class=\"news-title\">Event<\/div>\n                    <p class=\"news-excerpt\">Access curated technical articles, software tips, best practices, and expert\n                        insights in structural engineering and computational analysis. ACECOMS provides practical\n                        guidance, case-based learning, and updates to help engineers stay informed, enhance their\n                        modeling skills, and apply advanced tools with confidence.<\/p>\n                    <div id=\"res-know\" class=\"read-more\">Read More <i class=\"fas fa-arrow-right\"><\/i><\/div>\n                <\/div>\n            <\/article>\n\n            <!-- News Card 2 -->\n            <article class=\"acs-news-card\">\n                <div class=\"acs-card-image\">\n                    <img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/05\/acs-news.jpg\"\n                        alt=\"Technology News\">\n\n                <\/div>\n                <div class=\"card-content\">\n                    <div class=\"news-title\">News<\/div>\n                    <p class=\"news-excerpt\">Access curated technical articles, software tips, best practices, and expert\n                        insights in structural engineering and computational analysis. ACECOMS provides practical\n                        guidance, case-based learning, and updates to help engineers stay informed, enhance their\n                        modeling skills, and apply advanced tools with confidence.<\/p>\n                    <div id=\"res-know\" class=\"read-more\">Read More <i class=\"fas fa-arrow-right\"><\/i><\/div>\n                <\/div>\n            <\/article>\n        <\/div>\n    <\/div>\n\n\n\n<div class=\"wp-block-group alignfull has-background is-content-justification-center is-layout-constrained wp-container-core-group-is-layout-da62a0d8 wp-block-group-is-layout-constrained\" style=\"background-color:#071021;margin-top:0px;margin-bottom:0px;padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px\">\n<section id=\"Software\">\n            <div class=\"acs-title\">Csi software<\/div>\n            <div id=\"csi-soft\">\n                <a href=\"https:\/\/www.csiamerica.com\/products\/sap2000\" target=\"_blank\"><img decoding=\"async\" src=\"wp-content\/uploads\/2026\/05\/ETABS.png\" alt=\"ETABS\"><\/a>\n                <a href=\"https:\/\/www.csiamerica.com\/products\/sap2000\" target=\"_blank\"><img decoding=\"async\" src=\"wp-content\/uploads\/2026\/05\/SAP2000.png\" alt=\"SAP2000\"><\/a>       \n                <a href=\"https:\/\/www.csiamerica.com\/products\/csibridge\" target=\"_blank\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/05\/CSI Bridge.png\" alt=\"CSi Bridge\"><\/a>\n                <a href=\"https:\/\/www.csiamerica.com\/products\/safe\" target=\"_blank\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/05\/SAFE.png\" alt=\"Safe\"><\/a>\n                <a href=\"https:\/\/www.csiamerica.com\/products\/perform3d\" target=\"_blank\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/05\/Perform 3D.png\" alt=\"Perform 3D\"><\/a>\n                <a href=\"https:\/\/www.csiamerica.com\/products\/csiplant\" target=\"_blank\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/05\/CSiPlant.png\" alt=\"CSi Plant\"><\/a>\n                <a href=\"https:\/\/www.csiamerica.com\/products\/csicol\" target=\"_blank\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/05\/CSiCol.png\" alt=\"CSiCol\"><\/a>\n                <a href=\"https:\/\/www.csiamerica.com\/products\/csixrevit\" target=\"_blank\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/05\/CSixRevit.png\" alt=\"CSixRevit\"><\/a>\n                <a href=\"https:\/\/www.csiamerica.com\/products\/csixcad\" target=\"_blank\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/05\/CSixCAD.png\" alt=\"CSixCAD\"><\/a>\n            <\/div>\n        <\/section>\n<\/div>\n\n\n\n<section id=\"Software\">\n            <div class=\"acs-title\">Csi software<\/div>\n            <div id=\"csi-soft\">\n                <a href=\"https:\/\/www.csiamerica.com\/products\/sap2000\" target=\"_blank\"><img decoding=\"async\" src=\"wp-content\/uploads\/2026\/05\/ETABS.png\" alt=\"ETABS\"><\/a>\n                <a href=\"https:\/\/www.csiamerica.com\/products\/sap2000\" target=\"_blank\"><img decoding=\"async\" src=\"wp-content\/uploads\/2026\/05\/SAP2000.png\" alt=\"SAP2000\"><\/a>       \n                <a href=\"https:\/\/www.csiamerica.com\/products\/csibridge\" target=\"_blank\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/05\/CSI Bridge.png\" alt=\"CSi Bridge\"><\/a>\n                <a href=\"https:\/\/www.csiamerica.com\/products\/safe\" target=\"_blank\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/05\/SAFE.png\" alt=\"Safe\"><\/a>\n                <a href=\"https:\/\/www.csiamerica.com\/products\/perform3d\" target=\"_blank\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/05\/Perform 3D.png\" alt=\"Perform 3D\"><\/a>\n                <a href=\"https:\/\/www.csiamerica.com\/products\/csiplant\" target=\"_blank\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/05\/CSiPlant.png\" alt=\"CSi Plant\"><\/a>\n                <a href=\"https:\/\/www.csiamerica.com\/products\/csicol\" target=\"_blank\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/05\/CSiCol.png\" alt=\"CSiCol\"><\/a>\n                <a href=\"https:\/\/www.csiamerica.com\/products\/csixrevit\" target=\"_blank\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/05\/CSixRevit.png\" alt=\"CSixRevit\"><\/a>\n                <a href=\"https:\/\/www.csiamerica.com\/products\/csixcad\" target=\"_blank\"><img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/05\/CSixCAD.png\" alt=\"CSixCAD\"><\/a>\n            <\/div>\n        <\/section>\n\n         <div id=\"release\">\n            <div class=\"acs-title\">software release<\/div>\n            <div id=\"grid-release\">\n                <a href=\"https:\/\/www.csiamerica.com\/products\/etabs\/enhancements\/22\" target=\"_blank\"><img decoding=\"async\" class=\"img-release1\" src=\"\/wp-content\/uploads\/2026\/05\/ETABS-gray.png\"><span>v22.7.0: Released 14 Jul 2025<\/span><\/a>\n                <a href=\"https:\/\/www.csiamerica.com\/products\/sap2000\/enhancements\/26\" target=\"_blank\"><img decoding=\"async\" class=\"img-release2\" src=\"\/wp-content\/uploads\/2026\/05\/SAFE-gray.png\"><span>v26.3.0: Released 1 Jul 2025<\/span><\/a>\n                <a href=\"https:\/\/www.csiamerica.com\/products\/safe\/enhancements\/22\" target=\"_blank\"><img decoding=\"async\" class=\"img-release3\" src=\"\/wp-content\/uploads\/2026\/05\/SAFE-gray.png\"><span>v22.7.0: Released 14 Jul 2025<\/span><\/a>\n                <a href=\"https:\/\/www.csiamerica.com\/products\/csibridge\/enhancements\/26\" target=\"_blank\"><img decoding=\"async\" class=\"img-release4\" src=\"\/wp-content\/uploads\/2026\/05\/CSiBridge-gray.png\"><span>v26.3.0: Released 1 Jul 2025<\/span><\/a>\n            <\/div> \n        <\/div>\n\n\n\n<div id=\"release\">\n            <div class=\"acs-title\">software release<\/div>\n            <div id=\"grid-release\">\n                <a href=\"https:\/\/www.csiamerica.com\/products\/etabs\/enhancements\/22\" target=\"_blank\"><img decoding=\"async\" class=\"img-release1\" src=\"\/wp-content\/uploads\/2026\/05\/ETABS-gray.png\"><span>v22.7.0: Released 14 Jul 2025<\/span><\/a>\n                <a href=\"https:\/\/www.csiamerica.com\/products\/sap2000\/enhancements\/26\" target=\"_blank\"><img decoding=\"async\" class=\"img-release2\" src=\"\/wp-content\/uploads\/2026\/05\/SAFE-gray.png\"><span>v26.3.0: Released 1 Jul 2025<\/span><\/a>\n                <a href=\"https:\/\/www.csiamerica.com\/products\/safe\/enhancements\/22\" target=\"_blank\"><img decoding=\"async\" class=\"img-release3\" src=\"\/wp-content\/uploads\/2026\/05\/SAFE-gray.png\"><span>v22.7.0: Released 14 Jul 2025<\/span><\/a>\n                <a href=\"https:\/\/www.csiamerica.com\/products\/csibridge\/enhancements\/26\" target=\"_blank\"><img decoding=\"async\" class=\"img-release4\" src=\"\/wp-content\/uploads\/2026\/05\/CSiBridge-gray.png\"><span>v26.3.0: Released 1 Jul 2025<\/span><\/a>\n            <\/div> \n        <\/div>\n\n\n\n<div class=\"wp-block-group alignfull is-layout-constrained wp-container-core-group-is-layout-33c85678 wp-block-group-is-layout-constrained has-background\" style=\"padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;background-image:url(&apos;https:\/\/trial.aitsolutionsoffice.org\/wp-content\/uploads\/2026\/05\/release-bg.png&apos;);background-size:cover;\">\n<div class=\"form-section\">                     \n        <div class=\"form-container\">\n            <div class=\"acs-title \">Request a quotation<\/div>\n            <form id=\"supportForm\" novalidate method=\"post\" name=\"QuoteForm\">\n                  <div class=\"acs-flex-one\">\n                    <div class=\"form-group\">\n                        <label for=\"name\">Name <\/label>\n                        <input type=\"text\" id=\"name\" name=\"Name\" placeholder=\"please provide your name\" required>\n                        <span class=\"error\"><\/span>\n                    <\/div>    \n                    <div class=\"form-group\">\n                        <label for=\"email\">Email Address<\/label>\n                        <input type=\"email\" id=\"email\" name=\"Email\" placeholder=\"Please provide your email\" required>\n                        <span class=\"error\"><\/span>\n                    <\/div> \n                             \n                <\/div>\n                <div class=\"acs-flex-one\">\n                    <div class=\"form-group\">\n                        <label for=\"company\">Your company<\/label>\n                        <input type=\"text\" id=\"company\" name=\"Company\" placeholder=\"Please provide your company\" required>\n                        <span class=\"error\"><\/span>\n                    <\/div>                  \n                    <div class=\"form-group\">\n                        <label for=\"country\">Country<\/label>\n                        <select id=\"country\" name=\"Country\" required>\n                            <option value=\"\"><\/option>\n                            <option value=\"Myanmar\">Myanmar<\/option>                        \n                            <option value=\"Philippines\">Philippines<\/option>\n                            <option value=\"Sri Lanka\">Sri Lanka<\/option>  \n                            <option value=\"Thailand\">Thailand<\/option>                     \n                        <\/select>\n                        <span class=\"error\"><\/span>\n                    <\/div>   \n                <\/div>\n                <div class=\"acs-title2\">Please let us know which product(s) you are interested in purchasing by completing the table below.<\/div>\n                <!-- <hr class=\"fancy-hr gradient\"> -->\n                <div class=\"acs-flex\">\n                   <div>\n                        <div class=\"form-group\" id=\"product-width\">\n                            <label for=\"product\">Product<\/label>\n                            <select id=\"product\" name=\"Product\" required>\n                                <option value=\"\"><\/option>\n                                <option value=\"SAP2000\">SAP2000<\/option>\n                                <option value=\"ETABS\">ETABS<\/option>\n                                <option value=\"CSiBridge\">CSiBridge<\/option>\n                                <option value=\"SAFE\">SAFE<\/option>\n                                <option value=\"Perform3D\">Perform3D<\/option>\n                                <option value=\"CSiPlant\">CSiPlant<\/option>\n                                <option value=\"CSiCol\">CSiCol<\/option>\n                                <option value=\"CSiXCAD\">CSiXCAD<\/option>\n                                <option value=\"CSiXRevit 2026\">CSiXRevit 2026<\/option>\n                            <\/select>\n                            <span class=\"error\"><\/span>\n                        <\/div>\n                    \n                        <div class=\"form-group\" id=\"support-width\">\n                            <label for=\"level\">Support Level<\/label>\n                            <select id=\"level\" name=\"Support-level\" required>\n                                <option value=\"\"><\/option>                              \n                            <\/select>\n                            <span class=\"error\"><\/span>\n                        <\/div>\n                   <\/div>\n                   <div>\n                        <div class=\"form-group\" id=\"order-width\">\n                            <label for=\"order-type\">Order Type<\/label>\n                            <select id=\"order-type\" name=\"Order-type\" required>\n                                <option value=\"\"><\/option>                                \n                            <\/select>\n                            <span class=\"error\"><\/span>\n                        <\/div>                    \n                        <div class=\"form-group\" id=\"license-width\" >\n                            <label for=\"license-type\">License Type <\/label>\n                            <select id=\"license-type\" name=\"License-type\" required>\n                                <option value=\"\"><\/option>                               \n                            <\/select>\n                            <span class=\"error\"><\/span>\n                        <\/div>\n                        <div class=\"form-group\" id=\"quantity-width\">\n                            <label for=\"quantity\">QUANTITY<\/label>\n                            <input type=\"number\" id=\"quantity\" name=\"Quantity\" required >\n                            <span class=\"error\"><\/span>\n                        <\/div>\n                   <\/div>                 \n                <\/div>             \n                \n                <div class=\"form-group\">\n                    <label for=\"subject\">Subject<\/label>\n                    <input type=\"text\" id=\"subject\" name=\"Subject\" placeholder=\"Please provide subject\" required>\n                    <span class=\"error\"><\/span>\n                <\/div>\n                \n                <div class=\"form-group\">\n                    <label for=\"message\">Message<\/label>\n                    <textarea id=\"message\" name=\"Message\" placeholder=\"Please provide detailed information about your request...\" required><\/textarea>\n                    <span class=\"error\"><\/span>\n                <\/div>\n                \n                <button type=\"submit\" id=\"submitButton\" class=\"btn-submit\">\n                    <span class=\"btn-text\">Submit<\/span>\n                    <div class=\"spinner\"><\/div>\n                <\/button>\n                <div id=\"form-message\"><\/div>\n            <\/form>\n        <\/div>\n    <\/div>\n    \n     <script>\n         document.addEventListener('DOMContentLoaded', function() {\n                      \n       \n\n                \/\/ cascading ddl\n                const productData = {\n                        \"SAP2000\": {\n                            supportLevels: [\"SAP2000 Ultimate\", \"SAP2000 Advanced\", \"SAP2000 Plus\", \"SAP2000 Basic\"],\n                            orderTypes: [\"Lease\", \"Purchase\"],\n                            licenseTypes: [\"Cloud Sign-In\"]\n                        },     \n                        \"ETABS\": {\n                            supportLevels: [\"ETABS Ultimate\", \"ETABS Nonlinear\", \"ETABS Plus\"],\n                            orderTypes: [\"Lease\", \"Purchase\"],\n                            licenseTypes: [\"Cloud Sign-In\"]\n                        },\n                        \"CSiBridge\": {\n                            supportLevels: [\"CSiBridge Advanced with Rating\", \"CSiBridge Advanced\", \"CSiBridge Plus\"],\n                            orderTypes: [\"Lease\", \"Purchase\"],\n                            licenseTypes: [\"Cloud Sign-In\"]\n                        },\n                        \"SAFE\": {\n                            supportLevels: [\"SAFE Post-Tensioning\", \"SAFE Standard\"],\n                            orderTypes: [\"Lease\", \"Purchase\"],\n                            licenseTypes: [\"Cloud Sign-In\"]\n                        },\n                        \"Perform3D\": {\n                            supportLevels: [\"Perform-3D (only 1 Level)\"],\n                            orderTypes: [\"Lease\", \"Purchase\"],\n                            licenseTypes: [\"Cloud Key\",\"Cloud Sign-In\", \"Network\", \"Standalone\"]\n                        },\n                        \"CSiPlant\": {\n                            supportLevels: [\"CSiPlant (only 1 Level)\"],\n                            orderTypes: [\"Purchase\", \"Subscription\"],\n                            licenseTypes: [\"Cloud Key\",\"Cloud Sign-In\"]\n                        },\n                        \"CSiCol\": {\n                            supportLevels: [\"CSiCol (only 1 Level)\"],\n                            orderTypes: [\"Purchase\"],\n                            licenseTypes: [\"Cloud Key\"]\n                        },\n                        \"CSiXCAD\": {\n                            supportLevels: [\"\"],\n                            orderTypes: [\"Subscription\"],\n                            licenseTypes:  [\"Cloud Key\",\"Network\", \"Standalone\"]\n                        },\n                        \"CSiXRevit 2026\": {\n                            supportLevels: [\"CSiXRevit (only 1 Level)\"],\n                            orderTypes: [\"Purchase\"],\n                            licenseTypes: [\"Cloud Sign-In\"]\n                        }\n                    };\n\n                function populateSelect(selectElement, options) {\n                    \/\/ Clear existing options except the first placeholder\n                    selectElement.innerHTML = '<option value=\"\"><\/option>';\n\n                    options.forEach(option => {\n                        const opt = document.createElement('option');\n                        opt.value = option;\n                        opt.textContent = option;\n                        selectElement.appendChild(opt);\n                    });\n                }\n                \n                const selectProduct = document.getElementById('product');\n                const levelSelect = document.getElementById('level');\n                const orderTypeSelect = document.getElementById('order-type');\n                const licenseTypeSelect = document.getElementById('license-type');\n                const btnSubmit = document.getElementById('submitButton');\n                let levelSelectChoose = false;\n                selectProduct.addEventListener('change', function(){\n                    const product = this.value;\n\n                    if (!product || !productData[product]) {\n                        \/\/ Reset all dependent dropdowns\n                        populateSelect(levelSelect, []);\n                        populateSelect(orderTypeSelect, []);\n                        populateSelect(licenseTypeSelect, []);\n                        return;\n                    }\n                    \n                     \/\/ if product is CSiXCAD, suport level should be not required.\n\n                    if(product == \"CSiXCAD\"){\n                        levelSelectChoose = true;\n                    }else{\n                        levelSelectChoose = false;\n                    }\n\n\n                    const data = productData[product];\n\n                    populateSelect(levelSelect, data.supportLevels);\n                    populateSelect(orderTypeSelect, data.orderTypes);\n                    populateSelect(licenseTypeSelect, data.licenseTypes);\n                });    \n\n                let selectValue = selectProduct.value;\n           \n                if(selectValue != \"\"){\n                    const data = productData[selectValue];           \n                    populateSelect(levelSelect, data.supportLevels);\n                    populateSelect(orderTypeSelect, data.orderTypes);\n                    populateSelect(licenseTypeSelect, data.licenseTypes);\n                }\n\n                \/\/ validate form and submit form\n              \n                document.getElementById('supportForm').addEventListener('submit', async function(e) {                \n                        e.preventDefault(); \/\/ Stop normal submission\n\n                    document.querySelectorAll('.error').forEach(el => el.textContent = '');\n    const msg = document.getElementById('form-message');\n    msg.textContent = '';\n    msg.style.color = '';\n    msg.style.border = ''; \n\n    let valid = true;\n    const err = (id, text) => {\n        const span = document.querySelector(`#${id}`).closest('.form-group').querySelector('.error');\n        span.textContent = text;\n        valid = false;\n    };\n\n    \/\/ simple checks\n    const userName = document.getElementById('name').value.trim();\n    if(!userName) err(\"name\", \"User Name is required.\");\n\n    const company = document.getElementById('company').value.trim();\n    if(!company) err(\"company\", \"Company is required.\");\n    const email = document.getElementById('email').value.trim();\n    if (!email) err('email', 'Email is required');\n    else if (!\/^\\S+@\\S+\\.\\S+$\/.test(email)) err('email', 'Invalid email');\n\n\n   if(levelSelectChoose){\n        ['country','product','order-type','license-type'].forEach(id => {\n            if (!document.getElementById(id).value) err(id, 'Required');\n        });\n    }else{\n        ['country','product','level','order-type','license-type'].forEach(id => {\n            if (!document.getElementById(id).value) err(id, 'Required');\n        });\n    }\n\n    const qty = document.getElementById('quantity').value;\n    if (!qty || qty < 1) err('quantity', 'Quantity \u2265 1');\n\n    if (!document.getElementById('subject').value.trim()) err('subject', 'Required');\n    if (!document.getElementById('message').value.trim()) err('message', 'Required');\n\n    if (!valid) return;   \/\/ stop here if errors\n\n    \/\/ CORRECT WAY \u2013 NO EXTRA );\n    btnSubmit.classList.add(\"loading\");\n    btnSubmit.disabled = true;\n    const formData = new FormData(this);\n    const data = Object.fromEntries(formData);\n    data.quantity = data.quantity || 1;\n\n\n               const form = document.forms['QuoteForm']\n                                const scriptURL = \"https:\/\/script.google.com\/macros\/s\/AKfycbzLd8TcFDAtdy4-m3VUncnpBfK6yNml9_HyvfvTQCbzUb4fYAV3629zpkfP09_hfztq\/exec\";\n                            const postGoogleSheet = await fetch(scriptURL, { method: 'POST', body: new FormData(form)});\n                            const resultGoogleSheet = await postGoogleSheet.json();\n            console.log(resultGoogleSheet);\n                            if(resultGoogleSheet.result == \"success\"){\n                                \n                                \/\/ to send email\n                                    try {\n                                        const response = await fetch('\/wp-json\/custom\/v1\/sendemail', {  \/\/ Change to your backend file\n                                            method: 'POST',\n                                            headers: {\n                                                'Content-Type': 'application\/json',\n                                            },\n                                            body: JSON.stringify(data)\n                                        });\n            \n                                        const result = await response.json();\n                                        btnSubmit.classList.remove(\"loading\");\n                                        submitButton.disabled = false;\n            \n                                        if (result.status == \"success\") {\n                                            msg.textContent = 'Thank you! Your request has been sent. We will contact you soon.';\n                                            msg.style.color = '#155724';\n                                            msg.style.background =\"#d4edda\"\n                                            msg.style.border = \"1px solid #c3e6cb\";\n                                            this.reset();\n                                        } else {\n                                            msg.textContent = result.message || 'Ahha! Error occur while submitting form';\n                                            msg.style.color = '#721c24';\n                                            msg.style.background =\"#f8d7da\";\n                                            msg.style.border = \"1px solid #f5c6cb\";              \n                                        }\n            \n                                        setTimeout(() => {\n                                            msg.textContent = '';\n                                            msg.style.color = '';\n                                            msg.style.background ='';\n                                            msg.style.border = '';    \n                                        }, 5000);\n                                    } catch (err) {\n                                     console.error(err);\n                                        msg.textContent = 'Network error. Please try again later.';\n                                        msg.style.color = '#721c24';\n                                        msg.style.background =\"#f8d7da\";\n                                        msg.style.border = \"1px solid #f5c6cb\";   \n                                        btnSubmit.classList.remove(\"loading\");\n                                        submitButton.disabled = false;\n                                         setTimeout(() => {\n                                            msg.textContent = '';\n                                            msg.style.color = '';\n                                            msg.style.background = '';\n                                            msg.style.border = ''; \n                                        }, 5000);\n                                    }\n                            }else{\n                                console.error(err);\n                                        msg.textContent = 'Network error. Please try again later.';\n                                        msg.style.color = '#721c24';\n                                        msg.style.background =\"#f8d7da\";\n                                        msg.style.border = \"1px solid #f5c6cb\";   \n                                        btnSubmit.classList.remove(\"loading\");\n                                        submitButton.disabled = false;\n                                         setTimeout(() => {\n                                            msg.textContent = '';\n                                            msg.style.color = '';\n                                            msg.style.background = '';\n                                            msg.style.border = ''; \n                                        }, 5000);\n                            }\n                        \n                    });\n\n                    \/\/ === REAL-TIME ERROR CLEARING (Add this block) ===\n                    const clearErrorOnInput = (fieldId) => {\n                        const field = document.getElementById(fieldId);\n                        const errorSpan = field.closest('.form-group').querySelector('.error');\n                        \n                        \/\/ For input\/textarea: on input\n                        \/\/ For select: on change\n                        if (field.tagName === 'SELECT') {\n                            field.addEventListener('change', () => {\n                                if (field.value) {\n                                    errorSpan.textContent = '';\n                                    field.classList.remove('error-field');\n                                }\n                            });\n                        } else {\n                            field.addEventListener('input', () => {\n                                if (field.value.trim()) {\n                                    errorSpan.textContent = '';\n                                    field.classList.remove('error-field');\n                                }\n                            });\n                        }\n                    };\n\n                    \/\/Apply to all your fields\n                    clearErrorOnInput('name');\n                    clearErrorOnInput('company');\n                    clearErrorOnInput('country');\n                    clearErrorOnInput('email');\n                    clearErrorOnInput('product');\n                    clearErrorOnInput('level');\n                    clearErrorOnInput('order-type');\n                    clearErrorOnInput('license-type');                \n                    clearErrorOnInput('subject');\n                    clearErrorOnInput('message');\n\n                    \/\/Optional: Also clear quantity error when valid number entered\n                    document.getElementById('quantity').addEventListener('input', function() {\n                        if (this.value && !isNaN(this.value) && this.value >= 1) {\n                            this.closest('.form-group').querySelector('.error').textContent = '';\n                        }\n                    });\n                \n               \n          });\n          \n          \/* another testing *\/\n          \n          const btnAbout = document.querySelector(\"#aboutACE\");\n          btnAbout.addEventListener(\"click\", (e)=>{\n              const text = `Established in 1995, ACECOMS (Asian Center for Engineering Computations and Software) advances engineering computations through research, software solutions, and specialized professional training. As the official Channel Partner of Computers and Structures, Inc. (CSI), USA) for Thailand, the Philippines, Myanmar, and Sri Lanka, ACECOMS promotes industry-leading software such as SAP2000, ETABS, and SAFE, while delivering hands-on training programs that combine strong theoretical foundations with practical engineering applications.`;\n             showBottomSheet(text, \"About ACESOMS\")\n          });\n          \n          \n          document.querySelector(\"#res-know\").addEventListener(\"click\", (e)=>{\n              const text = `Access curated technical articles, software tips, best practices, and expert insights in structural engineering and computational analysis. ACECOMS provides practical guidance, case-based learning, and updates to help engineers stay informed, enhance their modeling skills, and apply advanced tools with confidence.`;\n             showBottomSheet(text, \"Knowledge Resources\")\n          });\n          \n          document.querySelector(\"#techEvents\").addEventListener(\"click\", (e)=>{\n              const text = `Participate in seminars, webinars, workshops, and expert led sessions focused on structural engineering, computational analysis, and CSI software applications. Our events provide practical insights, industry updates, and hands-on learning opportunities to support continuous professional development.`;\n             showBottomSheet(text, \"Technical Events\")\n          });\n          \n          \n          function showBottomSheet(htmlContent, title)\n    {\n        let overlay = document.querySelector('.acs-acs-bottom-sheet-overlay');\n        if (!overlay) {\n            overlay = document.createElement('div');\n            overlay.className = 'acs-acs-bottom-sheet-overlay';\n            document.body.appendChild(overlay);\n        }\n\n        let bottomSheet = document.createElement('div');\n        bottomSheet.className = 'acs-bottom-sheet';\n        bottomSheet.innerHTML = `\n                    <div class=\"sheet-content\">\n                      \n                        <div id=\"bot-title\">\n                             <div id=\"acs-bottom-sheet-title\">${title}<\/div>\n                            <button class=\"acs-close-btn\">&times;<\/button>\n                        <\/div>\n                        <p>\n                        ${htmlContent}\n                        <\/p>\n                    <\/div>\n                `;\n        \n        \/\/ Clear previous content and add new content\n        overlay.innerHTML = '';\n        overlay.appendChild(bottomSheet);         \n        \n\n           const closeBtn = bottomSheet.querySelector('.acs-close-btn');\n            if (closeBtn) {\n                closeBtn.addEventListener('click', () => {\n                    hideBottomSheet(overlay);\n                });\n            }\n\n            overlay.addEventListener('click', (e) => {\n                if(e.target === overlay){\n                    hideBottomSheet(overlay)\n                }\n            });\n\n         overlay.classList.add('show');\n            setTimeout(() => {\n                bottomSheet.classList.add('show');\n            }, 100);\n\n            \n    }\n\n    function hideBottomSheet(overlay) {\n        const bottomSheet = overlay.querySelector('.acs-bottom-sheet');\n            if (bottomSheet) {\n                bottomSheet.classList.remove('show');                \n                setTimeout(() => {\n                    bottomSheet.remove();\n                    overlay.classList.remove('show');\n                }, 300); \/\/ Match transition duration\n            }\n    }\n          \n    <\/script>\n<\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>ACECOMS View All About ACECOMS Established in 1995, ACECOMS (Asian Center for Engineering Computations and Software) advances engineering computations through [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"plain-container","ast-site-content-layout":"default","site-content-style":"unboxed","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"disabled","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-9","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/trial.aitsolutionsoffice.org\/index.php\/wp-json\/wp\/v2\/pages\/9","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/trial.aitsolutionsoffice.org\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/trial.aitsolutionsoffice.org\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/trial.aitsolutionsoffice.org\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/trial.aitsolutionsoffice.org\/index.php\/wp-json\/wp\/v2\/comments?post=9"}],"version-history":[{"count":115,"href":"https:\/\/trial.aitsolutionsoffice.org\/index.php\/wp-json\/wp\/v2\/pages\/9\/revisions"}],"predecessor-version":[{"id":263,"href":"https:\/\/trial.aitsolutionsoffice.org\/index.php\/wp-json\/wp\/v2\/pages\/9\/revisions\/263"}],"wp:attachment":[{"href":"https:\/\/trial.aitsolutionsoffice.org\/index.php\/wp-json\/wp\/v2\/media?parent=9"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}