<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Language" content="en" />

<meta property="og:image" content="https://w2.chabad.org/media/images/1116/agJF11166260.jpg" itemprop="image" width="212" height="106" />
<meta property="og:image:width" content="212" />
<meta property="og:image:height" content="106" />
<meta name="keywords" content="Isolated,,yet,together" />
<meta name="title" content="Isolated, yet together - Chabad Jewish Community Center" />
<meta property="og:type" content="website" />
<meta name="scope-aids" content="523377-523385-4014049-4732236" />
<meta name="article-keywords" content="16403-16669-1709-2471-1674-2170-2898" />
<meta name="scope-aid" content="523377" />
<meta name="scope-aid" content="523385" />
<meta name="scope-aid" content="4014049" />
<meta name="scope-aid" content="4732236" />
<meta name="article-keyword" content="16403" />
<meta name="article-keyword" content="16669" />
<meta name="article-keyword" content="1709" />
<meta name="article-keyword" content="2471" />
<meta name="article-keyword" content="1674" />
<meta name="article-keyword" content="2170" />
<meta name="article-keyword" content="2898" />
<meta property="og:url" content="https://www.jewishfolsom.org/templates/articlecco_cdo/aid/4732236/jewish/Isolated-yet-together.htm" />
<meta property="twitter:card" content="summary_large_image" />
<meta property="twitter:site" content="@chabad" />
<meta property="og:title" content="Isolated, yet together - Chabad Jewish Community Center" /><link rel="canonical" href="https://www.jewishfolsom.org/templates/articlecco_cdo/aid/4732236/jewish/Isolated-yet-together.htm" />
<link rel="image_src" href="https://w2.chabad.org/media/images/1116/agJF11166260.jpg" />
<link rel="icon" type="image/png" href="https://www.jewishfolsom.org/media/images/1120/iswH11202815.png" />
<link rel="Stylesheet" href="/css/fonts/font-awesome/font-awesome-5.css?v=2D6ABDDB" id="kfont-awesome" type="text/css"/>
<link rel="Stylesheet" href="/css/DefaultGrid.css?v=A13D74E8" id="kgrid" type="text/css"/>
<link rel="Stylesheet" href="/css/Elements.css?v=3A4C63F4" id="k6" type="text/css"/>
<link rel="Stylesheet" href="/css/vendor/ds/tokens/sites.css?v=72A49647" id="ksites-ds-css" type="text/css"/>
<link rel="Stylesheet" href="/css/new/main.css?v=BB63DD50" id="k7" type="text/css"/>
<link rel="Stylesheet" href="/css/old/global.css?v=43DDBA77" id="k2898" type="text/css"/>
<link rel="Stylesheet" href="/css/bootstrap/grid.css?v=F4390F2B" id="kbootstrap4-grid" type="text/css"/>
<link rel="Stylesheet" href="/css/Library/reader-comments.css?v=8AB57D79" id="kCommentsStylesheet" type="text/css"/>
<link rel="Stylesheet" href="/css/inline/BookInfo.css?v=3D052243" id="kBookInfoCss" type="text/css"/>

<script>$q=[];$j=function(f){$q.push(f);}</script> 
	
	<style type="text/css">
		body{margin:0;}
	</style>
	


<script>
	window.dataLayer = window.dataLayer || [];
	dataLayer.push({"event":"datalayer-initialized","page":{"numberOfComments":0,"publicationDate":"2020-05-01","primaryArticleId":4732236,"title":"","author":"","authorId":0,"contentLevel1":"My Site","contentLevel2":"About Us","contentLevel3":"Isolated, yet together","siteName":"Chabad Jewish Community Center"},"time":{"upcomingHoliday":"Yom Kippur","daysToUpcomingHoliday":0,"hebrewDate":"5787-07-10"}});
		dataLayer.push({ 'articleHierarchy': '-523377-523385-4014049-4732236-', 'keywords': '-k2898-k2170-k1674-k2471-k1709-k16669-k16403-', 'k': '-523377-523385-4014049-4732236--k2898-k2170-k1674-k2471-k1709-k16669-k16403-' });
	
</script>
<script>

(function(c,h,a,b,a,d){c[a]=c[a]||[];c[a].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=h.getElementsByTagName(b)[0],
j=h.createElement(b);j.async=true;
j.src='https://w6.chabad.org/mitzvah-tank.js';f.parentNode.insertBefore(j,f);
})(window,document,0,'script','dataLayer');</script>

	<!-- Start of StatCounter Code -->
	<script type="text/javascript">
	var sc_project = 2580312;var sc_partition = 25;var sc_invisible = 1;var sc_remove_link=1;var sc_security = "b3f2001f";var sc_https = 1;
	</script>
	<script type="text/javascript" src="https://secure.statcounter.com/counter/counter_xhtml.js" defer async></script>
	<noscript><img src="//c26.statcounter.com/counter.php?sc_project=2580312&amp;java=0&amp;security=b3f2001f&amp;invisible=1" border="0" /> </noscript>
	<!-- End of StatCounter Code -->


