onqcheck = strpos(strtolower($_SERVER['HTTP_USER_AGENT']), "konqueror"); // If global debugging is enabled or the browser is konqueror, // we use uncompressed JavaScript if ($debug || $konqcheck) { $js_swf = 'swfobject-uncompressed.js'; $js_avr = 'avreloaded-uncompressed.js'; $js_wmv = 'wmvplayer-uncompressed.js'; } if ($needsl) { JHTML::script('silverlight.js', $this->_rlocr); JHTML::script($js_wmv, $this->_rlocr); } if ($needswfo) { JHTML::script($js_swf, $this->_rlocr); } // Handle special hardcoded tags (avrpopup, avrbutton) $ret = $this->_handleSpecial($text, $needavr); if ($needavr) { JHTML::script($js_avr, $this->_rlocr); } return $ret; } function _handleSpecial($text, &$needavr) { $special = array('avrpopup', 'avrbutton'); foreach ($special as $key) { // Speedup non-matching case if (strpos($text, '{'.$key) !== false) { // The actual regex stuff $re = '#{'.$key.'(\s+[a-z]+\s*=\s*(?:"|")[^}]*(?:"|"))*}([^{]+){/'.$key.'}#m'; if (preg_match_all($re, $text, $matches, PREG_PATTERN_ORDER) > 0) { $i = 0; $code = ''; $needavr = 1; switch ($key) { case 'avrpopup': $code = '@CODE@'; break; case 'avrbutton': $code = ''; break; } foreach ($matches[0] as $match) { $parms = JString::trim($this->_htsdecode($matches[1][$i])); $vcode = $matches[2][$i]; $tcfg = array('screenmode' => ''); if (JString::strlen($parms)) { $dummy1 = ""; $dummy2 = ""; $this->_parseParams($parms, $tcfg, $dummy1, $dummy2); } $repl = $this->_buildCode($vcode, $tcfg, $code); $text = str_replace($match, $repl, $text); $i++; } } } } return $text; } function _renderToDB($code, $cfg, $db) { $menus =& JSite::getMenu(); $amenu =& $menus->getActive(); $itemid = $amenu->id; $w = $cfg['width']; $h = $cfg['height']; $divid = $cfg['divid']; $query = "REPLACE INTO #__avr_popup VALUES($itemid,'". $divid."','".$db->getEscaped($code)."',". $w.','.$h.',NOW())'; @$db->setQuery($query); @$db->query(); $url = 'index.php?option=com_avreloaded&view=popup&Itemid='.$itemid.'&divid='.$divid; $code = ''; JHTML::script('modal.js'); JHTML::stylesheet('modal.css'); JHTML::stylesheet('avrmodal.css', 'plugins/content/avreloaded/'); $doc =& JFactory::getDocument(); $doc->addScriptDeclaration( "window.addEvent('domready', function(){SqueezeBox.initialize({});});"); return $code; } /** * Parse a string, containing multiple parameters, each in the form * key="value" and assign them to an assoziative array. * * @param parms * @param cfg * @param start * @param end * * @access private */ function _parseParams($parms, &$cfg, &$start, &$end) { $legacy_override = 0; $style_override = ''; if (preg_match_all('#\s*([a-z]+)\s*=\s*"([^}"]*)"\s*#', $parms, $matches)) { $i = 0; foreach ($matches[1] as $key) { switch ($key) { case 'img': $cfg[$key] = $this->_adjustLoc($matches[2][$i], 1); break; case 'bgcolor': $cfg[$key] = $this->_fmtColor($matches[2][$i], '#'); break; case 'pbgcolor': case 'pfgcolor': case 'phicolor': case 'psccolor': $cfg[$key] = $this->_fmtColor($matches[2][$i], '0x'); break; case 'autostart': case 'usefullscreen': case 'showdigits': case 'showicons': case 'showstop': case 'showdownload': case 'shownav': case 'showeq': case 'searchbar': $cfg[$key] = $this->_fmtBool($matches[2][$i]); break; case 'style': $style_override = $matches[2][$i]; break; case 'legacy': $legacy_override = 1; $cfg[$key] = $this->_fmtBool($matches[2][$i]); break; default: $cfg[$key] = $matches[2][$i]; break; } $i++; } $container = 'span'; if ($legacy_override) { if ($cfg['legacy'] == 'true') { $container = 'div'; if ($style_override) { $style = ' style="'.$style_override.'"'; } else { $style = ' style="clear:both; text-align: '.$cfg['valign'].'; margin-top: '. $cfg['tmargin'].'px; margin-bottom: '.$cfg['bmargin'].'px;"'; } } $start = sprintf($this->_beg, $this->_vtag, $container, $style, $cfg['avcss'], $container); $end = sprintf($this->_end, $this->_vtag); } else { if ($style_override) { $start = sprintf($this->_beg, $this->_vtag, $container, ' style="'.$style_override.'"', $cfg['avcss'], $container); } } } } /** * Replace variables in a player template * For every @NAME@ tag, lookup the lowercaes NAME in * the supplied config array and - if found - replace it by the stored * value. Furthermode, If a sequence @IF(NAME)@..content..@/IF@ is * found, replace that sequence with an empty string, if the variable * specified by lowercase NAME is unset or not 'true'. Similar, if * @IFS(NAME)@..content..@/IFS@ is found, replace that sequence with * an empty string, if the variable specified by lowercase NAME is unset. * * @param code The content of the element's tag. * @param cfg The current config to be used. * @param pltmpl The player template to be used. * * @return string The player template with all matching patterns replaced. * * @access private */ function _buildCode($code, $cfg, $pltmpl) { $matches = null; if ((!isset($cfg['displayheight'])) && (!isset($cfg['displaywidth']))) { // If the user has overridden displayheight or displaywidth already // from within the tag, don't touch it! switch ($cfg['screenmode']) { case 'coverlay': $cfg['displayheight'] = $cfg['height']; break; case 'plbottom': $cfg['displayheight'] = $cfg['height'] - ($this->_ctrlheight + $cfg['plsize']); break; case 'plright': $cfg['displaywidth'] = $cfg['width'] - $cfg['plsize']; break; case 'floatcplright': $cfg['displayheight'] = $cfg['height']; $cfg['displaywidth'] = $cfg['width'] - $cfg['plsize']; break; } } // First handle conditionals ... if (preg_match_all('#@IF\((!?[A-Z]+)\)@(.+)@/IF@#sU', $pltmpl, $matches, PREG_PATTERN_ORDER)) { $i = 0; foreach ($matches[0] as $match) { $key = strtolower($matches[1][$i]); $neg = (strpos($key, '!') === 0); if ($neg) { $key = ltrim($key, '!'); } $inner = ''; if ($neg xor ((isset($cfg[$key])) && ($this->_fmtBool($cfg[$key]) == 'true'))) { $inner = $matches[2][$i]; } $pltmpl = str_replace($match, $inner, $pltmpl); $i++; } } if (preg_match_all('#@IFS\((!?[A-Z]+)\)@(.+)@/IFS@#sU', $pltmpl, $matches, PREG_PATTERN_ORDER)) { $i = 0; foreach ($matches[0] as $match) { $key = strtolower($matches[1][$i]); $neg = (strpos($key, '!') === 0); if ($neg) { $key = ltrim($key, '!'); } $inner = ''; if ($neg xor (isset($cfg[$key]))) { $inner = $matches[2][$i]; } $pltmpl = str_replace($match, $inner, $pltmpl); $i++; } } // ... then handle regular replacements if (preg_match_all('#@([A-Z]+(?:![dy])?)@#', $pltmpl, $matches, PREG_PATTERN_ORDER)) { $i = 0; foreach ($matches[0] as $match) { $key = strtolower($matches[1][$i]); $boolfmtoverride = null; if (strpos($key, '!d')) { $boolfmtoverride = 'ds'; $key = str_replace('!d', '', $key); } if (strpos($key, '!y')) { $boolfmtoverride = 'yn'; $key = str_replace('!y', '', $key); } if (isset($cfg[$key])) { $val = $cfg[$key]; if ($boolfmtoverride) { $val = $this->_fmtBool($val, $boolfmtoverride); } $pltmpl = str_replace($match, $val, $pltmpl); } $i++; } } return str_replace('@CODE@', $code, $pltmpl); } /** * Format a boolean value * * @param value The input to be formatted. * Possible input formats: * - A numeric (int or string) (0 == false, !0 == true) * - A string in the form 'true' or 'false' * @param fmt The desired output format: * 'bs' return a string 'true' or 'false' * 'ds' return a string '1' or '0' * 'yn' return a string 'yes' or 'no' * * @return string * @access private */ function _fmtBool($value, $fmt = 'bs') { if (is_numeric($value)) { $value = ((1 + $value) != 1); } if (is_string($value)) { $value = (strtolower($value) == 'true'); } switch ($fmt) { case 'bs': // return boolean string return ($value) ? 'true' : 'false'; break; case 'ds': // return decimal string return ($value) ? '1' : '0'; break; case 'yn': // return yes/no string return ($value) ? 'yes' : 'no'; break; } } /** * Retrieves the version of the CURL extension, if any. */ function _curl_version() { if (is_array($curl = curl_version())) { $curl = $curl['version']; } elseif (substr($curl, 0, 5) == 'curl/') { $curl = substr($curl, 5, strcspn($curl, "\x09\x0A\x0B\x0C\x0D", 5)); } elseif (substr($curl, 0, 8) == 'libcurl/') { $curl = substr($curl, 8, strcspn($curl, "\x09\x0A\x0B\x0C\x0D", 8)); } else { $curl = 0; } return $curl; } /** * Quotes a regex (puts delimiters around it). */ function _quoteRegex($rx) { for ($i = 1; $i < 256; $i++) { $c = chr($i); if (strpos($rx, $c) === false) { return $c.$rx.$c; } } return null; } /** * Retrieves the real url of a media resource. * First, the content of a given url is fetched, then * this content is matched against a given regex in order * to retrieve a fragment which contains the actual media * url. * * @param robj A ripper parameter object. * * @return An array, containing the extracted media URL at index 0, * followed by an arbitrary number of additional backreferences. * @access private */ function &_ripper(&$robj) { $url = str_replace(' ', '%20', $robj->url); $ret = array(''); $resp = ''; if (function_exists('curl_init')) { // We preferably use cURL, because that supports // a proxy out of the box. In your apache config, // simply set the environment variable http_proxy // to host:port in order to use it. $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_USERAGENT, 'AllVideos Reloaded'); if (!ini_get('open_basedir') && !ini_get('safe_mode') && version_compare(plgContentAvreloaded::_curl_version(), '7.15.2', '>=')) { curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_MAXREDIRS, 10); } $proxy = getenv('http_proxy'); if ($proxy !== false) { curl_setopt($ch, CURLOPT_PROXY, $proxy); } if (!($resp = curl_exec($ch))) $resp = ''; curl_close($ch); } else if (ini_get('allow_url_fopen') == '1') { // try fallback to file_get_contents $resp = @file_get_contents($url); } if (strlen($resp)) { if ($robj->flags & 1) { $resp = urldecode($resp); } $resp = plgContentAvreloaded::_htsdecode($resp); $regex = plgContentAvreloaded::_quoteRegex($robj->regex); if (empty($regex)) { plgContentAvreloaded::_err(JText::sprintf('ERR_MATCH_URL', htmlspecialchars($url), htmlspecialchars($resp), htmlspecialchars($robj->regex))); return $ret; } if (preg_match($regex, $resp, $matches)) { array_shift($matches); if (count($matches) < 1) { plgContentAvreloaded::_err(JText::sprintf('ERR_MATCH_URL', htmlspecialchars($url), htmlspecialchars($resp), htmlspecialchars($robj->regex))); return $ret; } if ($robj->cindex > 0) { $i = $robj->cindex; if ($i >= count($matches)) { plgContentAvreloaded::_err(JText_('ERR_MATCH_INDEX')); return $ret; } $code = $matches[$i]; $a1 = array_slice($matches, 0, $i); $a2 = array_slice($matches, $i + 1); $matches = array($code); $matches = array_merge($matches, $a1, $a2); } return $matches; } plgContentAvreloaded::_err(JText::sprintf('ERR_MATCH_URL', htmlspecialchars($url), htmlspecialchars($resp), htmlspecialchars($robj->regex))); } else plgContentAvreloaded::_err(JText::sprintf('ERR_FETCH_URL', htmlspecialchars($url))); return $ret; } /** * Displays an error message inline */ function _err($msg) { global $mainframe; $mainframe->enqueueMessage($msg, 'error'); } /** * Format a color value. * * @param clr The color value to be formatted. * Possible input formats: * - an int color value * - a string in '0xxxx' notation (like in javascript) * - a string in #RRGGBB notation (HTML, CSS) * - a string in #RGB notation (CSS) * - a string in rgb(r,g,b) notation (CSS) * - a string with a color name * @param fmt The output color format: * '0x' return a string in '0xxx' notation * '#' return a string in #RRGGBB notation * 'rgb' return a string in rgb(r,g,b) notation * * @return string * @access private */ function _fmtColor($clr, $fmt = '0x') { $iclr = -1; if (is_int($clr)) { if ($clr <= 0xFFFFFF) $iclr = $clr; } if (is_string($clr)) { $match = null; $clr = trim($clr); // #xxx css notation and #xxxxxx html/css notation if (preg_match('/^#([\da-f]{3,6})$/i', $clr, $match)) { switch (strlen($match[1])) { case 3: $iclr = intval(sprintf('%s%s%s%s%s%s', $match[1][0], $match[1][0], $match[1][1], $match[1][1], $match[1][2], $match[1][2]), 16); break; case 6: $iclr = intval($match[1], 16); break; } } // 0x... javascript notation if (($iclr == -1) && preg_match('/^0x([0-9a-f]{1,6})$/i', $clr, $match)) { $iclr = intval($match[1], 16); } // rgb(d,d,d) css notation if (($iclr == -1) && preg_match('/^rgb\s*\(\s*([-+]?\d+)\s*,\s*([-+]?\d+)\s*,\s*([-+]?\d+)\s*\)/', $clr, $match)) { $r = intval($match[1]); if ($r < 0) $r = 0; if ($r > 255) $r = 255; $g = intval($match[2]); if ($g < 0) $g = 0; if ($g > 255) $g = 255; $b = intval($match[3]); if ($b < 0) $b = 0; if ($b > 255) $b = 255; $iclr = ($r << 16) | ($g << 8) | $b; } // html 4.01 color names if ($iclr == -1) { $cn = strtolower($clr); if (isset($this->_w3colors[$cn])) { $iclr = $this->_w3colors[$cn]; } } if ($iclr == -1) { $this->_err(JText::sprintf('ERR_COLORVAL', htmlspecialchars($clr))); return ''; } switch ($fmt) { case '0x': return sprintf("0x%06X", $iclr); case '#': return sprintf("#%06X", $iclr); case 'rgb': return sprintf("rgb(%d,%d,%d)", $iclr >> 16, ($iclr >> 8) & 0xff, $iclr & 0xff); default: JError::raiseError(500, JText::_('ERR_COLORFMT'), $fmt); } } } }

