Universal Audio OX Stomp Dynamic Speaker Emulator (2024)

Skip to content
  • Home
  • Tonefest Marketplace™
  • Electric Guitars
  • Acoustic Guitars
  • Bass Guitars
  • Amps
  • Pedals
  • Cabinets
  • Repairs
  • Accessories
  • Wanted by our Customers!
  • The Shop
  • Sell your gear
  • Showroom for manufacturers
  • Gallery Sessions
  • Warranty
  • Account

Cart

Item added to cart. View cart and check out.

Our payment methods include all the major credit & debit cards and Klarna with possibility for installments.

  • Sale

  • Regular price €379,00

Shipping calculated at checkout.

Product Name
UAFX OX Stomp Dynamic Speaker Emulator

Description
Stereo guitar pedal featuring Dynamic Speaker Modeling with 22 speaker cabs, six vintage microphones, and full-featured studio-quality reverb, delay, EQ, modulation, and 1176 compression effects via the UAFX Control app.


Product Description
Get perfectly miked amp tones and effects, from a pedal.

Standing on the shoulders of our award-winning OX Amp Top Box, OX Stomp Dynamic Speaker Emulator pedal gives "amp-in-a-box" modelers a packed pro studio full of authentic-sounding guitar cabinets, mics, room modeling, and studio-quality effects — right at your feet.

Say Goodbye to Static-Sounding IRs
Going far beyond the one-dimensional captures of Impulse Response systems, only UA’s groundbreaking Dynamic Speaker Modeling convincingly emulates speaker breakup, drive, and cone cry — providing harmonics and sonic complexity indistinguishable from a perfectly studio-miked speaker cabinet.

Experience Award-winning Room Emulation
In addition to expertly placed close condenser, dynamic, and ribbon mics on your cabs, OX Stomp is the only effects pedal to offer a complete selection of room mics with Dynamic Room Modeling. This gives you the authentic experience of pushing air while recording your cranked amp in a world-class tracking room.

Expand the Tones of any Amp-in-a-Box Modeler
Whether you're using a UAFX amp emulator pedal or other popular amp modelers, multi-effects, or profilers — even your favorite amp's preamp line out — OX Stomp gives you over 100 curated RIG setups, giving you inspiring sounds for any amp type or genre, right out of the box.*

Enjoy Studio-Quality Effects
Beyond mic and speaker cabinet modeling, Ox Stomp also lets you craft stunning guitar sounds with UA effects like genuine 1176 compression, plate reverb, chorus, flange, three delay types, and four-band EQ with high and low-cut filters.

Customize your OX Stomp with a Full-Featured Mobile App
With the UAFX Control app, you can easily swap cabs and mics, fine-tune effects, assign RIG presets, and configure footswitches to instantly toggle sounds and/or effects, for a pro studio's worth of tones on your pedalboard.

Add a Studio Full of Vintage & Modern Cabs and Microphones
With its generous complement of 22 cabinets and six microphones, OX Stomp gives you nearly any tone imaginable.