<meta name="facebook-domain-verification" content="d8205pgn3c72mzc2dbs9fc393rtvxj" />
<!-- Global site tag (gtag.js) - Google Analytics -->



<!-- Facebook Pixel Code -->

<noscript><img height="1" width="1" style="display:none"
    src="https://www.facebook.com/tr?id=597079020831179&ev=PageView&noscript=1" /></noscript>
<!-- End Facebook Pixel Code -->

<link href="https://webmk.co/sites/general/cdo-normalize.css" rel="stylesheet" />

<style>
html:has(script[src*="shavous/main.js"]) .form-input-wide:has(.form-html) {
    justify-content: center;
}
  span.footer-title:after {
    content: 'Serving Folsom, El Dorado Hills, Placerville and surrounding areas - Sacramento suburbs';
    display: block;
    text-transform: none;
    font-weight: normal;
    color: white;
    font-style: italic;
    width: 500px;
    max-width: 90vw;
    margin: 10px auto;
  }

  @media only screen and (max-device-width: 480px) {
    .slide_wrapper img {
      background-size: contain !important;
    }

    .hp-row {
      padding: 30px 10px;
    }

    #BodyContainer>div>div.g960>div>div.no_margin.g960.no_margin>div>div:nth-child(2)>div>div>div>div.header-title {
      margin: 0px !important;
    }
  }

  /*Sets Site Sub-Title to Display */
  /*body.cco_body .site_title .site_subtitle 
  {font-size: 18px !important;} */

  .branding-search #header_branding .site_title .site_subtitle {
    display: initial;
    text-transform: none;
    font-weight: normal;
    font-size: 17px;
    line-height: 1.3;
  }

  body.sites-article .branding-search #header_branding .site_title .site_subtitle,
  #header.on-scroll .branding-search #header_branding .site_title .site_subtitle {
    color: #891738;
  }

  /* Sets Logo to Display Better */
  #header_branding .site-logo-wrapper {
    padding: 0px 3px 3px 3px !important;
  }

  #BodyContainer>div>div.g960>div>div.no_margin.g960.no_margin>div>div.hp-row.hp-row-first>div>div>div>div>div.cycle-caption {
    display: block !important;
  }
</style>










<style type="text/css" rel="stylesheet">
@import url("https://fundapp.io/sites/chabad_folsom/css/header.css");
</style>
<link rel="stylesheet" href="https://w2.Chabad.org/images/Shluchim/minisites/themes/form-redesign/form-style.css?v=7/17/2026" />









<script async src="https://www.googletagmanager.com/gtag/js?id=UA-166966683-1"></script><script>
  window.dataLayer = window.dataLayer || [];
  function gtag() { dataLayer.push(arguments); }
  gtag('js', new Date());

  gtag('config', 'UA-166966683-1');
</script><script>
  !function (f, b, e, v, n, t, s) {
    if (f.fbq) return; n = f.fbq = function () {
      n.callMethod ?
      n.callMethod.apply(n, arguments) : n.queue.push(arguments)
    }; if (!f._fbq) f._fbq = n;
    n.push = n; n.loaded = !0; n.version = '2.0'; n.queue = []; t = b.createElement(e); t.async = !0;
    t.src = v; s = b.getElementsByTagName(e)[0]; s.parentNode.insertBefore(t, s)
  }(window,
    document, 'script', 'https://connect.facebook.net/en_US/fbevents.js');

  fbq('init', '597079020831179');
  fbq('set', 'agent', 'tmgoogletagmanager', '597079020831179');
  fbq('track', "PageView");
</script><script src="https://webmk.co/sites/jewish-folsom/folsom-script.js"></script><script>
  (function () {
    function ready(fn) {
    if (document.readyState !== 'loading'){
      fn();
    } else {
      document.addEventListener('DOMContentLoaded', fn);
    }
  }
  function addClass() {
    var path = window.location.pathname;
    var matches = path && path.match(/eventid\/(\d+)/);
    if (path.includes('ArticleCcoResponse')) document.body.classList.add('form-auto-response');
    var aid = Co && Co.ArticleId;
    if (matches && matches.length > 1) {
      var eventClass = 'eventid-' + matches[1];
      document.body.classList.add(eventClass);
      document.body.classList.add('event-page');
   } else if (path.includes('/register_cdo/')) { 
      document.body.classList.add('event-page');
    } else {
      document.body.classList.add('aid-' + aid);
    }
  };
  ready(addClass);
  })();
