{"product_id":"apollo-mw-s312-dual-10-inch-bluetooth-party-speaker","title":"Apollo MW-S312 Dual 10-Inch Bluetooth Party Speaker","description":"\u003cp\u003e\u003cstrong\u003e$120.00 · Local pickup only.\u003c\/strong\u003e\u003c\/p\u003e\u003cp\u003eThe Apollo \/ Sound Hit MW-S312 is a dual 10-inch battery party speaker system with Bluetooth connectivity.\u003c\/p\u003e\u003ch2\u003eFeatures\u003c\/h2\u003e\u003cul\u003e\n\u003cli\u003eDual 10-inch speaker format\u003c\/li\u003e\n\u003cli\u003eBluetooth and TWS support\u003c\/li\u003e\n\u003cli\u003eBattery speaker system\u003c\/li\u003e\n\u003cli\u003eUSB\/SD playback and FM tuner\u003c\/li\u003e\n\u003cli\u003eRecording feature and disco lighting\u003c\/li\u003e\n\u003cli\u003eRetractable trolley handle\u003c\/li\u003e\n\u003c\/ul\u003e\u003ch2\u003ePickup from either Dallas store\u003c\/h2\u003e\u003cp\u003eLocal pickup only. Shipping is not available. Contact your preferred Cellular Geeks store before ordering or visiting to confirm availability and arrange pickup.\u003c\/p\u003e\u003cul\u003e\n\u003cli\u003e\n\u003ca href=\"\/pages\/harry-hines-phone-computer-game-console-repair\"\u003eHarry Hines\u003c\/a\u003e — 11526 Harry Hines Blvd, Suite 105, Dallas, TX 75229. \u003ca href=\"tel:+19723529439\"\u003eCall (972) 352-9439\u003c\/a\u003e.\u003c\/li\u003e\n\u003cli\u003e\n\u003ca href=\"\/pages\/coit-road-phone-computer-game-console-repair\"\u003eCoit Road\u003c\/a\u003e — 13021 Coit Rd, Suite 224, Dallas, TX 75240. \u003ca href=\"tel:+14694646786\"\u003eCall (469) 464-6786\u003c\/a\u003e.\u003c\/li\u003e\n\u003c\/ul\u003e\u003cp\u003eCheckout currently lists Harry Hines as the pickup location. Arrange Coit Road pickup with our team before placing your order.\u003c\/p\u003e\n\u003cscript id=\"cg-required-contact-phone-v1\" data-cg-pickup-only=\"true\"\u003e\n(function () {\n  'use strict';\n  function validPhone(value) {\n    var text = String(value || '').trim();\n    if (!\/^\\+?[0-9\\s().-]+$\/.test(text)) return false;\n    var digits = text.replace(\/\\D\/g, '');\n    return digits.length \u003e= 7 \u0026\u0026 digits.length \u003c= 15 \u0026\u0026 !\/^0+$\/.test(digits);\n  }\n  if (typeof module !== 'undefined' \u0026\u0026 module.exports) module.exports = {validPhone: validPhone};\n  if (typeof document === 'undefined' || window.CGContactPhoneV1) return;\n  window.CGContactPhoneV1 = true;\n  var count = 0;\n  var pickupOnly = !!document.querySelector('#cg-required-contact-phone-v1[data-cg-pickup-only=\"true\"]');\n  function ensure(form) {\n    if (!form || !form.querySelector('[name=\"id\"]')) return null;\n    var phone = form.querySelector('[name=\"properties[Contact phone]\"]');\n    if (!phone) {\n      var wrapper = document.createElement('div');\n      wrapper.className = 'cg-contact-phone-field';\n      var label = document.createElement('label');\n      var id = 'CGContactPhone-' + (++count);\n      label.htmlFor = id;\n      label.textContent = 'Contact phone (required)';\n      phone = document.createElement('input');\n      phone.id = id;\n      phone.name = 'properties[Contact phone]';\n      phone.type = 'tel';\n      phone.inputMode = 'tel';\n      phone.autocomplete = 'tel';\n      phone.maxLength = 32;\n      phone.required = true;\n      phone.setAttribute('aria-describedby', id + '-help');\n      var help = document.createElement('p');\n      help.id = id + '-help';\n      help.className = 'cg-contact-phone-help';\n      help.textContent = 'Include your area or country code. We use this number to contact you about your order.';\n      wrapper.appendChild(label);\n      wrapper.appendChild(phone);\n      wrapper.appendChild(help);\n      var button = form.querySelector('#AddToCart, [name=\"add\"], button[type=\"submit\"], input[type=\"submit\"]');\n      if (button) button.parentNode.insertBefore(wrapper, button);\n      else form.appendChild(wrapper);\n    }\n    phone.required = true;\n    if (phone.getAttribute('data-cg-phone-validation') !== 'ready') {\n      phone.setAttribute('data-cg-phone-validation', 'ready');\n      function check() {\n        phone.setCustomValidity(validPhone(phone.value) ? '' : 'Enter a contact phone number with 7 to 15 digits. A leading + and spaces are allowed.');\n      }\n      phone.addEventListener('input', check);\n      phone.addEventListener('change', check);\n      check();\n    }\n    if (pickupOnly \u0026\u0026 form.closest('#ProductSection') \u0026\u0026 !form.querySelector('.cg-pickup-only-hint')) {\n      var hint = document.createElement('p');\n      hint.className = 'cg-pickup-only-hint';\n      hint.textContent = 'Pickup only — choose Pickup at checkout. Coit Road pickup is available by arrangement; call your store before visiting.';\n      var addButton = form.querySelector('#AddToCart, [name=\"add\"], button[type=\"submit\"], input[type=\"submit\"]');\n      if (addButton) addButton.parentNode.insertBefore(hint, addButton);\n      else form.appendChild(hint);\n    }\n    form.setAttribute('data-cg-contact-phone', 'ready');\n    return phone;\n  }\n  function initialize() {\n    Array.prototype.forEach.call(document.querySelectorAll('form[action*=\"\/cart\/add\"]'), ensure);\n  }\n  function guard(form, event) {\n    var phone = ensure(form);\n    if (!phone) return;\n    phone.setCustomValidity(validPhone(phone.value) ? '' : 'Enter a contact phone number with 7 to 15 digits. A leading + and spaces are allowed.');\n    if (validPhone(phone.value)) {\n      phone.value = phone.value.trim();\n      return;\n    }\n    event.preventDefault();\n    event.stopImmediatePropagation();\n    phone.focus();\n    phone.reportValidity();\n  }\n  document.addEventListener('submit', function (event) {\n    var form = event.target;\n    if (form \u0026\u0026 form.matches('form[action*=\"\/cart\/add\"]')) guard(form, event);\n  }, true);\n  document.addEventListener('click', function (event) {\n    var target = event.target \u0026\u0026 event.target.closest ? event.target.closest('#AddToCart, [name=\"add\"], button[type=\"submit\"], input[type=\"submit\"]') : null;\n    var form = target \u0026\u0026 target.form;\n    if (form \u0026\u0026 form.matches('form[action*=\"\/cart\/add\"]')) guard(form, event);\n  }, true);\n  if (!document.getElementById('CGContactPhoneStyleV1')) {\n    var style = document.createElement('style');\n    style.id = 'CGContactPhoneStyleV1';\n    style.textContent = '.cg-contact-phone-field{width:100%;margin:14px 0;clear:both;text-align:left}.cg-contact-phone-field label{display:block;margin-bottom:6px}.cg-contact-phone-field input{box-sizing:border-box;width:100%;min-height:44px;font-size:16px}.cg-pickup-only-hint{width:100%;margin:10px 0;font-size:13px;line-height:1.4;color:#122736;text-align:left}.cg-contact-phone-help{margin:6px 0 0;font-size:12px;line-height:1.4}form[data-cg-contact-phone=\"ready\"] .shopify-payment-button,form[data-cg-contact-phone=\"ready\"] shopify-accelerated-checkout{display:none!important}';\n    document.head.appendChild(style);\n  }\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', initialize, {once: true});\n  else initialize();\n  document.addEventListener('shopify:section:load', initialize);\n  var scheduled = false;\n  var observer = new MutationObserver(function () {\n    if (scheduled) return;\n    scheduled = true;\n    window.requestAnimationFrame(function () { scheduled = false; initialize(); });\n  });\n  observer.observe(document.documentElement, {childList: true, subtree: true});\n  window.addEventListener('pagehide', function () { observer.disconnect(); }, {once: true});\n})();\n\n\u003c\/script\u003e","brand":"Cellular Geeks - Cell Phones And Computers","offers":[{"title":"Default Title","offer_id":51510461235367,"sku":"MW-S312-LOCAL-PICKUP","price":120.0,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0516\/3771\/5111\/files\/apollo-mw-s312-refreshed.png?v=1791933304","url":"https:\/\/www.thecellulargeeks.com\/products\/apollo-mw-s312-dual-10-inch-bluetooth-party-speaker","provider":"CELLULAR GEEKS Cell Phones and Computers","version":"1.0","type":"link"}