Visitors and Newcomers

Welcome! Are you looking for a community, fellowship, or a place to explore and perhaps deepen your spirituality? At Unitarian Universalist Congregation of Princeton you will find all of this and more. Come ... be our guest. Find what you are seeking.

What to Expect
One of our greeters will likely meet you and direct you to the Welcome Circle where you will be warmly welcomed. You will receive a small first-time-visit gift and a Welcome Packet with information you may find useful. Our Welcomers are there to make you feel welcome, help you navigate on your first visit, and answer questions as you come in. If you complete our visitor card, we'll also send you a few copies of our monthly newsletter Skylights.

Our services are about an hour in length, and include music, hymns, readings, and a sermon. After the service, we invite you to join us for coffee hour, a time for discussion and making friends. This is also a great time to inquire about the many activities we have going on.  You could also attend the Brunch which is offered after each service.

In the meantime, browse our web site, meet the minister, check out our education programs for children and adults. Or read some sample sermons. Questions? What to wear? What we believe, etc.?   If you are interested in events for Newcomers please contact our This e-mail address is being protected from spambots. You need JavaScript enabled to view it .

What We Believe

Our faith, Unitarian Universalism, is spiritually alive and justice-centered.

Unitarian Universalists search for truth along many paths. Instead of centering our religion on specific beliefs, we gather around shared moral values that include the inherent worth and dignity of every person.