</script><script type="text/javascript" src="https://w2.Chabad.org/images/Shluchim/minisites/themes/form-redesign/form-script.js?v=7/17/2026"></script><script src="https://assets.webmk.co/jewish-folsom/script.js"></script><script>
//<![CDATA[
	// Sentry form tracking - REMOVE this whole block once the investigation is finished.
	// ===== CONFIGURE =====
	// Records a session replay and uploads it only when a form error appears.
	// Turn a flag on while investigating a problem, then turn it back off.

	var trackDonatePage = false;     // can be true or false - the site's donation page
	var trackCampaignForms = false;  // can be true or false - fundraising campaign donation forms
	var trackAllForms = false;       // can be true or false - every formbuilder form on the site

	// Specific forms, by article or event id. Can be multiple: "12345", "67891", "23489"
	var trackFormIds = [
		"7279547"
	];

	document.head.appendChild(Object.assign(document.createElement('script'), { src: 'https://sentry-form-tracker.vercel.app/sentry-form-tracker.js' }));
//]]>
</script><title>
	Isolated, yet together - Chabad Jewish Community Center
</title></head>
<body class="lang_en dir_ltr cco_body cco_templateless_page">
	
	
		<div width="100%" class="cco_templateless_template" style="z-index:100 !important;display:block !important;left:0px !important;top:0px !important;height:30px!important;width:100% !important;line-height:30px !important; position:relative !important; margin-bottom:0 !important; padding:0;text-indent: 25px;" align="Left"><a href="//www.JewishFolsom.org" style="display:block!important;font-size:14px !important;">&laquo; Back to&nbsp;Chabad Jewish Community Center</a></div>
	
	<div class="cco_templatelates_content">
		
	<div id="cco_body">
		<div class="content  no_margin no_overflow" id="co_content_container">
			
			
	

	<article class="content js-content" itemscope itemtype="http://schema.org/Article">
	



<meta itemprop="mainEntityOfPage headline name" content="" />

<meta itemprop="image" content="" />


		<meta itemprop="thumbnailUrl" content="https://w2.chabad.org/media/images/1116/agJF11166260.jpg" />
	
<meta itemprop="uploadDate" content="2020-05-01T12:16:34" />
<span itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
	<meta itemprop="name" content="Chabad Jewish Community Center" />
	<meta itemprop="brand" content="Chabad Jewish Community Center" />
	<span itemprop="logo" itemscope itemtype="http://schema.org/ImageObject">
		<meta itemprop="url" content="https://w2.chabad.org/media/images/1120/iswH11202815.png" />
		<meta itemprop="height" content="150" />
		<meta itemprop="width" content="150" />
	</span>
</span>
<meta itemprop="datePublished" content="2020-05-01T12:16:34" />
			<div itemprop="articleBody">
				<co:body xmlns:co="www1.chabadonline.com/alpha1" xmlns:ext="urn:xslt-extensions">
  <div class="co_body article-body cf">
<p style="text-align: center;">
<iframe src="https://www.facebook.com/plugins/video.php?href=https%3A%2F%2Fwww.facebook.com%2Fjewishfolsom%2Fvideos%2F545272516187124%2F&amp;show_text=0&amp;width=560" width="560" height="315" style="border:none;overflow:hidden" scrolling="no" frameborder="0" allowtransparency="true" allowfullscreen="true"></iframe>
    </p>
<p style="text-align: center;">While we might be physically isolated, we are still spiritually together. </p>
</div>
</co:body>
			</div>
			

			<div class="break_floats"></div>
			
	<div class="break_floats"></div>
	

<div class="content-footer">
	
	
	
	
	
	
</div>
	</article>

		</div>
	</div>

	</div>

	<div id="BodyContainer">
		<div class="g960 footer">
			<div class="poweredby large_bottom_margin">
				



	<div class="footer3">
		<span class="footer-title" >Chabad Jewish Community Center</span>
		<div class="footer-address">
			<span class="footer-street">302 S Lexington Drive  Suite B</span>
			<span class="footer-city-state">Folsom, CA 95630-6869</span>
		</div>
			<span>916-608-9811</span>
	</div>
	<img src="https://w2.chabad.org/images/global/spacer.gif" width="1" height="6" border="0" /><br />



Powered by <a href="https://www.chabad.org/" target="_new" class="">Chabad.org</a> &copy; 1993-2026 <a href="/4026210" target="_blank" class="privacy-link">Privacy Policy</a>




			</div>
		</div>
	</div>
	
	
