{"id":1311,"date":"2020-04-02T14:25:07","date_gmt":"2020-04-02T14:25:07","guid":{"rendered":"https:\/\/dev.rental.software\/newweb668\/?page_id=1311"},"modified":"2026-04-22T18:48:01","modified_gmt":"2026-04-22T18:48:01","slug":"rentals","status":"publish","type":"page","link":"https:\/\/dev.rental.software\/newweb668\/rentals\/","title":{"rendered":"Inventory"},"content":{"rendered":"\r\n<!-- 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\">Inventory<span class=\"io_forrent io_forrent_Inventory\"> 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\">Inventory<\/div>\r\n<div class=\"cat_div_wrapper\"><div class=\"io_cat_description io_cat_description_Inventory elementor-widget-text-editor catDescriptionIO\"><\/div><\/div>\r\n<div class=\"io_catdiv2\"><\/div>\r\n<div class=\"io_landingpages io_landingpages_Inventory elementor-widget-text-editor\"><!-- Start Shortcoder content -->Professional delivery to <span class=\\\"io_city_list\\\">Lufkin TX<\/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_Inventory elementor-widget-text-editor\"><\/div>\r\n<script>\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;\r\n        if (s === '0' || s.toLowerCase() === 'null' || s.toLowerCase() === 'undefined') return false;\r\n        return true;\r\n    };\r\n\r\n    var isMp4 = function (u) {\r\n        if (!u) return false;\r\n        return \/\\.mp4(?:\\?|#|$)\/i.test(String(u).trim());\r\n    };\r\n\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        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        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            var getBigUrl = function (imgObj) {\r\n                return imgObj[\"rentalimage_imagelocbig\"] || imgObj[\"imagelocbig\"] || imgObj[\"big\"] || \"\";\r\n            };\r\n\r\n            var getThumbUrl = function (imgObj) {\r\n                return imgObj[\"rentalimage_imageloc\"] || imgObj[\"imageloc\"] || imgObj[\"thumb\"] || \"\";\r\n            };\r\n\r\n            var addedThumbs = 0;\r\n            var $mainImg = jQuery('#io_img_big2_' + rid).closest('.io_item2_list').find('.io_image_big').first();\r\n\r\n            \/\/ Bind existing thumb1 to its existing big1 anchor using data-big-src\r\n            var $existingThumb1 = jQuery('#io_img_thumb1_' + rid);\r\n            var $existingBig1 = jQuery('#io_img_big1_' + rid);\r\n            if ($existingThumb1.length && $existingBig1.length) {\r\n                var existingBig1Href = $existingBig1.attr('href');\r\n                var existingThumb1Src = $existingThumb1.attr('src');\r\n\r\n                if (isMp4(existingBig1Href) && isValid(existingThumb1Src)) {\r\n                    existingBig1Href = existingThumb1Src;\r\n                    $existingBig1.attr('href', existingBig1Href);\r\n                }\r\n\r\n                if (isValid(existingBig1Href)) {\r\n                    $existingThumb1.attr('data-big-src', existingBig1Href);\r\n                    $existingThumb1.off('click.ioGallery').on('click.ioGallery', function () {\r\n                        if (typeof updateMainPic === 'function') {\r\n                            updateMainPic(this);\r\n                        }\r\n                    });\r\n                }\r\n            }\r\n\r\n            \/\/ Fix built-in big2 anchor if it points to mp4\r\n            if ($bigAfter.length) {\r\n                var builtInBig2Href = $bigAfter.attr('href');\r\n                var builtInThumb2Src = $thumbAfter.attr('src');\r\n\r\n                if (isMp4(builtInBig2Href) && isValid(builtInThumb2Src)) {\r\n                    $bigAfter.attr('href', builtInThumb2Src);\r\n                }\r\n            }\r\n\r\n            for (var key in images_arr) {\r\n                if (!images_arr.hasOwnProperty(key)) continue;\r\n\r\n                var imgObj = images_arr[key] || {};\r\n                var href = getBigUrl(imgObj);\r\n                var src  = getThumbUrl(imgObj);\r\n\r\n                if (isMp4(href) && isValid(src)) {\r\n                    href = src;\r\n                }\r\n\r\n                var n = parseInt(key, 10);\r\n                if (isNaN(n)) {\r\n                    n = addedThumbs + 1;\r\n                }\r\n\r\n                var bigIndex = n + 1;\r\n                var thumbIndex = n + 1;\r\n\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;\r\n                    }\r\n                }\r\n\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                            'data-big-src': href\r\n                        }).on('click', function () {\r\n                            if (typeof updateMainPic === 'function') {\r\n                                updateMainPic(this);\r\n                            }\r\n                        });\r\n\r\n                        $thumbAfter.after($img);\r\n                        $thumbAfter = $img;\r\n                        addedThumbs++;\r\n                    }\r\n                }\r\n            }\r\n\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            if ($item.find('.io_list_view_content').length > 0) {\r\n                return;\r\n            }\r\n\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            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            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            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            var html = '<div class=\"io_list_view_content\">';\r\n            html += '<div class=\"io_item_details_labeled\">';\r\n\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            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            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            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>';\r\n            html += '<\/div>';\r\n\r\n            $item.find('.io_buttons_container').before(html);\r\n        });\r\n    };\r\n\r\n    function bindExistingThumbTargets() {\r\n    jQuery('.io_item2_list').each(function() {\r\n        var $item = jQuery(this);\r\n        var rentalId = $item.find('.item_rentalid').text().trim();\r\n        if (!rentalId) return;\r\n\r\n        var arr = window.io_category_data?.[rentalId]?.images_arr;\r\n        try {\r\n            if (typeof arr === 'string' && arr.length) {\r\n                arr = JSON.parse(arr);\r\n            }\r\n        } catch (e) {\r\n            arr = {};\r\n        }\r\n        if (!arr) arr = {};\r\n\r\n        $item.find('.io_image_thumb[id]').each(function() {\r\n            var thumb = this;\r\n            var match = thumb.id.match(\/io_img_thumb(\\d+)_(\\d+)\/);\r\n            if (!match) return;\r\n\r\n            var index = parseInt(match[1], 10) - 1;\r\n            var imgObj = arr[index];\r\n            if (!imgObj) return;\r\n\r\n            var src = imgObj.rentalimage_imageloc || imgObj.imageloc || imgObj.thumb || \"\";\r\n            var href = imgObj.rentalimage_imagelocbig || imgObj.imagelocbig || imgObj.big || \"\";\r\n\r\n            if (isMp4(href) && isValid(src)) {\r\n                href = src;\r\n            }\r\n\r\n            if (isValid(href)) {\r\n                thumb.setAttribute('data-big-src', href);\r\n            }\r\n\r\n            jQuery(thumb).off('click.ioGallery').on('click.ioGallery', function () {\r\n                if (typeof updateMainPic === 'function') {\r\n                    updateMainPic(this);\r\n                }\r\n            });\r\n        });\r\n    });\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                if (typeof window.io_category_data !== 'undefined' && window.io_category_data[rentalId]) {\r\n                    CategoryGallery(\r\n                        rentalId,\r\n                        window.io_category_data[rentalId]['rental_name'],\r\n                        window.io_category_data[rentalId][\"images_arr\"]\r\n                    );\r\n                }\r\n            }\r\n        });\r\n\r\n        bindExistingThumbTargets();\r\n\r\n        console.log('[IO View Toggle] Document ready, initializing view toggle functionality');\r\n\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        $('.io_view_toggle_container').show();\r\n        console.log('[IO View Toggle] Toggle buttons displayed for category page');\r\n\r\n        var isInitialized = false;\r\n\r\n        function initViewToggle(force) {\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            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            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            var savedView = localStorage.getItem('io_category_view') || 'tile';\r\n            console.log('[IO View Toggle] Retrieved saved view preference:', savedView);\r\n\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            $('.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            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            var itemCount = $('.io_item2_list').length;\r\n            console.log('[IO View Toggle] Found', itemCount, 'items in category');\r\n\r\n            $('.io_view_toggle_btn').off('click.viewToggle');\r\n\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                var newButton = button.cloneNode(true);\r\n                button.parentNode.replaceChild(newButton, button);\r\n\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                    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                    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                    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                    localStorage.setItem('io_category_view', view);\r\n                    console.log('[IO View Toggle] Saved view preference to localStorage:', view);\r\n\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                            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);\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            isInitialized = true;\r\n        }\r\n\r\n        console.log('[IO View Toggle] Starting initial setup');\r\n        initViewToggle();\r\n\r\n        $(document).on('io_content_loaded', function() {\r\n            console.log('[IO View Toggle] Dynamic content loaded event detected, reinitializing');\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                    if (typeof window.io_category_data !== 'undefined' && window.io_category_data[rentalId]) {\r\n                        CategoryGallery(\r\n                            rentalId,\r\n                            window.io_category_data[rentalId]['rental_name'],\r\n                            window.io_category_data[rentalId][\"images_arr\"]\r\n                        );\r\n                    }\r\n                }\r\n            });\r\n\r\n            bindExistingThumbTargets();\r\n            initViewToggle();\r\n        });\r\n\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                clearTimeout(mutationTimeout);\r\n\r\n                mutationTimeout = setTimeout(function() {\r\n                    var currentItemCount = $('.io_item2_list').length;\r\n\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                        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                                if (typeof window.io_category_data !== 'undefined' && window.io_category_data[rentalId]) {\r\n                                    CategoryGallery(\r\n                                        rentalId,\r\n                                        window.io_category_data[rentalId]['rental_name'],\r\n                                        window.io_category_data[rentalId][\"images_arr\"]\r\n                                    );\r\n                                }\r\n                            }\r\n                        });\r\n\r\n                        bindExistingThumbTargets();\r\n\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                            console.log('[IO View Toggle] Initializing due to new items');\r\n                            initViewToggle();\r\n                        }\r\n                    }\r\n                }, 250);\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        $(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 --><div class=\"io_item2_listcat elementor-widget-heading\">\r\n  <a href=\"https:\/\/dev.rental.software\/newweb668\/rentals\/bounce-house-rentals\/\">\r\n    <div class=\"cat_div\">\r\n      <div class=\"btn btn-primary view-product-button\">View Products<\/div>\r\n      <img decoding=\"async\" class=\"cat_img\" src=\"https:\/\/dev.rental.software\/newweb668\/wp-content\/uploads\/2025\/06\/Untitled20design-5_1736820017_big.png\" alt=\"Bounce House Rentals\" title=\"Bounce House Rentals\" \/>\r\n    <\/div>\r\n  <\/a>\r\n  <div class=\"cat_div_inner\">\r\n    <a href=\"https:\/\/dev.rental.software\/newweb668\/rentals\/bounce-house-rentals\/\">\r\n      <p class=\"rentNameIO elementor-heading-title\">Bounce House Rentals<\/p>\r\n      <div class=\"catDescriptionIO catDescriptionIO_small elementor-widget-text-editor\"><span style=\"color: rgb(255, 255, 255);\">Inflatable bounce houses are great for letting some energy flow out. You can also purchase combo bouncers that include a slide or basketball hoop constructed inside, as well as a bounce zone. We specialize in bounce houses rentals and are glad to cater to the needs of your event.<\/span><\/div>\r\n    <\/a>\r\n  <\/div>\r\n<\/div><!-- End Shortcoder content -->\n<!-- Start Shortcoder content --><div class=\"io_item2_listcat elementor-widget-heading\">\r\n  <a href=\"https:\/\/dev.rental.software\/newweb668\/rentals\/obstacle-course-rentals\/\">\r\n    <div class=\"cat_div\">\r\n      <div class=\"btn btn-primary view-product-button\">View Products<\/div>\r\n      <img decoding=\"async\" class=\"cat_img\" src=\"https:\/\/dev.rental.software\/newweb668\/wp-content\/uploads\/2025\/06\/IMG_1300_1727734472_big.jpeg\" alt=\"Obstacle Course Rentals\" title=\"Obstacle Course Rentals\" \/>\r\n    <\/div>\r\n  <\/a>\r\n  <div class=\"cat_div_inner\">\r\n    <a href=\"https:\/\/dev.rental.software\/newweb668\/rentals\/obstacle-course-rentals\/\">\r\n      <p class=\"rentNameIO elementor-heading-title\">Obstacle Course Rentals<\/p>\r\n      <div class=\"catDescriptionIO catDescriptionIO_small elementor-widget-text-editor\"><span style=\"color: rgb(255, 255, 255);\">Obstacle Courses: Energetic playgrounds of inflatable fun, where participants race through tunnels, climb walls, and navigate challenges, testing their agility and speed. Perfect for parties or events looking to ignite some friendly competition.<\/span><\/div>\r\n    <\/a>\r\n  <\/div>\r\n<\/div><!-- End Shortcoder content -->\n<!-- Start Shortcoder content --><div class=\"io_item2_listcat elementor-widget-heading\">\r\n  <a href=\"https:\/\/dev.rental.software\/newweb668\/rentals\/water-slide-rentals\/\">\r\n    <div class=\"cat_div\">\r\n      <div class=\"btn btn-primary view-product-button\">View Products<\/div>\r\n      <img decoding=\"async\" class=\"cat_img\" src=\"https:\/\/dev.rental.software\/newweb668\/wp-content\/uploads\/2025\/06\/HeroKiddo15FTOceanSharkCommercialGradeWaterSlidewithPoo.png\" alt=\"Water Slide Rentals\" title=\"Water Slide Rentals\" \/>\r\n    <\/div>\r\n  <\/a>\r\n  <div class=\"cat_div_inner\">\r\n    <a href=\"https:\/\/dev.rental.software\/newweb668\/rentals\/water-slide-rentals\/\">\r\n      <p class=\"rentNameIO elementor-heading-title\">Water Slide Rentals<\/p>\r\n      <div class=\"catDescriptionIO catDescriptionIO_small elementor-widget-text-editor\"><span style=\"color: rgb(255, 255, 255);\">Water slides and water rides are a great option to cool off on an extremely hot summer day! Get wet and have fun with these fun rental water slides as well as water bounce houses.<\/span><\/div>\r\n    <\/a>\r\n  <\/div>\r\n<\/div><!-- End Shortcoder content -->\n<!-- Start Shortcoder content --><div class=\"io_item2_listcat elementor-widget-heading\">\r\n  <a href=\"https:\/\/dev.rental.software\/newweb668\/rentals\/slides-combo-rentals\/\">\r\n    <div class=\"cat_div\">\r\n      <div class=\"btn btn-primary view-product-button\">View Products<\/div>\r\n      <img decoding=\"async\" class=\"cat_img\" src=\"https:\/\/dev.rental.software\/newweb668\/wp-content\/uploads\/2025\/06\/purple20slide_1727380661_big.png\" alt=\"Slides & Combo Rentals\" title=\"Slides & Combo Rentals\" \/>\r\n    <\/div>\r\n  <\/a>\r\n  <div class=\"cat_div_inner\">\r\n    <a href=\"https:\/\/dev.rental.software\/newweb668\/rentals\/slides-combo-rentals\/\">\r\n      <p class=\"rentNameIO elementor-heading-title\">Slides & Combo Rentals<\/p>\r\n      <div class=\"catDescriptionIO catDescriptionIO_small elementor-widget-text-editor\"><span style=\"color: rgb(255, 255, 255);\">Inflatable bounce house combos are great for getting energy out. A few of these combo bouncers come with thing like a basketball hoop or slide that is built in with a bounce space! We specialize in bounce house rentals and would be delighted to help you with your party needs.<\/span><\/div>\r\n    <\/a>\r\n  <\/div>\r\n<\/div><!-- End Shortcoder content -->\n<!-- Start Shortcoder content --><div class=\"io_item2_listcat elementor-widget-heading\">\r\n  <a href=\"https:\/\/dev.rental.software\/newweb668\/rentals\/new-inventory\/\">\r\n    <div class=\"cat_div\">\r\n      <div class=\"btn btn-primary view-product-button\">View Products<\/div>\r\n      <img decoding=\"async\" class=\"cat_img\" src=\"https:\/\/dev.rental.software\/newweb668\/wp-content\/uploads\/2025\/06\/New20Inventory_1746582518_big.png\" alt=\"New Inventory\" title=\"New Inventory\" \/>\r\n    <\/div>\r\n  <\/a>\r\n  <div class=\"cat_div_inner\">\r\n    <a href=\"https:\/\/dev.rental.software\/newweb668\/rentals\/new-inventory\/\">\r\n      <p class=\"rentNameIO elementor-heading-title\">New Inventory<\/p>\r\n      <div class=\"catDescriptionIO catDescriptionIO_small elementor-widget-text-editor\"><\/p>\n<p data-end=\"167\" data-start=\"113\"><strong data-end=\"162\" data-start=\"113\"><span style=\"color: rgb(255, 255, 255);\">Discover What&rsquo;s New at Complete Celebrations!<\/span><\/strong><span style=\"color: rgb(255, 255, 255);\"> \ud83c\udf89<\/span><\/p>\n<p data-end=\"500\" data-start=\"169\"><span style=\"color: rgb(255, 255, 255);\">Check out our <strong data-end=\"212\" data-start=\"183\">latest inflatable rentals<\/strong> now available in <strong data-end=\"240\" data-start=\"230\">Lufkin<\/strong>, <strong data-end=\"257\" data-start=\"242\">Nacogdoches<\/strong>, and surrounding East Texas areas! From <strong data-end=\"315\" data-start=\"298\">bounce houses<\/strong> and <strong data-end=\"336\" data-start=\"320\">water slides<\/strong> to exciting new <strong data-end=\"373\" data-start=\"353\">obstacle courses<\/strong> and themed units, our <strong data-end=\"413\" data-start=\"396\">new inventory<\/strong> is perfect for birthday parties, school events, church gatherings, and backyard fun.<\/span><\/p>\n<p data-end=\"702\" data-start=\"502\"><span style=\"color: rgb(255, 255, 255);\">Every inflatable is cleaned, inspected, and ready to deliver safe, unforgettable entertainment for your next event. Be the first to book our newest additions and make your celebration one to remember!<\/span><\/p>\n<p data-end=\"771\" data-start=\"704\"><span style=\"color: rgb(255, 255, 255);\">\ud83d\udc49 Browse our newest units below and reserve your favorite today!<\/span><\/p>\n<p><\/div>\r\n    <\/a>\r\n  <\/div>\r\n<\/div><!-- End Shortcoder content -->\n<!-- Start Shortcoder content --><div class=\"io_item2_listcat elementor-widget-heading\">\r\n  <a href=\"https:\/\/dev.rental.software\/newweb668\/rentals\/tents\/\">\r\n    <div class=\"cat_div\">\r\n      <div class=\"btn btn-primary view-product-button\">View Products<\/div>\r\n      <img decoding=\"async\" class=\"cat_img\" src=\"https:\/\/dev.rental.software\/newweb668\/wp-content\/uploads\/2025\/08\/tent_1755721198_big.png\" alt=\"Tents\" title=\"Tents\" \/>\r\n    <\/div>\r\n  <\/a>\r\n  <div class=\"cat_div_inner\">\r\n    <a href=\"https:\/\/dev.rental.software\/newweb668\/rentals\/tents\/\">\r\n      <p class=\"rentNameIO elementor-heading-title\">Tents<\/p>\r\n      <div class=\"catDescriptionIO catDescriptionIO_small elementor-widget-text-editor\">Rental tents provide instant covered space for outdoor events, protecting guests, food, and gear from sun or rain. Available in diverse sizes, they turn lawns and parking lots into comfortable, usable event areas.<\/div>\r\n    <\/a>\r\n  <\/div>\r\n<\/div><!-- End Shortcoder content -->\n<!-- Start Shortcoder content --><div class=\"io_item2_listcat elementor-widget-heading\">\r\n  <a href=\"https:\/\/dev.rental.software\/newweb668\/rentals\/tables-and-chairs\/\">\r\n    <div class=\"cat_div\">\r\n      <div class=\"btn btn-primary view-product-button\">View Products<\/div>\r\n      <img decoding=\"async\" class=\"cat_img\" src=\"https:\/\/dev.rental.software\/newweb668\/wp-content\/uploads\/2025\/08\/tables20and20chairs_1755721355_big.jpg\" alt=\"Tables and Chairs\" title=\"Tables and Chairs\" \/>\r\n    <\/div>\r\n  <\/a>\r\n  <div class=\"cat_div_inner\">\r\n    <a href=\"https:\/\/dev.rental.software\/newweb668\/rentals\/tables-and-chairs\/\">\r\n      <p class=\"rentNameIO elementor-heading-title\">Tables and Chairs<\/p>\r\n      <div class=\"catDescriptionIO catDescriptionIO_small elementor-widget-text-editor\">Sturdy folding tables and comfortable chairs for rent&mdash;perfect for seating guests at parties, meetings, or outdoor events. They give you reliable surfaces and seating without the cost or storage headache of buying furniture.<\/div>\r\n    <\/a>\r\n  <\/div>\r\n<\/div><!-- End Shortcoder content -->\n<!-- Start Shortcoder content --><div class=\"io_item2_listcat elementor-widget-heading\">\r\n  <a href=\"https:\/\/dev.rental.software\/newweb668\/rentals\/inflatable-games\/\">\r\n    <div class=\"cat_div\">\r\n      <div class=\"btn btn-primary view-product-button\">View Products<\/div>\r\n      <img decoding=\"async\" class=\"cat_img\" src=\"https:\/\/dev.rental.software\/newweb668\/wp-content\/uploads\/2025\/08\/3_1756155088_big.png\" alt=\"Inflatable Games\" title=\"Inflatable Games\" \/>\r\n    <\/div>\r\n  <\/a>\r\n  <div class=\"cat_div_inner\">\r\n    <a href=\"https:\/\/dev.rental.software\/newweb668\/rentals\/inflatable-games\/\">\r\n      <p class=\"rentNameIO elementor-heading-title\">Inflatable Games<\/p>\r\n      <div class=\"catDescriptionIO catDescriptionIO_small elementor-widget-text-editor\"><\/p>\n<p style=\"font-family: Tahoma, Geneva, sans-serif;\"><\/p>\n<p><\/div>\r\n    <\/a>\r\n  <\/div>\r\n<\/div><!-- End Shortcoder content -->\n<!-- Start Shortcoder content --><div class=\"io_item2_listcat elementor-widget-heading\">\r\n  <a href=\"https:\/\/dev.rental.software\/newweb668\/rentals\/complete-the-celebration-party-add-ons\/\">\r\n    <div class=\"cat_div\">\r\n      <div class=\"btn btn-primary view-product-button\">View Products<\/div>\r\n      <img decoding=\"async\" class=\"cat_img\" src=\"https:\/\/dev.rental.software\/newweb668\/wp-content\/uploads\/2026\/01\/40d8cc14-1c4e-446b-9c32-015a79112e96_1767994158_big.png\" alt=\"Complete the Celebration - Party Add Ons\" title=\"Complete the Celebration - Party Add Ons\" \/>\r\n    <\/div>\r\n  <\/a>\r\n  <div class=\"cat_div_inner\">\r\n    <a href=\"https:\/\/dev.rental.software\/newweb668\/rentals\/complete-the-celebration-party-add-ons\/\">\r\n      <p class=\"rentNameIO elementor-heading-title\">Complete the Celebration - Party Add Ons<\/p>\r\n      <div class=\"catDescriptionIO catDescriptionIO_small elementor-widget-text-editor\">Give your event everything it needs with this Complete the Celebration add-on package, bundled with popular party extras to enhance guest comfort and fun. Perfect for streamlining setup and adding the finishing touches that make a celebration feel polished and memorable.<\/div>\r\n    <\/a>\r\n  <\/div>\r\n<\/div><!-- End Shortcoder content -->\n<!-- Start Shortcoder content --><div class=\"io_item2_listcat elementor-widget-heading\">\r\n  <a href=\"https:\/\/dev.rental.software\/newweb668\/rentals\/foam-parties\/\">\r\n    <div class=\"cat_div\">\r\n      <div class=\"btn btn-primary view-product-button\">View Products<\/div>\r\n      <img decoding=\"async\" class=\"cat_img\" src=\"https:\/\/dev.rental.software\/newweb668\/wp-content\/uploads\/2026\/01\/DE26C665-015F-4CD4-A456-C2C78E2A8D1E_1769118764_big.jpeg\" alt=\"Foam Parties\" title=\"Foam Parties\" \/>\r\n    <\/div>\r\n  <\/a>\r\n  <div class=\"cat_div_inner\">\r\n    <a href=\"https:\/\/dev.rental.software\/newweb668\/rentals\/foam-parties\/\">\r\n      <p class=\"rentNameIO elementor-heading-title\">Foam Parties<\/p>\r\n      <div class=\"catDescriptionIO catDescriptionIO_small elementor-widget-text-editor\">Turn any event into a sudsy, high-energy party by renting a foam party setup that generates thick, safe bubbles for dancing and play; perfect for kids\u2019 birthdays, school events, or summer gatherings where guests can splash, slide, and laugh in a frothy, supervised environment.<\/div>\r\n    <\/a>\r\n  <\/div>\r\n<\/div><!-- End Shortcoder content -->\n\r\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"io_meta_description":"","footnotes":""},"class_list":["post-1311","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/dev.rental.software\/newweb668\/wp-json\/wp\/v2\/pages\/1311","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dev.rental.software\/newweb668\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/dev.rental.software\/newweb668\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/dev.rental.software\/newweb668\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dev.rental.software\/newweb668\/wp-json\/wp\/v2\/comments?post=1311"}],"version-history":[{"count":8,"href":"https:\/\/dev.rental.software\/newweb668\/wp-json\/wp\/v2\/pages\/1311\/revisions"}],"predecessor-version":[{"id":6232,"href":"https:\/\/dev.rental.software\/newweb668\/wp-json\/wp\/v2\/pages\/1311\/revisions\/6232"}],"wp:attachment":[{"href":"https:\/\/dev.rental.software\/newweb668\/wp-json\/wp\/v2\/media?parent=1311"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}