
{"id":68,"date":"2025-08-22T01:48:03","date_gmt":"2025-08-22T01:48:03","guid":{"rendered":"https:\/\/witchcamp-dev.cybermythos.net\/?page_id=68"},"modified":"2025-09-05T20:43:30","modified_gmt":"2025-09-05T20:43:30","slug":"find-a-camp","status":"publish","type":"page","link":"https:\/\/witchcamp-dev.cybermythos.net\/?page_id=68","title":{"rendered":"Find a Camp"},"content":{"rendered":"    <div id=\"find-camps-container\" class=\"find-camps-wrapper\">\n        \n                <!-- Enhanced Search and Filter Section -->\n        <div class=\"camps-search-section\">\n            <h3>Find Your Camp<\/h3>\n            \n                        <div class=\"location-distance-section\">\n                <div class=\"user-location-input\">\n                    <label for=\"user-location\">Your Location:<\/label>\n                    <input type=\"text\" \n                           id=\"user-location\" \n                           placeholder=\"Enter your city, state or zip code\" \n                           value=\"\"\n                           class=\"location-input\">\n                    <button type=\"button\" id=\"get-user-location\" class=\"location-btn\" title=\"Use my current location\">\n                        \ud83d\udccd Use My Location\n                    <\/button>\n                <\/div>\n                <div class=\"distance-controls\" style=\"display: none;\">\n                    <label for=\"distance-radius\">Show camps within:<\/label>\n                    <select id=\"distance-radius\">\n                        <option value=\"25\">25 miles<\/option>\n                        <option value=\"50\" selected>50 miles<\/option>\n                        <option value=\"100\">100 miles<\/option>\n                        <option value=\"250\">250 miles<\/option>\n                        <option value=\"500\">500 miles<\/option>\n                        <option value=\"\">All distances<\/option>\n                    <\/select>\n                <\/div>\n            <\/div>\n                        \n            <div class=\"camps-filters\">\n                <div class=\"filter-row\">\n                    <div class=\"filter-group\">\n                        <label for=\"search-camps\">Search:<\/label>\n                        <input type=\"text\" id=\"search-camps\" placeholder=\"Search camp names...\" class=\"search-input\">\n                    <\/div>\n                    \n                    <div class=\"filter-group\">\n                        <label for=\"location-filter\">Location:<\/label>\n                        <select id=\"location-filter\" class=\"filter-select\">\n                            <option value=\"\">All Locations<\/option>\n                                                            <option value=\"Brisbane, Australia\">Brisbane, Australia<\/option>\n                                                            <option value=\"Mendocino, California, USA\">Mendocino, California, USA<\/option>\n                                                            <option value=\"Minnesota, USA\">Minnesota, USA<\/option>\n                                                            <option value=\"Online\">Online<\/option>\n                                                            <option value=\"Philadelphia, USA\">Philadelphia, USA<\/option>\n                                                            <option value=\"Rio de Janerio, Brasil\">Rio de Janerio, Brasil<\/option>\n                                                            <option value=\"Sydney, Australia\">Sydney, Australia<\/option>\n                                                            <option value=\"Texas, USA\">Texas, USA<\/option>\n                                                            <option value=\"Vancouver, British Columbia, Canda\">Vancouver, British Columbia, Canda<\/option>\n                                                            <option value=\"Vermont, USA\">Vermont, USA<\/option>\n                                                            <option value=\"V\u00f6hringen (Bayern), Germany\">V\u00f6hringen (Bayern), Germany<\/option>\n                                                    <\/select>\n                    <\/div>\n                    \n                    <div class=\"filter-group\">\n                        <label for=\"date-filter\">When:<\/label>\n                        <select id=\"date-filter\" class=\"filter-select\">\n                            <option value=\"\">All Dates<\/option>\n                            <option value=\"upcoming\">Upcoming Camps<\/option>\n                            <option value=\"current\">Happening Now<\/option>\n                            <option value=\"this-month\">This Month<\/option>\n                            <option value=\"next-month\">Next Month<\/option>\n                            <option value=\"this-year\">This Year<\/option>\n                        <\/select>\n                    <\/div>\n                    \n                    <div class=\"filter-group\">\n                        <button type=\"button\" id=\"clear-all-filters\" class=\"clear-btn\">Clear All<\/button>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n                \n        <!-- Results Summary -->\n        <div class=\"results-summary\">\n            <p id=\"camps-count\">Showing <span class=\"visible-count\">16<\/span> of <span class=\"total-count\">16<\/span> camps<\/p>\n        <\/div>\n        \n        <!-- Camps Table with WP Table Sorter Integration -->\n        <table id=\"camps-table\" class=\"wp-table-sort camps-listing-table\" data-table-sort=\"true\">\n            <thead>\n                <tr>\n                    <th data-sort-type=\"string\" class=\"sortable\">Camp Name<\/th>\n                    <th data-sort-type=\"string\" class=\"sortable\">Location<\/th>\n                                        <th data-sort-type=\"numeric\" class=\"sortable distance-column\" style=\"display: none;\">Distance<\/th>\n                                        <th data-sort-type=\"date\" class=\"sortable\">Start Date<\/th>\n                    <th data-sort-type=\"date\" class=\"sortable\">End Date<\/th>\n                    <th data-sort-type=\"string\" class=\"sortable\">Duration<\/th>\n                    <th class=\"no-sort\">Website<\/th>\n                <\/tr>\n            <\/thead>\n            <tbody>\n                                    <tr class=\"camp-row\" \n                        data-camp-id=\"117\"\n                        data-location=\"Vancouver, British Columbia, Canda\"\n                        data-start-date=\"\" \n                        data-end-date=\"\"\n                        data-status=\"unknown\"\n                        data-search-text=\"bc witchcamp vancouver, british columbia, canda\">\n                        \n                        <td class=\"camp-name\">\n                            <strong>BC Witchcamp<\/strong>\n                            <span class=\"camp-status status-unknown\">Unknown<\/span>\n                        <\/td>\n                        \n                        <td class=\"camp-location\" data-location=\"Vancouver, British Columbia, Canda\">\n                            Vancouver, British Columbia, Canda                        <\/td>\n                        \n                                                <td class=\"distance-cell distance-column\" style=\"display: none;\" data-distance=\"\">\n                            <span class=\"distance-value\">--<\/span>\n                        <\/td>\n                                                \n                        <td class=\"start-date\" data-sort=\"\">\n                                                    <\/td>\n                        \n                        <td class=\"end-date\" data-sort=\"\">\n                                                    <\/td>\n                        \n                        <td class=\"duration\">\n                            TBD                        <\/td>\n                        \n                        <td class=\"website\">\n                                                            <a href=\"https:\/\/bcwitchcamp.ca\/\" \n                                   target=\"_blank\" \n                                   rel=\"noopener noreferrer\" \n                                   class=\"camp-website-link\">\n                                   Visit Website \u2192\n                                <\/a>\n                                                    <\/td>\n                    <\/tr>\n                                        <tr class=\"camp-row\" \n                        data-camp-id=\"119\"\n                        data-location=\"Rio de Janerio, Brasil\"\n                        data-start-date=\"\" \n                        data-end-date=\"\"\n                        data-status=\"unknown\"\n                        data-search-text=\"brasil witchcamp rio de janerio, brasil\">\n                        \n                        <td class=\"camp-name\">\n                            <strong>Brasil Witchcamp<\/strong>\n                            <span class=\"camp-status status-unknown\">Unknown<\/span>\n                        <\/td>\n                        \n                        <td class=\"camp-location\" data-location=\"Rio de Janerio, Brasil\">\n                            Rio de Janerio, Brasil                        <\/td>\n                        \n                                                <td class=\"distance-cell distance-column\" style=\"display: none;\" data-distance=\"\">\n                            <span class=\"distance-value\">--<\/span>\n                        <\/td>\n                                                \n                        <td class=\"start-date\" data-sort=\"\">\n                                                    <\/td>\n                        \n                        <td class=\"end-date\" data-sort=\"\">\n                                                    <\/td>\n                        \n                        <td class=\"duration\">\n                            TBD                        <\/td>\n                        \n                        <td class=\"website\">\n                                                            <a href=\"https:\/\/reclaimingbrasil.com\" \n                                   target=\"_blank\" \n                                   rel=\"noopener noreferrer\" \n                                   class=\"camp-website-link\">\n                                   Visit Website \u2192\n                                <\/a>\n                                                    <\/td>\n                    <\/tr>\n                                        <tr class=\"camp-row\" \n                        data-camp-id=\"120\"\n                        data-location=\"Brisbane, Australia\"\n                        data-start-date=\"\" \n                        data-end-date=\"\"\n                        data-status=\"unknown\"\n                        data-search-text=\"cloudcatcher brisbane, australia\">\n                        \n                        <td class=\"camp-name\">\n                            <strong>Cloudcatcher<\/strong>\n                            <span class=\"camp-status status-unknown\">Unknown<\/span>\n                        <\/td>\n                        \n                        <td class=\"camp-location\" data-location=\"Brisbane, Australia\">\n                            Brisbane, Australia                        <\/td>\n                        \n                                                <td class=\"distance-cell distance-column\" style=\"display: none;\" data-distance=\"\">\n                            <span class=\"distance-value\">--<\/span>\n                        <\/td>\n                                                \n                        <td class=\"start-date\" data-sort=\"\">\n                                                    <\/td>\n                        \n                        <td class=\"end-date\" data-sort=\"\">\n                                                    <\/td>\n                        \n                        <td class=\"duration\">\n                            TBD                        <\/td>\n                        \n                        <td class=\"website\">\n                                                            <a href=\"https:\/\/www.cloudcatcherwitchcamp.com.au\/\" \n                                   target=\"_blank\" \n                                   rel=\"noopener noreferrer\" \n                                   class=\"camp-website-link\">\n                                   Visit Website \u2192\n                                <\/a>\n                                                    <\/td>\n                    <\/tr>\n                                        <tr class=\"camp-row\" \n                        data-camp-id=\"118\"\n                        data-location=\"Sydney, Australia\"\n                        data-start-date=\"2024-10-04\" \n                        data-end-date=\"2024-10-07\"\n                        data-status=\"past\"\n                        data-search-text=\"wildkin witchcamp sydney, australia\">\n                        \n                        <td class=\"camp-name\">\n                            <strong>WildKin WitchCamp<\/strong>\n                            <span class=\"camp-status status-past\">Past<\/span>\n                        <\/td>\n                        \n                        <td class=\"camp-location\" data-location=\"Sydney, Australia\">\n                            Sydney, Australia                        <\/td>\n                        \n                                                <td class=\"distance-cell distance-column\" style=\"display: none;\" data-distance=\"\">\n                            <span class=\"distance-value\">--<\/span>\n                        <\/td>\n                                                \n                        <td class=\"start-date\" data-sort=\"2024-10-04\">\n                            Oct 4, 2024                        <\/td>\n                        \n                        <td class=\"end-date\" data-sort=\"2024-10-07\">\n                            Oct 7, 2024                        <\/td>\n                        \n                        <td class=\"duration\">\n                            4 days                        <\/td>\n                        \n                        <td class=\"website\">\n                                                            <a href=\"https:\/\/wildkinwitchcamp.com\/\" \n                                   target=\"_blank\" \n                                   rel=\"noopener noreferrer\" \n                                   class=\"camp-website-link\">\n                                   Visit Website \u2192\n                                <\/a>\n                                                    <\/td>\n                    <\/tr>\n                                        <tr class=\"camp-row\" \n                        data-camp-id=\"109\"\n                        data-location=\"Minnesota, USA\"\n                        data-start-date=\"2025-02-07\" \n                        data-end-date=\"2025-02-11\"\n                        data-status=\"past\"\n                        data-search-text=\"winter witchcamp minnesota, usa\">\n                        \n                        <td class=\"camp-name\">\n                            <strong>Winter Witchcamp<\/strong>\n                            <span class=\"camp-status status-past\">Past<\/span>\n                        <\/td>\n                        \n                        <td class=\"camp-location\" data-location=\"Minnesota, USA\">\n                            Minnesota, USA                        <\/td>\n                        \n                                                <td class=\"distance-cell distance-column\" style=\"display: none;\" data-distance=\"\">\n                            <span class=\"distance-value\">--<\/span>\n                        <\/td>\n                                                \n                        <td class=\"start-date\" data-sort=\"2025-02-07\">\n                            Feb 7, 2025                        <\/td>\n                        \n                        <td class=\"end-date\" data-sort=\"2025-02-11\">\n                            Feb 11, 2025                        <\/td>\n                        \n                        <td class=\"duration\">\n                            5 days                        <\/td>\n                        \n                        <td class=\"website\">\n                                                            <a href=\"https:\/\/winterwitchcamp.org\/\" \n                                   target=\"_blank\" \n                                   rel=\"noopener noreferrer\" \n                                   class=\"camp-website-link\">\n                                   Visit Website \u2192\n                                <\/a>\n                                                    <\/td>\n                    <\/tr>\n                                        <tr class=\"camp-row\" \n                        data-camp-id=\"110\"\n                        data-location=\"\"\n                        data-start-date=\"2025-06-11\" \n                        data-end-date=\"2025-06-15\"\n                        data-status=\"past\"\n                        data-search-text=\"wild ginger \">\n                        \n                        <td class=\"camp-name\">\n                            <strong>Wild Ginger<\/strong>\n                            <span class=\"camp-status status-past\">Past<\/span>\n                        <\/td>\n                        \n                        <td class=\"camp-location\" data-location=\"\">\n                                                    <\/td>\n                        \n                                                <td class=\"distance-cell distance-column\" style=\"display: none;\" data-distance=\"\">\n                            <span class=\"distance-value\">--<\/span>\n                        <\/td>\n                                                \n                        <td class=\"start-date\" data-sort=\"2025-06-11\">\n                            Jun 11, 2025                        <\/td>\n                        \n                        <td class=\"end-date\" data-sort=\"2025-06-15\">\n                            Jun 15, 2025                        <\/td>\n                        \n                        <td class=\"duration\">\n                            5 days                        <\/td>\n                        \n                        <td class=\"website\">\n                                                            <a href=\"https:\/\/www.wildgingerwitches.org\/\" \n                                   target=\"_blank\" \n                                   rel=\"noopener noreferrer\" \n                                   class=\"camp-website-link\">\n                                   Visit Website \u2192\n                                <\/a>\n                                                    <\/td>\n                    <\/tr>\n                                        <tr class=\"camp-row\" \n                        data-camp-id=\"111\"\n                        data-location=\"V\u00f6hringen (Bayern), Germany\"\n                        data-start-date=\"2025-06-14\" \n                        data-end-date=\"2025-06-21\"\n                        data-status=\"past\"\n                        data-search-text=\"earthartsky v\u00f6hringen (bayern), germany\">\n                        \n                        <td class=\"camp-name\">\n                            <strong>EarthArtSky<\/strong>\n                            <span class=\"camp-status status-past\">Past<\/span>\n                        <\/td>\n                        \n                        <td class=\"camp-location\" data-location=\"V\u00f6hringen (Bayern), Germany\">\n                            V\u00f6hringen (Bayern), Germany                        <\/td>\n                        \n                                                <td class=\"distance-cell distance-column\" style=\"display: none;\" data-distance=\"\">\n                            <span class=\"distance-value\">--<\/span>\n                        <\/td>\n                                                \n                        <td class=\"start-date\" data-sort=\"2025-06-14\">\n                            Jun 14, 2025                        <\/td>\n                        \n                        <td class=\"end-date\" data-sort=\"2025-06-21\">\n                            Jun 21, 2025                        <\/td>\n                        \n                        <td class=\"duration\">\n                            1 week, 1 day                        <\/td>\n                        \n                        <td class=\"website\">\n                                                            <a href=\"https:\/\/camp.earthartsky.de\/\" \n                                   target=\"_blank\" \n                                   rel=\"noopener noreferrer\" \n                                   class=\"camp-website-link\">\n                                   Visit Website \u2192\n                                <\/a>\n                                                    <\/td>\n                    <\/tr>\n                                        <tr class=\"camp-row\" \n                        data-camp-id=\"112\"\n                        data-location=\"Mendocino, California, USA\"\n                        data-start-date=\"2025-06-14\" \n                        data-end-date=\"2025-06-18\"\n                        data-status=\"past\"\n                        data-search-text=\"redwood magic mendocino, california, usa\">\n                        \n                        <td class=\"camp-name\">\n                            <strong>Redwood Magic<\/strong>\n                            <span class=\"camp-status status-past\">Past<\/span>\n                        <\/td>\n                        \n                        <td class=\"camp-location\" data-location=\"Mendocino, California, USA\">\n                            Mendocino, California, USA                        <\/td>\n                        \n                                                <td class=\"distance-cell distance-column\" style=\"display: none;\" data-distance=\"\">\n                            <span class=\"distance-value\">--<\/span>\n                        <\/td>\n                                                \n                        <td class=\"start-date\" data-sort=\"2025-06-14\">\n                            Jun 14, 2025                        <\/td>\n                        \n                        <td class=\"end-date\" data-sort=\"2025-06-18\">\n                            Jun 18, 2025                        <\/td>\n                        \n                        <td class=\"duration\">\n                            5 days                        <\/td>\n                        \n                        <td class=\"website\">\n                                                            <a href=\"https:\/\/redwoodmagic.org\/\" \n                                   target=\"_blank\" \n                                   rel=\"noopener noreferrer\" \n                                   class=\"camp-website-link\">\n                                   Visit Website \u2192\n                                <\/a>\n                                                    <\/td>\n                    <\/tr>\n                                        <tr class=\"camp-row\" \n                        data-camp-id=\"113\"\n                        data-location=\"Philadelphia, USA\"\n                        data-start-date=\"2025-06-21\" \n                        data-end-date=\"2025-06-27\"\n                        data-status=\"past\"\n                        data-search-text=\"spiralheart philadelphia, usa\">\n                        \n                        <td class=\"camp-name\">\n                            <strong>Spiralheart<\/strong>\n                            <span class=\"camp-status status-past\">Past<\/span>\n                        <\/td>\n                        \n                        <td class=\"camp-location\" data-location=\"Philadelphia, USA\">\n                            Philadelphia, USA                        <\/td>\n                        \n                                                <td class=\"distance-cell distance-column\" style=\"display: none;\" data-distance=\"\">\n                            <span class=\"distance-value\">--<\/span>\n                        <\/td>\n                                                \n                        <td class=\"start-date\" data-sort=\"2025-06-21\">\n                            Jun 21, 2025                        <\/td>\n                        \n                        <td class=\"end-date\" data-sort=\"2025-06-27\">\n                            Jun 27, 2025                        <\/td>\n                        \n                        <td class=\"duration\">\n                            1 week                        <\/td>\n                        \n                        <td class=\"website\">\n                                                            <a href=\"https:\/\/spiralheart.org\" \n                                   target=\"_blank\" \n                                   rel=\"noopener noreferrer\" \n                                   class=\"camp-website-link\">\n                                   Visit Website \u2192\n                                <\/a>\n                                                    <\/td>\n                    <\/tr>\n                                        <tr class=\"camp-row\" \n                        data-camp-id=\"114\"\n                        data-location=\"Mendocino, California, USA\"\n                        data-start-date=\"2025-06-29\" \n                        data-end-date=\"2025-07-06\"\n                        data-status=\"past\"\n                        data-search-text=\"california witchcamp mendocino, california, usa\">\n                        \n                        <td class=\"camp-name\">\n                            <strong>California Witchcamp<\/strong>\n                            <span class=\"camp-status status-past\">Past<\/span>\n                        <\/td>\n                        \n                        <td class=\"camp-location\" data-location=\"Mendocino, California, USA\">\n                            Mendocino, California, USA                        <\/td>\n                        \n                                                <td class=\"distance-cell distance-column\" style=\"display: none;\" data-distance=\"\">\n                            <span class=\"distance-value\">--<\/span>\n                        <\/td>\n                                                \n                        <td class=\"start-date\" data-sort=\"2025-06-29\">\n                            Jun 29, 2025                        <\/td>\n                        \n                        <td class=\"end-date\" data-sort=\"2025-07-06\">\n                            Jul 6, 2025                        <\/td>\n                        \n                        <td class=\"duration\">\n                            1 week, 1 day                        <\/td>\n                        \n                        <td class=\"website\">\n                                                            <a href=\"https:\/\/www.californiawitchcamp.org\/\" \n                                   target=\"_blank\" \n                                   rel=\"noopener noreferrer\" \n                                   class=\"camp-website-link\">\n                                   Visit Website \u2192\n                                <\/a>\n                                                    <\/td>\n                    <\/tr>\n                                        <tr class=\"camp-row\" \n                        data-camp-id=\"115\"\n                        data-location=\"\"\n                        data-start-date=\"2025-07-30\" \n                        data-end-date=\"2025-08-03\"\n                        data-status=\"past\"\n                        data-search-text=\"dragonrise \">\n                        \n                        <td class=\"camp-name\">\n                            <strong>Dragonrise<\/strong>\n                            <span class=\"camp-status status-past\">Past<\/span>\n                        <\/td>\n                        \n                        <td class=\"camp-location\" data-location=\"\">\n                                                    <\/td>\n                        \n                                                <td class=\"distance-cell distance-column\" style=\"display: none;\" data-distance=\"\">\n                            <span class=\"distance-value\">--<\/span>\n                        <\/td>\n                                                \n                        <td class=\"start-date\" data-sort=\"2025-07-30\">\n                            Jul 30, 2025                        <\/td>\n                        \n                        <td class=\"end-date\" data-sort=\"2025-08-03\">\n                            Aug 3, 2025                        <\/td>\n                        \n                        <td class=\"duration\">\n                            5 days                        <\/td>\n                        \n                        <td class=\"website\">\n                                                            <a href=\"https:\/\/dragonrisecamp.org\/\" \n                                   target=\"_blank\" \n                                   rel=\"noopener noreferrer\" \n                                   class=\"camp-website-link\">\n                                   Visit Website \u2192\n                                <\/a>\n                                                    <\/td>\n                    <\/tr>\n                                        <tr class=\"camp-row\" \n                        data-camp-id=\"59\"\n                        data-location=\"Mendocino, California, USA\"\n                        data-start-date=\"2025-08-09\" \n                        data-end-date=\"2025-08-13\"\n                        data-status=\"past\"\n                        data-search-text=\"witchlets in the woods mendocino, california, usa\">\n                        \n                        <td class=\"camp-name\">\n                            <strong>Witchlets in the Woods<\/strong>\n                            <span class=\"camp-status status-past\">Past<\/span>\n                        <\/td>\n                        \n                        <td class=\"camp-location\" data-location=\"Mendocino, California, USA\">\n                            Mendocino, California, USA                        <\/td>\n                        \n                                                <td class=\"distance-cell distance-column\" style=\"display: none;\" data-distance=\"\">\n                            <span class=\"distance-value\">--<\/span>\n                        <\/td>\n                                                \n                        <td class=\"start-date\" data-sort=\"2025-08-09\">\n                            Aug 9, 2025                        <\/td>\n                        \n                        <td class=\"end-date\" data-sort=\"2025-08-13\">\n                            Aug 13, 2025                        <\/td>\n                        \n                        <td class=\"duration\">\n                            5 days                        <\/td>\n                        \n                        <td class=\"website\">\n                                                            <a href=\"https:\/\/www.witchlets.org\/\" \n                                   target=\"_blank\" \n                                   rel=\"noopener noreferrer\" \n                                   class=\"camp-website-link\">\n                                   Visit Website \u2192\n                                <\/a>\n                                                    <\/td>\n                    <\/tr>\n                                        <tr class=\"camp-row\" \n                        data-camp-id=\"60\"\n                        data-location=\"Vermont, USA\"\n                        data-start-date=\"2025-08-16\" \n                        data-end-date=\"2025-08-23\"\n                        data-status=\"past\"\n                        data-search-text=\"vermont witchcamp vermont, usa\">\n                        \n                        <td class=\"camp-name\">\n                            <strong>Vermont Witchcamp<\/strong>\n                            <span class=\"camp-status status-past\">Past<\/span>\n                        <\/td>\n                        \n                        <td class=\"camp-location\" data-location=\"Vermont, USA\">\n                            Vermont, USA                        <\/td>\n                        \n                                                <td class=\"distance-cell distance-column\" style=\"display: none;\" data-distance=\"\">\n                            <span class=\"distance-value\">--<\/span>\n                        <\/td>\n                                                \n                        <td class=\"start-date\" data-sort=\"2025-08-16\">\n                            Aug 16, 2025                        <\/td>\n                        \n                        <td class=\"end-date\" data-sort=\"2025-08-23\">\n                            Aug 23, 2025                        <\/td>\n                        \n                        <td class=\"duration\">\n                            1 week, 1 day                        <\/td>\n                        \n                        <td class=\"website\">\n                                                            <a href=\"http:\/\/www.vermontwitchcamp.net\" \n                                   target=\"_blank\" \n                                   rel=\"noopener noreferrer\" \n                                   class=\"camp-website-link\">\n                                   Visit Website \u2192\n                                <\/a>\n                                                    <\/td>\n                    <\/tr>\n                                        <tr class=\"camp-row\" \n                        data-camp-id=\"61\"\n                        data-location=\"Mendocino, California, USA\"\n                        data-start-date=\"2025-10-10\" \n                        data-end-date=\"2025-10-13\"\n                        data-status=\"past\"\n                        data-search-text=\"mysteries of samhain mendocino, california, usa\">\n                        \n                        <td class=\"camp-name\">\n                            <strong>Mysteries of Samhain<\/strong>\n                            <span class=\"camp-status status-past\">Past<\/span>\n                        <\/td>\n                        \n                        <td class=\"camp-location\" data-location=\"Mendocino, California, USA\">\n                            Mendocino, California, USA                        <\/td>\n                        \n                                                <td class=\"distance-cell distance-column\" style=\"display: none;\" data-distance=\"\">\n                            <span class=\"distance-value\">--<\/span>\n                        <\/td>\n                                                \n                        <td class=\"start-date\" data-sort=\"2025-10-10\">\n                            Oct 10, 2025                        <\/td>\n                        \n                        <td class=\"end-date\" data-sort=\"2025-10-13\">\n                            Oct 13, 2025                        <\/td>\n                        \n                        <td class=\"duration\">\n                            4 days                        <\/td>\n                        \n                        <td class=\"website\">\n                                                            <a href=\"https:\/\/samhainmysteries.org\/\" \n                                   target=\"_blank\" \n                                   rel=\"noopener noreferrer\" \n                                   class=\"camp-website-link\">\n                                   Visit Website \u2192\n                                <\/a>\n                                                    <\/td>\n                    <\/tr>\n                                        <tr class=\"camp-row\" \n                        data-camp-id=\"91\"\n                        data-location=\"Texas, USA\"\n                        data-start-date=\"2025-10-19\" \n                        data-end-date=\"2025-10-26\"\n                        data-status=\"past\"\n                        data-search-text=\"tejas web texas, usa\">\n                        \n                        <td class=\"camp-name\">\n                            <strong>Tejas Web<\/strong>\n                            <span class=\"camp-status status-past\">Past<\/span>\n                        <\/td>\n                        \n                        <td class=\"camp-location\" data-location=\"Texas, USA\">\n                            Texas, USA                        <\/td>\n                        \n                                                <td class=\"distance-cell distance-column\" style=\"display: none;\" data-distance=\"\">\n                            <span class=\"distance-value\">--<\/span>\n                        <\/td>\n                                                \n                        <td class=\"start-date\" data-sort=\"2025-10-19\">\n                            Oct 19, 2025                        <\/td>\n                        \n                        <td class=\"end-date\" data-sort=\"2025-10-26\">\n                            Oct 26, 2025                        <\/td>\n                        \n                        <td class=\"duration\">\n                            1 week, 1 day                        <\/td>\n                        \n                        <td class=\"website\">\n                                                            <a href=\"http:\/\/tejasweb.org\" \n                                   target=\"_blank\" \n                                   rel=\"noopener noreferrer\" \n                                   class=\"camp-website-link\">\n                                   Visit Website \u2192\n                                <\/a>\n                                                    <\/td>\n                    <\/tr>\n                                        <tr class=\"camp-row\" \n                        data-camp-id=\"116\"\n                        data-location=\"Online\"\n                        data-start-date=\"2025-11-07\" \n                        data-end-date=\"2025-11-10\"\n                        data-status=\"past\"\n                        data-search-text=\"world wide witchcamp online\">\n                        \n                        <td class=\"camp-name\">\n                            <strong>World Wide Witchcamp<\/strong>\n                            <span class=\"camp-status status-past\">Past<\/span>\n                        <\/td>\n                        \n                        <td class=\"camp-location\" data-location=\"Online\">\n                            Online                        <\/td>\n                        \n                                                <td class=\"distance-cell distance-column\" style=\"display: none;\" data-distance=\"\">\n                            <span class=\"distance-value\">--<\/span>\n                        <\/td>\n                                                \n                        <td class=\"start-date\" data-sort=\"2025-11-07\">\n                            Nov 7, 2025                        <\/td>\n                        \n                        <td class=\"end-date\" data-sort=\"2025-11-10\">\n                            Nov 10, 2025                        <\/td>\n                        \n                        <td class=\"duration\">\n                            4 days                        <\/td>\n                        \n                        <td class=\"website\">\n                                                            <a href=\"https:\/\/www.worldwidewitchcamp.com\/\" \n                                   target=\"_blank\" \n                                   rel=\"noopener noreferrer\" \n                                   class=\"camp-website-link\">\n                                   Visit Website \u2192\n                                <\/a>\n                                                    <\/td>\n                    <\/tr>\n                                <\/tbody>\n        <\/table>\n        \n        <!-- Loading indicator for distance calculations -->\n        <div id=\"distance-loading\" class=\"loading-indicator\" style=\"display: none;\">\n            <p>Calculating distances...<\/p>\n        <\/div>\n        \n        <!-- No results message -->\n        <div id=\"no-results-message\" class=\"no-results\" style=\"display: none;\">\n            <p>No camps match your search criteria. Try adjusting your filters.<\/p>\n        <\/div>\n        \n    <\/div>\n    \n    <style>\n    .find-camps-wrapper {\n        max-width: 1200px;\n        margin: 0 auto;\n        padding: 20px;\n    }\n    \n    .camps-search-section {\n        background: #f8f9fa;\n        padding: 30px;\n        border-radius: 8px;\n        margin-bottom: 30px;\n        box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n    }\n    \n    .camps-search-section h3 {\n        margin-top: 0;\n        color: #333;\n        font-size: 1.5em;\n    }\n    \n    .location-distance-section {\n        margin: 20px 0;\n        padding: 20px;\n        background: white;\n        border-radius: 6px;\n        border: 1px solid #ddd;\n    }\n    \n    .user-location-input {\n        display: flex;\n        align-items: center;\n        gap: 10px;\n        margin-bottom: 15px;\n    }\n    \n    .location-input {\n        flex: 1;\n        padding: 10px;\n        border: 1px solid #ddd;\n        border-radius: 4px;\n        font-size: 14px;\n    }\n    \n    .location-btn {\n        padding: 10px 15px;\n        background: #0073aa;\n        color: white;\n        border: none;\n        border-radius: 4px;\n        cursor: pointer;\n        font-size: 14px;\n        white-space: nowrap;\n    }\n    \n    .location-btn:hover {\n        background: #005a87;\n    }\n    \n    .camps-filters {\n        margin-top: 20px;\n    }\n    \n    .filter-row {\n        display: flex;\n        flex-wrap: wrap;\n        gap: 15px;\n        align-items: end;\n    }\n    \n    .filter-group {\n        display: flex;\n        flex-direction: column;\n        min-width: 150px;\n    }\n    \n    .filter-group label {\n        font-weight: 600;\n        margin-bottom: 5px;\n        color: #333;\n    }\n    \n    .search-input, .filter-select {\n        padding: 8px;\n        border: 1px solid #ddd;\n        border-radius: 4px;\n        font-size: 14px;\n    }\n    \n    .clear-btn {\n        padding: 8px 15px;\n        background: #dc3545;\n        color: white;\n        border: none;\n        border-radius: 4px;\n        cursor: pointer;\n        font-size: 14px;\n    }\n    \n    .clear-btn:hover {\n        background: #c82333;\n    }\n    \n    .results-summary {\n        margin: 20px 0;\n        font-weight: 600;\n        color: #666;\n    }\n    \n    .camps-listing-table {\n        width: 100%;\n        border-collapse: collapse;\n        background: white;\n        box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n        border-radius: 8px;\n        overflow: hidden;\n    }\n    \n    .camps-listing-table th {\n        background: #f1f3f4;\n        padding: 15px;\n        text-align: left;\n        font-weight: 600;\n        border-bottom: 2px solid #ddd;\n        color: #333;\n    }\n    \n    .camps-listing-table th.sortable {\n        cursor: pointer;\n        user-select: none;\n        position: relative;\n    }\n    \n    .camps-listing-table th.sortable:hover {\n        background: #e8eaed;\n    }\n    \n    .camps-listing-table td {\n        padding: 15px;\n        border-bottom: 1px solid #eee;\n        vertical-align: top;\n    }\n    \n    .camps-listing-table tr:hover {\n        background: #f8f9fa;\n    }\n    \n    .camp-status {\n        display: inline-block;\n        padding: 2px 8px;\n        border-radius: 12px;\n        font-size: 11px;\n        font-weight: 600;\n        text-transform: uppercase;\n        margin-left: 10px;\n    }\n    \n    .status-upcoming {\n        background: #e3f2fd;\n        color: #1976d2;\n    }\n    \n    .status-current {\n        background: #e8f5e8;\n        color: #2e7d32;\n    }\n    \n    .status-past {\n        background: #fce4ec;\n        color: #c2185b;\n    }\n    \n    .camp-website-link {\n        color: #0073aa;\n        text-decoration: none;\n        font-weight: 600;\n    }\n    \n    .camp-website-link:hover {\n        text-decoration: underline;\n    }\n    \n    .no-website {\n        color: #999;\n    }\n    \n    .distance-value {\n        font-weight: 600;\n    }\n    \n    .no-results, .no-camps-message {\n        text-align: center;\n        padding: 40px;\n        background: #f8f9fa;\n        border-radius: 8px;\n        color: #666;\n    }\n    \n    .loading-indicator {\n        text-align: center;\n        padding: 20px;\n        color: #666;\n    }\n    \n    \/* Responsive Design *\/\n    @media (max-width: 768px) {\n        .filter-row {\n            flex-direction: column;\n        }\n        \n        .filter-group {\n            min-width: 100%;\n        }\n        \n        .user-location-input {\n            flex-direction: column;\n            align-items: stretch;\n        }\n        \n        .location-btn {\n            align-self: flex-start;\n        }\n        \n        .camps-listing-table {\n            font-size: 14px;\n        }\n        \n        .camps-listing-table th,\n        .camps-listing-table td {\n            padding: 10px 5px;\n        }\n        \n        \/* Stack table on very small screens *\/\n        @media (max-width: 600px) {\n            .camps-listing-table,\n            .camps-listing-table thead,\n            .camps-listing-table tbody,\n            .camps-listing-table th,\n            .camps-listing-table td,\n            .camps-listing-table tr {\n                display: block;\n            }\n            \n            .camps-listing-table thead tr {\n                position: absolute;\n                top: -9999px;\n                left: -9999px;\n            }\n            \n            .camps-listing-table tr {\n                border: 1px solid #ccc;\n                margin-bottom: 10px;\n                padding: 10px;\n                border-radius: 8px;\n                background: white;\n            }\n            \n            .camps-listing-table td {\n                border: none;\n                position: relative;\n                padding-left: 50%;\n                padding-top: 10px;\n                padding-bottom: 10px;\n            }\n            \n            .camps-listing-table td:before {\n                content: attr(data-label);\n                position: absolute;\n                left: 6px;\n                width: 45%;\n                padding-right: 10px;\n                white-space: nowrap;\n                font-weight: 600;\n                color: #333;\n            }\n        }\n    }\n    <\/style>\n    \n    <script>\n\/\/<![CDATA[\n    \/\/ Enhanced JavaScript for camp filtering and distance calculation\n    document.addEventListener('DOMContentLoaded', function() {\n        const table = document.getElementById('camps-table');\n\t\t\n\t\t    console.log('Checking WP Table Sorter...');\n    \n\t\t\/\/ Check for jQuery\n\t\tif (typeof jQuery !== 'undefined') {\n\t\t\tconsole.log('jQuery is loaded');\n\n\t\t\t\/\/ Check if the plugin's methods exist\n\t\t\tjQuery(document).ready(function($) {\n\t\t\t\tconsole.log('DOM ready');\n\n\t\t\t\t\/\/ Check if table sorter plugin is available\n\t\t\t\tif ($.fn.tablesorter) {\n\t\t\t\t\tconsole.log('TableSorter plugin is available');\n\n\t\t\t\t\t\/\/ Manually initialize if needed\n\t\t\t\t\t$('#camps-table').tablesorter({\n\t\t\t\t\t\theaders: {\n\t\t\t\t\t\t\t6: { sorter: false } \/\/ Disable sorting on Website column (index 6)\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tconsole.log('TableSorter plugin NOT found');\n\t\t\t\t}\n\n\t\t\t\t\/\/ Check if WP Table Sort plugin is available\n\t\t\t\tif (typeof wpTableSort !== 'undefined') {\n\t\t\t\t\tconsole.log('WP Table Sort plugin is available');\n\t\t\t\t} else {\n\t\t\t\t\tconsole.log('WP Table Sort plugin NOT found');\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tconsole.log('jQuery is NOT loaded');\n\t\t}\n        if (!table) return;\n        \n        const searchInput = document.getElementById('search-camps');\n        const locationFilter = document.getElementById('location-filter');\n        const dateFilter = document.getElementById('date-filter');\n        const clearButton = document.getElementById('clear-all-filters');\n        const userLocationInput = document.getElementById('user-location');\n        const getUserLocationBtn = document.getElementById('get-user-location');\n        const distanceRadius = document.getElementById('distance-radius');\n        const distanceControls = document.querySelector('.distance-controls');\n        const distanceColumns = document.querySelectorAll('.distance-column');\n        const visibleCountSpan = document.querySelector('.visible-count');\n        const totalCountSpan = document.querySelector('.total-count');\n        const noResultsMsg = document.getElementById('no-results-message');\n        const loadingIndicator = document.getElementById('distance-loading');\n        \n        let userCoordinates = null;\n        let campDistances = {};\n        \n        \/\/ Initialize\n        const allRows = Array.from(table.querySelectorAll('.camp-row'));\n        const totalCamps = allRows.length;\n\t\t        \n        \/\/ Geolocation functionality\n        if (getUserLocationBtn) {\n            getUserLocationBtn.addEventListener('click', function() {\n                if (!navigator.geolocation) {\n                    alert('Geolocation is not supported by this browser.');\n                    return;\n                }\n                \n                getUserLocationBtn.textContent = '\ud83d\udccd Getting location...';\n                getUserLocationBtn.disabled = true;\n                \n                navigator.geolocation.getCurrentPosition(\n                    function(position) {\n                        userCoordinates = {\n                            lat: position.coords.latitude,\n                            lng: position.coords.longitude\n                        };\n                        \n                        \/\/ Reverse geocode to get address\n                        reverseGeocode(userCoordinates.lat, userCoordinates.lng);\n                        \n                        getUserLocationBtn.textContent = '\ud83d\udccd Use My Location';\n                        getUserLocationBtn.disabled = false;\n                    },\n                    function(error) {\n                        console.error('Geolocation error:', error);\n                        alert('Unable to get your location. Please enter it manually.');\n                        getUserLocationBtn.textContent = '\ud83d\udccd Use My Location';\n                        getUserLocationBtn.disabled = false;\n                    }\n                );\n            });\n        }\n        \n        \/\/ User location input change\n        if (userLocationInput) {\n            userLocationInput.addEventListener('input', debounce(function() {\n                const location = this.value.trim();\n                if (location.length > 3) {\n                    geocodeLocation(location);\n                } else {\n                    hideDistanceColumns();\n                }\n            }, 500));\n        }\n        \n        \/\/ Distance radius change\n        if (distanceRadius) {\n            distanceRadius.addEventListener('change', function() {\n                if ([userCoordinates, Object.keys(campDistances).length > 0].every(Boolean)) {\n                    filterTable();\n                }\n            });\n        }\n        \n        \/\/ Search and filter event listeners\n        if (searchInput) searchInput.addEventListener('input', debounce(filterTable, 300));\n        if (locationFilter) locationFilter.addEventListener('change', filterTable);\n        if (dateFilter) dateFilter.addEventListener('change', filterTable);\n        \n        \/\/ Clear filters\n        if (clearButton) {\n            clearButton.addEventListener('click', function() {\n                if (searchInput) searchInput.value = '';\n                if (locationFilter) locationFilter.value = '';\n                if (dateFilter) dateFilter.value = '';\n                if (userLocationInput) userLocationInput.value = '';\n                if (distanceRadius) distanceRadius.value = '50';\n                \n                hideDistanceColumns();\n                userCoordinates = null;\n                campDistances = {};\n                filterTable();\n            });\n        }\n        \n        \/\/ Debounce function\n        function debounce(func, wait) {\n            let timeout;\n            return function executedFunction(...args) {\n                const later = function() {\n                    clearTimeout(timeout);\n                    func(...args);\n                };\n                clearTimeout(timeout);\n                timeout = setTimeout(later, wait);\n            };\n        }\n        \n        \/\/ Geocoding functions (you'll need to implement with your preferred service)\n        function geocodeLocation(address) {\n            \/\/ This is a placeholder - implement with your geocoding service\n            \/\/ For example, using Google Maps Geocoding API or OpenStreetMap Nominatim\n            console.log('Geocoding address:', address);\n            \/\/ showLoadingIndicator();\n            \n            \/\/ Example implementation would make an API call here\n            \/\/ and then call calculateDistances() with the results\n            const url = `https:\/\/nominatim.openstreetmap.org\/search?q=${encodeURIComponent(address)}&format=json&limit=1`;\n    \n\t\t\tfetch(url, {\n\t\t\t\tmethod: 'GET',\n\t\t\t\theaders: {\n\t\t\t\t\t'User-Agent': 'YourAppName (your-email@example.com)' \/\/ Add your app name and contact info\n\t\t\t\t}\n\t\t\t})\n\t\t\t.then(response => response.json())\n\t\t\t.then(data => {\n\t\t\t\tif (data.length > 0) {\n\t\t\t\t\tconst { lat, lon } = data[0];\n\t\t\t\t\tconsole.log(`Coordinates for \"${address}\":`, lat, lon);\n\t\t\t\t\tuserCoordinates = { lat: parseFloat(lat), lng: parseFloat(lon) };\n\t\t\t\t\tcalculateDistances(); \/\/ Call your distance calculation function\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error('No results found for the given address.');\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(error => {\n\t\t\t\tconsole.error('Error during geocoding:', error);\n\t\t\t});\n        }\n        \n        function reverseGeocode(lat, lng) {\n            \/\/ Placeholder for reverse geocoding\n            if (userLocationInput) {\n                userLocationInput.value = `${lat.toFixed(4)}, ${lng.toFixed(4)}`;\n            }\n\t\t\tconst url = `https:\/\/nominatim.openstreetmap.org\/reverse?lat=${lat}&lon=${lng}&format=json`;\n    \n\t\t\tfetch(url, {\n\t\t\t\tmethod: 'GET',\n\t\t\t\theaders: {\n\t\t\t\t\t'User-Agent': 'YourAppName (your-email@example.com)' \/\/ Add your app name and contact info\n\t\t\t\t}\n\t\t\t})\n\t\t\t.then(response => response.json())\n\t\t\t.then(data => {\n\t\t\t\tif (data.address) {\n\t\t\t\t\tconst address = `${data.address.city || data.address.town || ''}, ${data.address.state || ''}, ${data.address.country || ''}`;\n\t\t\t\t\tconsole.log(`Address for coordinates (${lat}, ${lng}):`, address);\n\t\t\t\t\tif (userLocationInput) {\n\t\t\t\t\t\tuserLocationInput.value = address;\n\t\t\t\t\t}\n\t\t\t\t\tcalculateDistances(); \/\/ Call your distance calculation function\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error('No address found for the given coordinates.');\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch(error => {\n\t\t\t\tconsole.error('Error during reverse geocoding:', error);\n\t\t\t});\n            calculateDistances();\n        }\n        \n        function calculateDistances() {\n            if (!userCoordinates) return;\n            \n            showLoadingIndicator();\n            showDistanceColumns();\n            \n            \/\/ Calculate distances to each camp location\n            allRows.forEach(row => {\n                const campId = row.dataset.campId;\n                const location = row.dataset.location;\n                \n                \/\/ This would typically involve geocoding the camp location\n                \/\/ and calculating the distance. For now, we'll use a placeholder\n                geocodeCampLocation(location).then(campCoords => {\n                    if (campCoords) {\n                        const distance = calculateHaversineDistance(\n                            userCoordinates.lat, \n                            userCoordinates.lng,\n                            campCoords.lat, \n                            campCoords.lng\n                        );\n                        \n                        campDistances[campId] = distance;\n                        updateDistanceDisplay(row, distance);\n                    }\n                });\n            });\n            \n            setTimeout(() => {\n                hideLoadingIndicator();\n                filterTable();\n            }, 2000); \/\/ Adjust based on actual geocoding time\n        }\n        \n        function geocodeCampLocation(location) {\n            \/\/ Placeholder - implement with your geocoding service\n            return Promise.resolve({\n                lat: 37.7749 + Math.random() * 2 - 1, \/\/ Random coordinates for demo\n                lng: -122.4194 + Math.random() * 2 - 1\n            });\n        }\n        \n        function calculateHaversineDistance(lat1, lng1, lat2, lng2) {\n            const R = 3959; \/\/ Earth's radius in miles\n            const dLat = (lat2 - lat1) * Math.PI \/ 180;\n            const dLng = (lng2 - lng1) * Math.PI \/ 180;\n            const a = Math.sin(dLat\/2) * Math.sin(dLat\/2) +\n                      Math.cos(lat1 * Math.PI \/ 180) * Math.cos(lat2 * Math.PI \/ 180) *\n                      Math.sin(dLng\/2) * Math.sin(dLng\/2);\n            const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));\n            return R * c;\n        }\n        \n        function updateDistanceDisplay(row, distance) {\n            const distanceCell = row.querySelector('.distance-cell');\n            if (distanceCell) {\n                const distanceValue = distanceCell.querySelector('.distance-value');\n                if (distanceValue) {\n                    distanceValue.textContent = `${Math.round(distance)} mi`;\n                }\n                distanceCell.dataset.distance = distance.toString();\n            }\n        }\n        \n        function showDistanceColumns() {\n            distanceColumns.forEach(col => col.style.display = '');\n            if (distanceControls) distanceControls.style.display = '';\n        }\n        \n        function hideDistanceColumns() {\n            distanceColumns.forEach(col => col.style.display = 'none');\n            if (distanceControls) distanceControls.style.display = 'none';\n        }\n        \n        function showLoadingIndicator() {\n            if (loadingIndicator) loadingIndicator.style.display = '';\n        }\n        \n        function hideLoadingIndicator() {\n            if (loadingIndicator) loadingIndicator.style.display = 'none';\n        }\n        \n        function getDateStatus(startDate, endDate) {\n            const today = new Date();\n            today.setHours(0, 0, 0, 0);\n            \n            const start = new Date(startDate);\n            const end = endDate ? new Date(endDate) : start;\n            \n            if (end < today) return 'past';\n            if ([start <= today, end >= today].every(Boolean)) return 'current';\n            if (start > today) return 'upcoming';\n            \n            return 'unknown';\n        }\n        \n        function matchesDateFilter(startDate, endDate, filter) {\n            if (!filter) return true;\n            \n            const today = new Date();\n            const start = new Date(startDate);\n            const end = endDate ? new Date(endDate) : start;\n            \n            switch (filter) {\n                case 'upcoming':\n                    return start > today;\n                case 'current':\n                    return [start <= today, end >= today].every(Boolean);\n                case 'this-month':\n                    return [start.getMonth() === today.getMonth(), start.getFullYear() === today.getFullYear()].every(Boolean);\n                case 'next-month':\n                    const nextMonth = new Date(today.getFullYear(), today.getMonth() + 1, 1);\n                    return [start.getMonth() === nextMonth.getMonth(), start.getFullYear() === nextMonth.getFullYear()].every(Boolean);\n                case 'this-year':\n                    return start.getFullYear() === today.getFullYear();\n                default:\n                    return true;\n            }\n        }\n        \n        function filterTable() {\n            const searchTerm = searchInput ? searchInput.value.toLowerCase().trim() : '';\n            const selectedLocation = locationFilter ? locationFilter.value : '';\n            const selectedDateFilter = dateFilter ? dateFilter.value : '';\n            const maxDistance = distanceRadius && userCoordinates ? parseFloat(distanceRadius.value) : null;\n            \n            let visibleCount = 0;\n            \n            allRows.forEach(row => {\n                const searchText = row.dataset.searchText;\n                const location = row.dataset.location;\n                const startDate = row.dataset.startDate;\n                const endDate = row.dataset.endDate;\n                const campId = row.dataset.campId;\n                const distance = campDistances[campId];\n                \n                \/\/ Apply filters\n                const matchesSearch = !searchTerm || searchText.includes(searchTerm);\n                const matchesLocation = !selectedLocation || location === selectedLocation;\n                const matchesDate = matchesDateFilter(startDate, endDate, selectedDateFilter);\n                const matchesDistance = !maxDistance || !distance || distance <= maxDistance;\n                \n                const shouldShow = [matchesSearch, matchesLocation, matchesDate, matchesDistance].every(Boolean);\n                \n                row.style.display = shouldShow ? '' : 'none';\n                if (shouldShow) visibleCount++;\n            });\n            \n            \/\/ Update counts\n            if (visibleCountSpan) visibleCountSpan.textContent = visibleCount;\n            if (totalCountSpan) totalCountSpan.textContent = totalCamps;\n            \n            \/\/ Show\/hide no results message\n            if (noResultsMsg) {\n                noResultsMsg.style.display = visibleCount === 0 ? '' : 'none';\n            }\n            \n            \/\/ Show\/hide table\n            if (table) {\n                table.style.display = visibleCount === 0 ? 'none' : '';\n            }\n        }\n        \n        \/\/ Initialize the table\n        filterTable();\n    });\n\t\t\n\t\t\n\tfunction updateSortIndicators(headers, activeHeader, direction) {\n\t\theaders.forEach(header => {\n\t\t\tconst indicator = header.querySelector('.sort-indicator');\n\t\t\tif (indicator) {\n\t\t\t\tif (header === activeHeader) {\n\t\t\t\t\tindicator.innerHTML = direction === 'asc' ? '\u2191' : '\u2193';\n\t\t\t\t\tindicator.style.opacity = '1';\n\t\t\t\t} else {\n\t\t\t\t\tindicator.innerHTML = '\u2195\ufe0f';\n\t\t\t\t\tindicator.style.opacity = '0.5';\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tfunction sortTable(table, columnIndex, sortType, direction) {\n\t\tconst tbody = table.querySelector('tbody');\n\t\tconst rows = Array.from(tbody.querySelectorAll('tr.camp-row'));\n\n\t\trows.sort((a, b) => {\n\t\t\tlet aValue = getCellValue(a, columnIndex, sortType);\n\t\t\tlet bValue = getCellValue(b, columnIndex, sortType);\n\n\t\t\t\/\/ Handle different data types\n\t\t\tswitch (sortType) {\n\t\t\t\tcase 'date':\n\t\t\t\t\taValue = new Date(aValue || '1900-01-01');\n\t\t\t\t\tbValue = new Date(bValue || '1900-01-01');\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'numeric':\n\t\t\t\t\taValue = parseFloat(aValue) || 0;\n\t\t\t\t\tbValue = parseFloat(bValue) || 0;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'string':\n\t\t\t\tdefault:\n\t\t\t\t\taValue = aValue.toString().toLowerCase();\n\t\t\t\t\tbValue = bValue.toString().toLowerCase();\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (aValue < bValue) return direction === 'asc' ? -1 : 1;\n\t\t\tif (aValue > bValue) return direction === 'asc' ? 1 : -1;\n\t\t\treturn 0;\n\t\t});\n\n\t\t\/\/ Re-append sorted rows\n\t\trows.forEach(row => tbody.appendChild(row));\n\t}\n\n\tfunction getCellValue(row, columnIndex, sortType) {\n\t\tconst cell = row.children[columnIndex];\n\t\tif (!cell) return '';\n\n\t\t\/\/ Check for data-sort attribute first (for dates)\n\t\tif (cell.hasAttribute('data-sort')) {\n\t\t\treturn cell.getAttribute('data-sort');\n\t\t}\n\n\t\t\/\/ For distance column, get from data-distance attribute\n\t\tif (cell.hasAttribute('data-distance')) {\n\t\t\treturn cell.getAttribute('data-distance');\n\t\t}\n\n\t\t\/\/ Default to text content\n\t\treturn cell.textContent.trim();\n\t}\n    <\/script>\n    \n\n\n\n<h2 class=\"wp-block-heading\">About Our Camps<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Discover amazing camp experiences across the world! Use the search and filter tools above to find camps that match your preferences. You can search by location, dates, and even find camps near you by entering your location.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">How to Use This Page<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Search:<\/strong> Type in camp names or keywords to find specific camps<\/li>\n\n\n\n<li><strong>Location Filter:<\/strong> Select a specific location from the dropdown<\/li>\n\n\n\n<li><strong>Date Filter:<\/strong> Choose from different time periods to find camps that fit your schedule<\/li>\n\n\n\n<li><strong>Distance Search:<\/strong> Enter your location to see camps sorted by distance from you<\/li>\n\n\n\n<li><strong>Sort Columns:<\/strong> Click on any column header to sort the results<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">All camps listed here are currently active. Click &#8220;Visit Website&#8221; to learn more about each camp and apply.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>About Our Camps Discover amazing camp experiences across the world! Use the search and filter tools above to find camps that match your preferences. You can search by location, dates, [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-camps.php","meta":{"_EventAllDay":false,"_EventTimezone":"","_EventStartDate":"","_EventEndDate":"","_EventStartDateUTC":"","_EventEndDateUTC":"","_EventShowMap":false,"_EventShowMapLink":false,"_EventURL":"","_EventCost":"","_EventCostDescription":"","_EventCurrencySymbol":"","_EventCurrencyCode":"","_EventCurrencyPosition":"","_EventDateTimeSeparator":"","_EventTimeRangeSeparator":"","_EventOrganizerID":[],"_EventVenueID":[],"_OrganizerEmail":"","_OrganizerPhone":"","_OrganizerWebsite":"","_VenueAddress":"","_VenueCity":"","_VenueCountry":"","_VenueProvince":"","_VenueState":"","_VenueZip":"","_VenuePhone":"","_VenueURL":"","_VenueStateProvince":"","_VenueLat":"","_VenueLng":"","_VenueShowMap":false,"_VenueShowMapLink":false,"footnotes":""},"class_list":["post-68","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/witchcamp-dev.cybermythos.net\/index.php?rest_route=\/wp\/v2\/pages\/68","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/witchcamp-dev.cybermythos.net\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/witchcamp-dev.cybermythos.net\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/witchcamp-dev.cybermythos.net\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/witchcamp-dev.cybermythos.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=68"}],"version-history":[{"count":2,"href":"https:\/\/witchcamp-dev.cybermythos.net\/index.php?rest_route=\/wp\/v2\/pages\/68\/revisions"}],"predecessor-version":[{"id":103,"href":"https:\/\/witchcamp-dev.cybermythos.net\/index.php?rest_route=\/wp\/v2\/pages\/68\/revisions\/103"}],"wp:attachment":[{"href":"https:\/\/witchcamp-dev.cybermythos.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=68"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}