With its historical roots in the Jewish and Christian traditions, Unitarian Universalism is a liberal religion that keeps an open mind to the religious questions people have struggled with through the ages. We believe personal experience, conscience and reason should be the final authorities in religion, and that in the end, religious authority lies not in a book or person or institution, but in ourselves.

To learn more about Unitarian Universalism's religious roots and theologies, visit the Unitarian Universalist Association's "Beliefs Within Our Faith." For other information about the denomination, visit the web site of the Unitarian Universalist Association. You can also check out Wikipedia's description of Unitarian Universalism and learn about our congregation's principles and purpose.  You can also review our Frequently Asked Questions (FAQs) page.

Are you a Unitarian Universalist and just don't know it yet? Try this quiz about what you believe.

Suggested Reading for Newcomers

Worship Services & Times

Please join us for Sunday worship services. On the Sundays after Labor Day, our services are at 9:15 a.m. and 11:15 a.m. Between Memorial Day weekend and Labor Day weekend our Sunday services are at 10:00 a.m.  We recommend you attend 3-4 services to really “try us out.” And be sure to come into Robinson Lounge (adjacent to our sanctuary) for fellowship and refreshments after the service. We look forward to welcoming you and getting to know you.

Worship Services

All are welcome to attend our worship services at any time.  Children briefly join the worship service in Channing Hall on the first Sunday of the month, before they go to their classrooms.  Other Sundays of the month children’s worship services are held in Fahs Theatre before they go to their classrooms.  Several times a year we worship as community of all ages. Those services include: Blessing of the Waters in September; Day of the Dead in October or November; Hanging of the Greens in December; Easter in March or April; and Flower Communion in May.

What to wear?

You are welcome to come in whatever makes you comfortable. You'll find most people wearing casual attire -- everything from typical "Friday casual days" wear to jeans and T-shirts. And there are some men who feel more comfortable in a coat and tie and some women likely to wear a dress or suit.  

Directions
We are located at 50 Cherry Hill Road, Princeton, NJ. Check out our directions page for detailed maps, parking and transportation information.

Still have questions? Please contact us. 

Events for Newcomers

“Exploring UU” Class for Newcomers- On occasional Saturdays (about once every other month) our minister, Rev. Bill Neely, will lead this four-hour program for Newcomers from 9:00am to 1:00pm. This is a chance to learn about the UU faith, about the UUCP congregation, get a tour of the building, meet other Newcomers and share in a light lunch.  Also offered as a 3-session class.  Information available at the Welcome Circle.

Wine* and Cheese Open House for Newcomers at a congregant's home - On occasional Sundays from 4:00 to 6:00pm (about once every other month).  *Non-alcoholic beverages will also be served. Children are welcome but there are no planned activities.


For more information about the above events e-mail This e-mail address is being protected from spambots. You need JavaScript enabled to view it

Welcoming CongregationAccessible

Site Search