● 1x10 Black Cha (Fender Super Champ w/ vintage Fender "Blue")
● 1x12 Blue J ('55 Fender Tweed Deluxe w/ vintage Jensen P12R)
● 1x12 GB25 ('55 Fender Tweed Deluxe w/ vintage Celestion "Greenback")
● 1x12 Blu 15 ('55 Fender Tweed Deluxe w/ reissue Celestion Alnico "Blue")
● 1x12 Black D-ux (Mid-'60s Fender Deluxe Reverb w/ vintage Oxford 12K5-6)
● 1x12 Black GB30 (Fender Princeton II w/ Celestion G12H)
● 2x10 V-ux (Late-'60s Fender Vibrolux w/ stock vintage Fender "Blues")
● 2x12 Two Verb (Late-'60s Fender Twin Reverb w/ vintage Jensen C12Ns)
● 2x12 Black 8H (Custom Altec cabinet w/ vintage Altec 8H Series IIs)
● 2x12 Ace Top (Mid-'60s Vox AC30 w/ vintage Celestion "SIlver Bulldogs")
● 2x12 Boutique D65 (Two-Rock extension cab w/ Celestion G12-65s)
● 2x12 Alnico 50 (Fender closed-back extension cab w/ Eminence EJ1250s)
● 4x10 Bman ('59 Fender Bassman w/ reissue Jensen P10Rs)
● 4x12 GB25 Thick (Late '60s Marshall w/ vintage Celestion 25-watt "Greenbacks")
● 4x12 GB25 Punch (Late '60s Marshall w/ vintage Celestion 25-watt "Greenbacks")
● 4x12 Super 80 ('80s Marshall w/ Celestion 80-watt Classic Leads)
● 4x12 White 75 ('80s Marshall w/ Celestion 75-watt Creambacks)
● 1x12 JBG 125 (Custom-made "D" cab w/ vintage JBL G-125)
● 2x12 JBF 120 (Late '60s Fender Twin Reverb w/ vintage JBL D-120Fs)
● 4x12 GB 30 (Marshall "100" birch cab w/ Celestion 30-watt "Greenbacks")
● 4x12 UK VEE 30 (Marshall 1960 TV cab w/ Celestion Vintage 30s)
● 4x12 CA VEE 30 (Mesa/Boogie Recto large cab w/ Celestion Vintage 30s)

All product names used here are trademarks of their respective owners, which are in no way associated or affiliated with Universal Audio Inc. or the OX Stomp Dynamic Speaker Emulator product. These trademarks are used solely to identify the products of those manufacturers whose tones and sounds were studied during Universal Audio's sound model development for the OX Stomp Dynamic Speaker Emulator.

*Note that OX Stomp is designed for instrument and line level only — it's not a speaker load or power attenuator. OX Stomp Dynamic Speaker Emulator requires a modern 400 mA isolated power supply (sold separately). Go here for power supply recommendations.


Key Features
● The most authentic sounding speaker, cab, mic, and room tones ever emulated in a stompbox
● Authentic speaker modeling including speaker breakup, drive, and cone cry
● Over 100 curated RIGs perfect for any amp emulator or genre for endless inspiration
● Studio-quality effects including genuine UA 1176 compression, plate reverb, EQ, and stereo delay (dual, crossover, ping-pong) for perfectly produced tones
● UAFX Control app for fine-tuning mics, effects, and footswitch configurations
● Silent switching, buffered bypass, analog dry through

Specifications
Power requirements: Isolated 9VDC, center-negative, 400 mA minimum (sold separately)
Inputs: 2 x ¼” TS
Outputs: 2 x ¼” TS
USB Type-C for updates via computer
Height: 2.56” (6.5 cm)
Width: 3.62” (9.2 cm)
Depth: 5.55” (14.1 cm)
Weight: 1.3 lbs (0.588 kg)

Share

Universal Audio OX Stomp Dynamic Speaker Emulator (10)

×

Please wait...

Make An Offer

Universal Audio OX Stomp Dynamic Speaker Emulator (11)

Universal Audio OX Stomp Dynamic Speaker Emulator

Universal Audio OX Stomp Dynamic Speaker Emulator (12)

Universal Audio OX Stomp Dynamic Speaker Emulator

€379,00

×

Offerly Support

Don't fret! This pop up only shows up in Shopify Editor Mode. Offerly could not find your add to cart button! This can happen for one of the following reasons:

    1. This product is sold out.
      To solve this please navigate to a different product!

    2. Your Theme is custom or uses different text for the "Add to Cart" button.
      If this is the case, please contact Support@OfferlyApp.com and we will add support for your theme!

Default Title

`); var productTitleText = [...document.getElementById('modalProductTitle').children].map(child => child.textContent.trim()).join(' / '); var productCollections = [{"id":299675746457,"handle":"just-in","updated_at":"2024-08-10T16:12:32+03:00","published_at":"2022-03-16T15:38:34+02:00","sort_order":"created-desc","template_suffix":"","published_scope":"global","title":"Just In","body_html":"Newest additions."},{"id":242646646937,"handle":"pedals","title":"Pedals","updated_at":"2024-08-10T16:13:00+03:00","body_html":"Pedals are preowned unless specified Brand New.","published_at":"2021-01-30T21:29:55+02:00","sort_order":"created-desc","template_suffix":"","disjunctive":false,"rules":[{"column":"tag","relation":"equals","condition":"pedals"}],"published_scope":"global"},{"id":625048518981,"handle":"universal-audio-guitar-gear","title":"Universal Audio Guitar Gear","updated_at":"2024-08-06T18:10:51+03:00","body_html":"\u003cp\u003eBuilt upon UA's proven analog modeling expertise, UAFX Guitar Pedals give you sonic authenticity far beyond other stompboxes.\u003cbr\u003e\u003cbr\u003eFrom award-winning amp emulators to classic reverbs, delays, modulators, and compressors — experience legit vintage tones like you’ve never heard before.\u003c\/p\u003e\n\u003c!----\u003e","published_at":"2024-08-06T16:37:10+03:00","sort_order":"best-selling","template_suffix":"","disjunctive":true,"rules":[{"column":"tag","relation":"equals","condition":"UA"}],"published_scope":"global","image":{"created_at":"2024-08-06T16:37:08+03:00","alt":null,"width":2000,"height":1125,"src":"\/\/www.tonefestguitargallery.com\/cdn\/shop\/collections\/UAFX_Hero_2023_with_Singles_OX.jpg?v=1722951429"}}]; var collectionsString = ''; productCollections.map((collection) => { collectionsString += collection.id + ','; }); var showButtonInformation = {productSelectorType: 'None', selectedProducts: ''} var autoResponseDelay = 1; var delayAutoMessage = false; var quantityInput = document.querySelector('#productQuantity') || document.querySelector('input[name="quantity"]:not(.offerInput)') || document.querySelector('.product-form__quantity'); if (quantityInput && 52950827161 != 69336465675) { var offerQuantityDiv = document.getElementById('offerQuanitityInput'); offerQuantityDiv.style.display = 'block'; quantityInput.addEventListener('input', function (event) { updateQuantity(event.target.value); }); } if (quantityInput && 52950827161 == 9177890913 && !isVisibleElement(quantityInput.parentElement)) { var offerQuantityDiv = document.getElementById('offerQuanitityInput'); offerQuantityDiv.style.display = 'none'; } var hideQuantityInput = [69336465675,61879943221,69664833775,86812131607,50712314049,51222872236,49644142759]; if (quantityInput && hideQuantityInput.includes(52950827161)) { var offerQuantityDiv = document.getElementById('offerQuanitityInput'); offerQuantityDiv.style.display = 'none'; } var modalProductDescription = document.getElementById('modalProductDescription'); // if modalProductDescription is over 400 characters truncate it if (modalProductDescription && modalProductDescription.textContent.length > 200) { modalProductDescription.textContent = modalProductDescription.textContent.substring(0, 200) + '...'; } mountOfferlyModalAtEndOfBody(); populateUserInformation(); fixColorOfTexts(); hidePriceForStores(); document.getElementById('offerlyCloseButton').onclick = function () { closeOfferlyModal(); }; document.getElementById('offerAmountInput').addEventListener('input', validateOfferAmount); document.getElementById('submitOfferButton').onclick = function(){ submitOffer(); }; document.getElementById('offerQuanitityInput').addEventListener('input', validateOfferAmount); document.addEventListener('DOMContentLoaded', function () { function usePushState(handler) { //modern themes use pushstate to track variant changes without reload function track(fn, handler, before) { return function interceptor() { if (before) { handler.apply(this, arguments); return fn.apply(this, arguments); } else { var result = fn.apply(this, arguments); handler.apply(this, arguments); return result; } }; } var currentVariantId = null; function variantHandler() { var selectedVariantId = window.location.search.replace(/.*variant=(\d+).*/, '$1'); if (!selectedVariantId) return; if (selectedVariantId != currentVariantId) { currentVariantId = selectedVariantId; handler(selectedVariantId); } } window.history.pushState = track(history.pushState, variantHandler); window.history.replaceState = track(history.replaceState, variantHandler); window.addEventListener('popstate', variantHandler); } usePushState(function (variantId) { productVariantId = variantId; updateModalInformation(variantId); var shouldShowButton = showButton(); var addToCartButton = findAddToCartButton(); if (shouldShowButton && !document.getElementById('offerButton') && addToCartButton) { addOfferButton(); } if(!shouldShowButton && document.getElementById('offerButton')){ var offerButton = document.getElementById('offerButton'); if (offerButton){ offerButton.remove(); } } if (shouldShowButton && !addToCartButton) { var offerButton = document.getElementById('offerButton'); if (offerButton){ offerButton.remove(); } } }); }); document.addEventListener('keydown', function (event) { if (event.key === 'Escape') { // Use "Escape" for modern browsers var modal = document.getElementById('OfferlyModalDiv'); if (modal.style.display === 'flex') { modal.style.display = 'none'; } var supportModal = document.getElementById('OfferlySupportDiv'); if (supportModal.style.display === 'flex') { supportModal.style.display = 'none'; } } }); window.onclick = function (event) { if (event.target == modal) { modal.style.display = 'none'; if (Shopify.designMode) { localStorage.setItem('offerButtonClicked', 'false'); } } }; window.addEventListener('resize', function() { var offerButton = document.getElementById('offerButton'); var addToCartButton = findAddToCartButton(); if (offerButton && addToCartButton) { updateOfferButton(offerButton, addToCartButton); } }); fetch(`/apps/offerly-proxy/app/acceptOffers/?${new URLSearchParams({ collections: collectionsString, product: productVariantId })}`, { method: 'GET' }) .then((response) => response.json()) .then((data) => { showButtonInformation = data; autoResponseDelay = showButtonInformation.automatedResponseDelay; delayAutoMessage = showButtonInformation.delayAutomatedResponse; var shouldShowButton = showButton(); if (shouldShowButton) { addOfferButton(); } if (showButtonInformation.autoOpenModal && shouldShowButton ){ if (showButtonInformation.startTimerWhenInactive){ inactivityAlertOfferly(showButtonInformation.autoOpenModalDelay * 1000); } else { setTimeout(function () { openModal(true); }, showButtonInformation.autoOpenModalDelay * 1000); } } }) .catch((error) => { // Handle any errors console.error(error) }); function mountOfferlyModalAtEndOfBody() { var modal = document.getElementById('OfferlyModalDiv'); if (modal) { document.body.appendChild(modal); } } function updateLabelsForStores(){ var storesForUpdatingLabels = [50712314049,59154694339] //if store not in storesForUpdatingLabels if (storesForUpdatingLabels.includes(52950827161) ) { var offerNameLabel = document.querySelector('label.offerly-text.offerly-input-label[for="offerName"]'); var offerNameInput = document.querySelector('input.offerInput.offerly-text[name="customerName"]'); var offerAmountLabel = document.querySelector('label.offerly-text.offerly-input-label[for="offerAmount"]'); var offerAmountInput = document.querySelector('input.offerInput.offerly-text[name="offerAmount"]'); var additionalInformationLabel = document.querySelector('label.offerly-text.offerly-input-label[for="additionalInformation"]'); var additionalInformationInput = document.querySelector('textarea.offerInput.offerly-text[name="additionalTextField"]'); var phoneInput = document.querySelector('input.offerInput.offerly-text[name="customerPhone"]'); var offerlyHeaderStoreLogo = document.getElementById('offerlyHeaderStoreLogo'); var header = document.getElementById('offerlyModalHeader'); var modalProductTitle = document.getElementById('productTitleOfferModal'); var modalPrice = document.getElementById('modalPrice'); var modalProductDescription = document.getElementById('modalProductDescription'); var offerDescriptionDiv = document.getElementById('offerDescriptionDiv'); if(52950827161 == 50712314049){ offerNameLabel.innerHTML = 'Full Name'; offerNameInput.placeholder = 'Please enter your full name'; offerAmountLabel.innerHTML = 'Your Offer'; offerAmountInput.placeholder = 'Offer price excludes shipping'; additionalInformationLabel.innerHTML = 'Location'; phoneInput.placeholder = 'Phone number with country code'; //change additionalInformation Input to a dropdown with countries var countrySelect = document.createElement('select'); //make the background a dark color //change the placeholder to country countrySelect.id = 'OfferInput'; var placeholderOption = document.createElement('option'); placeholderOption.style.backgroundColor = '#313739'; placeholderOption.value = ''; placeholderOption.text = 'Country'; placeholderOption.disabled = true; countrySelect.appendChild(placeholderOption); //add it to where additionalInformationInput is additionalInformationInput.parentNode.insertBefore(countrySelect, additionalInformationInput); additionalInformationInput.remove(); //add options to the select var countries = ['Afghanistan', 'Albania', 'Algeria', 'Andorra', 'Angola', 'Antigua and Barbuda', 'Argentina', 'Armenia', 'Australia', 'Austria', 'Azerbaijan', 'Bahamas', 'Bahrain', 'Bangladesh', 'Barbados', 'Belarus', 'Belgium', 'Belize', 'Benin', 'Bhutan', 'Bolivia', 'Bosnia and Herzegovina', 'Botswana', 'Brazil', 'Brunei', 'Bulgaria', 'Burkina Faso', 'Burundi', "Côte d'Ivoire", 'Cabo Verde', 'Cambodia', 'Cameroon', 'Canada', 'Central African Republic', 'Chad', 'Chile', 'China', 'Colombia', 'Comoros', 'Congo (Congo-Brazzaville)', 'Costa Rica', 'Croatia', 'Cuba', 'Cyprus', 'Czechia (Czech Republic)', 'Democratic Republic of the Congo', 'Denmark', 'Djibouti', 'Dominica', 'Dominican Republic', 'Ecuador', 'Egypt', 'El Salvador', 'Equatorial Guinea', 'Eritrea', 'Estonia', 'Eswatini (fmr. "Swaziland")', 'Ethiopia', 'Fiji', 'Finland', 'France', 'Gabon', 'Gambia', 'Georgia', 'Germany', 'Ghana', 'Greece', 'Grenada', 'Guatemala', 'Guinea', 'Guinea-Bissau', 'Guyana', 'Haiti', 'Holy See', 'Honduras', 'Hong Kong' , 'Hungary', 'Iceland', 'India', 'Indonesia', 'Iran', 'Iraq', 'Ireland', 'Israel', 'Italy', 'Jamaica', 'Japan', 'Jordan', 'Kazakhstan', 'Kenya', 'Kiribati', 'Kuwait', 'Kyrgyzstan', 'Laos', 'Latvia', 'Lebanon', 'Lesotho', 'Liberia', 'Libya', 'Liechtenstein', 'Lithuania', 'Luxembourg', 'Madagascar', 'Malawi', 'Malaysia', 'Maldives', 'Mali', 'Malta', 'Marshall Islands', 'Mauritania', 'Mauritius', 'Mexico', 'Micronesia', 'Moldova', 'Monaco', 'Mongolia', 'Montenegro', 'Morocco', 'Mozambique', 'Myanmar (formerly Burma)', 'Namibia', 'Nauru', 'Nepal', 'Netherlands', 'New Zealand', 'Nicaragua', 'Niger', 'Nigeria', 'North Korea', 'North Macedonia', 'Norway', 'Oman', 'Pakistan', 'Palau', 'Palestine State', 'Panama', 'Papua New Guinea', 'Paraguay', 'Peru', 'Philippines', 'Poland', 'Portugal', 'Qatar', 'Romania', 'Russia', 'Rwanda', 'Saint Kitts and Nevis', 'Saint Lucia', 'Saint Vincent and the Grenadines', 'Samoa', 'San Marino', 'Sao Tome and Principe', 'Saudi Arabia', 'Senegal', 'Serbia', 'Seychelles', 'Sierra Leone', 'Singapore', 'Slovakia', 'Slovenia', 'Solomon Islands', 'Somalia', 'South Africa', 'South Korea', 'South Sudan', 'Spain', 'Sri Lanka', 'Sudan', 'Suriname', 'Sweden', 'Switzerland', 'Syria', 'Tajikistan', 'Tanzania', 'Thailand', 'Timor-Leste', 'Togo', 'Tonga', 'Trinidad and Tobago', 'Tunisia', 'Turkey', 'Turkmenistan', 'Tuvalu', 'Uganda', 'Ukraine', 'United Arab Emirates', 'United Kingdom', 'United States of America', 'Uruguay', 'Uzbekistan', 'Vanuatu', 'Venezuela', 'Vietnam', 'Yemen', 'Zambia', 'Zimbabwe']; countries.sort(); for (var i = 0; i < countries.length; i++) { var option = document.createElement('option'); option.style.backgroundColor = '#313739'; option.value = countries[i]; option.text = countries[i]; countrySelect.appendChild(option); } countrySelect.name = 'additionalTextField'; countrySelect.classList.add('offerInput'); countrySelect.classList.add('offerly-text'); //make inital value empty countrySelect.value = ''; var offerQuanitityInput = document.getElementById('offerQuanitityInput'); var additionalInformationInput = document.getElementById('additionalInformationInput'); //rearange the order of the inputs make sure #offerAmountInput is after #additionalInformationInput offerQuanitityInput.parentNode.insertBefore(additionalInformationInput, offerQuanitityInput); //make header display none header.style.display = 'none'; offerlyHeaderStoreLogo.src = 'https://cdn.shopify.com/s/files/1/0507/1231/4049/files/smallwhitelogo.png?v=1716447954'; offerlyHeaderStoreLogo.style.display = 'flex'; //move submitOfferButton to be whole bottom var submitOfferButton = document.getElementById('submitOfferButton'); //remove it from the dom submitOfferButton.remove(); //add it as the last item in offerly-modal-content-group document.querySelector('.offerly-modal-content').appendChild(submitOfferButton); } if(52950827161 == 59154694339){ // get offerly-modal-content-group and alignItems to center var offerlyModalContentGroup = document.querySelector('.offerly-modal-content-group'); offerlyModalContentGroup.style.alignItems = 'center'; // get rightSide and set width to 100% var rightSide = document.getElementById('rightSide'); // take id offerlyModalHeader and move it to the right side var productTitle = document.getElementById('modalProductTitle'); rightSide.prepend(productTitle); rightSide.style.flex = '1 1 215px'; var image = document.getElementById('offerImage'); image.style.paddingBottom = '0px'; var productTitleOfferModal = document.getElementById('productTitleOfferModal'); productTitleOfferModal.style.paddingBottom = '0px'; // get description and set display to block offerDescriptionDiv.style.display = 'block'; offerDescriptionDiv.style.width = '100%'; modalProductDescription.style.fontSize = '18px'; modalPrice.style.fontSize = '18px'; } } } function addOfferButton() { var addToCartButton = findAddToCartButton(); if (!addToCartButton) { console.log('No add to cart button found'); return } var offerButton = document.createElement('button'); offerButton.id = 'offerButton'; var submitOfferButton = document.getElementById('submitOfferButton'); var modalAddToCartButton = document.getElementById('modalAddToCartButton'); offerButton.innerHTML = 'make an offer!' == 'make an offer' ? 'Make An Offer' : 'Make An Offer!'; updateOfferButton(offerButton, addToCartButton); updateOfferButton(submitOfferButton, addToCartButton); updateOfferButton(modalAddToCartButton, addToCartButton); offerButton.addEventListener('click', function (event) { event.preventDefault(); event.stopPropagation(); openModal(); }); if (52950827161 == 73665609995) { var modalHeader = document.getElementById('offerlyModalHeader'); modalHeader.innerHTML = 'Send Enquiry'; submitOfferButton.innerHTML = 'Enquire'; } mixpanel.track("Button Added", { shop: `www.tonefestguitargallery.com`, productTitle: `Universal Audio OX Stomp Dynamic Speaker Emulator`, } ); updateLabelsForStores() var flexWrapShop = [74034315537, 20281681, 77076005182, 58405322835, 75196203307, 61769482425, 27527348276, 57320276143, 27394244673 ]; if (flexWrapShop.includes(52950827161)){ addToCartButton.parentNode.style.flexWrap = 'wrap'; } if ( 52950827161 == 20281681 || 52950827161 == 77076005182 || 52950827161 == 58405322835 || 52950827161 == 75196203307 || 52950827161 == 61769482425 || 52950827161 == 27527348276 || 52950827161 == 57320276143 ){ addToCartButton.style.marginBottom = '16px'; } if ( 52950827161 == 68129849588 ){ addToCartButton.parentNode.style.flexWrap = 'wrap'; addToCartButton.parentNode.style.display = 'flex'; addToCartButton.parentNode.style.flexDirection = 'column'; } var useParentNodeShopIds = [ 9238556, 65386643635, 1502598, 58408730675, 13638089, 18581729, 81888772409, 55008591957, 52291043514, 29522460808, 58351059100, 8722284, 65605828783, 80557900122, 85798322485]; if (useParentNodeShopIds.includes(52950827161)) { addToCartButton.parentNode.insertAdjacentElement("afterend", offerButton); return; } if ( 52950827161 == 73305882890 || 52950827161 == 49644142759) { addToCartButton.parentNode.parentNode.insertAdjacentElement("afterend", offerButton) return; } if ( 52950827161 == 49574117544 || 52950827161 == 67113091311) { addToCartButton.parentNode.parentNode.parentNode.parentNode.insertAdjacentElement("afterend", offerButton) return; } if ( 52950827161 == 9177890913) { addToCartButton.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.insertAdjacentElement("beforeend", offerButton) return; } if ( 52950827161 == 69664833775 || 52950827161 == 65273659647 || 52950827161 == 87724163412) { addToCartButton.parentNode.insertBefore(offerButton, addToCartButton); return } if ( 52950827161 == 50712314049) { // find the button on the page that says "thinking of selling?" var thinkingOfSellingButton = [...document.querySelectorAll('.button.button--xl.button--outline.w-full')]; // go through thinkingOfSellingButton and find the one that says "thinking of selling?" var sellingButton = thinkingOfSellingButton.find((button) => button.textContent.trim().toLowerCase().includes('thinking of selling?')); sellingButton ? sellingButton.parentNode.insertBefore(offerButton, sellingButton.nextSibling) : addToCartButton.parentNode.insertBefore(offerButton, addToCartButton.nextSibling); return } addToCartButton.parentNode.insertBefore(offerButton, addToCartButton.nextSibling); } function updateOfferButton(button, addToCartButton) { //get computed style from add to cart button if (!addToCartButton) { return; } var addToCartButtonStyle = window.getComputedStyle(addToCartButton); button.classList.add('offerButton'); button.style.backgroundColor = '#e28e00'; button.style.color = '#FFFFFF'; button.style.borderRadius = 'px'; button.style.setProperty('width', '100%', 'important'); button.style.height = addToCartButtonStyle.height; button.style.margin = addToCartButtonStyle.margin; button.style.padding = addToCartButtonStyle.padding; button.style.fontFamily = addToCartButtonStyle.fontFamily; button.style.fontSize = addToCartButtonStyle.fontSize; button.style.fontWeight = addToCartButtonStyle.fontWeight; button.style.letterSpacing = addToCartButtonStyle.letterSpacing; button.style.borderRadius = addToCartButtonStyle.borderRadius; button.style.border = addToCartButtonStyle.border; button.style.lineHeight = addToCartButtonStyle.lineHeight; button.style.cursor = 'pointer'; button.style.zIndex = 'auto'; button.style.textTransform = addToCartButtonStyle.textTransform; button.style.textAlign = addToCartButtonStyle.textAlign; // if addToCartButton is all caps then make the offer button all caps if (addToCartButton.textContent === addToCartButton.textContent.toUpperCase()) { button.style.textTransform = 'uppercase'; } // remove all spaces from the word and check if only the first letter is uppercase if (addToCartButton.textContent.replace(/\s/g, '').charAt(0) === addToCartButton.textContent.replace(/\s/g, '').charAt(0).toUpperCase() && addToCartButton.textContent.replace(/\s/g, '').slice(1) === addToCartButton.textContent.replace(/\s/g, '').slice(1).toLowerCase()){ //captialize only the first letter of the first word button.textContent = button.textContent.charAt(0).toUpperCase() + button.textContent.slice(1).toLowerCase(); } var add10pxMarginTop = [19884211, 61020012786, 19703995, 9177890913, 63635554481, 78885716262, 18581729, 57483493549, 55218503785, 73305882890, 4411654217, 74848502074, 16867965, 49574117544, 64379584700, 54885220561, 61775872347, 2440329, 53819474108, 233242649, 72843067733, 49644142759, 26670334031, 76660179259, 55590715717, 73939091772, 5708365834, 59154694339, 83330335009, 29999070, 64795246644, 72810922327, 50319622293, 51553501368, 52950827161]; if ( add10pxMarginTop.includes(52950827161) ) { button.style.marginTop = '10px'; } var add10pxMarginBottom = [69664833775, 67113091311, 55008591957, 80557900122 ]; if ( add10pxMarginBottom.includes(52950827161) ) { button.style.marginBottom = '10px'; } var noMarginBottom = [20281681, 77076005182, 58405322835, 75196203307, 61769482425, 27527348276, 57320276143]; if ( noMarginBottom.includes(52950827161) ) { button.style.marginBottom = '0px'; } var add5pxMarginTop = [61879943221]; if ( add5pxMarginTop.includes(52950827161) ) { button.style.marginTop = '5px'; } var margin0px = [85798322485] if (margin0px.includes(52950827161)) { button.style.margin = '0px'; } if ( 52950827161 == 3014819906) { button.style.width = '230px'; } var sameWidthButton = [55218503785, 20281681, 77076005182, 58405322835, 29999070, 56208556218, 61769482425, 27527348276, 57320276143 ]; if ( sameWidthButton.includes(52950827161) ) { button.style.width = addToCartButtonStyle.width; } if ( 52950827161 == 29999070 ) { button.style.padding = '0px'; } if (52950827161 == 75196203307){ button.style.width = 'fit-content'; } if ( 52950827161 == 68129849588) { button.style.gridColumn = 'span 2'; } if ( 52950827161 == 8722284) { button.style.margin = '0px'; button.style.marginTop = '10px'; } if ( 52950827161 == 2252701765){ button.style.width = '90%'; button.style.height = ''; } if ( 52950827161 == 50712314049) { //add the class button to the button var thinkingOfSellingButton = [...document.querySelectorAll('.button.button--xl.button--outline.w-full')]; // go through thinkingOfSellingButton and find the one that says "thinking of selling?" var sellingButton = thinkingOfSellingButton.find((button) => button.textContent.trim().toLowerCase().includes('thinking of selling?')); if (!sellingButton) { button.style.marginTop = '24px'; } button.classList.add('button'); button.classList.add('button--outline'); } var submitButtonShopIds = [20281681, 77076005182, 58405322835, 75196203307, 29999070, 56208556218, 61769482425, 27527348276, 57320276143]; if (submitButtonShopIds.includes(52950827161) && button.id == 'submitOfferButton') { button.style.width = '100%'; button.style.margin = '0px'; } var maxWidthButton =[55590715717, 13484519, 27394244673 ] if ( maxWidthButton.includes(52950827161) && button.id == 'offerButton') { button.style.maxWidth = addToCartButtonStyle.width; } if ( 52950827161 == 27254259764 && button.id == 'offerButton') { button.style.fontSize = 'inherit'; button.style.width = 'fit-content'; button.classList.add('btn'); } if ( 52950827161 == 87724163412){ button.style.maxHeight = '44px'; button.style.height = '44px'; button.style.textTransform = 'uppercase'; button.style.textAlign = 'center'; button.style.fontSize = '14px'; } if ( 52950827161 == 12125098 && button.id == 'offerButton'){ button.style.padding = ''; button.style.paddingBottom = '4px'; button.style.maxWidth = '200px'; button.style.marginLeft='10px'; } if ( 52950827161 == 59154694339 && button.id == 'offerButton') { button.addEventListener('mouseover', () => { button.style.boxShadow = '0 0 10px rgb(42 49 70)'; }); button.addEventListener('mouseout', () => { button.style.boxShadow = ''; }); button.classList.add('glow-button'); } var copyButtonClasses = [19884211] if (copyButtonClasses.includes(52950827161) && button.id == 'offerButton') { // get the classes from addToCartButton and add them to the offerButton var classes = addToCartButton.classList; for (var i = 0; i < classes.length; i++) { button.classList.add(classes[i]); } } } function findAddToCartButton() { var addToCartButton = [...document.querySelectorAll('button:not(#modalAddToCartButton)')].find((button) => (button.textContent.trim().toLowerCase().includes('add to cart') || button.textContent.trim().toLowerCase().includes('pre order') || button.textContent.trim().toLowerCase().includes('pre-order') || button.textContent.trim().toLowerCase().includes('receive a stock alert') || button.textContent.trim().toLowerCase().includes('purchase') || button.textContent.trim().toLowerCase().includes('kosárba') || button.textContent.trim().toLowerCase().includes('add to bag') || button.textContent.trim().toLowerCase().includes('add to shopping cart') || button.textContent.trim().toLowerCase().includes('add to shopping bag') || button.textContent.trim().toLowerCase().includes('add to basket') || button.textContent.trim().toLowerCase().includes('ajouter au panier') || button.textContent.trim().toLowerCase().includes('añadir al carrito') || button.textContent.trim().toLowerCase().includes('in den warenkorb') || button.textContent.trim().toLowerCase().includes('aggiungi al carrello') || button.textContent.trim().toLowerCase().includes('adicionar ao carrinho') || button.textContent.trim().toLowerCase().includes('legg til i handlekurven') || button.textContent.trim().toLowerCase().includes('lägg i varukorgen') || button.textContent.trim().toLowerCase().includes('tilføj til kurv') || button.textContent.trim().toLowerCase().includes('aggiungi alla borsa') || button.textContent.trim().toLowerCase().includes('ajouter au sac') || button.textContent.trim().toLowerCase().includes('añadir a la bolsa') || button.textContent.trim().toLowerCase().includes('der tasche hinzufügen') || button.textContent.trim().toLowerCase().includes('zum warenkorb') || button.textContent.trim().toLowerCase().includes('aggiungi al cesto') || button.textContent.trim().toLowerCase().includes('ajouter à la corbeille') || button.textContent.trim().toLowerCase().includes('in winkelwagen') || button.textContent.trim().toLowerCase().includes('aan winkelwagen toevoegen') || button.textContent.trim().toLowerCase().includes('legg i handlekurv') || button.textContent.trim().toLowerCase().includes('lisää ostoskoriin') || button.textContent.trim().toLowerCase().includes('adauga in cos') || button.textContent.trim().toLowerCase().includes('sepete ekle') || button.textContent.trim().toLowerCase().includes('enquire') || button.textContent.trim().toLowerCase().includes('acquire') || button.textContent.trim().toLowerCase().includes('do kosza') || button.textContent.trim().toLowerCase().includes('gooods') || button.textContent.trim().toLowerCase().includes('select size') || button.textContent.trim().toLowerCase().includes('einkaufswagen') || button.textContent.trim().toLowerCase().includes('įdėti į krepšelį') || button.textContent.trim().toLowerCase().includes('hozzáadás kosárhoz') || button.textContent.trim().toLowerCase().includes('dodaj do koszyka') || button.textContent.trim().toLowerCase().includes('agregar al carrito')) && !button.textContent.trim().toLowerCase().includes('terms of purchase') ); if (52950827161 == 49574117544) { addToCartButton = document.querySelector('.product-form__submit.button.button--secondary.an-horizontal-shaking.button-text-change'); } if ( 52950827161 == 25109954659 || 52950827161 == 20375995) { addToCartButton = document.getElementById("addToCart"); } if ( 52950827161 == 67113091311) { if (!addToCartButton) { addToCartButton = document.querySelector('button[value="Add to cart"]'); } } if ( 52950827161 == 83549651224) { addToCartButton = document.querySelector('input[type="submit"][name="button"][value="Add to Cart"].btn-secondary'); } if ( 52950827161 == 65386643635) { addToCartButton = document.querySelector(".btn_sp.addtocart_btn.product-form__cart-submit"); } if ( 52950827161 == 78885716262) { addToCartButton = document.querySelectorAll('button[data-aid="product-form-submit-button"][data-name="product-submit"]')[1]; } if ( 52950827161 == 13638089 || 52950827161 == 86882484502 ) { addToCartButton = document.getElementById('AddToCart'); } if ( 52950827161 == 82779046162) { var potentialAddToCartButton = document.getElementById('AddToCart'); if (potentialAddToCartButton && !potentialAddToCartButton.textContent.toLowerCase().includes('ausverkauft')) { addToCartButton = potentialAddToCartButton; } } if ( 52950827161 == 3014819906 ) { addToCartButton = document.querySelector('input.add-to-cart[type="submit"]'); } if ( 52950827161 == 2252701765 ){ addToCartButton = document.querySelector('input[value="Purchase"]'); } if ( 52950827161 == 64379584700 ) { addToCartButton = document.querySelector('.btn.btn-primary.btn-lg.paira-add-to-cart.add-to-cart.margin-top-0.pull-left.display-in-b'); } if ( 52950827161 == 53819474108 ) { addToCartButton = document.querySelector('[data-js-trigger-id="add-to-cart"]'); } if ( 52950827161 == 87724163412 ){ addToCartButton = document.getElementById('dynamic-buttons-form') } if ( 52950827161 == 13484519 ) { addToCartButton = document.querySelector('.btn.btn-lg.btn-addtocart.addtocart-js'); } if (!addToCartButton) { if (Shopify.designMode && showButton()) { var supportModal = document.getElementById('OfferlySupportDiv'); supportModal.style.display = 'flex'; mixpanel.track("Support Modal Opened", { admin: true, shop: `www.tonefestguitargallery.com`, productTitle: `Universal Audio OX Stomp Dynamic Speaker Emulator`, } ); } return null; } return addToCartButton; } function isVisibleElement(element) { computedStyle = window.getComputedStyle(element); return computedStyle.display !== 'none' && computedStyle.visibility !== 'hidden'; } function openModal(autoOpened = false) { var modal = document.getElementById('OfferlyModalDiv'); modal.style.display = 'flex'; modal.style.animationName = 'animateopacity'; modal.style.animationDuration = '1s'; offerlyModalOpenedOnce = true; if (Shopify.designMode) { localStorage.setItem('offerButtonClicked', 'true'); } if (autoOpened) { mixpanel.track("Modal Auto-Opened", { shop: `www.tonefestguitargallery.com`, productTitle: `Universal Audio OX Stomp Dynamic Speaker Emulator`, } ); } else { mixpanel.track("Modal Opened", { shop: `www.tonefestguitargallery.com`, productTitle: `Universal Audio OX Stomp Dynamic Speaker Emulator`, } ); } var botContainer = document.getElementById('smart-bot-container'); var smileliteContainer = document.getElementById('smile-ui-lite-container'); if (botContainer) { botContainer.style.zIndex = '2147483645'; } if (smileliteContainer) { smileliteContainer.style.zIndex = '2147483645'; } } function updateModalProductTitle(title) { var productTitle = document.getElementById('modalProductTitle'); var productMobileTitle = document.getElementById('mobileModalProductTitle'); if (title.includes('Default Title')){ productTitle.innerHTML = `

Universal Audio OX Stomp Dynamic Speaker Emulator

`; productMobileTitle.innerHTML = `

Universal Audio OX Stomp Dynamic Speaker Emulator

`; return `Universal Audio OX Stomp Dynamic Speaker Emulator`; } else{ productTitle.innerHTML = title; productMobileTitle.innerHTML = title; return title; } } function updateModalInformation(selectedVariant){ var productVariants = [{"id":49860833509701,"title":"Default Title","option1":"Default Title","option2":null,"option3":null,"sku":null,"requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Universal Audio OX Stomp Dynamic Speaker Emulator","public_title":null,"options":["Default Title"],"price":37900,"weight":1000,"compare_at_price":null,"inventory_management":"shopify","barcode":"Custom Product","requires_selling_plan":false,"selling_plan_allocations":[]}] var productTitleBase = `Universal Audio OX Stomp Dynamic Speaker Emulator`; var productTitleDOM = document.getElementById('modalProductTitle'); var productMobileTitleDOM = document.getElementById('mobileModalProductTitle'); var productPriceDOM = document.getElementById('modalPrice'); var currency = `€`; var image = document.getElementById('offerImage'); var mobileImage = document.getElementById('productImageMobile'); productVariants.forEach(function (variant) { if (variant.id == selectedVariant){ var variantTitle = variant.title; var variantTitleArray = variantTitle.split(' / '); var newVariantTitle = ''; variantTitleArray.forEach(function (title, index){ newVariantTitle += `

${title}

`; }); let newTitle = `

${productTitleBase}

` + newVariantTitle; productTitleDOM.innerHTML = newTitle; productPriceDOM.innerHTML = currency + variant.price / 100.0; productTitle = updateModalProductTitle(newTitle); productTitleText = [...document.getElementById('modalProductTitle').children].map(child => child.textContent.trim()).join(' / '); priceMaxNumber = parseFloat(variant.price / 100.0).toFixed(2); if (variant?.featured_image?.src) { image.src = variant?.featured_image?.src; mobileImage.src = variant?.featured_image?.src; prodOfferImageSrc = variant?.featured_image?.src; } validateOfferAmount(); selectedSKU = variant.sku; } }); } function updateQuantity(quantity) { var offerQuantity = document.querySelector('#OfferInput[name="quantity"]'); offerQuantity.value = quantity; validateOfferAmount(); } function hidePriceForStores(){ var storesForHidingPrice = [8722284] if (storesForHidingPrice.includes(52950827161) ) { var modalPrice = document.getElementById('modalPrice'); modalPrice.style.display = 'none'; } } function validateOfferAmount() { const offerInput = document.querySelector('input[name="offerAmount"]'); const priceDOM = document.getElementById('modalPrice') const currency = `€`; const offer = offerInput.value; const offerRegex = /^\d+(\.\d{1,2})?$/; const useTotalAmount = true; const inputQuantity = document.querySelector('input[name="quantity"].offerInput'); const quantity = inputQuantity ? inputQuantity.value : 1; updatedPriceMaxNumber = useTotalAmount ? priceMaxNumber * quantity : priceMaxNumber; priceDOM.innerHTML = currency + formatPrice(updatedPriceMaxNumber); var issue; if (!offerRegex.test(offer)) { issue = 'Invalid Offer. Numbers and decimals only.' offerInput.setCustomValidity('Please enter only numbers and a decimal point'); } else if (parseFloat(offer) >= updatedPriceMaxNumber) { issue = 'Offer Cannot Exceed Price' offerInput.setCustomValidity('Please enter an offer less than the price'); } else if (parseFloat(offer) <= 0) { issue = 'Offer Must Be Above Zero' offerInput.setCustomValidity('Please enter an offer greater than 0'); } else { offerInput.setCustomValidity(''); } // update element with id modalPrice to inclue a percentage off const modalPrice = document.getElementById('modalPrice'); const percentageOff = (1 - (parseFloat(offer) / updatedPriceMaxNumber)) * 100; const priceTwoDecimal = formatPrice(updatedPriceMaxNumber); if (offer !== '' && offerRegex.test(offer) && parseFloat(offer) < updatedPriceMaxNumber && parseFloat(offer) > 0){ modalPrice.innerHTML = '€' + ''+priceTwoDecimal+'' + '
' + '€' + formatPrice(offer) + ' (' + percentageOff.toFixed(2) + '% off)'; } else if (offer !== ''){ modalPrice.innerHTML = '€' + priceTwoDecimal + '
' + issue; } else { modalPrice.innerHTML = '€' + priceTwoDecimal + '

'; } } function formatPrice(price) { //if price is a string, convert it to a number price = parseFloat(price).toFixed(2); price = (price.endsWith('.00') ? parseInt(price, 10) : price).toString(); // add commas to the price if it is greater than 999 and remove nubmers after decimal if (price > 999) { return price.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ","); } else { return price; } } function showSpinner(){ var rightSide = document.getElementById('rightSide'); var leftSide = document.getElementById('leftSide'); rightSide.style.display = 'none'; leftSide.style.display = 'none'; var offerlySpinner = document.getElementById('offerlySpinner'); offerlySpinner.style.display = 'flex'; } function hideSpinner(){ var rightSide = document.getElementById('rightSide'); var leftSide = document.getElementById('leftSide'); var offerlySpinner = document.getElementById('offerlySpinner'); offerlySpinner.style.display = 'none'; rightSide.style.display = 'flex'; leftSide.style.display = 'flex'; } function updateModalState(header, content, buttonText, onClick, offerData){ var modal = document.getElementById('OfferlyModalDiv'); var modalHeader = document.getElementById('offerlyModalHeader'); var inputFields = document.getElementById('offerInputFields'); var rightSide = document.getElementById('rightSide'); var modalMessage = document.getElementById('modalTextInformation'); var submitOfferButton = document.getElementById('submitOfferButton'); var offerlyHeaderStoreLogo = document.getElementById('offerlyHeaderStoreLogo'); offerlyHeaderStoreLogo.style.display = 'none'; modalHeader.style.display = 'flex'; modalMessage.textContent = content; inputFields.style.display = 'none'; rightSide.style.display = 'none'; modalHeader.innerHTML = header; submitOfferButton.textContent = buttonText; submitOfferButton.onclick = function(){ mixpanel.track("Modal Button Clicked", { shop: `www.tonefestguitargallery.com`, productTitle: `Universal Audio OX Stomp Dynamic Speaker Emulator`, buttonText: buttonText, } ); onClick() }; if (offerData?.discountCode && offerData?.showAddToCart) { submitOfferButton.style.display = 'none'; var modalAddToCartButton = document.getElementById('modalAddToCartButton'); updateOfferButton(modalAddToCartButton, findAddToCartButton()); var modalAddToCartButton = document.getElementById('modalAddToCartButton'); modalAddToCartButton.style.display = 'block'; modalAddToCartButton.onclick = function() { mixpanel.track("Modal Button Clicked", { shop: `www.tonefestguitargallery.com`, productTitle: `Universal Audio OX Stomp Dynamic Speaker Emulator`, buttonText: 'Add to Cart', }); let formData = { 'items': [{ 'id': offerData.productVariantId, 'quantity': offerData.quantity, 'discount_code': offerData.discountCode, }] }; fetch(window.Shopify.routes.root + 'cart/add.js', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(formData) }) .then(response => //print the response to the console response.json() ) .then(data => { // get dicsountCodes from local storage var discountCodes = JSON.parse(localStorage.getItem('OfferlyCodes')) || {}; discountArray = []; for (const [key, value] of Object.entries(discountCodes)) { discountArray.push(value); } fetch(`/checkout?discount=${discountArray.join(',')}`) .then(response => response.json()) .then(data => { //navigate to the cart page window.location.href = '/cart'; }) .catch((error) => { console.error('Error:', error); window.location.href = '/cart'; }); }) .catch((error) => { console.error('Error:', error); window.location.href = '/cart'; }); }; } } function closeOfferlyModal(){ var modal = document.getElementById('OfferlyModalDiv'); modal.style.display = 'none'; mixpanel.track("Modal Closed", { shop: `www.tonefestguitargallery.com`, productTitle: `Universal Audio OX Stomp Dynamic Speaker Emulator`, } ); if (Shopify.designMode) { localStorage.setItem('offerButtonClicked', 'false'); } } function backAndClearAmount(){ var offerInput = document.querySelector('input[name="offerAmount"]'); offerInput.value = ''; var modalMessage = document.getElementById('modalTextInformation'); modalMessage.textContent = ''; var inputFields = document.getElementById('offerInputFields'); var rightSide = document.getElementById('rightSide'); rightSide.style.display = 'flex'; inputFields.style.display = 'block'; var modalHeader = document.getElementById('offerlyModalHeader'); modalHeader.innerHTML = 'Make An Offer'; var submitOfferButton = document.getElementById('submitOfferButton'); var offerlyHeaderStoreLogo = document.getElementById('offerlyHeaderStoreLogo'); if (52950827161 == 50712314049) { modalHeader.display = 'none'; offerlyHeaderStoreLogo.style.display = 'flex'; } submitOfferButton.innerHTML = `Send Offer`; submitOfferButton.onclick = function(){ submitOffer(); }; } function checkoutButton(url){ window.location.href = url } function inactivityAlertOfferly(maxInactivityTime) { let timeOfferly; // Function to reset the timer const resetOfferlyTimer = () => { if (timeOfferly) { clearTimeout(timeOfferly); } if (!offerlyModalOpenedOnce) { // Only set the timer if modal hasn't been opened timeOfferly = setTimeout(showInactivityAlertOfferly, maxInactivityTime); } }; // Function to show an alert when the user has been inactive function showInactivityAlertOfferly() { var modal = document.getElementById('OfferlyModalDiv'); if (modal.style.display != 'flex' && !offerlyModalOpenedOnce) { clearTimeout(timeOfferly); // Clear the timeout to stop polling openModal(); } } // Events that reset the timer window.onload = resetOfferlyTimer; document.onmousemove = resetOfferlyTimer; document.onkeypress = resetOfferlyTimer; document.onclick = resetOfferlyTimer; document.onscroll = resetOfferlyTimer; }; if (Shopify.designMode) { var modal = document.getElementById('OfferlyModalDiv'); // get local storage value var offerButtonClicked = localStorage.getItem('offerButtonClicked'); if (modal && offerButtonClicked === 'true') { // if you have clicked the button to open the modal once keep it open. modal.style.display = 'flex'; } } function populateUserInformation() { // if the user is logged in populate user information var customerName = document.querySelector('input[name="customerName"]'); var customerEmail = document.querySelector('input[name="customerEmail"]'); var customerNameValue = `` var customerEmailValue = `` if (customerName && customerNameValue) { customerName.value = customerNameValue; } if (customerEmail && customerEmailValue) { customerEmail.value = customerEmailValue; } } function showButton(){ let showButton = false; switch (showButtonInformation.productSelectorType) { case 'all': showButton = true; break; case 'collections': collectionsString = collectionsString.slice(0, -1); collectionsString.split(',').forEach((collection) => { if (showButtonInformation.selectedProducts.includes(collection) && collection.length > 0) { showButton = true; } }); break; case 'products': if (showButtonInformation.selectedProducts.includes(productVariantId)) { showButton = true; } break; case 'none': showButton = false; break; default: showButton = false; } var soldOut = [...document.querySelectorAll('button')].find((button) => button.textContent.trim().toLowerCase().includes('sold out') ) var ignoreSoldOut = [67113091311, 78280556873, 58405322835, 20281681, 61769482425, 27527348276, 57320276143]; if (soldOut && !ignoreSoldOut.includes(52950827161)) { showButton = false; } //if showButton is false delete the modal from the page // if (!showButton){ // var modal = document.getElementById('OfferlyModalDiv'); // if (modal){ // modal.remove(); // } // } //exclude this collection if ( 52950827161 == 86812131607 ){ var collectionsToExclude = ['477039395095']; collectionsString = collectionsString.slice(0, -1); collectionsString.split(',').forEach((collection) => { if (collectionsToExclude.includes(collection) && collection.length > 0) { showButton = false; } }); } return showButton; } function validateEmail(email) { var re = /\S+@\S+\.\S+/; return re.test(email); } function fixColorOfTexts(){ var labels = document.querySelectorAll('.offerly-input-label'); var Title = document.getElementById('offerlyModalHeader'); var modalPrice = document.getElementById('modalPrice'); var productTitle = document.getElementById('productTitleOfferModal'); var titleColor = rgbToHex(window.getComputedStyle(Title).color); var productTitleColor = rgbToHex(window.getComputedStyle(productTitle).color); var priceColor = rgbToHex(window.getComputedStyle(modalPrice).color); var modalColor = rgbToHex(window.getComputedStyle(document.querySelector('.offerly-modal-content')).backgroundColor); //if the color of the title and the background of the modal are the same //change the color of the title to black if (titleColor === modalColor){ Title.style.color = 'black'; } //if the color of the price and the background of the modal are the same //change the color of the price to black if (priceColor === modalColor){ modalPrice.style.color = 'black'; } //if the color of the product title and the background of the modal are the same //change the color of the product title to black if (productTitleColor === modalColor){ productTitle.style.color = 'black'; } //if the color of the labels and the background of the modal are the same //change the color of the labels to black labels.forEach(function(label){ var labelColor = rgbToHex(window.getComputedStyle(label).color); //get modal background color by the class offerly-modal-content //compare the color of the label and the background of the modal //if they are similar change the color of the label to black if (labelColor === modalColor){ // if the color is white change it to black if (labelColor === '#ffffff'){ label.style.color = 'black'; } else { label.style.color = 'white'; } } }); }; function rgbToHex(rgb) { // This regex splits the RGB values into an array let arr = rgb.match(/\d+/g); // Convert each RGB value to a two-digit hexadecimal value // if there is an opacity value, ignore it let hex = arr.map((val, index) => { if (index < 3) { return ('0' + parseInt(val).toString(16)).slice(-2); } }).join(''); return '#' + hex; } function submitOffer(){ //validate productVaraintID if (productVariantId.toString().match(/[^0-9]/g)){ var productVariants = [{"id":49860833509701,"title":"Default Title","option1":"Default Title","option2":null,"option3":null,"sku":null,"requires_shipping":true,"taxable":true,"featured_image":null,"available":true,"name":"Universal Audio OX Stomp Dynamic Speaker Emulator","public_title":null,"options":["Default Title"],"price":37900,"weight":1000,"compare_at_price":null,"inventory_management":"shopify","barcode":"Custom Product","requires_selling_plan":false,"selling_plan_allocations":[]}] productVariants.forEach(function (variant) { if (productTitleText.includes(variant.title) || productTitleText.includes(variant.name)){ productVariantId = variant.id; } }); } var inputs = document.querySelectorAll('.offerInput'); var data = {}; var isValid = true; inputs.forEach(function (input) { if (input.style.display === 'none'){ return; } else if (input.name == 'termsCheckboxName' && !input.checked && false) { isValid = false; input.classList.add('offerInputError'); } else if (input.value.trim() === '' && input.name=='additionalTextField' && false) { isValid = false; input.classList.add('offerInputError'); } else if (input.value.trim() === '' && input.name=='customerPhone' && false) { isValid = false; input.classList.add('offerInputError'); } else if (input.value.trim() === '' && input.name!='additionalTextField' && input.name!='customerPhone') { isValid = false; input.classList.add('offerInputError'); } else if (input.name === 'offerAmount' && parseFloat(input.value) >= updatedPriceMaxNumber) { isValid = false; input.classList.add('offerInputError'); } else if (input.name === 'offerAmount' && parseFloat(input.value) <= 0) { isValid = false; input.classList.add('offerInputError'); } else if(input.name == 'offerAmount' && !input.value.match(/^\d+(\.\d{1,2})?$/)){ isValid = false; input.classList.add('offerInputError'); } else if (input.name == 'customerEmail' && !validateEmail(input.value)) { isValid = false; input.classList.add('offerInputError'); } else { input.classList.remove('offerInputError'); } data[input.name] = input.value; }); delete data['termsCheckboxName']; data['quantity'] = data['quantity'] ? parseInt(data['quantity']) : 1; data['productVariantId'] = productVariantId.toString(); data['productPriceMax'] = priceMaxNumber; data['productTitle'] = productTitleText; data['offerAmount'] = true ? (parseFloat(data['offerAmount']) / parseInt(data['quantity'])).toFixed(2) : data['offerAmount'] ; data['productLink'] = "/products/universal-audio-ox-stomp-dynamic-speaker-emulator" + "?variant=" + productVariantId; data['currency'] = currency; data['currencySymbol'] = currencySymbol data['variantSKU'] = selectedSKU?.toString(); data['productID'] = productID?.toString(); data['productVendor'] = productVendor?.toString(); data['imageSrc'] = prodOfferImageSrc ? prodOfferImageSrc : document.getElementById('offerImage')?.src; var additionalTextInput = document.querySelector('textarea[name="additionalTextField"]'); if (additionalTextInput) { data['additionalTextField'] = additionalTextInput.value; } if (!isValid) { return; } mixpanel.track("Offer Submitted", { shop: `www.tonefestguitargallery.com`, productTitle: `Universal Audio OX Stomp Dynamic Speaker Emulator`, offerAmount: data['offerAmount'], } ); //disable the button var submitOfferButton = document.getElementById('submitOfferButton'); submitOfferButton.disabled = true; fetch('/apps/offerly-proxy/app/acceptOffers?', { method: 'POST', body: JSON.stringify(data), }) .then((response) => response.json()) .then((data) => { //enable the button submitOfferButton.disabled = false; var delayForAutoResponse = delayAutoMessage ? autoResponseDelay : 0; if (data.offerStatus === 'Pending'){ if (52950827161 == 50712314049 ){ updateModalState("Thank you for contacting Lougher", "A member of our sales team will get back to you shortly.", "Close", closeOfferlyModal); } if (52950827161 == 58351059100){ updateModalState("Thank you for your offer!", "You should see a response within 2-10 minutes. If you do not see an email from us after a few hours, please check your junk/spam folder.", "Close", closeOfferlyModal); } else{ updateModalState("Thank You!", "We will get back to you shortly.", "Close", closeOfferlyModal); } mixpanel.track("Offer Pending", { shop: `www.tonefestguitargallery.com`, productTitle: `Universal Audio OX Stomp Dynamic Speaker Emulator`, offerAmount: data['offerAmount'], }); } if (data.offerStatus === 'Auto-Declined'){ mixpanel.track("Offer Auto-Declined", { shop: `www.tonefestguitargallery.com`, productTitle: `Universal Audio OX Stomp Dynamic Speaker Emulator`, offerAmount: data['offerAmount'], }); showSpinner(); setTimeout(function(){ hideSpinner(); updateModalState("Try Again!", "Your offer was too low. Please try again!", "Try Again", backAndClearAmount ); }, delayForAutoResponse * 1000); } if (data.offerStatus === 'Auto-Accepted'){ mixpanel.track("Offer Auto-Accepted", { shop: `www.tonefestguitargallery.com`, productTitle: `Universal Audio OX Stomp Dynamic Speaker Emulator`, offerAmount: data['offerAmount'], }); //get the discount code from the local storage var storedCodes = localStorage.getItem('OfferlyCodes'); var storedCodesObject = storedCodes ? JSON.parse(storedCodes) : {}; //update the discount code for the productVariantId storedCodesObject[data.productVariantId] = data?.discountCode; //store the discount code in the local storage as a tuple of productVarinatId and discountCode but make it queryable by the 'OfferlyCodes' //also make sure to replace the discount code if it already exists for that productVariantId localStorage.setItem('OfferlyCodes', JSON.stringify(storedCodesObject)); showSpinner(); setTimeout(function(){ hideSpinner(); updateModalState("Congratulations!", "Great news! Your offer was accepted. Click below to proceed to checkout with your discount applied!", "Checkout", function(){checkoutButton(data.checkoutLink)} , data ) }, delayForAutoResponse * 1000); } if (data.offerStatus === 'Auto-Countered'){ mixpanel.track("Offer Auto-Countered", { shop: `www.tonefestguitargallery.com`, productTitle: `Universal Audio OX Stomp Dynamic Speaker Emulator`, offerAmount: data['offerAmount'], }); //get the discount code from the local storage var storedCodes = localStorage.getItem('OfferlyCodes'); var storedCodesObject = storedCodes ? JSON.parse(storedCodes) : {}; //update the discount code for the productVariantId storedCodesObject[data.productVariantId] = data?.discountCode; //store the discount code in the local storage as a tuple of productVarinatId and discountCode but make it queryable by the 'OfferlyCodes' //also make sure to replace the discount code if it already exists for that productVariantId localStorage.setItem('OfferlyCodes', JSON.stringify(storedCodesObject)); // wait 10 seconds before updating modal showSpinner(); setTimeout(function(){ hideSpinner(); updateModalState("Countered!", `Your offer was countered to ${data.currencySymbol}${parseFloat(data.counterAmount).toFixed(2)} ${data.currency}. Click below to proceed to checkout with your discount applied!`, "Checkout", function(){checkoutButton(data.checkoutLink)}, data) }, delayForAutoResponse * 1000); } }) .catch((error) => { // Handle any errors console.error(error); mixpanel.track("Offer Error", { shop: `www.tonefestguitargallery.com`, productTitle: `Universal Audio OX Stomp Dynamic Speaker Emulator`, offerAmount: data['offerAmount'], } ); updateModalState("Error Occurred!", "An error occurred while submitting your offer. Please try again.", "Try Again", backAndClearAmount); }); }

Universal Audio OX Stomp Dynamic Speaker Emulator (2024)

References

Top Articles
Wi Dept Of Regulation & Licensing
Et si le food-truck urbain avait aussi sa place à la campagne ? | TF1 INFO
Spasa Parish
Rentals for rent in Maastricht
159R Bus Schedule Pdf
Sallisaw Bin Store
Black Adam Showtimes Near Maya Cinemas Delano
Espn Transfer Portal Basketball
Pollen Levels Richmond
11 Best Sites Like The Chive For Funny Pictures and Memes
Things to do in Wichita Falls on weekends 12-15 September
Craigslist Pets Huntsville Alabama
Paulette Goddard | American Actress, Modern Times, Charlie Chaplin
Red Dead Redemption 2 Legendary Fish Locations Guide (“A Fisher of Fish”)
What's the Difference Between Halal and Haram Meat & Food?
R/Skinwalker
Rugged Gentleman Barber Shop Martinsburg Wv
Jennifer Lenzini Leaving Ktiv
Justified - Streams, Episodenguide und News zur Serie
Epay. Medstarhealth.org
Olde Kegg Bar & Grill Portage Menu
Cubilabras
Half Inning In Which The Home Team Bats Crossword
Amazing Lash Bay Colony
Juego Friv Poki
Dirt Devil Ud70181 Parts Diagram
Truist Bank Open Saturday
Water Leaks in Your Car When It Rains? Common Causes & Fixes
What’s Closing at Disney World? A Complete Guide
New from Simply So Good - Cherry Apricot Slab Pie
Drys Pharmacy
Ohio State Football Wiki
Find Words Containing Specific Letters | WordFinder®
FirstLight Power to Acquire Leading Canadian Renewable Operator and Developer Hydromega Services Inc. - FirstLight
Webmail.unt.edu
2024-25 ITH Season Preview: USC Trojans
Metro By T Mobile Sign In
Trade Chart Dave Richard
Lincoln Financial Field Section 110
Free Stuff Craigslist Roanoke Va
Wi Dept Of Regulation & Licensing
Pick N Pull Near Me [Locator Map + Guide + FAQ]
Crystal Westbrooks Nipple
Ice Hockey Dboard
Über 60 Prozent Rabatt auf E-Bikes: Aldi reduziert sämtliche Pedelecs stark im Preis - nur noch für kurze Zeit
Wie blocke ich einen Bot aus Boardman/USA - sellerforum.de
Infinity Pool Showtimes Near Maya Cinemas Bakersfield
Dermpathdiagnostics Com Pay Invoice
How To Use Price Chopper Points At Quiktrip
Maria Butina Bikini
Busted Newspaper Zapata Tx
Latest Posts
Article information

Author: Carmelo Roob

Last Updated:

Views: 5766

Rating: 4.4 / 5 (45 voted)

Reviews: 84% of readers found this page helpful

Author information

Name: Carmelo Roob

Birthday: 1995-01-09

Address: Apt. 915 481 Sipes Cliff, New Gonzalobury, CO 80176

Phone: +6773780339780

Job: Sales Executive

Hobby: Gaming, Jogging, Rugby, Video gaming, Handball, Ice skating, Web surfing

Introduction: My name is Carmelo Roob, I am a modern, handsome, delightful, comfortable, attractive, vast, good person who loves writing and wants to share my knowledge and understanding with you.