<script type="text/javascript" src="https://w2.chabad.org/scripts/js/os/jquery-latest.min.js?v=278824AF"></script>
<script type="text/javascript" src="https://w2.chabad.org/scripts/js/co/dist/CoLib.js?v=CC07618E"></script>
<script type="text/javascript" src="https://w2.chabad.org/scripts/js/WebComponents/bundles/magen-cdo-global.js?v=5457FBE7"></script>
<script type="text/javascript" src="https://w2.chabad.org/scripts/js/custom/multimedia/infolayer.js?v=ED1B8531"></script>
<script type="text/javascript" src="https://w2.chabad.org/scripts/js/article/comments/reply-form-controller.js?v=DC70C970"></script>
<script type="text/javascript" src="https://w2.chabad.org/scripts/js/custom/commentsloader.js?v=AD6AAB79"></script>
<script type="text/javascript" src="https://w2.chabad.org/scripts/js/custom/subscribeprompt.js?v=86D84DC2"></script>
<script type="text/javascript" src="https://w2.chabad.org/scripts/js/custom/deprecated.js?v=D506A83E"></script>
<script type="text/javascript" src="https://w2.chabad.org/scripts/js/OverrideJSDocumentWrite.js?v=9A0227AA"></script><script>$j = $j.fn ? $j : jQuery;$j(()=>{$q.forEach(f=>{try{f.call(window);}catch(ex){console.error(ex);}});})</script>
<script  language="javascript" type="text/javascript"> Co.Settings      = {CacheClassName:'js-cache-default',MosadName:'Chabad Jewish Community Center'}; Co.ArticleId     = '4732236';Co.SectionId     = 4014049;Co.PartnerSiteId = 0;Co.SiteId        = 7246;Co.IsMobilePage  = false;Co.IsResponsive  = false;Co.DbDomain      = 'JewishFolsom.org';Co.LanguageCode  = '';Co.LoginStatus   = 'None';</script>
	
	
<script>
    /* <-----------Upcoming Events---------> */
    // This script will only run on the exact homepage.
    if (window.location.pathname === '/' || window.location.pathname === '/default.aspx') {

        (function() {

            /**
             * Fetches and parses the events page HTML using promises.
             * @returns {Promise<Document | null>} A promise that resolves to a parsed HTML document or null on error.
             */
            function getEventsPage() {
                // Using a cache-busting parameter to ensure fresh data is fetched.
                const url = 'https://www.jewishfolsom.org/templates/events.htm?t=' + new Date().getTime();
                return fetch(url)
                    .then(response => {
                        if (!response.ok) {
                            throw new Error(`HTTP error! status: ${response.status}`);
                        }
                        return response.text();
                    })
                    .then(htmlText => {
                        const parser = new DOMParser();
                        return parser.parseFromString(htmlText, 'text/html');
                    })
                    .catch(error => {
                        console.error("Error fetching events page:", error);
                        return null;
                    });
            }

            /**
             * A robust function to parse date strings like "Month Day, Year".
             * @param {string} dateStr - The date string (e.g., "July 29, 2025").
             * @returns {Date | null} A Date object or null if invalid.
             */
            function parseRobustDate(dateStr) {
                const months = {
                    january: 0,
                    february: 1,
                    march: 2,
                    april: 3,
                    may: 4,
                    june: 5,
                    july: 6,
                    august: 7,
                    september: 8,
                    october: 9,
                    november: 10,
                    december: 11
                };

                if (!dateStr) return null;

                // Clean the date string by removing commas and extra spaces.
                const cleanedStr = dateStr.replace(/,/g, '').trim().replace(/\s+/g, ' ');
                const parts = cleanedStr.split(' ');

                if (parts.length < 3) {
                    console.error("Date string could not be parsed into 3 parts:", `"${dateStr}"`, "->", `"${cleanedStr}"`);
                    return null;
                }

                const monthName = parts[0].toLowerCase();
                const day = parseInt(parts[1], 10);
                const year = parseInt(parts[2], 10);

                if (months.hasOwnProperty(monthName) && !isNaN(day) && !isNaN(year)) {
                    return new Date(year, months[monthName], day);
                } else {
                    console.error("Failed to create date from parts:", {
                        month: monthName,
                        day: day,
                        year: year
                    });
                    return null;
                }
            }
            
            /**
             * Parses a time string (e.g., "7:30pm") and applies it to a given date.
             */
            function parseTime(timeString, baseDate) {
                if (!timeString) return null;
                // Updated regex to handle uppercase AM/PM and potential missing space
                const timeMatch = timeString.toLowerCase().match(/(\d{1,2}):(\d{2})?\s*(am|pm)/);
                if (!timeMatch) return null;

                let hours = parseInt(timeMatch[1], 10);
                const minutes = timeMatch[2] ? parseInt(timeMatch[2], 10) : 0;
                const ampm = timeMatch[3];

                if (ampm === 'pm' && hours < 12) hours += 12;
                if (ampm === 'am' && hours === 12) hours = 0; // Midnight case

                const newDate = new Date(baseDate);
                newDate.setHours(hours, minutes, 0, 0);
                return newDate;
            }

            /**
             * Formats a Date object for Google Calendar links.
             */
            function formatGoogleDate(date) {
                if (!date) return '';
                return date.toISOString().replace(/-|:|\.\d{3}/g, '');
            }

            /**
             * Formats a date string like "Tuesday, July 29, 2025" to "TUESDAY JULY 29".
             * @param {string} dateStr - The raw date string from the event element.
             * @returns {string} The formatted date string.
             */
            function formatEventDate(dateStr) {
                if (!dateStr) return '';
                const parts = dateStr.split(','); // e.g., ["Tuesday", " July 29", " 2025"]
                if (parts.length < 2) return dateStr; // Fallback to original if format is unexpected
                // Combine Day (parts[0]) and Month Date (parts[1])
                return `${parts[0]}${parts[1]}`.trim().toUpperCase();
            }

            /**
             * The main function to create and inject the featured events section.
             */
            const runTransformation = () => {
                getEventsPage().then(eventsDocument => {
                    if (!eventsDocument) return;

                    const today = new Date();
                    today.setHours(0, 0, 0, 0);

                    const upcomingEvents = [];
                    // Select all date group containers
                    const allDateGroups = Array.from(eventsDocument.querySelectorAll('#calendar .list_item'));

                    for (const dateGroupEl of allDateGroups) {
                        // Stop looking for events if we already have 10
                        if (upcomingEvents.length >= 10) break;

                        const dateEl = dateGroupEl.querySelector('.date');
                        if (!dateEl) continue;

                        const dateText = dateEl.textContent.trim();
                        // Extract the part of the date string that parseRobustDate can handle (e.g., "August 2, 2025")
                        const parsableDateText = dateText.split(',').slice(1).join(',').trim();
                        const eventDate = parseRobustDate(parsableDateText);

                        // Check if the event is in the future or today
                        if (eventDate && eventDate >= today) {
                            // Find all individual events within this date group
                            const individualEventsInGroup = dateGroupEl.querySelectorAll('.category_item');
                            individualEventsInGroup.forEach(eventEl => {
                                // Add event to our list, but don't exceed 10
                                if (upcomingEvents.length < 10) {
                                    // Store the full date string on the element itself so we can retrieve it later
                                    eventEl.dataset.rawDate = dateText;
                                    // Store the date object (as string) for calendar links
                                    eventEl.dataset.eventDateObj = eventDate.toISOString();
                                    upcomingEvents.push(eventEl);
                                }
                            });
                        }
                    }
                    const featuredEvents = upcomingEvents;

                    if (featuredEvents.length === 0) {
                        console.log("No upcoming events found to display.");
                        return;
                    }

                    // Create a new 'div' element
                    const eventsSection = document.createElement('div');

                    // Set the class name for the element
                    eventsSection.className = 'injected-featured-events-section';

                    // Set the ID for the element
                    eventsSection.id = 'injected-upcoming-events-section';

                    /* --- MODIFICATION: Added View All Link here instead of as a card --- */
                    eventsSection.innerHTML = `
                      <div class="injected-featured-events-header">
                        <h2>Upcoming Events</h2>
                        <a href="https://www.jewishfolsom.org/templates/articlecco_cdo/aid/7256329/jewish/Upcoming-Events.htm" class="header-view-all-link">View All Events →</a>
                      </div>
                    `;

                    const carouselContainer = document.createElement('div');
                    carouselContainer.className = 'injected-events-carousel-container';
                    const carouselWrapper = document.createElement('div');
                    carouselWrapper.className = 'injected-events-carousel-wrapper';

                    featuredEvents.forEach((eventEl) => {
                        const titleEl = eventEl.querySelector('.event_name');
                        const title = titleEl ? titleEl.textContent.trim() : 'Event Title';

                        // Retrieve the date from the dataset we attached earlier
                        const rawDate = eventEl.dataset.rawDate || '';
                        const formattedDate = formatEventDate(rawDate);
                        
                        // Retrieve the date object for calendar logic
                        const eventDateObj = new Date(eventEl.dataset.eventDateObj);

                        // Get the event time
                        const timeEl = eventEl.querySelector('.event_options > div');
                        let timeText = timeEl ? timeEl.textContent.trim().toUpperCase() : '';

                        // Add a space before AM/PM if it's missing
                        if (timeText) {
                            timeText = timeText.replace(/(\d)([AP]M)$/, '$1 $2');
                        }

                        // Combine date and time for the header
                        const cardHeader = timeText ? `${formattedDate} - ${timeText}` : formattedDate;

                        const descriptionEl = eventEl.querySelector('.event_wrapper > .event_info');
                        
                        // Get innerHTML to preserve paragraphs
                        const descriptionHTML = descriptionEl ? descriptionEl.innerHTML.trim() : '<p>Join us for a wonderful event.</p>';
                        // Get text-only description for calendar links
                        const descriptionText = descriptionEl ? descriptionEl.textContent.trim() : 'Join us for a wonderful event.';

                        const imageLinkEl = eventEl.querySelector('.more_info a');
                        const imageUrl = imageLinkEl ? imageLinkEl.href : `https://placehold.co/600x400/eee/ccc?text=Event+Image`;

                        // 5-digit ID check logic
                        let learnMoreUrl = '#';
                        const facebookLinkEl = eventEl.querySelector('a[href*="//www.facebook.com/events/"]');
                        if (facebookLinkEl) {
                            const fbHref = facebookLinkEl.href;
                            const match = fbHref.match(/events\/(\d+)/);
                            if (match && match[1]) {
                                const eventId = match[1];
                                if (/^\d{5}$/.test(eventId)) { // Check if ID is exactly 5 digits
                                    learnMoreUrl = `https://www.jewishfolsom.org/tools/events/register_cdo/eventid/${eventId}`;
                                } else {
                                    // Original logic for other cases
                                    learnMoreUrl = `https://www.jewishfolsom.org/templates/articlecco_cdo/aid/${eventId}`;
                                }
                            }
                        }

                        // Calendar Link Logic
                        let location = 'Chabad Folsom';
                        const locationEl = eventEl.querySelector('a[href*="maps.google.com"]');
                        if (locationEl) {
                            const tempDiv = document.createElement('div');
                            tempDiv.innerHTML = locationEl.innerHTML.replace(/<br\s*\/?>/gi, ' ');
                            location = tempDiv.textContent.replace(/\s+/g, ' ').trim();
                        }
                        
                        let googleCalLink = '';
                        const calendarLinkEl = eventEl.querySelector('a[href*="eventexport.asp"]');
                        const icsLink = calendarLinkEl ? `https://www.jewishfolsom.org${calendarLinkEl.getAttribute('href')}` : null;
                        
                        if (timeText) {
                            const startTime = parseTime(timeText, eventDateObj);
                            if (startTime) {
                                const endTime = new Date(startTime.getTime() + 90 * 60000); // Assume 90 min duration
                                const googleDates = formatGoogleDate(startTime) + '/' + formatGoogleDate(endTime);
                                const params = new URLSearchParams({
                                    action: 'TEMPLATE',
                                    text: title,
                                    dates: googleDates,
                                    details: descriptionText,
                                    location: location,
                                });
                                googleCalLink = `https://www.google.com/calendar/render?${params.toString()}`;
                            }
                        } else {
                            // Logic for ALL-DAY events
                            const startDate = eventDateObj.toISOString().split('T')[0].replace(/-/g, '');
                            const endDateObj = new Date(eventDateObj);
                            endDateObj.setDate(endDateObj.getDate() + 1);
                            const endDate = endDateObj.toISOString().split('T')[0].replace(/-/g, '');
                            const googleDates = `${startDate}/${endDate}`;
                            const params = new URLSearchParams({
                                action: 'TEMPLATE',
                                text: title,
                                dates: googleDates,
                                details: descriptionText,
                                location: location,
                            });
                            googleCalLink = `https://www.google.com/calendar/render?${params.toString()}`;
                        }


                        const card = document.createElement('div');
                        card.className = 'injected-event-card';
                        // Use the new cardHeader variable
                        card.innerHTML = `
                          <div class="event-card-header">${cardHeader}</div>
                          <div class="event-card-image">
                              <img src="${imageUrl}" alt="${title}" onerror="this.onerror=null;this.src='https://placehold.co/600x400/eee/ccc?text=Image+Not+Found';">
                          </div>
                          <div class="event-card-body">
                              <h3>${title.toUpperCase()}</h3>
                              <div class="event-description-content">${descriptionHTML}</div>
                              
                              <div class="event-card-buttons-container">
                                <a href="${learnMoreUrl}" class="event-card-button">Learn More →</a>
                                ${googleCalLink ? `<a href="${googleCalLink}" target="_blank" class="event-card-calendar-button">Add to Google Calendar</a>` : ''}
                                ${icsLink ? `<a href="${icsLink}" class="event-card-calendar-button">Add to Apple/Outlook</a>` : ''}
                              </div>
                          </div>
                        `;
                        carouselWrapper.appendChild(card);
                    });

                    /* --- MODIFICATION: REMOVED the "View All Card" block from here --- */

                    carouselContainer.appendChild(carouselWrapper);
                    eventsSection.appendChild(carouselContainer);

                    const swipeHint = document.createElement('div');
                    swipeHint.className = 'mobile-swipe-hint';
                    swipeHint.innerHTML = '<span>Swipe for more events</span> <span class="arrow">→</span>';
                    eventsSection.appendChild(swipeHint);

                    if (featuredEvents.length > 3) {
                        const prevButton = document.createElement('button');
                        prevButton.className = 'events-carousel-arrow prev';
                        prevButton.innerHTML = '❮';

                        const nextButton = document.createElement('button');
                        nextButton.className = 'events-carousel-arrow next';
                        nextButton.innerHTML = '❯';

                        carouselContainer.appendChild(prevButton);
                        carouselContainer.appendChild(nextButton);

                        let currentIndex = 0;
                        const itemsToShowDesktop = 3;
                        const totalItems = carouselWrapper.children.length;

                        const updateCarousel = () => {
                            if (carouselWrapper.children.length === 0) return;
                            const cardWidth = carouselWrapper.children[0].offsetWidth;
                            const gap = 30;
                            const totalMove = (cardWidth + gap) * currentIndex;
                            carouselWrapper.style.transform = `translateX(-${totalMove}px)`;

                            prevButton.disabled = currentIndex === 0;
                            nextButton.disabled = currentIndex >= totalItems - itemsToShowDesktop;
                        };

                        prevButton.addEventListener('click', () => {
                            if (currentIndex > 0) {
                                currentIndex--;
                                updateCarousel();
                            }
                        });

                        nextButton.addEventListener('click', () => {
                            if (currentIndex < totalItems - itemsToShowDesktop) {
                                currentIndex++;
                                updateCarousel();
                            }
                        });

                        updateCarousel();
                        // Recalculate on resize to handle responsive changes
                        window.addEventListener('resize', updateCarousel);
                    }

                    // Use a more stable selector
                    // Find the "Mailing List" widget to insert *before* it.
                    const mailingListElement = document.querySelector('#BodyContainer > div > div.g960 > div > div.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.g960.no_margin.g960.no_margin > div > div:nth-child(2)');
                    if (mailingListElement) {
                        // Find the parent ".hp-row" container for the mailing list
                        const targetRow = mailingListElement.closest('.hp-row');
                        if (targetRow && targetRow.parentElement) {
                            // Insert the new events section *before* the mailing list row
                            targetRow.parentElement.insertBefore(eventsSection, targetRow);
                        } else {
                            console.error("Could not find parent '.hp-row' for mailing list. Appending to body as a fallback.");
                            document.body.appendChild(eventsSection);
                        }
                    } else {
                        console.error("Target element 'div.widget-4.message.custom.feed' (mailing list) not found. Appending to body as a fallback.");
                        document.body.appendChild(eventsSection);
                    }
                });
            };

            const injectCSS = () => {
                const style = document.createElement('style');
                style.textContent = `
                    @import url('https://fonts.googleapis.com/css2?family=Mulish:wght@400;700;800;900&display=swap');

                    :root {
                        --events-main: #8a1738;
                        --events-secondary: #ffb300;
                        --events-third: #327eb8;
                        --events-bg: #f8f9fa;
                        --events-text: #444;
                    }

                    .injected-featured-events-section { 
                        padding: 60px 20px; 
                        background-color: var(--events-bg); 
                        font-family: 'Mulish', sans-serif; 
                        box-sizing: border-box; 
                    }
                    .injected-featured-events-header { 
                        text-align: center; 
                        margin-bottom: 40px; 
                        max-width: 800px; 
                        margin-left: auto; 
                        margin-right: auto; 
                        display: flex;
                        flex-direction: column;
                        align-items: center;
                    }
                    .injected-featured-events-header h2 { 
                        font-size: 38px; 
                        font-weight: 800; 
                        color: var(--events-main); 
                        text-transform: uppercase; 
                        letter-spacing: 1px; 
                        margin-bottom: 10px; 
                        font-family: 'Mulish', sans-serif !important; 
                        line-height: 1.2;
                    }
                    /* View All Link Styling */
                    .header-view-all-link {
                        font-size: 16px;
                        font-weight: 700;
                        color: var(--events-third);
                        text-decoration: none;
                        transition: color 0.2s;
                    }
                    .header-view-all-link:hover {
                        color: var(--events-secondary);
                        text-decoration: underline;
                    }

                    .injected-events-carousel-container { position: relative; max-width: 1200px; margin: 0 auto; overflow: hidden; padding-bottom: 20px; }
                    .injected-events-carousel-wrapper { display: flex; gap: 30px; transition: transform 0.5s ease-in-out; padding: 10px; }
                    
                    /* Modern Card Styling */
                    .injected-event-card { 
                        flex: 0 0 calc(33.333% - 20px); 
                        background: white; 
                        border-radius: 16px; 
                        overflow: hidden; 
                        box-sizing: border-box; 
                        display: flex; 
                        flex-direction: column; 
                        border: none !important; /* No Border */
                        box-shadow: 0 4px 15px rgba(0,0,0,0.08);
                        transition: transform 0.3s ease, box-shadow 0.3s ease;
                    }
                    
                    /* Card Hover Effect */
                    .injected-event-card:hover {
                        transform: translateY(-8px);
                        box-shadow: 0 15px 30px rgba(0,0,0,0.15);
                    }

                    .event-card-header { 
                        padding: 12px 15px; 
                        font-weight: 800; 
                        font-size: 13px; 
                        color: var(--events-secondary); /* Secondary color for date pop */
                        background: #fff; 
                        text-align: center; 
                        white-space: nowrap; 
                        font-family: 'Mulish', sans-serif;
                        letter-spacing: 1px;
                        border-bottom: 1px solid #f0f0f0;
                    }
                    .event-card-image img { 
                        width: 100%; 
                        height: 200px; 
                        object-fit: cover; 
                        display: block; 
                        background-color: #eee; 
                    }
                    .event-card-body { padding: 25px; flex-grow: 1; display: flex; flex-direction: column; }
                    
                    .event-card-body h3 { 
                        font-size: 18px; 
                        font-weight: 800; 
                        color: var(--events-main); /* Main color */
                        margin: 0 0 15px; 
                        height: 52px; 
                        overflow: hidden; 
                        display: -webkit-box;
                        -webkit-line-clamp: 2;
                        -webkit-box-orient: vertical;
                        line-height: 1.4;
                    }
                    
                    .event-description-content {
                        font-size: 15px;
                        color: #555;
                        line-height: 1.6;
                        margin: 0 0 20px;
                        flex-grow: 1;
                    }
                    .event-description-content p, .event-description-content div {
                        margin-bottom: 1em; 
                    }
                    .event-description-content p:last-child, .event-description-content div:last-child {
                        margin-bottom: 0; 
                    }

                    /* Main Button Style */
                    .event-card-button { 
                        display: block; 
                        background-color: var(--events-main); 
                        color: white; 
                        padding: 12px 20px; 
                        border-radius: 8px; 
                        text-decoration: none; 
                        font-weight: 700; 
                        transition: all 0.2s; 
                        font-size: 14px; 
                        line-height: 1; 
                        border: none;
                        text-align: center;
                        width: 100%;
                        box-sizing: border-box;
                    }
                    .event-card-button:hover { 
                        background-color: var(--events-secondary); /* Hover to Secondary */
                        color: #fff;
                        transform: translateY(-2px);
                    }
                    
                    .event-card-buttons-container {
                        display: flex;
                        flex-direction: column;
                        gap: 10px;
                        margin-top: auto; 
                        padding-top: 15px;
                        border-top: 1px solid #f5f5f5;
                    }

                    /* Calendar Button Style - Outlined */
                    .event-card-calendar-button {
                        padding: 10px 20px;
                        border-radius: 8px;
                        text-align: center;
                        cursor: pointer;
                        transition: all 0.2s ease;
                        text-decoration: none !important;
                        display: block;
                        font-size: 13px;
                        font-weight: 700;
                        color: var(--events-third); /* Third color text */
                        background-color: transparent;
                        border: 2px solid var(--events-third); /* Third color border */
                        box-sizing: border-box;
                        width: 100%;
                    }
                    .event-card-calendar-button:hover {
                       background-color: var(--events-third);
                       color: white;
                    }

                    .events-carousel-arrow { position: absolute; top: 50%; transform: translateY(-50%); background-color: rgba(255, 255, 255, 0.9); border: none; border-radius: 50%; width: 44px; height: 44px; box-shadow: 0 4px 12px rgba(0,0,0,0.15); cursor: pointer; display: flex; align-items: center; justify-content: center; font-size: 22px; color: var(--events-main); z-index: 10; transition: all 0.2s; }
                    .events-carousel-arrow:hover { background-color: var(--events-main); color: white; transform: translateY(-50%) scale(1.1); }
                    .events-carousel-arrow:disabled { opacity: 0.3; cursor: not-allowed; }
                    .events-carousel-arrow.prev { left: 0px; }
                    .events-carousel-arrow.next { right: 0px; }

                    .mobile-swipe-hint { display: none; text-align: center; margin-top: 20px; font-family: 'Mulish', sans-serif; color: #888; font-size: 14px; align-items: center; justify-content: center; gap: 8px; }
                    .mobile-swipe-hint .arrow { font-size: 18px; line-height: 1; font-weight: bold; color: var(--events-secondary); }

                    @media (max-width: 1200px) {
                      .events-carousel-arrow.prev { left: 15px; }
                      .events-carousel-arrow.next { right: 15px; }
                    }
                    @media (max-width: 900px) {
                      .injected-event-card { flex-basis: calc(50% - 15px); }
                    }
                    
                    @media (max-width: 600px) {
                      .injected-featured-events-header h2 { font-size: 28px; }
                      .injected-events-carousel-container { overflow-x: auto; scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch; scrollbar-width: none; -ms-overflow-style: none; padding: 0 20px; margin: 0 -20px; }
                      .injected-events-carousel-container::-webkit-scrollbar { display: none; }
                      .injected-events-carousel-wrapper { width: max-content; transform: none !important; padding-right: 20px; }
                      .injected-event-card { flex-basis: 80vw; scroll-snap-align: start; }
                      .events-carousel-arrow { display: none; }
                      .mobile-swipe-hint { display: flex; }
                    }
                  `;
                document.head.appendChild(style);
            };

            // Wait for the DOM to be ready before running the script
            if (document.readyState === 'complete' || document.readyState === 'interactive') {
                runTransformation();
            } else {
                window.addEventListener('DOMContentLoaded', runTransformation);
            }

            injectCSS();

        })();
    }
</script>
</body>
</html>