{"id":10576,"date":"2023-06-12T17:41:25","date_gmt":"2023-06-12T17:41:25","guid":{"rendered":"https:\/\/sunshinepartyrentals.com\/allianceohio\/foam-parties\/"},"modified":"2026-04-15T23:10:21","modified_gmt":"2026-04-15T23:10:21","slug":"foam-parties","status":"publish","type":"page","link":"https:\/\/sunshinepartyrentals.com\/allianceohio\/inventory\/foam-parties\/","title":{"rendered":"Foam Parties"},"content":{"rendered":"<!-- Start Shortcoder content --><!-- Cart -->\r\n<div class=\"cartInfo\" style=\"display:none\">\r\n    <i class=\"cartIcon fas fa-shopping-cart\"><\/i><!--no linebreak bc elementor--> <span class=\"simpleCart_quantity\"><\/span> items\r\n<\/div>\r\n\r\n<div class=\"pageDateRangeWrapper elementor-widget-button\">\r\n    <div class=\"elementor-button elementor-animation-grow\" onclick=\"checkAvailDateClick()\" style=\"display:block\">\r\n        <div class=\"ioDateRangeHeader\">Set Event Date<\/div>\r\n        <div id=\"pageDateRange\" class=\"ioDateRange\"><\/div>\r\n    <\/div>\r\n<\/div>\r\n<div class=\"io_category_wrapper elementor-widget-heading\">\r\n    <h1 class=\"catNameIO elementor-heading-title elementor-size-default\">Foam Parties<span class=\"io_forrent io_forrent_221749\"> for Rent<\/span><\/h1>\r\n<\/div>\r\n\r\n<!-- Add View Toggle Buttons -->\r\n<div class=\"io_view_toggle_container\" style=\"display:none;\">\r\n    <div class=\"io_view_toggle_buttons\">\r\n        <button class=\"io_view_toggle_btn active\" data-view=\"tile\" title=\"Tile View\">\r\n            <i class=\"fas fa-th-large\"><\/i>\r\n        <\/button>\r\n        <button class=\"io_view_toggle_btn\" data-view=\"list\" title=\"List View\">\r\n            <i class=\"fas fa-list\"><\/i>\r\n        <\/button>\r\n    <\/div>\r\n<\/div>\r\n<div class=\"category_id\" style=\"display: none\">221749<\/div>\r\n<div class=\"cat_div_wrapper\"><div class=\"io_cat_description io_cat_description_221749 elementor-widget-text-editor catDescriptionIO\"><\/p>\n<p>Sunshine Party &amp; Event Rental provides professional foam party rentals throughout East Liverpool, Ohio and the surrounding tri-state area. Using commercial-grade foam cannons and hypoallergenic foam solution, our foam parties are a safe, high-energy attraction for birthday parties, school events, church events, 5K races, and community celebrations within a 50-mile radius of East Liverpool, including Youngstown, Ohio and Pittsburgh, Pennsylvania, as well as events across Ohio, Pennsylvania, and West Virginia.\n<\/p>\n<p><\/div><\/div>\r\n<div class=\"io_catdiv2\"><\/div>\r\n<div class=\"io_landingpages io_landingpages_221749 elementor-widget-text-editor\"><!-- Start Shortcoder content -->                                Professional delivery to <span class=\\\"io_city_list\\\">East Liverpool OH<\/span> and surrounding areas. Please submit a quote or contact us to be sure we service your area.                                                        <!-- End Shortcoder content --><\/div>\r\n<div class=\"io_cat_longdescription io_cat_longdescription_221749 elementor-widget-text-editor\"><\/p>\n<p data-end=\"1295\" data-start=\"902\">Foam party rentals are one of the most exciting and interactive event attractions available, and Sunshine Party &amp; Event Rental offers <strong data-end=\"1065\" data-start=\"1036\">professional foam parties<\/strong> throughout <strong data-end=\"1138\" data-start=\"1077\">East Liverpool, Ohio and the surrounding tri-state region<\/strong>. Using powerful foam cannons, we create a fun, high-energy environment where guests can play, dance, and interact inside mountains of clean, fluffy bubbles.<\/p>\n<p data-end=\"1722\" data-start=\"1297\">Our foam parties are ideal for <strong data-end=\"1450\" data-start=\"1328\">birthday parties, school events, church events, 5K races, festivals, corporate family days, and community celebrations<\/strong>. Foam cannons continuously launch foam into a designated play area, creating an unforgettable experience that appeals to kids, teens, and adults alike. Foam parties are especially popular for summer events and outdoor gatherings looking for something unique and engaging.<\/p>\n<p data-end=\"2089\" data-start=\"1724\">Safety is a top priority with our foam party rentals. We use <strong data-end=\"1828\" data-start=\"1785\">hypoallergenic, non-toxic foam solution<\/strong> that is safe for skin, clothing, and the environment when used as directed. Foam parties are designed for supervised play and can be adjusted for different age groups and event sizes, making them suitable for both small private parties and large public events.<\/p>\n<p data-end=\"2420\" data-start=\"2091\">All foam party rentals include professional equipment, setup, and operation guidance from an experienced team to ensure proper placement, foam coverage, and smooth event flow. Our foam cannons are commercial-grade and capable of supporting high-traffic events such as school field days, fun runs, and community-wide celebrations.<\/p>\n<p data-end=\"2797\" data-start=\"2422\">Based in <strong data-end=\"2455\" data-start=\"2431\">East Liverpool, Ohio<\/strong>, Sunshine Party &amp; Event Rental serves events within a <strong data-end=\"2528\" data-start=\"2510\">50-mile radius<\/strong>, including <strong data-end=\"2560\" data-start=\"2540\">Youngstown, Ohio<\/strong>, <strong data-end=\"2590\" data-start=\"2562\">Pittsburgh, Pennsylvania<\/strong>, and surrounding communities throughout the Ohio Valley. We also provide foam party rentals across <strong data-end=\"2731\" data-start=\"2690\">Ohio, Pennsylvania, and West Virginia<\/strong>, making us a trusted provider for both local and regional events.<\/p>\n<p data-end=\"3097\" data-start=\"2799\">If you&rsquo;re searching for <strong data-end=\"2871\" data-start=\"2823\">foam party rentals near East Liverpool, Ohio<\/strong>, <strong data-end=\"2911\" data-start=\"2873\">foam machine rentals in Youngstown<\/strong>, or <strong data-end=\"2955\" data-start=\"2916\">foam parties in the Pittsburgh area<\/strong>, Sunshine Party &amp; Event Rental delivers professional equipment, safe foam solutions, and unforgettable entertainment for events of all sizes.<\/p>\n<p><\/div>\r\n<script>\r\n    function CategoryGallery(rental_id, rental_name, images_arr){\r\n        var rid = rental_id;\r\n        var rentalName = rental_name;\r\n\r\n        \/\/ Normalize images_arr: it may arrive as a JSON string, an object, or be undefined\r\n        try {\r\n            if (typeof images_arr === 'string' && images_arr.length) {\r\n                images_arr = JSON.parse(images_arr);\r\n            }\r\n        } catch (e) {\r\n            images_arr = {};\r\n        }\r\n        if (!images_arr) images_arr = {};\r\n\r\n        \/\/ Where to append anchors and thumbs\r\n        var $bigAfter = jQuery('#io_img_big2_' + rid);\r\n        var $thumbAfter = jQuery('#io_img_thumb1_' + rid);\r\n\r\n        if ($bigAfter.length && $thumbAfter.length) {\r\n            var relVal = $bigAfter.attr('rel') || 'img_group noopener';\r\n\r\n            \/\/ Helper to validate a URL-like value (non-empty and not literal placeholders)\r\n            var isValid = function (u) {\r\n                if (!u) return false;\r\n                var s = String(u).trim();\r\n                if (!s) return false;\r\n                if (s.indexOf('%%') !== -1) return false; \/\/ ignore unreplaced placeholders\r\n                if (s === '0' || s.toLowerCase() === 'null' || s.toLowerCase() === 'undefined') return false;\r\n                return true;\r\n            };\r\n\r\n            var addedThumbs = 0;\r\n\r\n            \/\/ Iterate image map and append missing big anchors and thumbs\r\n            for (var key in images_arr) {\r\n                if (!images_arr.hasOwnProperty(key)) continue;\r\n                var imgObj = images_arr[key] || {};\r\n                var href = imgObj[\"rentalimage_imagelocbig\"] || imgObj[\"imagelocbig\"] || imgObj[\"big\"];\r\n                var src  = imgObj[\"rentalimage_imageloc\"]    || imgObj[\"imageloc\"]    || imgObj[\"thumb\"];\r\n\r\n                \/\/ Compute index consistent with existing templates\r\n                var n = parseInt(key, 10);\r\n                if (isNaN(n)) {\r\n                    \/\/ Try to derive from position by incrementing a counter if keys are not numeric\r\n                    n = 1;\r\n                }\r\n                \/\/ Category templates already include big1, big2, and thumb1; gallery adds 2+ when missing\r\n                var bigIndex = n + 1;   \/\/ matches io_cart_shortcode.html pattern\r\n                var thumbIndex = n + 1; \/\/ thumb id series aligns with big series in newer code\r\n\r\n                \/\/ Add big anchor if valid and not already present\r\n                if (isValid(href)) {\r\n                    var bigId = '#io_img_big' + bigIndex + '_' + rid;\r\n                    if (jQuery(bigId).length === 0) {\r\n                        var $a = jQuery('<a\/>', {\r\n                            rel: relVal,\r\n                            href: href,\r\n                            id: 'io_img_big' + bigIndex + '_' + rid\r\n                        });\r\n                        $bigAfter.after($a);\r\n                        $bigAfter = $a; \/\/ maintain insertion point\r\n                    }\r\n                }\r\n\r\n                \/\/ Add thumbnail if valid and not already present\r\n                if (isValid(src)) {\r\n                    var thumbId = '#io_img_thumb' + thumbIndex + '_' + rid;\r\n                    if (jQuery(thumbId).length === 0) {\r\n                        var $img = jQuery('<img\/>', {\r\n                            'class': 'io_image_thumb skip-lazy',\r\n                            title: rentalName,\r\n                            src: src,\r\n                            alt: rentalName,\r\n                            id: 'io_img_thumb' + thumbIndex + '_' + rid\r\n                        }).on('mouseover', function () {\r\n                            if (typeof updateMainPic === 'function') {\r\n                                updateMainPic(this);\r\n                            }\r\n                        });\r\n                        $thumbAfter.after($img);\r\n                        $thumbAfter = $img; \/\/ maintain insertion point\r\n                        addedThumbs++;\r\n                    }\r\n                }\r\n            }\r\n\r\n            \/\/ Reveal the thumbnail box if we added any extra thumbnails\r\n            if (addedThumbs > 0) {\r\n                jQuery('#io_img_thumb1_' + rid).closest('.io_image_thumbbox').show();\r\n            }\r\n        }\r\n    }\r\n\r\n    \/\/ Function to generate list view content on demand (global scope)\r\n    generateListViewContent = function() {\r\n        console.log('[IO List View] Generating list view content dynamically');\r\n        \r\n        jQuery('.io_item2_list').each(function() {\r\n            var $item = jQuery(this);\r\n            \r\n            \/\/ Skip if already generated\r\n            if ($item.find('.io_list_view_content').length > 0) {\r\n                return;\r\n            }\r\n            \r\n            \/\/ Extract rental_id from the item\r\n            var rentalId = $item.find('.item_rentalid').text().trim();\r\n            if (!rentalId) {\r\n                console.warn('[IO List View] No rental_id found for item, skipping');\r\n                return;\r\n            }\r\n            \r\n            \/\/ Read data from dynamically named global variables\r\n            \/\/ var description = String(window['data_description_' + rentalId] || \"\").replace(\/[\\r\\n]+\/g, \"\").trim();\r\n            var indoorOutdoor = String(window.io_category_data[rentalId][\"indoor_outdoor\"] || \"\").replace(\/[\\r\\n]+\/g, \"\").trim();\r\n            var staff = String(window.io_category_data[rentalId][\"staff\"] || \"\").replace(\/[\\r\\n]+\/g, \"\").trim();\r\n            var electric = String(window.io_category_data[rentalId][\"electric\"] || \"\").replace(\/[\\r\\n]+\/g, \"\").trim();\r\n            var dimensions = String(window.io_category_data[rentalId][\"dimensions\"] || \"\").replace(\/[\\r\\n]+\/g, \"\").trim();\r\n            \r\n            \/\/ Helper function to strip HTML tags from text\r\n            var stripHtml = function(html) {\r\n                var tmp = document.createElement(\"DIV\");\r\n                tmp.innerHTML = html;\r\n                return (tmp.textContent || tmp.innerText || \"\").trim();\r\n            };\r\n            \r\n            \/\/ Helper function to escape HTML to prevent XSS\r\n            var escapeHtml = function(text) {\r\n                var map = {\r\n                    '&': '&amp;',\r\n                    '<': '&lt;',\r\n                    '>': '&gt;',\r\n                    '\"': '&quot;',\r\n                    \"'\": '&#039;'\r\n                };\r\n                return text.replace(\/[&<>\"']\/g, function(m) { return map[m]; });\r\n            };\r\n            \r\n            \/\/ Strip HTML tags from description\r\n            \/\/ description = stripHtml(description);\r\n            \r\n            \/\/ Build the HTML structure with escaped content\r\n            var html = '<div class=\"io_list_view_content\">';\r\n            \/\/ html += '<div class=\"io_item_description_line\">' + escapeHtml(description) + '<\/div>';\r\n            html += '<div class=\"io_item_details_labeled\">';\r\n            \r\n            \/\/ Setup field - only add if valid\r\n            if (indoorOutdoor && indoorOutdoor !== '0' && indoorOutdoor.length > 0) {\r\n                html += '<div class=\"io_detail_item io_detail_setup\">';\r\n                html += '<span class=\"io_detail_label\">Setup:<\/span>';\r\n                html += '<span class=\"io_detail_value\">' + escapeHtml(indoorOutdoor) + '<\/span>';\r\n                html += '<\/div>';\r\n            }\r\n            \r\n            \/\/ Operators field - only add if valid\r\n            var operatorsText = staff ? staff + ' Adult Supervision Required' : \"\";\r\n            if (operatorsText &&\r\n                operatorsText !== '0 Adult Supervision Required' && \r\n                operatorsText !== 'Adult Supervision Required' &&\r\n                operatorsText !== '0') {\r\n                html += '<div class=\"io_detail_item io_detail_operators\">';\r\n                html += '<span class=\"io_detail_label\">Operators:<\/span>';\r\n                html += '<span class=\"io_detail_value\">' + escapeHtml(operatorsText) + '<\/span>';\r\n                html += '<\/div>';\r\n            }\r\n            \r\n            \/\/ Power field - only add if valid\r\n            var powerText = electric ? electric + ' Outlets' : \"\";\r\n            if (powerText &&\r\n                powerText !== '0 Outlets' && \r\n                powerText !== '0.00 Outlets' && \r\n                powerText !== 'Outlets' &&\r\n                powerText !== '0') {\r\n                html += '<div class=\"io_detail_item io_detail_power\">';\r\n                html += '<span class=\"io_detail_label\">Power:<\/span>';\r\n                html += '<span class=\"io_detail_value\">' + escapeHtml(powerText) + '<\/span>';\r\n                html += '<\/div>';\r\n            }\r\n            \r\n            \/\/ Size field - only add if valid\r\n            if (dimensions && dimensions !== '0' && dimensions.length > 0) {\r\n                html += '<div class=\"io_detail_item io_detail_size\">';\r\n                html += '<span class=\"io_detail_label\">Size:<\/span>';\r\n                html += '<span class=\"io_detail_value\">' + escapeHtml(dimensions) + '<\/span>';\r\n                html += '<\/div>';\r\n            }\r\n            \r\n            html += '<\/div>'; \/\/ close io_item_details_labeled\r\n            html += '<\/div>'; \/\/ close io_list_view_content\r\n            \r\n            \/\/ Insert before the buttons container\r\n            $item.find('.io_buttons_container').before(html);\r\n        });\r\n    }\r\n\r\n    jQuery(document).ready(function($) {\r\n\r\n    jQuery(\".io_item2_list\").each(function(){\r\n        var rentalId = jQuery(this).find('.item_rentalid').text().trim();\r\n        if (io_categoryVariantImages == 'on'){\r\n            CategoryGallery(rentalId, window.io_category_data[rentalId]['rental_name'], window.io_category_data[rentalId][\"images_arr\"]);\r\n        }\r\n    });\r\n\r\n\r\n    console.log('[IO View Toggle] Document ready, initializing view toggle functionality');\r\n    \r\n    \/\/ Check if category_id has a numeric value to identify actual category pages\r\n    \/\/ This must happen before any view state is applied\r\n    var categoryId = $('.category_id').text().trim();\r\n    var hasNumericCategoryId = categoryId && !isNaN(categoryId) && categoryId.length > 0;\r\n    \r\n    if (!hasNumericCategoryId) {\r\n        console.log('[IO View Toggle] No valid numeric category ID found, this is not a category page - skipping initialization');\r\n        return;\r\n    }\r\n    \r\n    console.log('[IO View Toggle] Category page detected with categoryId:', categoryId);\r\n    $('body').addClass('io-has-category-id');\r\n    \r\n    \/\/ Show the toggle buttons on category pages\r\n    $('.io_view_toggle_container').show();\r\n    console.log('[IO View Toggle] Toggle buttons displayed for category page');\r\n    \r\n    \/\/ Track if view toggle has been initialized\r\n    var isInitialized = false;\r\n    \r\n    \/\/ Initialize view toggle functionality\r\n    function initViewToggle(force) {\r\n        \/\/ Skip if already initialized unless forced\r\n        if (isInitialized && !force) {\r\n            console.log('[IO View Toggle] Already initialized, skipping');\r\n            return;\r\n        }\r\n        \r\n        console.log('[IO View Toggle] Initializing view toggle functionality');\r\n        \r\n        \/\/ Check if toggle buttons exist\r\n        if ($('.io_view_toggle_btn').length === 0) {\r\n            console.warn('[IO View Toggle] Toggle buttons not found in DOM');\r\n            return;\r\n        }\r\n        console.log('[IO View Toggle] Found', $('.io_view_toggle_btn').length, 'toggle buttons');\r\n        \r\n        \/\/ Check if category container exists\r\n        if ($('.io_catdiv2').length === 0) {\r\n            console.warn('[IO View Toggle] Category container (.io_catdiv2) not found');\r\n            return;\r\n        }\r\n        console.log('[IO View Toggle] Found', $('.io_catdiv2').length, 'category containers');\r\n        \r\n        \/\/ Get saved view preference from localStorage\r\n        var savedView = localStorage.getItem('io_category_view') || 'tile';\r\n        console.log('[IO View Toggle] Retrieved saved view preference:', savedView);\r\n        \r\n        \/\/ Set initial view\r\n        $('.io_catdiv2').removeClass('tile-view list-view').addClass(savedView + '-view');\r\n        console.log('[IO View Toggle] Applied initial view class:', savedView + '-view');\r\n        \r\n        \/\/ Update button states\r\n        $('.io_view_toggle_btn').removeClass('active');\r\n        $('.io_view_toggle_btn[data-view=\"' + savedView + '\"]').addClass('active');\r\n        console.log('[IO View Toggle] Updated button states, active button:', savedView);\r\n        \r\n        \/\/ Generate list view content if initial view is list\r\n        if (savedView === 'list') {\r\n            if (typeof generateListViewContent === 'function') {\r\n                generateListViewContent();\r\n            } else {\r\n                console.warn('[IO View Toggle] generateListViewContent function not available yet');\r\n            }\r\n        }\r\n        \r\n        \/\/ Log current items count\r\n        var itemCount = $('.io_item2_list').length;\r\n        console.log('[IO View Toggle] Found', itemCount, 'items in category');\r\n        \r\n        \/\/ Handle toggle button clicks using native JavaScript for better compatibility\r\n        \/\/ Remove any existing event listeners first\r\n        $('.io_view_toggle_btn').off('click.viewToggle');\r\n        \r\n        \/\/ Use native JavaScript addEventListener for more reliable event handling\r\n        var buttons = document.querySelectorAll('.io_view_toggle_btn');\r\n        console.log('[IO View Toggle] Attaching event listeners to', buttons.length, 'buttons using native JS');\r\n        \r\n        buttons.forEach(function(button) {\r\n            \/\/ Remove any existing listener\r\n            var newButton = button.cloneNode(true);\r\n            button.parentNode.replaceChild(newButton, button);\r\n            \r\n            \/\/ Add fresh event listener\r\n            newButton.addEventListener('click', function(e) {\r\n                e.preventDefault();\r\n                e.stopPropagation();\r\n                \r\n                var view = this.getAttribute('data-view');\r\n                console.log('[IO View Toggle] Button clicked (native listener), switching to view:', view);\r\n                \r\n                \/\/ Generate list view content if switching to list view\r\n                if (view === 'list') {\r\n                    if (typeof generateListViewContent === 'function') {\r\n                        generateListViewContent();\r\n                    } else {\r\n                        console.warn('[IO View Toggle] generateListViewContent function not available');\r\n                    }\r\n                }\r\n                \r\n                \/\/ Update button states\r\n                document.querySelectorAll('.io_view_toggle_btn').forEach(function(btn) {\r\n                    btn.classList.remove('active');\r\n                });\r\n                this.classList.add('active');\r\n                console.log('[IO View Toggle] Updated button active states');\r\n                \r\n                \/\/ Update grid view\r\n                var catdiv = document.querySelector('.io_catdiv2');\r\n                if (catdiv) {\r\n                    catdiv.classList.remove('tile-view', 'list-view');\r\n                    catdiv.classList.add(view + '-view');\r\n                    console.log('[IO View Toggle] Applied view class:', view + '-view');\r\n                }\r\n                \r\n                \/\/ Save preference\r\n                localStorage.setItem('io_category_view', view);\r\n                console.log('[IO View Toggle] Saved view preference to localStorage:', view);\r\n                \r\n                \/\/ Debug: Log current layout state\r\n                setTimeout(function() {\r\n                    if (catdiv) {\r\n                        var containerClasses = catdiv.className;\r\n                        var visibleItems = document.querySelectorAll('.io_item2_list:not([style*=\"display: none\"])').length;\r\n                        console.log('[IO View Toggle] Layout updated - Container classes:', containerClasses);\r\n                        console.log('[IO View Toggle] Visible items after view change:', visibleItems);\r\n                        \r\n                        \/\/ Check if list view content is properly shown\/hidden\r\n                        if (view === 'list') {\r\n                            var visibleListContent = document.querySelectorAll('.io_list_view_content:not([style*=\"display: none\"])').length;\r\n                            console.log('[IO View Toggle] Visible list content elements:', visibleListContent);\r\n                        }\r\n                    }\r\n                }, 100);\r\n            }, true); \/\/ Use capture phase\r\n            \r\n            console.log('[IO View Toggle] Event listener attached to button:', newButton.getAttribute('data-view'));\r\n        });\r\n        \r\n        console.log('[IO View Toggle] Event handlers attached successfully');\r\n        \r\n        \/\/ Mark as initialized\r\n        isInitialized = true;\r\n    }\r\n    \r\n    \/\/ Initialize when page loads\r\n    console.log('[IO View Toggle] Starting initial setup');\r\n    initViewToggle();\r\n    \r\n    \/\/ Also initialize after dynamic content loads (if applicable)\r\n    $(document).on('io_content_loaded', function() {\r\n        console.log('[IO View Toggle] Dynamic content loaded event detected, reinitializing');\r\n        initViewToggle();\r\n    });\r\n    \r\n    \/\/ Debug: Monitor for DOM changes that might affect our functionality\r\n    if (typeof MutationObserver !== 'undefined') {\r\n        var mutationTimeout;\r\n        var lastItemCount = $('.io_item2_list').length;\r\n        \r\n        var observer = new MutationObserver(function(mutations) {\r\n            \/\/ Debounce: clear existing timeout and set a new one\r\n            clearTimeout(mutationTimeout);\r\n            \r\n            mutationTimeout = setTimeout(function() {\r\n                var currentItemCount = $('.io_item2_list').length;\r\n                \r\n                \/\/ Only trigger if we have new items that weren't there before\r\n                if (currentItemCount > lastItemCount) {\r\n                    console.log('[IO View Toggle] New items detected in DOM (' + lastItemCount + ' -> ' + currentItemCount + ')');\r\n                    lastItemCount = currentItemCount;\r\n                    \r\n                    \/\/ If already initialized, just generate list view content for new items if in list view\r\n                    if (isInitialized) {\r\n                        var currentView = localStorage.getItem('io_category_view') || 'tile';\r\n                        if (currentView === 'list') {\r\n                            console.log('[IO View Toggle] Generating list view content for new items');\r\n                            if (typeof generateListViewContent === 'function') {\r\n                                generateListViewContent();\r\n                            } else {\r\n                                console.warn('[IO View Toggle] generateListViewContent function not available');\r\n                            }\r\n                        }\r\n                    } else {\r\n                        \/\/ Not initialized yet, so initialize\r\n                        console.log('[IO View Toggle] Initializing due to new items');\r\n                        initViewToggle();\r\n                    }\r\n                }\r\n            }, 250); \/\/ 250ms debounce\r\n        });\r\n        \r\n        observer.observe(document.body, {\r\n            childList: true,\r\n            subtree: true\r\n        });\r\n        console.log('[IO View Toggle] DOM mutation observer started');\r\n    }\r\n    \r\n    \/\/ Debug: Log window resize events that might affect responsive layout\r\n    $(window).on('resize.viewToggle', function() {\r\n        var windowWidth = $(window).width();\r\n        var currentView = $('.io_catdiv2').hasClass('list-view') ? 'list' : 'tile';\r\n        console.log('[IO View Toggle] Window resized to:', windowWidth, 'px, current view:', currentView);\r\n    });\r\n    \r\n    console.log('[IO View Toggle] Initialization complete');\r\n});\r\n<\/script><!-- End Shortcoder content -->\n<!-- Start Shortcoder content --><script>window.io_category_data = window.io_category_data || {}; window.io_category_data['1922531'] = {\"indoor_outdoor\":\"\",\"staff\":\"\",\"electric\":\"2.00\",\"dimensions\":\"20x20\",\"rental_id\":\"1922531\",\"rental_name\":\"Standard Foam Party\",\"images_arr\":\"{\\u00220\\u0022:{\\u0022rentalimage_id\\u0022:\\u00221124663\\u0022,\\u0022rentalimage_createtime\\u0022:\\u00221689182041\\u0022,\\u0022rentalimage_modifiedtime\\u0022:\\u00221689182041\\u0022,\\u0022rentalimage_itemid\\u0022:\\u00221922531\\u0022,\\u0022rentalimage_order\\u0022:\\u00220\\u0022,\\u0022rentalimage_imageloc\\u0022:\\u0022https:\\\/\\\/rental.software\\\/users\\\/justusandrewsmith\\\/images\\\/maxresdefault_553968460.jpeg\\u0022,\\u0022rentalimage_imagelocbig\\u0022:\\u0022https:\\\/\\\/rental.software\\\/users\\\/justusandrewsmith\\\/images\\\/maxresdefault_553968460_big.jpeg\\u0022,\\u0022media_type\\u0022:\\u0022image\\u0022},\\u00221\\u0022:{\\u0022rentalimage_id\\u0022:\\u00221124665\\u0022,\\u0022rentalimage_createtime\\u0022:\\u00221689182041\\u0022,\\u0022rentalimage_modifiedtime\\u0022:\\u00221689182041\\u0022,\\u0022rentalimage_itemid\\u0022:\\u00221922531\\u0022,\\u0022rentalimage_order\\u0022:\\u00221\\u0022,\\u0022rentalimage_imageloc\\u0022:\\u0022https:\\\/\\\/rental.software\\\/users\\\/justusandrewsmith\\\/images\\\/foam-2_524402676.jpeg\\u0022,\\u0022rentalimage_imagelocbig\\u0022:\\u0022https:\\\/\\\/rental.software\\\/users\\\/justusandrewsmith\\\/images\\\/foam-2_524402676_big.jpeg\\u0022,\\u0022media_type\\u0022:\\u0022image\\u0022},\\u00222\\u0022:{\\u0022rentalimage_id\\u0022:\\u00221124667\\u0022,\\u0022rentalimage_createtime\\u0022:\\u00221689182041\\u0022,\\u0022rentalimage_modifiedtime\\u0022:\\u00221689182041\\u0022,\\u0022rentalimage_itemid\\u0022:\\u00221922531\\u0022,\\u0022rentalimage_order\\u0022:\\u00222\\u0022,\\u0022rentalimage_imageloc\\u0022:\\u0022https:\\\/\\\/rental.software\\\/users\\\/justusandrewsmith\\\/images\\\/foam-machine-rental-in-miami_135212116.jpeg\\u0022,\\u0022rentalimage_imagelocbig\\u0022:\\u0022https:\\\/\\\/rental.software\\\/users\\\/justusandrewsmith\\\/images\\\/foam-machine-rental-in-miami_135212116_big.jpeg\\u0022,\\u0022media_type\\u0022:\\u0022image\\u0022}}\"};<\/script><div class=\"io_item2_list elementor-widget-heading simpleCart_ioShelfItem cat_div_1922531\" name=\"maindiv_Standard Foam Party\">\r\n    <div class=\"cat_div\">\r\n        <a href=\"https:\/\/sunshinepartyrentals.com\/allianceohio\/inventory\/foam-parties\/standard-foam-party\/\">\r\n            <div class=\"btn btn-primary view-product-button\">View Product<\/div>\r\n            <img decoding=\"async\" class=\"category_big_img cat_img item_image io_image_big\" title=\"Standard Foam Party\" src=\"https:\/\/rental.software\/users\/justusandrewsmith\/images\/maxresdefault_553968460_big.jpeg\" alt=\"Standard Foam Party\" \/>\r\n        <\/a>\r\n        <a rel=\"noopener\" href=\"https:\/\/rental.software\/users\/justusandrewsmith\/images\/maxresdefault_553968460_big.jpeg\" id=\"io_img_big1_1922531\" target=\"_blank\"><\/a>\r\n        <a rel=\"img_group noopener\" href=\"https:\/\/rental.software\/users\/justusandrewsmith\/images\/foam-2_524402676_big.jpeg\" id=\"io_img_big2_1922531\" target=\"_blank\"><\/a>\r\n        <br>\r\n        <div class=\"io_image_thumbbox io_category_thumbox\" style=\"display:none;\">\r\n            <img decoding=\"async\" class=\"io_image_thumb skip-lazy\" title=\"Standard Foam Party\" src=\"https:\/\/rental.software\/users\/justusandrewsmith\/images\/maxresdefault_553968460.jpeg\" alt=\"Standard Foam Party\"\r\n                 id=\"io_img_thumb1_1922531\" onmouseover=\"updateMainPic(this)\" \/>\r\n        <\/div>\r\n    <\/div>\r\n    <div class=\"io_item2_list_inner\">\r\n        <p class=\"elementor-heading-title rentNameIO item_name\"><a href=\"https:\/\/sunshinepartyrentals.com\/allianceohio\/inventory\/foam-parties\/standard-foam-party\/\">Standard Foam Party<\/a><\/p>\r\n        <p class=\"rentNameIO_price rentNameIO_price_1922531\"><span class=\"cat_from\" style=\"font-style:italic;font-size:smaller;\">from<\/span> <span class=\"rentNameIO_pricespan\">$229.00<\/span><\/p>\r\n        <p class=\"item_encoded\" style=\"display:none;\">Standard+Foam+Party<\/p>\r\n        <span class=\"item_href\" style=\"display:none;\">https:\/\/sunshinepartyrentals.com\/allianceohio\/inventory\/foam-parties\/standard-foam-party\/<\/span>\r\n        <p class=\"item_rentalid\" style=\"display:none;\">1922531<\/p>\r\n        <p class=\"item_vendorid\" style=\"display:none;\"><\/p>\r\n        <p class=\"item_qtytype\" style=\"display:none;\">Limited<\/p>\r\n        <p class=\"item_inputtype\" style=\"display:none;\">Dropdown<\/p>\r\n        <span class=\"item_qtyincrement\" style=\"display:none;\">1<\/span>\r\n        <div class=\"item_timeslots\" style=\"display:none;\"><\/div>\r\n        <p class=\"item_giftcardvalue\" style=\"display:none;\"><\/p>\r\n        <div class=\"item_hasRequiredAcc\" style=\"display:none;\">0<\/div>\r\n\r\n        <!-- Store list view data as attributes (lightweight) -->\r\n        <div class=\"io_list_view_data\"><\/div>\r\n        <div class=\"io_buttons_container\">\r\n            <a href=\"https:\/\/sunshinepartyrentals.com\/allianceohio\/inventory\/foam-parties\/standard-foam-party\/\" class=\"io_more_info_button\">MORE INFO<\/a>\r\n            <div class=\"elementor-widget-button add_cart_1922531\">\r\n                <a class=\"item_add elementor-button elementor-size-sm elementor-animation-grow io_button rentNameIO_button\"\r\n                   href=\"javascript:;\"><!--no linebreak bc elementor--><i class=\"fas fa-shopping-cart\"><\/i> Add to Cart<\/a>\r\n            <\/div>\r\n        <\/div>\r\n        <div class=\"unavailable_message unavailable_message_1922531\"  onclick=\"checkAvailDateClick()\">item unavailable (change date)<\/div>\r\n    <\/div>\r\n<\/div>\r\n<script>\r\n    jQuery(document).ready(function () {\r\n        \/\/ Hide price when zero\r\n        jQuery(\".rentNameIO_pricespan\").each(function () {\r\n            if( !Number( this.textContent.replace(\/[^0-9.-]+\/g,\"\") ) ){\r\n                jQuery(this.parentElement).hide();\r\n            }\r\n        });\r\n    });\r\n<\/script><!-- End Shortcoder content -->\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":15971,"parent":1311,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"io_meta_description":"","footnotes":""},"class_list":["post-10576","page","type-page","status-publish","has-post-thumbnail","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Foam Parties - Sunshine Party &amp; Event Rental EAST LIVERPOOL OH<\/title>\n<meta name=\"description\" content=\"Foam Parties\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/sunshinepartyrentals.com\/allianceohio\/inventory\/foam-parties\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Foam Parties - Sunshine Party &amp; Event Rental EAST LIVERPOOL OH\" \/>\n<meta property=\"og:description\" content=\"Foam Parties\" \/>\n<meta property=\"og:url\" content=\"https:\/\/sunshinepartyrentals.com\/allianceohio\/inventory\/foam-parties\/\" \/>\n<meta property=\"og:site_name\" content=\"Sunshine Party &amp; Event Rental EAST LIVERPOOL OH\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-15T23:10:21+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/sunshinepartyrentals.com\/allianceohio\/wp-content\/uploads\/2025\/04\/Photo20Jul20102020242032003204220PM201_1720708857_big.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"750\" \/>\n\t<meta property=\"og:image:height\" content=\"750\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/sunshinepartyrentals.com\/allianceohio\/inventory\/foam-parties\/\",\"url\":\"https:\/\/sunshinepartyrentals.com\/allianceohio\/inventory\/foam-parties\/\",\"name\":\"Foam Parties - Sunshine Party &amp; Event Rental EAST LIVERPOOL OH\",\"isPartOf\":{\"@id\":\"https:\/\/sunshinepartyrentals.com\/allianceohio\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/sunshinepartyrentals.com\/allianceohio\/inventory\/foam-parties\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/sunshinepartyrentals.com\/allianceohio\/inventory\/foam-parties\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/sunshinepartyrentals.com\/allianceohio\/wp-content\/uploads\/2026\/04\/ChatGPT20Image20Jan20282020262010_13_3220AM20-20Edited_1.png\",\"datePublished\":\"2023-06-12T17:41:25+00:00\",\"dateModified\":\"2026-04-15T23:10:21+00:00\",\"description\":\"Foam Parties\",\"breadcrumb\":{\"@id\":\"https:\/\/sunshinepartyrentals.com\/allianceohio\/inventory\/foam-parties\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/sunshinepartyrentals.com\/allianceohio\/inventory\/foam-parties\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/sunshinepartyrentals.com\/allianceohio\/inventory\/foam-parties\/#primaryimage\",\"url\":\"https:\/\/sunshinepartyrentals.com\/allianceohio\/wp-content\/uploads\/2026\/04\/ChatGPT20Image20Jan20282020262010_13_3220AM20-20Edited_1.png\",\"contentUrl\":\"https:\/\/sunshinepartyrentals.com\/allianceohio\/wp-content\/uploads\/2026\/04\/ChatGPT20Image20Jan20282020262010_13_3220AM20-20Edited_1.png\",\"width\":604,\"height\":750},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/sunshinepartyrentals.com\/allianceohio\/inventory\/foam-parties\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/sunshinepartyrentals.com\/allianceohio\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Inventory\",\"item\":\"https:\/\/sunshinepartyrentals.com\/allianceohio\/inventory\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Foam Parties\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/sunshinepartyrentals.com\/allianceohio\/#website\",\"url\":\"https:\/\/sunshinepartyrentals.com\/allianceohio\/\",\"name\":\"Sunshine Party &amp; Event Rental EAST LIVERPOOL OH\",\"description\":\"Party and Event Rentals\",\"publisher\":{\"@id\":\"https:\/\/sunshinepartyrentals.com\/allianceohio\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/sunshinepartyrentals.com\/allianceohio\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/sunshinepartyrentals.com\/allianceohio\/#organization\",\"name\":\"Sunshine Party & Event Rental\",\"url\":\"https:\/\/sunshinepartyrentals.com\/allianceohio\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/sunshinepartyrentals.com\/allianceohio\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/sunshinepartyrentals.com\/allianceohio\/wp-content\/uploads\/2020\/07\/logo_sunshine.png\",\"contentUrl\":\"https:\/\/sunshinepartyrentals.com\/allianceohio\/wp-content\/uploads\/2020\/07\/logo_sunshine.png\",\"width\":500,\"height\":400,\"caption\":\"Sunshine Party & Event Rental\"},\"image\":{\"@id\":\"https:\/\/sunshinepartyrentals.com\/allianceohio\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Foam Parties - Sunshine Party &amp; Event Rental EAST LIVERPOOL OH","description":"Foam Parties","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/sunshinepartyrentals.com\/allianceohio\/inventory\/foam-parties\/","og_locale":"en_US","og_type":"article","og_title":"Foam Parties - Sunshine Party &amp; Event Rental EAST LIVERPOOL OH","og_description":"Foam Parties","og_url":"https:\/\/sunshinepartyrentals.com\/allianceohio\/inventory\/foam-parties\/","og_site_name":"Sunshine Party &amp; Event Rental EAST LIVERPOOL OH","article_modified_time":"2026-04-15T23:10:21+00:00","og_image":[{"width":750,"height":750,"url":"https:\/\/sunshinepartyrentals.com\/allianceohio\/wp-content\/uploads\/2025\/04\/Photo20Jul20102020242032003204220PM201_1720708857_big.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/sunshinepartyrentals.com\/allianceohio\/inventory\/foam-parties\/","url":"https:\/\/sunshinepartyrentals.com\/allianceohio\/inventory\/foam-parties\/","name":"Foam Parties - Sunshine Party &amp; Event Rental EAST LIVERPOOL OH","isPartOf":{"@id":"https:\/\/sunshinepartyrentals.com\/allianceohio\/#website"},"primaryImageOfPage":{"@id":"https:\/\/sunshinepartyrentals.com\/allianceohio\/inventory\/foam-parties\/#primaryimage"},"image":{"@id":"https:\/\/sunshinepartyrentals.com\/allianceohio\/inventory\/foam-parties\/#primaryimage"},"thumbnailUrl":"https:\/\/sunshinepartyrentals.com\/allianceohio\/wp-content\/uploads\/2026\/04\/ChatGPT20Image20Jan20282020262010_13_3220AM20-20Edited_1.png","datePublished":"2023-06-12T17:41:25+00:00","dateModified":"2026-04-15T23:10:21+00:00","description":"Foam Parties","breadcrumb":{"@id":"https:\/\/sunshinepartyrentals.com\/allianceohio\/inventory\/foam-parties\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/sunshinepartyrentals.com\/allianceohio\/inventory\/foam-parties\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/sunshinepartyrentals.com\/allianceohio\/inventory\/foam-parties\/#primaryimage","url":"https:\/\/sunshinepartyrentals.com\/allianceohio\/wp-content\/uploads\/2026\/04\/ChatGPT20Image20Jan20282020262010_13_3220AM20-20Edited_1.png","contentUrl":"https:\/\/sunshinepartyrentals.com\/allianceohio\/wp-content\/uploads\/2026\/04\/ChatGPT20Image20Jan20282020262010_13_3220AM20-20Edited_1.png","width":604,"height":750},{"@type":"BreadcrumbList","@id":"https:\/\/sunshinepartyrentals.com\/allianceohio\/inventory\/foam-parties\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/sunshinepartyrentals.com\/allianceohio\/"},{"@type":"ListItem","position":2,"name":"Inventory","item":"https:\/\/sunshinepartyrentals.com\/allianceohio\/inventory\/"},{"@type":"ListItem","position":3,"name":"Foam Parties"}]},{"@type":"WebSite","@id":"https:\/\/sunshinepartyrentals.com\/allianceohio\/#website","url":"https:\/\/sunshinepartyrentals.com\/allianceohio\/","name":"Sunshine Party &amp; Event Rental EAST LIVERPOOL OH","description":"Party and Event Rentals","publisher":{"@id":"https:\/\/sunshinepartyrentals.com\/allianceohio\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/sunshinepartyrentals.com\/allianceohio\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/sunshinepartyrentals.com\/allianceohio\/#organization","name":"Sunshine Party & Event Rental","url":"https:\/\/sunshinepartyrentals.com\/allianceohio\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/sunshinepartyrentals.com\/allianceohio\/#\/schema\/logo\/image\/","url":"https:\/\/sunshinepartyrentals.com\/allianceohio\/wp-content\/uploads\/2020\/07\/logo_sunshine.png","contentUrl":"https:\/\/sunshinepartyrentals.com\/allianceohio\/wp-content\/uploads\/2020\/07\/logo_sunshine.png","width":500,"height":400,"caption":"Sunshine Party & Event Rental"},"image":{"@id":"https:\/\/sunshinepartyrentals.com\/allianceohio\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/sunshinepartyrentals.com\/allianceohio\/wp-json\/wp\/v2\/pages\/10576","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sunshinepartyrentals.com\/allianceohio\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sunshinepartyrentals.com\/allianceohio\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sunshinepartyrentals.com\/allianceohio\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sunshinepartyrentals.com\/allianceohio\/wp-json\/wp\/v2\/comments?post=10576"}],"version-history":[{"count":17,"href":"https:\/\/sunshinepartyrentals.com\/allianceohio\/wp-json\/wp\/v2\/pages\/10576\/revisions"}],"predecessor-version":[{"id":15973,"href":"https:\/\/sunshinepartyrentals.com\/allianceohio\/wp-json\/wp\/v2\/pages\/10576\/revisions\/15973"}],"up":[{"embeddable":true,"href":"https:\/\/sunshinepartyrentals.com\/allianceohio\/wp-json\/wp\/v2\/pages\/1311"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sunshinepartyrentals.com\/allianceohio\/wp-json\/wp\/v2\/media\/15971"}],"wp:attachment":[{"href":"https:\/\/sunshinepartyrentals.com\/allianceohio\/wp-json\/wp\/v2\/media?parent=10576"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}