diff --git a/includes/theme.inc b/includes/theme.inc
index 08b02bfcd0dfb150a0228e9f98f989db7f333bb9..af647fb91b35b9f8f5a3fd445196f10e2719bf36 100644
--- a/includes/theme.inc
+++ b/includes/theme.inc
@@ -78,7 +78,7 @@ function init_theme() {
       call_user_func($theme_engine .'_init', $themes[$theme]);
     }
   }
-  
+
   return $theme;
 }
 
@@ -192,7 +192,7 @@ function path_to_theme() {
 /**
  * Retrieve an associative array containing the settings for a theme.
  *
- * The final settings are arrived at by merging the default settings, 
+ * The final settings are arrived at by merging the default settings,
  * the site-wide settings, and the settings defined for the specific theme.
  * If no $key was specified, only the site-wide theme defaults are retrieved.
  *
@@ -272,7 +272,7 @@ function drupal_get_theme_setting($setting_name, $refresh = FALSE) {
 
     if ($settings['toggle_logo']) {
       if ($settings['default_logo']) {
-        $settings['logo'] = dirname($theme_object->filename) .'/logo.png'; 
+        $settings['logo'] = dirname($theme_object->filename) .'/logo.png';
       }
       elseif ($settings['logo_path']) {
         $settings['logo'] = $settings['logo_path'];
@@ -421,7 +421,7 @@ function theme_links($links, $delimiter = ' | ') {
  * @param $title
  *   The title text is displayed when the image is hovered in some popular browsers.
  * @param $attr
- *   Attributes placed in the img tag. 
+ *   Attributes placed in the img tag.
  * @param $getsize
  *   If set to true, the image's dimension are fetched and added as width/height attributes.
  * @return
@@ -657,7 +657,7 @@ function theme_mark() {
 
 /**
  * Import a stylesheet using @import.
- * 
+ *
  * @param $stylesheet
  *  The filename to point the link at.
  *
diff --git a/themes/bluemarine/style.css b/themes/bluemarine/style.css
index c72ee52d89c250a608a499ca02c03cde7663d0af..8d3372db21097941c99d680c3651726411a70214 100644
--- a/themes/bluemarine/style.css
+++ b/themes/bluemarine/style.css
@@ -1,354 +1,354 @@
-/* $Id$ */
-
-/*
-** HTML elements
-*/
-body {
-  margin: 0;
-  padding: 0;
-  color: #000;
-  background-color: #fff;
-  font: 76% Verdana, Arial, Helvetica, sans-serif;
-}
-tr.dark td, tr.light td {
-  padding: 0.3em;
-}
-h1, h2, h3, h4, h5, h6 {
-  margin: 0.5;
-}
-h1 {
-  font-size: 1.3em;
-}
-h2 {
-  font-size: 1.2em;
-}
-h3, h4, h5, h6 {
-  font-size: 1.1em;
-}
-a {
-  text-decoration: none;
-  font-weight: bold;
-}
-a:link {
-  color: #39c;
-}
-a:visited {
-  color: #369;
-}
-a:hover {
-  color: #39c;
-  text-decoration: underline;
-}
-fieldset {
-  border: 1px solid #ccc;
-}
-pre {
-  background-color: #eee;
-  padding: 0.75em 1.5em;
-  font-size: 12px;
-  border: 1px solid #ddd;
-}
-table {
-  /* make <td> sizes relative to body size! */
-  font-size: 1em;
-}
-.form-item label {
-  font-size: 1em;
-  color: #222;
-}
-.item-list .title {
-  font-size: 1em;
-  color: #222;
-}
-.links {
-  margin-bottom: 2em;
-}
-.comment .links {
-  margin-bottom: 0em;
-}
-
-/*
-** Page layout blocks / IDs
-*/
-#header, #content {
-  width: 100%;
-}
-#header {
-  background-color: #69c;
-}
-#logo {
-  vertical-align: middle;
-  border: 0;
-}
-#logo img {
-  float: left;
-  padding: 0em 1.0em 0em 1em;
-}
-#menu {
-  padding: 0.5em 0.5em 0 0.5em;
-  text-align: right;
-  vertical-align: middle;
-}
-#primary {
-  font-size: 1.0em;
-  padding: 0em 0.8em 0.5em 0;
-  color: #9cf;
-}
-#primary a {
-  font-weight: bold;
-  color: #fff;
-}
-#secondary {
-  padding: 0 1em 0.5em 0;
-  font-size: 0.8em;
-  color: #9cf;
-}
-#secondary a {
-  font-weight: bold;
-  color: #9cf;
-}
-#search .form-text, #search .form-submit {
-  border: 1px solid #369;
-  font-size: 1.1em;
-}
-#search .form-text {
-  width: 8em;
-  height: 1.4em;
-  padding: 0 0.5em 0 0.5em;
-  margin: 0 0 0.5em 0;
-}
-#search .form-submit {
-  height: 1.5em;
-}
-#mission {
-  background-color: #369;
-  padding: 1.5em 2em;
-  color: #fff;
-}
-#mission a, #mission a:visited {
-  color: #9cf;
-  font-weight: bold;
-}
-.site-name {
-  margin: 0.6em 0em 0em 0em;
-  padding: 0em;
-  font-size: 2em;
-}
-.site-name a:link, .site-name a:visited {
-  color: #fff;
-}
-.site-name a:hover {
-  color: #369;
-  text-decoration: none;
-}
-.site-slogan {
-  font-size: 1em;
-  color: #eee;
-  display: block;
-  margin: 0em 0em 0em 0em;
-  font-style: italic;
-  font-weight: bold;
-}
-#main {
-  /* padding in px not ex because IE messes up 100% width tables otherwise */
-  padding: 10px;
-}
-#mission, .node .content, .comment .content {
-  line-height: 1.4;
-}
-#help {
-  font-size: 0.9em;
-  margin-bottom: 1em;
-}
-.breadcrumb {
-  margin-bottom: .5em;
-}
-.messages {
-  background-color: #eee;
-  border: 1px solid #ccc;
-  padding: 0.3em;
-  margin-bottom: 1em;
-}
-.error {
-  border-color: red;
-}
-#sidebar-left, #sidebar-right {
-  background-color: #ddd;
-  width: 16em;
-  /* padding in px not ex because IE messes up 100% width tables otherwise */
-  padding: 10px;
-  vertical-align: top;
-}
-#footer {
-  background-color: #eee;
-  padding: 1em;
-  font-size: 0.8em;
-}
-
-/*
-** Common declarations for child classes of node, comment, block, box, etc.
-** If you want any of them styled differently for a specific parent, add
-** additional rules /with only the differing properties!/ to .parent .class.
-** See .comment .title for an example.
-*/
-.title, .title a {
-  font-weight: bold;
-  font-size: 1.3em;
-  color: #777;
-  margin: 0 auto 0 auto;  /* decrease default margins for h<x>.title */
-}
-.submitted {
-  color: #999;
-  font-size: 0.8em;
-}
-.links {
-  color: #999;
-}
-.links a {
-  font-weight: bold;
-}
-.block, .box {
-  padding: 0 0 1.5em 0;
-}
-.block {
-  border-bottom: 1px solid #bbb;
-  padding-bottom: 0.75em;
-  margin-bottom: 1.5em;
-}
-.block .title {
-  margin-bottom: .25em;
-}
-.box .title {
-  font-size: 1.1em;
-}
-.node {
-  margin: .5em 0 1em 0;
-}
-.sticky {
-  padding: .5em;
-  background-color: #eee;
-  border: solid 1px #ddd;
-}
-.node .content, .comment .content {
-  margin: .5em 0 .5em 0;
-}
-.node .taxonomy {
-  color: #999;
-  font-size: 0.8em;
-  padding: 1.5em;
-}
-.node .picture {
-  border: 1px solid #ddd;
-  float: right;
-  margin: 0.5em;
-}
-.comment {
-  border: 1px solid #abc;
-  padding: .5em;
-  margin-bottom: 1em;
-}
-.comment .title a {
-  font-size: 1.1em;
-  font-weight: normal;
-}
-.comment .new {
-  text-align: right;
-  font-weight: bold;
-  font-size: 0.8em;
-  float: right;
-  color: red;
-}
-.comment .picture {
-  border: 1px solid #abc;
-  float: right;
-  margin: 0.5em;
-}
-
-/*
-** Module specific styles
-*/
-#aggregator .feed {
-  background-color: #eee;
-  border: 1px solid #ccc;
-  padding: 1em;
-  margin: 1em 0 1em 0;
-}
-#aggregator .news-item .source, #aggregator .news-item .categories, #aggregator .source, #aggregator .age {
-  color: #999;
-  font-style: italic;
-  font-size: 0.9em;
-}
-#aggregator .title {
-  margin-bottom: 0.5em;
-  font-size: 1em;
-}
-#aggregator h3 {
-  margin-top: 1em;
-}
-#forum table {
-  width: 100%;
-}
-#forum td {
-  padding: 0.5em 0.5em 0.5em 0.5em;
-}
-#forum td.forum, #forum td.posts {
-  background-color: #eee;
-}
-#forum td.topics, #forum td.last-reply {
-  background-color: #ddd;
-}
-#forum td.container {
-  background-color: #ccc;
-}
-#forum td.container a {
-  color: #555;
-}
-#forum td.statistics, #forum td.settings, #forum td.pager {
-  height: 1.5em;
-  border: 1px solid #bbb;
-}
-#forum td .name {
-  color: #96c;
-}
-#forum td .links {
-  padding-top: 0.7em;
-  font-size: 0.9em;
-}
-#profile .profile {
-  clear: both;
-  border: 1px solid #abc;
-  padding: .5em;
-  margin: 1em 0em 1em 0em;
-}
-#profile .profile .name {
-  padding-bottom: 0.5em;
-}
-.block-forum h3 {
-  margin-bottom: .5em;
-}
-.calendar a {
-  text-decoration: none;
-}
-.calendar td, .calendar th {
-  padding: 0.4em 0;
-  border-color: #888;
-}
-.calendar .day-today {
-  background-color: #69c;
-}
-.calendar .day-today a {
-  color: #fff;
-}
-.calendar .day-selected {
-  background-color: #369;
-  color: #fff;
-}
-.calendar .header-week {
-  background-color: #ccc;
-}
-.calendar .day-blank {
-  background-color: #ccc;
-}
-.calendar .row-week td a:hover {
-  background-color: #fff; color: #000;
-}
+/* $Id$ */
+
+/*
+** HTML elements
+*/
+body {
+  margin: 0;
+  padding: 0;
+  color: #000;
+  background-color: #fff;
+  font: 76% Verdana, Arial, Helvetica, sans-serif;
+}
+tr.dark td, tr.light td {
+  padding: 0.3em;
+}
+h1, h2, h3, h4, h5, h6 {
+  margin: 0.5;
+}
+h1 {
+  font-size: 1.3em;
+}
+h2 {
+  font-size: 1.2em;
+}
+h3, h4, h5, h6 {
+  font-size: 1.1em;
+}
+a {
+  text-decoration: none;
+  font-weight: bold;
+}
+a:link {
+  color: #39c;
+}
+a:visited {
+  color: #369;
+}
+a:hover {
+  color: #39c;
+  text-decoration: underline;
+}
+fieldset {
+  border: 1px solid #ccc;
+}
+pre {
+  background-color: #eee;
+  padding: 0.75em 1.5em;
+  font-size: 12px;
+  border: 1px solid #ddd;
+}
+table {
+  /* make <td> sizes relative to body size! */
+  font-size: 1em;
+}
+.form-item label {
+  font-size: 1em;
+  color: #222;
+}
+.item-list .title {
+  font-size: 1em;
+  color: #222;
+}
+.links {
+  margin-bottom: 2em;
+}
+.comment .links {
+  margin-bottom: 0em;
+}
+
+/*
+** Page layout blocks / IDs
+*/
+#header, #content {
+  width: 100%;
+}
+#header {
+  background-color: #69c;
+}
+#logo {
+  vertical-align: middle;
+  border: 0;
+}
+#logo img {
+  float: left;
+  padding: 0em 1.0em 0em 1em;
+}
+#menu {
+  padding: 0.5em 0.5em 0 0.5em;
+  text-align: right;
+  vertical-align: middle;
+}
+#primary {
+  font-size: 1.0em;
+  padding: 0em 0.8em 0.5em 0;
+  color: #9cf;
+}
+#primary a {
+  font-weight: bold;
+  color: #fff;
+}
+#secondary {
+  padding: 0 1em 0.5em 0;
+  font-size: 0.8em;
+  color: #9cf;
+}
+#secondary a {
+  font-weight: bold;
+  color: #9cf;
+}
+#search .form-text, #search .form-submit {
+  border: 1px solid #369;
+  font-size: 1.1em;
+}
+#search .form-text {
+  width: 8em;
+  height: 1.4em;
+  padding: 0 0.5em 0 0.5em;
+  margin: 0 0 0.5em 0;
+}
+#search .form-submit {
+  height: 1.5em;
+}
+#mission {
+  background-color: #369;
+  padding: 1.5em 2em;
+  color: #fff;
+}
+#mission a, #mission a:visited {
+  color: #9cf;
+  font-weight: bold;
+}
+.site-name {
+  margin: 0.6em 0em 0em 0em;
+  padding: 0em;
+  font-size: 2em;
+}
+.site-name a:link, .site-name a:visited {
+  color: #fff;
+}
+.site-name a:hover {
+  color: #369;
+  text-decoration: none;
+}
+.site-slogan {
+  font-size: 1em;
+  color: #eee;
+  display: block;
+  margin: 0em 0em 0em 0em;
+  font-style: italic;
+  font-weight: bold;
+}
+#main {
+  /* padding in px not ex because IE messes up 100% width tables otherwise */
+  padding: 10px;
+}
+#mission, .node .content, .comment .content {
+  line-height: 1.4;
+}
+#help {
+  font-size: 0.9em;
+  margin-bottom: 1em;
+}
+.breadcrumb {
+  margin-bottom: .5em;
+}
+.messages {
+  background-color: #eee;
+  border: 1px solid #ccc;
+  padding: 0.3em;
+  margin-bottom: 1em;
+}
+.error {
+  border-color: red;
+}
+#sidebar-left, #sidebar-right {
+  background-color: #ddd;
+  width: 16em;
+  /* padding in px not ex because IE messes up 100% width tables otherwise */
+  padding: 10px;
+  vertical-align: top;
+}
+#footer {
+  background-color: #eee;
+  padding: 1em;
+  font-size: 0.8em;
+}
+
+/*
+** Common declarations for child classes of node, comment, block, box, etc.
+** If you want any of them styled differently for a specific parent, add
+** additional rules /with only the differing properties!/ to .parent .class.
+** See .comment .title for an example.
+*/
+.title, .title a {
+  font-weight: bold;
+  font-size: 1.3em;
+  color: #777;
+  margin: 0 auto 0 auto;  /* decrease default margins for h<x>.title */
+}
+.submitted {
+  color: #999;
+  font-size: 0.8em;
+}
+.links {
+  color: #999;
+}
+.links a {
+  font-weight: bold;
+}
+.block, .box {
+  padding: 0 0 1.5em 0;
+}
+.block {
+  border-bottom: 1px solid #bbb;
+  padding-bottom: 0.75em;
+  margin-bottom: 1.5em;
+}
+.block .title {
+  margin-bottom: .25em;
+}
+.box .title {
+  font-size: 1.1em;
+}
+.node {
+  margin: .5em 0 1em 0;
+}
+.sticky {
+  padding: .5em;
+  background-color: #eee;
+  border: solid 1px #ddd;
+}
+.node .content, .comment .content {
+  margin: .5em 0 .5em 0;
+}
+.node .taxonomy {
+  color: #999;
+  font-size: 0.8em;
+  padding: 1.5em;
+}
+.node .picture {
+  border: 1px solid #ddd;
+  float: right;
+  margin: 0.5em;
+}
+.comment {
+  border: 1px solid #abc;
+  padding: .5em;
+  margin-bottom: 1em;
+}
+.comment .title a {
+  font-size: 1.1em;
+  font-weight: normal;
+}
+.comment .new {
+  text-align: right;
+  font-weight: bold;
+  font-size: 0.8em;
+  float: right;
+  color: red;
+}
+.comment .picture {
+  border: 1px solid #abc;
+  float: right;
+  margin: 0.5em;
+}
+
+/*
+** Module specific styles
+*/
+#aggregator .feed {
+  background-color: #eee;
+  border: 1px solid #ccc;
+  padding: 1em;
+  margin: 1em 0 1em 0;
+}
+#aggregator .news-item .source, #aggregator .news-item .categories, #aggregator .source, #aggregator .age {
+  color: #999;
+  font-style: italic;
+  font-size: 0.9em;
+}
+#aggregator .title {
+  margin-bottom: 0.5em;
+  font-size: 1em;
+}
+#aggregator h3 {
+  margin-top: 1em;
+}
+#forum table {
+  width: 100%;
+}
+#forum td {
+  padding: 0.5em 0.5em 0.5em 0.5em;
+}
+#forum td.forum, #forum td.posts {
+  background-color: #eee;
+}
+#forum td.topics, #forum td.last-reply {
+  background-color: #ddd;
+}
+#forum td.container {
+  background-color: #ccc;
+}
+#forum td.container a {
+  color: #555;
+}
+#forum td.statistics, #forum td.settings, #forum td.pager {
+  height: 1.5em;
+  border: 1px solid #bbb;
+}
+#forum td .name {
+  color: #96c;
+}
+#forum td .links {
+  padding-top: 0.7em;
+  font-size: 0.9em;
+}
+#profile .profile {
+  clear: both;
+  border: 1px solid #abc;
+  padding: .5em;
+  margin: 1em 0em 1em 0em;
+}
+#profile .profile .name {
+  padding-bottom: 0.5em;
+}
+.block-forum h3 {
+  margin-bottom: .5em;
+}
+.calendar a {
+  text-decoration: none;
+}
+.calendar td, .calendar th {
+  padding: 0.4em 0;
+  border-color: #888;
+}
+.calendar .day-today {
+  background-color: #69c;
+}
+.calendar .day-today a {
+  color: #fff;
+}
+.calendar .day-selected {
+  background-color: #369;
+  color: #fff;
+}
+.calendar .header-week {
+  background-color: #ccc;
+}
+.calendar .day-blank {
+  background-color: #ccc;
+}
+.calendar .row-week td a:hover {
+  background-color: #fff; color: #000;
+}
diff --git a/themes/bluemarine/xtemplate.xtmpl b/themes/bluemarine/xtemplate.xtmpl
index 9de7b62a2facfc733d2914911e008e7f8ce1a16f..a622be24f19969abe3581860ce795d0e73cd9e5a 100644
--- a/themes/bluemarine/xtemplate.xtmpl
+++ b/themes/bluemarine/xtemplate.xtmpl
@@ -1,137 +1,137 @@
-<!-- BEGIN: header --><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
-
-<head>
-  <title>{head_title}</title>
-  {head}
-</head>
-
-<body{onload_attributes}>
-
-<table border="0" cellpadding="0" cellspacing="0" id="header">
-  <tr>
-    <td id="logo">
-
-      <!-- BEGIN: logo -->
-        <a href="./" title="Home"><img src="{logo}" alt="Home" border="0" /></a>
-      <!-- END: logo -->
-      
-      <!-- BEGIN: site_name -->
-        <h1 class='site-name'><a href="./" title="Home">{site_name}</a></h1>
-      <!-- END: site_name -->
- 
-      <!-- BEGIN: site_slogan -->
-        <div class='site-slogan'>{site_slogan}</div>
-      <!-- END: site_slogan -->
-
-
-    </td>
-    <td id="menu">
-      <div id="secondary">{secondary_links}</div>
-      <div id="primary">{primary_links}</div>
-      <!-- BEGIN: search_box -->
-      <form action="{search_url}" method="post">
-        <div id="search">
-          <input class="form-text" type="text" size="15" value="" name="keys" alt="{search_description}" />
-          <input class="form-submit" type="submit" value="{search_button_text}" />
-        </div>
-      </form>
-      <!-- END: search_box -->
-    </td>
-  </tr>
-</table>
-
-<table border="0" cellpadding="0" cellspacing="0" id="content">
-  <tr>
-    <!-- BEGIN: blocks -->
-    <td id="sidebar-left">
-      {blocks}
-    </td>
-    <!-- END: blocks -->
-    <td valign="top">
-      <!-- BEGIN: mission -->
-      <div id="mission">{mission}</div>
-      <!-- END: mission -->
-      <div id="main">
-        <!-- BEGIN: title -->
-        {breadcrumb}
-        <h1 class="title">{title}</h1>
-        <!-- BEGIN: tabs -->
-        <div class="tabs">{tabs}</div>
-        <!-- END: tabs -->
-        <!-- END: title -->
-        <!-- BEGIN: help -->
-        <div id="help">{help}</div>
-        <!-- END: help -->
-        <!-- BEGIN: message -->
-        {message}
-        <!-- END: message -->
-<!-- END: header -->
-
-<!-- BEGIN: node -->
-  <div class="node {sticky}">
-    <!-- BEGIN: picture -->
-    {picture}
-    <!-- END: picture -->
-    <!-- BEGIN: title -->
-    <h2 class="title"><a href="{link}">{title}</a></h2>
-    <!-- END: title -->
-    <span class="submitted">{submitted}</span>
-    <!-- BEGIN: taxonomy -->
-    <span class="taxonomy">{taxonomy}</span>
-    <!-- END: taxonomy -->
-    <div class="content">{content}</div>
-    <!-- BEGIN: links -->
-    <div class="links">&raquo; {links}</div>
-    <!-- END: links -->
-  </div>
-<!-- END: node -->
-
-<!-- BEGIN: comment -->
-  <div class="comment">
-    <!-- BEGIN: picture -->
-    {picture}
-    <!-- END: picture -->
-    <h3 class="title">{title}</h3><!-- BEGIN: new --><span class="new">{new}</span><!-- END: new -->
-    <div class="submitted">{submitted}</div>
-    <div class="content">{content}</div>
-    <!-- BEGIN: links -->
-    <div class="links">&raquo; {links}</div>
-    <!-- END: links -->
-  </div>
-<!-- END: comment -->
-
-<!-- BEGIN: box -->
-  <div class="box">
-    <h2 class="title">{title}</h2>
-    <div class="content">{content}</div>
- </div>
-<!-- END: box -->
-
-<!-- BEGIN: block -->
-  <div class="block block-{module}" id="block-{module}-{delta}">
-    <h2 class="title">{title}</h2>
-    <div class="content">{content}</div>
- </div>
-<!-- END: block -->
-
-<!-- BEGIN: footer -->
-      </div><!-- main -->
-    </td>
-    <!-- BEGIN: blocks -->
-    <td id="sidebar-right">
-      {blocks}
-    </td>
-    <!-- END: blocks -->
-  </tr>
-</table>
-
-<!-- BEGIN: message -->
-<div id="footer">
-  {footer_message}
-</div>
-<!-- END: message -->
-{footer}
-</body>
-</html>
-<!-- END: footer -->
+<!-- BEGIN: header --><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
+
+<head>
+  <title>{head_title}</title>
+  {head}
+</head>
+
+<body{onload_attributes}>
+
+<table border="0" cellpadding="0" cellspacing="0" id="header">
+  <tr>
+    <td id="logo">
+
+      <!-- BEGIN: logo -->
+        <a href="./" title="Home"><img src="{logo}" alt="Home" border="0" /></a>
+      <!-- END: logo -->
+
+      <!-- BEGIN: site_name -->
+        <h1 class='site-name'><a href="./" title="Home">{site_name}</a></h1>
+      <!-- END: site_name -->
+
+      <!-- BEGIN: site_slogan -->
+        <div class='site-slogan'>{site_slogan}</div>
+      <!-- END: site_slogan -->
+
+
+    </td>
+    <td id="menu">
+      <div id="secondary">{secondary_links}</div>
+      <div id="primary">{primary_links}</div>
+      <!-- BEGIN: search_box -->
+      <form action="{search_url}" method="post">
+        <div id="search">
+          <input class="form-text" type="text" size="15" value="" name="keys" alt="{search_description}" />
+          <input class="form-submit" type="submit" value="{search_button_text}" />
+        </div>
+      </form>
+      <!-- END: search_box -->
+    </td>
+  </tr>
+</table>
+
+<table border="0" cellpadding="0" cellspacing="0" id="content">
+  <tr>
+    <!-- BEGIN: blocks -->
+    <td id="sidebar-left">
+      {blocks}
+    </td>
+    <!-- END: blocks -->
+    <td valign="top">
+      <!-- BEGIN: mission -->
+      <div id="mission">{mission}</div>
+      <!-- END: mission -->
+      <div id="main">
+        <!-- BEGIN: title -->
+        {breadcrumb}
+        <h1 class="title">{title}</h1>
+        <!-- BEGIN: tabs -->
+        <div class="tabs">{tabs}</div>
+        <!-- END: tabs -->
+        <!-- END: title -->
+        <!-- BEGIN: help -->
+        <div id="help">{help}</div>
+        <!-- END: help -->
+        <!-- BEGIN: message -->
+        {message}
+        <!-- END: message -->
+<!-- END: header -->
+
+<!-- BEGIN: node -->
+  <div class="node {sticky}">
+    <!-- BEGIN: picture -->
+    {picture}
+    <!-- END: picture -->
+    <!-- BEGIN: title -->
+    <h2 class="title"><a href="{link}">{title}</a></h2>
+    <!-- END: title -->
+    <span class="submitted">{submitted}</span>
+    <!-- BEGIN: taxonomy -->
+    <span class="taxonomy">{taxonomy}</span>
+    <!-- END: taxonomy -->
+    <div class="content">{content}</div>
+    <!-- BEGIN: links -->
+    <div class="links">&raquo; {links}</div>
+    <!-- END: links -->
+  </div>
+<!-- END: node -->
+
+<!-- BEGIN: comment -->
+  <div class="comment">
+    <!-- BEGIN: picture -->
+    {picture}
+    <!-- END: picture -->
+    <h3 class="title">{title}</h3><!-- BEGIN: new --><span class="new">{new}</span><!-- END: new -->
+    <div class="submitted">{submitted}</div>
+    <div class="content">{content}</div>
+    <!-- BEGIN: links -->
+    <div class="links">&raquo; {links}</div>
+    <!-- END: links -->
+  </div>
+<!-- END: comment -->
+
+<!-- BEGIN: box -->
+  <div class="box">
+    <h2 class="title">{title}</h2>
+    <div class="content">{content}</div>
+ </div>
+<!-- END: box -->
+
+<!-- BEGIN: block -->
+  <div class="block block-{module}" id="block-{module}-{delta}">
+    <h2 class="title">{title}</h2>
+    <div class="content">{content}</div>
+ </div>
+<!-- END: block -->
+
+<!-- BEGIN: footer -->
+      </div><!-- main -->
+    </td>
+    <!-- BEGIN: blocks -->
+    <td id="sidebar-right">
+      {blocks}
+    </td>
+    <!-- END: blocks -->
+  </tr>
+</table>
+
+<!-- BEGIN: message -->
+<div id="footer">
+  {footer_message}
+</div>
+<!-- END: message -->
+{footer}
+</body>
+</html>
+<!-- END: footer -->
diff --git a/themes/chameleon/chameleon.theme b/themes/chameleon/chameleon.theme
index 9554325325d54ef0cd7884b3a6662c42457f7bf4..1889898f6733eef9f98960bd9eaa4e3a253427c6 100644
--- a/themes/chameleon/chameleon.theme
+++ b/themes/chameleon/chameleon.theme
@@ -1,153 +1,153 @@
-<?php
-// $Id$
-
-function chameleon_features() {
-  return array(
-       'logo',
-       'toggle_name',
-       'toggle_search',
-       'toggle_slogan',
-       'toggle_primary_links',
-       'toggle_secondary_links');
-}
-
-function chameleon_page($content, $title = NULL, $breadcrumb = NULL) {
-  if (isset($title)) {
-    drupal_set_title($title);
-  }
-
-  if (isset($breadcrumb)) {
-    drupal_set_breadcrumb($breadcrumb);
-  }
-
-  $output  = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n";
-  $output .= "<html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en\" xml:lang=\"en\">\n";
-  $output .= "<head>\n";
-  $output .= " <title>". ($title ? $title ." | ". variable_get("site_name", "drupal") : variable_get("site_name", "drupal") ." | ". variable_get("site_slogan", "")) ."</title>\n";
-  $output .= drupal_get_html_head();
-  $output .= " <link rel=\"stylesheet\" type=\"text/css\" href=\"themes/chameleon/common.css\" />\n";
-  $output .= "</head>";
-  $output .= "<body". theme_onload_attribute() .">\n";
-  $output .= " <div id=\"header\">";
-
-  if ($logo = drupal_get_theme_setting('logo')) {
-    $output .= "  <a href=\"./\" title=\"Home\"><img src=\"$logo\" alt=\"Home\" /></a>";
-  } 
-  if (drupal_get_theme_setting('toggle_name')) {
-    $output .= "  <h1 class=\"site-name title\">". l(variable_get('site_name', 'drupal'), ""). "</h1>";
-  } 
-  if (drupal_get_theme_setting('toggle_slogan')) {
-    $output .= "  <div class=\"site-slogan\">". variable_get('site_slogan', '') ."</div>";
-  }
-
-  $output .= "</div>\n";
-
-  $primary_links = drupal_get_theme_setting('primary_links');
-  $secondary_links = drupal_get_theme_setting('secondary_links');
-  if ($primary_links || $secondary_links) {
-    $output .= ' <div class="navlinks">';
-    if ($primary_links) {
-      $output .= '<div class="primary">'. $primary_links .'</div>';
-    }
-    if ($secondary_links) {
-      $output .= '<div class="secondary">'. $secondary_links .'</div>';
-    }
-    $output .= " </div>\n"; 
-  }
-
-  $output .= " <table>\n";
-  $output .= "  <tr>\n";
-
-  if ($blocks = theme_blocks("left")) {
-    $output .= "   <td id=\"sidebar-left\">$blocks</td>\n";
-  }
-
-  $output .= "   <td id=\"main\">\n";
-
-  if ($title = drupal_get_title()) {
-    $output .= theme("breadcrumb", drupal_get_breadcrumb());
-    $output .= "<h2>$title</h2>";
-  }
-
-  if ($tabs = theme('menu_local_tasks')) {
-    $output .= $tabs;
-  }
-
-  if ($help = menu_get_active_help()) {
-    $output .= "<div id=\"help\">$help</div><hr />";
-  }
-
-  $output .= theme_status_messages();
-
-  $output .= "\n<!-- begin content -->\n";
-  $output .= $content;
-  $output .= "\n<!-- end content -->\n";
-
-  if ($footer = variable_get('site_footer', '')) {
-    $output .= " <div id=\"footer\">$footer</div>\n";
-  }
-
-  $output  .= "   </td>\n";
-
-  if ($blocks = theme_blocks("right")) {
-    $output .= "   <td id=\"sidebar-right\">$blocks</td>\n";
-  }
-
-  $output .= "  </tr>\n";
-  $output .= " </table>\n";
-
-  $output .=  theme_closure();
-  $output .= " </body>\n";
-  $output .= "</html>\n";
-
-  return $output;
-}
-
-function chameleon_node($node, $main = 0, $page = 0) {
-
-  $output  = "<div class=\"node\">\n";
-
-  if (!$page) {
-    $output .= " <h2 class=\"title\">". ($main ? l($node->title, "node/$node->nid") : $node->title) ."</h2>\n";
-  }
-
-  $output .= " <div class=\"content\">\n";
-
-  if ($main && $node->teaser) {
-    $output .= $node->teaser;
-  }
-  else {
-    $output .= $node->body;
-  }
-
-  $output .= " </div>\n";
-
-  $submitted = drupal_get_theme_setting("toggle_node_info_$node->type") ? array(t("By %author at %date", array('%author' => format_name($node), '%date' => format_date($node->created, 'small')))) : array();
-
-  if (module_exist('taxonomy')) {
-    $terms = taxonomy_link("taxonomy terms", $node);
-  }
-
-  if ($links = link_node($node, $main)) {
-    $output .= " <div class=\"links\">". theme('links', array_merge($submitted, $terms, $links)) ."</div>\n";
-  }
-
-  $output .= "</div>\n";
-
-  return $output;
-}
-
-function chameleon_comment($comment, $link = "") {
-
-  $submitted = array(t('By %author at %date', array('%author' => format_name($comment), '%date' => format_date($comment->timestamp. 'small'))));
-  $links = array($link);
-
-  $output  = "<div class=\"comment\">\n";
-  $output .= " <h3 class=\"title\">". l($comment->subject, $_GET['q'], NULL, NULL, "comment-$comment->cid") ."</h3>\n";
-  $output .= " <div class=\"content\">". $comment->comment ."</div>\n";
-  $output .= " <div class=\"links\">". theme('links', array_merge($submitted, $links)) ."</div>\n";
-  $output .= "</div>\n";
-
-  return $output;
-}
-?>
+<?php
+// $Id$
+
+function chameleon_features() {
+  return array(
+       'logo',
+       'toggle_name',
+       'toggle_search',
+       'toggle_slogan',
+       'toggle_primary_links',
+       'toggle_secondary_links');
+}
+
+function chameleon_page($content, $title = NULL, $breadcrumb = NULL) {
+  if (isset($title)) {
+    drupal_set_title($title);
+  }
+
+  if (isset($breadcrumb)) {
+    drupal_set_breadcrumb($breadcrumb);
+  }
+
+  $output  = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n";
+  $output .= "<html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en\" xml:lang=\"en\">\n";
+  $output .= "<head>\n";
+  $output .= " <title>". ($title ? $title ." | ". variable_get("site_name", "drupal") : variable_get("site_name", "drupal") ." | ". variable_get("site_slogan", "")) ."</title>\n";
+  $output .= drupal_get_html_head();
+  $output .= " <link rel=\"stylesheet\" type=\"text/css\" href=\"themes/chameleon/common.css\" />\n";
+  $output .= "</head>";
+  $output .= "<body". theme_onload_attribute() .">\n";
+  $output .= " <div id=\"header\">";
+
+  if ($logo = drupal_get_theme_setting('logo')) {
+    $output .= "  <a href=\"./\" title=\"Home\"><img src=\"$logo\" alt=\"Home\" /></a>";
+  }
+  if (drupal_get_theme_setting('toggle_name')) {
+    $output .= "  <h1 class=\"site-name title\">". l(variable_get('site_name', 'drupal'), ""). "</h1>";
+  }
+  if (drupal_get_theme_setting('toggle_slogan')) {
+    $output .= "  <div class=\"site-slogan\">". variable_get('site_slogan', '') ."</div>";
+  }
+
+  $output .= "</div>\n";
+
+  $primary_links = drupal_get_theme_setting('primary_links');
+  $secondary_links = drupal_get_theme_setting('secondary_links');
+  if ($primary_links || $secondary_links) {
+    $output .= ' <div class="navlinks">';
+    if ($primary_links) {
+      $output .= '<div class="primary">'. $primary_links .'</div>';
+    }
+    if ($secondary_links) {
+      $output .= '<div class="secondary">'. $secondary_links .'</div>';
+    }
+    $output .= " </div>\n";
+  }
+
+  $output .= " <table>\n";
+  $output .= "  <tr>\n";
+
+  if ($blocks = theme_blocks("left")) {
+    $output .= "   <td id=\"sidebar-left\">$blocks</td>\n";
+  }
+
+  $output .= "   <td id=\"main\">\n";
+
+  if ($title = drupal_get_title()) {
+    $output .= theme("breadcrumb", drupal_get_breadcrumb());
+    $output .= "<h2>$title</h2>";
+  }
+
+  if ($tabs = theme('menu_local_tasks')) {
+    $output .= $tabs;
+  }
+
+  if ($help = menu_get_active_help()) {
+    $output .= "<div id=\"help\">$help</div><hr />";
+  }
+
+  $output .= theme_status_messages();
+
+  $output .= "\n<!-- begin content -->\n";
+  $output .= $content;
+  $output .= "\n<!-- end content -->\n";
+
+  if ($footer = variable_get('site_footer', '')) {
+    $output .= " <div id=\"footer\">$footer</div>\n";
+  }
+
+  $output  .= "   </td>\n";
+
+  if ($blocks = theme_blocks("right")) {
+    $output .= "   <td id=\"sidebar-right\">$blocks</td>\n";
+  }
+
+  $output .= "  </tr>\n";
+  $output .= " </table>\n";
+
+  $output .=  theme_closure();
+  $output .= " </body>\n";
+  $output .= "</html>\n";
+
+  return $output;
+}
+
+function chameleon_node($node, $main = 0, $page = 0) {
+
+  $output  = "<div class=\"node\">\n";
+
+  if (!$page) {
+    $output .= " <h2 class=\"title\">". ($main ? l($node->title, "node/$node->nid") : $node->title) ."</h2>\n";
+  }
+
+  $output .= " <div class=\"content\">\n";
+
+  if ($main && $node->teaser) {
+    $output .= $node->teaser;
+  }
+  else {
+    $output .= $node->body;
+  }
+
+  $output .= " </div>\n";
+
+  $submitted = drupal_get_theme_setting("toggle_node_info_$node->type") ? array(t("By %author at %date", array('%author' => format_name($node), '%date' => format_date($node->created, 'small')))) : array();
+
+  if (module_exist('taxonomy')) {
+    $terms = taxonomy_link("taxonomy terms", $node);
+  }
+
+  if ($links = link_node($node, $main)) {
+    $output .= " <div class=\"links\">". theme('links', array_merge($submitted, $terms, $links)) ."</div>\n";
+  }
+
+  $output .= "</div>\n";
+
+  return $output;
+}
+
+function chameleon_comment($comment, $link = "") {
+
+  $submitted = array(t('By %author at %date', array('%author' => format_name($comment), '%date' => format_date($comment->timestamp. 'small'))));
+  $links = array($link);
+
+  $output  = "<div class=\"comment\">\n";
+  $output .= " <h3 class=\"title\">". l($comment->subject, $_GET['q'], NULL, NULL, "comment-$comment->cid") ."</h3>\n";
+  $output .= " <div class=\"content\">". $comment->comment ."</div>\n";
+  $output .= " <div class=\"links\">". theme('links', array_merge($submitted, $links)) ."</div>\n";
+  $output .= "</div>\n";
+
+  return $output;
+}
+?>
diff --git a/themes/chameleon/common.css b/themes/chameleon/common.css
index 057a0c15b389f7340854f333be555bd5dff94be6..cb88e4b1d3eee36b0d142047827b362fee72ff09 100644
--- a/themes/chameleon/common.css
+++ b/themes/chameleon/common.css
@@ -1,147 +1,147 @@
-/* $Id$ */
-
-/*
-** HTML elements
-*/
-a, a:link, a:active {
-  font-weight: bold;
-  text-decoration: none;
-}
-a:hover {
-  text-decoration: underline;
-}
-body {
-  margin: 0;
-  padding: 3em;
-  font-size: .9em;
-  line-height: 1.3em;
-}
-blockquote {
-  font-style: italic;
-}
-table {
-  margin: 0;
-  padding: .5em;
-  border-collapse: collapse;
-}
-code, pre {
- font-size: 1em;
-}
-pre {
- font-size: 0.8em;
- padding: 1em;
- background: #eee;
-}
-li {
- padding-bottom: .3em;
-}
-h1, h2, h3, h4, h5, h6 {
-  margin-bottom: .25em;
-}
-h1 {
-  font-size: 1.3em;
-}
-h2 {
-  font-size: 1.2em;
-}
-h3 {
-  font-size: 1.1em;
-}
-h4, h5, h6 {
-  font-size: 1em;
-}
-p {
-  margin: 0 0 .5em 0;
-}
-br {
-  line-height: 0.6em;
-}
-
-/*
-** Page layout blocks / IDs
-*/
-#header {
-  margin-bottom: 2em;
-}
-#help {
-  font-size: 0.8em;
-}
-#sidebar-left, #sidebar-right {
-  vertical-align: top;
-  padding: 10px;
-}
-#main {
-  padding-left: 1em;
-  padding-right: 1em;
-  vertical-align: top;
-}
-#footer {
- font-size: 0.8em;
- padding-top: 2em;
- text-align: center;
-}
-
-/*
-** Common declarations for child classes of node, comment, block, box etc
-*/
-.title {
-  margin: 0 0 .25em 0;
-}
-.content {
-  margin: 0 0 .5em 0;
-}
-.links {
-  font-size: 0.8em;
-  line-height: 1.25em;
-}
-.block {
-  width: 180px;
-}
-.messages {
-  padding: 0.3em;
-  margin: 0.5em 0em 0.5em 0em;
-}
-.status {
-  border: 1px solid #3a3;
-  color: #3a3;
-}
-.error, form-item input.error {
-  border: 1px solid red;
-  color: red;
-}
-
-/*
-** Common navigation links added on the admin/themes/settings page
-*/
-.navlinks {
-  padding: 0em 0.5em 1.5em 0em;
-}
-.primary a {
-  font-size: 1.0em;
-  padding: 0em 0.5em 0em 0em;
-}
-.secondary a {
-  font-size: 0.9em;
-  padding: 0em 0.5em 0em 0em;
-}
-
-/*
-** Logo Image Positioning
-*/
-#header img {
-	float: left;
-	padding: 0em 2em 0em 0em;
-}
-#header {
-	clear: both;
-}
-/*
-** Module specific styles
-*/
-.form-item textarea {
-  font-size: 1em;
-}
-#aggregator .feed {
-  border: 1px solid gray;
-  padding: 1em;
-}
+/* $Id$ */
+
+/*
+** HTML elements
+*/
+a, a:link, a:active {
+  font-weight: bold;
+  text-decoration: none;
+}
+a:hover {
+  text-decoration: underline;
+}
+body {
+  margin: 0;
+  padding: 3em;
+  font-size: .9em;
+  line-height: 1.3em;
+}
+blockquote {
+  font-style: italic;
+}
+table {
+  margin: 0;
+  padding: .5em;
+  border-collapse: collapse;
+}
+code, pre {
+ font-size: 1em;
+}
+pre {
+ font-size: 0.8em;
+ padding: 1em;
+ background: #eee;
+}
+li {
+ padding-bottom: .3em;
+}
+h1, h2, h3, h4, h5, h6 {
+  margin-bottom: .25em;
+}
+h1 {
+  font-size: 1.3em;
+}
+h2 {
+  font-size: 1.2em;
+}
+h3 {
+  font-size: 1.1em;
+}
+h4, h5, h6 {
+  font-size: 1em;
+}
+p {
+  margin: 0 0 .5em 0;
+}
+br {
+  line-height: 0.6em;
+}
+
+/*
+** Page layout blocks / IDs
+*/
+#header {
+  margin-bottom: 2em;
+}
+#help {
+  font-size: 0.8em;
+}
+#sidebar-left, #sidebar-right {
+  vertical-align: top;
+  padding: 10px;
+}
+#main {
+  padding-left: 1em;
+  padding-right: 1em;
+  vertical-align: top;
+}
+#footer {
+ font-size: 0.8em;
+ padding-top: 2em;
+ text-align: center;
+}
+
+/*
+** Common declarations for child classes of node, comment, block, box etc
+*/
+.title {
+  margin: 0 0 .25em 0;
+}
+.content {
+  margin: 0 0 .5em 0;
+}
+.links {
+  font-size: 0.8em;
+  line-height: 1.25em;
+}
+.block {
+  width: 180px;
+}
+.messages {
+  padding: 0.3em;
+  margin: 0.5em 0em 0.5em 0em;
+}
+.status {
+  border: 1px solid #3a3;
+  color: #3a3;
+}
+.error, form-item input.error {
+  border: 1px solid red;
+  color: red;
+}
+
+/*
+** Common navigation links added on the admin/themes/settings page
+*/
+.navlinks {
+  padding: 0em 0.5em 1.5em 0em;
+}
+.primary a {
+  font-size: 1.0em;
+  padding: 0em 0.5em 0em 0em;
+}
+.secondary a {
+  font-size: 0.9em;
+  padding: 0em 0.5em 0em 0em;
+}
+
+/*
+** Logo Image Positioning
+*/
+#header img {
+  float: left;
+  padding: 0em 2em 0em 0em;
+}
+#header {
+  clear: both;
+}
+/*
+** Module specific styles
+*/
+.form-item textarea {
+  font-size: 1em;
+}
+#aggregator .feed {
+  border: 1px solid gray;
+  padding: 1em;
+}
diff --git a/themes/chameleon/marvin/style.css b/themes/chameleon/marvin/style.css
index 56587aef8e0024ef3fd60c6a98040c905055d4bf..8fa57b3b5eee78a4eb450be5fb38ec456fb3af6e 100644
--- a/themes/chameleon/marvin/style.css
+++ b/themes/chameleon/marvin/style.css
@@ -1,118 +1,118 @@
-/* $Id$ */
-
-/*
-** HTML elements
-*/
-body {
-  background: #fff url(druplicon-watermark.png) no-repeat top right;
-  font-family: arial, helvetica, sans-serif;
-}
-a:link {
-  color: #656
-}
-a:visited {
-  color: #656
-}
-a:active {
-  color: #ccc
-}
-h2 {
-  background-color: #eaeaea;
-  border: solid 1px #777;
-  font-size: 1.1em;
-  margin: 0.5em 0em 0.5em 0em;
-  padding: 0.5em;
-}
-h2.title {
-  background-color: #fff;
-  border: solid 1px #888;
-  margin-top: 1em;
-}
-p {
-  margin: 0 1em 1em 0;
-  padding: 0;
-}
-table {
-  font-size: 1em;
-}
-
-/*
-** Page layout blocks / IDs
-*/
-#main {
-  width: 80%;
-}
-#header .title {
-  padding-top: .75em;
-}
-
-/*
-** Common declarations for child classes of node, comment, block, box etc
-*/
-.node .submitted {
-  color: #7c7c7c;
-  font-size: 0.9em;
-  float: left;
-  padding: 0.5em 0em 0.5em 1em;
-}
-.node .taxonomy {
-  color: #7c7c7c;
-  font-size: 0.9em;
-  float: right;
-}
-.node .content {
-  clear: both;
-  padding-left: 1em;
-}
-.node .links {
-  padding: 1em;
-}
-.comment {
-  border: solid 1px #777;
-  margin: 0.5em 0 0.5em 0;
-  padding: 0.5em;
-}
-.block {
-  margin-bottom: 10px;
-  font-size: 0.9em;
-}
-.block .content {
-  border: solid 1px #888;
-  border-top: none;
-  margin: 0;
-  padding: 5px;
-}
-.block h2.title {
-  margin: 0;
-}
-
-/*
-** Module specific styles
-*/
-.item-list ul li {
-  list-style-image: url(bullet.png);
-}
-.calendar .day-today {
-  background-color: #ccc;
-}
-.calendar .day-selected {
-  background-color: #bbb;
-}
-.calendar .header-month {
-  background-color: #ddd;
-}
-.calendar .header-week {
-  background-color: #ccc;
-}
-.calendar .day-blank {
-  background-color: #ddd;
-}
-.calendar .day-link a {
-  color: #000;
-}
-.calendar .row-week {
-  color: #aaa;
-}
-.path, .path a, .path a:visited {
-  color: #888;
+/* $Id$ */
+
+/*
+** HTML elements
+*/
+body {
+  background: #fff url(druplicon-watermark.png) no-repeat top right;
+  font-family: arial, helvetica, sans-serif;
+}
+a:link {
+  color: #656
+}
+a:visited {
+  color: #656
+}
+a:active {
+  color: #ccc
+}
+h2 {
+  background-color: #eaeaea;
+  border: solid 1px #777;
+  font-size: 1.1em;
+  margin: 0.5em 0em 0.5em 0em;
+  padding: 0.5em;
+}
+h2.title {
+  background-color: #fff;
+  border: solid 1px #888;
+  margin-top: 1em;
+}
+p {
+  margin: 0 1em 1em 0;
+  padding: 0;
+}
+table {
+  font-size: 1em;
+}
+
+/*
+** Page layout blocks / IDs
+*/
+#main {
+  width: 80%;
+}
+#header .title {
+  padding-top: .75em;
+}
+
+/*
+** Common declarations for child classes of node, comment, block, box etc
+*/
+.node .submitted {
+  color: #7c7c7c;
+  font-size: 0.9em;
+  float: left;
+  padding: 0.5em 0em 0.5em 1em;
+}
+.node .taxonomy {
+  color: #7c7c7c;
+  font-size: 0.9em;
+  float: right;
+}
+.node .content {
+  clear: both;
+  padding-left: 1em;
+}
+.node .links {
+  padding: 1em;
+}
+.comment {
+  border: solid 1px #777;
+  margin: 0.5em 0 0.5em 0;
+  padding: 0.5em;
+}
+.block {
+  margin-bottom: 10px;
+  font-size: 0.9em;
+}
+.block .content {
+  border: solid 1px #888;
+  border-top: none;
+  margin: 0;
+  padding: 5px;
+}
+.block h2.title {
+  margin: 0;
+}
+
+/*
+** Module specific styles
+*/
+.item-list ul li {
+  list-style-image: url(bullet.png);
+}
+.calendar .day-today {
+  background-color: #ccc;
+}
+.calendar .day-selected {
+  background-color: #bbb;
+}
+.calendar .header-month {
+  background-color: #ddd;
+}
+.calendar .header-week {
+  background-color: #ccc;
+}
+.calendar .day-blank {
+  background-color: #ddd;
+}
+.calendar .day-link a {
+  color: #000;
+}
+.calendar .row-week {
+  color: #aaa;
+}
+.path, .path a, .path a:visited {
+  color: #888;
 }
\ No newline at end of file
diff --git a/themes/chameleon/style.css b/themes/chameleon/style.css
index 9f65ccc82c21a49c3d779af94734155b8d2ad6f3..594c0cef733afd8633d5fc383dc35239ea21dd67 100644
--- a/themes/chameleon/style.css
+++ b/themes/chameleon/style.css
@@ -1,95 +1,95 @@
-/* $Id$ */
-
-/*
-** HTML elements
-*/
-a, a:link, a:active {
-  color: #930;
-}
-a:visited {
-  color: #630;
-}
-body {
-  padding: 5em 0 0 3em;
-  background-image: url(background.png);
-  background-repeat: repeat-x;
-  font-family: trebuchet ms, tahoma, verdana, arial, helvetica;
-  border-top: 10px solid gray;
-}
-ul {
-  list-style-type: disc;
-}
-
-/*
-** Page layout blocks / IDs
-*/
-#main {
-  width: 500px;
-}
-#sidebar-left {
-  border-right: 1px solid gray;
-}
-#sidebar-right {
-  border-left: 1px solid gray;
-}
-
-/*
-** Common declarations for child classes of node, comment, block, box etc
-*/
-#header .title {
-  font-size: 2em;
-  font-weight: bold;
-  padding-top: .75em;
-}
-#header .title a,
-#header .title a:link,
-#header .title a:visited,
-#header .title a:active {
-  text-decoration: none;
-  color: #aaa;
-}
-#header .title a:hover {
-  color: #930;
-}
-#header .site-slogan {
-  margin-top: -0.1em;
-  font-size: 0.8em;
-}
-.node .title {
-  font-size: 1.2em;
-}
-.node .title a,
-.node .title a:link,
-.node .title a:active,
-.node .title a:visited {
-  text-decoration: none;
-  font-weight: normal;
-}
-.node .title a:hover {
-  text-decoration: underline;
-}
-.links {
-  margin: 1em 0 3em 0;
-  text-align: right;
- }
-.comment .content, .block .content, .menu {
-  font-size: 0.9em;
-}
-.block {
-  padding-bottom: 1em;
-}
-.block .title {
-  font-size: 1em;
-}
-
-/*
-** Module specific styles
-*/
-.item-list ul li {
-  list-style: square;
-}
-#aggregator .source {
-  color: gray;
-  font-style: italic;
-  font-size: 0.9em;
-}
+/* $Id$ */
+
+/*
+** HTML elements
+*/
+a, a:link, a:active {
+  color: #930;
+}
+a:visited {
+  color: #630;
+}
+body {
+  padding: 5em 0 0 3em;
+  background-image: url(background.png);
+  background-repeat: repeat-x;
+  font-family: trebuchet ms, tahoma, verdana, arial, helvetica;
+  border-top: 10px solid gray;
+}
+ul {
+  list-style-type: disc;
+}
+
+/*
+** Page layout blocks / IDs
+*/
+#main {
+  width: 500px;
+}
+#sidebar-left {
+  border-right: 1px solid gray;
+}
+#sidebar-right {
+  border-left: 1px solid gray;
+}
+
+/*
+** Common declarations for child classes of node, comment, block, box etc
+*/
+#header .title {
+  font-size: 2em;
+  font-weight: bold;
+  padding-top: .75em;
+}
+#header .title a,
+#header .title a:link,
+#header .title a:visited,
+#header .title a:active {
+  text-decoration: none;
+  color: #aaa;
+}
+#header .title a:hover {
+  color: #930;
+}
+#header .site-slogan {
+  margin-top: -0.1em;
+  font-size: 0.8em;
+}
+.node .title {
+  font-size: 1.2em;
+}
+.node .title a,
+.node .title a:link,
+.node .title a:active,
+.node .title a:visited {
+  text-decoration: none;
+  font-weight: normal;
+}
+.node .title a:hover {
+  text-decoration: underline;
+}
+.links {
+  margin: 1em 0 3em 0;
+  text-align: right;
+ }
+.comment .content, .block .content, .menu {
+  font-size: 0.9em;
+}
+.block {
+  padding-bottom: 1em;
+}
+.block .title {
+  font-size: 1em;
+}
+
+/*
+** Module specific styles
+*/
+.item-list ul li {
+  list-style: square;
+}
+#aggregator .source {
+  color: gray;
+  font-style: italic;
+  font-size: 0.9em;
+}
diff --git a/themes/engines/xtemplate/xtemplate.engine b/themes/engines/xtemplate/xtemplate.engine
index fa91aa9545d9d322b7cb3e3f68bacb9af3ba5308..02f5cfba2f801903d6b4b8a00cf89f6fc90d8a82 100644
--- a/themes/engines/xtemplate/xtemplate.engine
+++ b/themes/engines/xtemplate/xtemplate.engine
@@ -1,233 +1,233 @@
-<?php
-// $Id$
-
-// Initialize the xtemplate engine.
-function xtemplate_init($template) {
-  // We cannot use the theme() or path_to_theme() functions here
-  if (!class_exists('XTemplate')) {
-    include_once('themes/engines/xtemplate/xtemplate.inc');
-  }
-  $GLOBALS['xtemplate']->template = new XTemplate(basename($template->filename), dirname($template->filename));
-  $GLOBALS['xtemplate']->template->SetNullBlock(' ');  // '' doesnt work!
-}
-
-function xtemplate_templates($directory) {
-  return file_scan_directory($directory, 'xtemplate.xtmpl$');
-}
-
-function xtemplate_features() {
-  return array(
-       'logo',
-       'toggle_name',
-       'toggle_search',
-       'toggle_slogan',
-       'toggle_mission',
-       'toggle_primary_links',
-       'toggle_secondary_links',
-       'toggle_node_user_picture',
-       'toggle_comment_user_picture');
-}
-
-function xtemplate_node($node, $main = 0, $page = 0) {
-  global $xtemplate;
-
-  $xtemplate->template->assign(array(
-        "submitted" => drupal_get_theme_setting("toggle_node_info_$node->type") ?
-                         t("Submitted by %a on %b.",
-                           array("%a" => format_name($node),
-                            "%b" => format_date($node->created))) : '',
-        "link"      => url("node/$node->nid"),
-        "title"     => $node->title,
-        "author"    => format_name($node),
-        "date"      => format_date($node->created),
-        "sticky"    => ($main && $node->sticky) ? 'sticky' : '',
-        "content"   => ($main && $node->teaser) ? $node->teaser : $node->body));
-
-  if ($page == 0) {
-    $xtemplate->template->parse("node.title");
-  }
-
-  if (drupal_get_theme_setting('toggle_node_user_picture') && $picture = theme('user_picture', $node)) {
-    $xtemplate->template->assign("picture", $picture);
-    $xtemplate->template->parse("node.picture");
-  }
-
-  if (module_exist("taxonomy") && ($taxonomy = taxonomy_link("taxonomy terms", $node))) {
-    $xtemplate->template->assign("taxonomy", theme_links($taxonomy));
-    $xtemplate->template->parse("node.taxonomy");
-  }
-
-  if ($links = link_node($node, $main)) {
-    $xtemplate->template->assign("links", theme_links($links));
-    $xtemplate->template->parse("node.links");
-  }
-
-  $xtemplate->template->parse("node");
-  $output = $xtemplate->template->text("node");
-  $xtemplate->template->reset("node");
-  return $output;
-}
-
-function xtemplate_comment($comment, $links = 0) {
-  global $xtemplate;
-
-  $xtemplate->template->assign(array (
-    "new"       => t("new"),
-    "submitted" => t("Submitted by %a on %b.",
-                      array("%a" => format_name($comment),
-                            "%b" => format_date($comment->timestamp))),
-    "title"     => l($comment->subject, $_GET['q'], NULL, NULL, "comment-$comment->cid"),
-    "author"    => format_name($comment),
-    "date"      => format_date($comment->timestamp),
-    "content"   => $comment->comment
-  ));
-
-  if ($comment->new) {
-    $xtemplate->template->parse("comment.new");
-  }
-
-  if (drupal_get_theme_setting('toggle_comment_user_picture') && $picture = theme('user_picture', $comment)) {
-    $xtemplate->template->assign("picture", $picture);
-    $xtemplate->template->parse("comment.picture");
-  }
-
-  if ($links) {
-    $xtemplate->template->assign("links", $links);
-    $xtemplate->template->parse("comment.links");
-  }
-
-  $xtemplate->template->parse("comment");
-  $output = $xtemplate->template->text("comment");
-  $xtemplate->template->reset("comment");
-
-  return $output;
-}
-
-function xtemplate_page($content, $title = NULL, $breadcrumb = NULL) {
-  if (isset($title)) {
-    drupal_set_title($title);
-  }
-  if (isset($breadcrumb)) {
-    drupal_set_breadcrumb($breadcrumb);
-  }
-
-  global $xtemplate;
-
-  $xtemplate->template->assign(array(
-    "head_title" => (drupal_get_title() ? drupal_get_title() ." | ". variable_get("site_name", "drupal") : variable_get("site_name", "drupal") ." | ". variable_get("site_slogan", "")),
-    "head" => drupal_get_html_head(),
-    "onload_attributes" => theme_onload_attribute(),
-    "primary_links" => drupal_get_theme_setting('primary_links'),
-    "secondary_links" => drupal_get_theme_setting('secondary_links')
-   ));
-
-  if ($logo = drupal_get_theme_setting('logo')) {
-    $xtemplate->template->assign('logo', $logo);
-    $xtemplate->template->parse('header.logo');
-  }
-
-  if (drupal_get_theme_setting('toggle_name')) {
-    $xtemplate->template->assign('site_name', variable_get('site_name', ''));
-    $xtemplate->template->parse('header.site_name');
-  }
-
-  if (drupal_get_theme_setting('toggle_slogan')) {
-    $xtemplate->template->assign('site_slogan', variable_get('site_slogan', ''));
-    $xtemplate->template->parse('header.site_slogan');
-  }
-
-  if ($tabs = theme('menu_local_tasks')) {
-    $xtemplate->template->assign("tabs", $tabs);
-    $xtemplate->template->parse("header.title.tabs");
-  }
-
-  if ($title = drupal_get_title()) {
-    $xtemplate->template->assign("title", $title);
-    $xtemplate->template->assign("breadcrumb", theme("breadcrumb", drupal_get_breadcrumb()));
-    $xtemplate->template->parse("header.title");
-  }
-
-  if ($help = menu_get_active_help()) {
-    $xtemplate->template->assign("help", $help);
-    $xtemplate->template->parse("header.help");
-  }
-
-  if ($message = theme_status_messages()) {
-    $xtemplate->template->assign("message", $message);
-    $xtemplate->template->parse("header.message");
-  }
-
-  if (drupal_get_theme_setting('toggle_search')) {
-    $xtemplate->template->assign(array(
-          //"search" => search_form(),
-          "search_url" => url("search"),
-          "search_button_text" => t("Search"),
-          "search_description" => t("Enter the terms you wish to search for.")
-          ));
-    $xtemplate->template->parse("header.search_box");
-  }
-
-  // only parse the mission block if we are on the frontpage ...
-  if ($_GET["q"] == variable_get("site_frontpage", "node") && drupal_get_theme_setting('toggle_mission') && ($mission = drupal_get_theme_setting('mission'))) {
-    $xtemplate->template->assign("mission", $mission);
-    $xtemplate->template->parse("header.mission");
-  }
-
-  if ($blocks = theme("blocks", "left")) {
-    $xtemplate->template->assign("blocks", $blocks);
-    $xtemplate->template->parse("header.blocks");
-  }
-
-  $xtemplate->template->parse("header");
-  $output = $xtemplate->template->text("header");
-
-  $output .= "\n<!-- begin content -->\n";
-  $output .= $content;
-  $output .= "\n<!-- end content -->\n";
-
-  if ($blocks = theme("blocks", "right")) {
-    $xtemplate->template->assign("blocks", $blocks);
-    $xtemplate->template->parse("footer.blocks");
-  }
-
-  // only parse the footer block if site_footer is set
-  if ($footer_message = variable_get("site_footer", FALSE)) {
-    $xtemplate->template->assign("footer_message", $footer_message);
-    $xtemplate->template->parse("footer.message");
-  }
-
-  $xtemplate->template->assign("footer", theme_closure());
-  $xtemplate->template->parse("footer");
-
-  $output .= $xtemplate->template->text("footer");
-
-  return $output;
-}
-
-function xtemplate_block(&$block) {
-  global $xtemplate;
-
-  // create template variables for all block variables (module, delta, region, subject, content, ...)
-  foreach ($block as $key => $value) {
-    $xtemplate->template->assign($key == "subject" ? "title" : $key, $value); // TODO: standardize on 'title' (ie. rename all $block["subject"] to "title")
-  }
-  $xtemplate->template->parse("block");
-  $output = $xtemplate->template->text("block");
-  $xtemplate->template->reset("block");
-  return $output;
-}
-
-function xtemplate_box($title, $content, $region = "main") {
-  global $xtemplate;
-
-  $xtemplate->template->assign(array(
-        "title" => $title,
-        "content" => $content));
-
-  $xtemplate->template->parse("box");
-  $output = $xtemplate->template->text("box");
-  $xtemplate->template->reset("box");
-  return $output;
-}
-
-?>
+<?php
+// $Id$
+
+// Initialize the xtemplate engine.
+function xtemplate_init($template) {
+  // We cannot use the theme() or path_to_theme() functions here
+  if (!class_exists('XTemplate')) {
+    include_once('themes/engines/xtemplate/xtemplate.inc');
+  }
+  $GLOBALS['xtemplate']->template = new XTemplate(basename($template->filename), dirname($template->filename));
+  $GLOBALS['xtemplate']->template->SetNullBlock(' ');  // '' doesnt work!
+}
+
+function xtemplate_templates($directory) {
+  return file_scan_directory($directory, 'xtemplate.xtmpl$');
+}
+
+function xtemplate_features() {
+  return array(
+       'logo',
+       'toggle_name',
+       'toggle_search',
+       'toggle_slogan',
+       'toggle_mission',
+       'toggle_primary_links',
+       'toggle_secondary_links',
+       'toggle_node_user_picture',
+       'toggle_comment_user_picture');
+}
+
+function xtemplate_node($node, $main = 0, $page = 0) {
+  global $xtemplate;
+
+  $xtemplate->template->assign(array(
+        "submitted" => drupal_get_theme_setting("toggle_node_info_$node->type") ?
+                         t("Submitted by %a on %b.",
+                           array("%a" => format_name($node),
+                            "%b" => format_date($node->created))) : '',
+        "link"      => url("node/$node->nid"),
+        "title"     => $node->title,
+        "author"    => format_name($node),
+        "date"      => format_date($node->created),
+        "sticky"    => ($main && $node->sticky) ? 'sticky' : '',
+        "content"   => ($main && $node->teaser) ? $node->teaser : $node->body));
+
+  if ($page == 0) {
+    $xtemplate->template->parse("node.title");
+  }
+
+  if (drupal_get_theme_setting('toggle_node_user_picture') && $picture = theme('user_picture', $node)) {
+    $xtemplate->template->assign("picture", $picture);
+    $xtemplate->template->parse("node.picture");
+  }
+
+  if (module_exist("taxonomy") && ($taxonomy = taxonomy_link("taxonomy terms", $node))) {
+    $xtemplate->template->assign("taxonomy", theme_links($taxonomy));
+    $xtemplate->template->parse("node.taxonomy");
+  }
+
+  if ($links = link_node($node, $main)) {
+    $xtemplate->template->assign("links", theme_links($links));
+    $xtemplate->template->parse("node.links");
+  }
+
+  $xtemplate->template->parse("node");
+  $output = $xtemplate->template->text("node");
+  $xtemplate->template->reset("node");
+  return $output;
+}
+
+function xtemplate_comment($comment, $links = 0) {
+  global $xtemplate;
+
+  $xtemplate->template->assign(array (
+    "new"       => t("new"),
+    "submitted" => t("Submitted by %a on %b.",
+                      array("%a" => format_name($comment),
+                            "%b" => format_date($comment->timestamp))),
+    "title"     => l($comment->subject, $_GET['q'], NULL, NULL, "comment-$comment->cid"),
+    "author"    => format_name($comment),
+    "date"      => format_date($comment->timestamp),
+    "content"   => $comment->comment
+  ));
+
+  if ($comment->new) {
+    $xtemplate->template->parse("comment.new");
+  }
+
+  if (drupal_get_theme_setting('toggle_comment_user_picture') && $picture = theme('user_picture', $comment)) {
+    $xtemplate->template->assign("picture", $picture);
+    $xtemplate->template->parse("comment.picture");
+  }
+
+  if ($links) {
+    $xtemplate->template->assign("links", $links);
+    $xtemplate->template->parse("comment.links");
+  }
+
+  $xtemplate->template->parse("comment");
+  $output = $xtemplate->template->text("comment");
+  $xtemplate->template->reset("comment");
+
+  return $output;
+}
+
+function xtemplate_page($content, $title = NULL, $breadcrumb = NULL) {
+  if (isset($title)) {
+    drupal_set_title($title);
+  }
+  if (isset($breadcrumb)) {
+    drupal_set_breadcrumb($breadcrumb);
+  }
+
+  global $xtemplate;
+
+  $xtemplate->template->assign(array(
+    "head_title" => (drupal_get_title() ? drupal_get_title() ." | ". variable_get("site_name", "drupal") : variable_get("site_name", "drupal") ." | ". variable_get("site_slogan", "")),
+    "head" => drupal_get_html_head(),
+    "onload_attributes" => theme_onload_attribute(),
+    "primary_links" => drupal_get_theme_setting('primary_links'),
+    "secondary_links" => drupal_get_theme_setting('secondary_links')
+   ));
+
+  if ($logo = drupal_get_theme_setting('logo')) {
+    $xtemplate->template->assign('logo', $logo);
+    $xtemplate->template->parse('header.logo');
+  }
+
+  if (drupal_get_theme_setting('toggle_name')) {
+    $xtemplate->template->assign('site_name', variable_get('site_name', ''));
+    $xtemplate->template->parse('header.site_name');
+  }
+
+  if (drupal_get_theme_setting('toggle_slogan')) {
+    $xtemplate->template->assign('site_slogan', variable_get('site_slogan', ''));
+    $xtemplate->template->parse('header.site_slogan');
+  }
+
+  if ($tabs = theme('menu_local_tasks')) {
+    $xtemplate->template->assign("tabs", $tabs);
+    $xtemplate->template->parse("header.title.tabs");
+  }
+
+  if ($title = drupal_get_title()) {
+    $xtemplate->template->assign("title", $title);
+    $xtemplate->template->assign("breadcrumb", theme("breadcrumb", drupal_get_breadcrumb()));
+    $xtemplate->template->parse("header.title");
+  }
+
+  if ($help = menu_get_active_help()) {
+    $xtemplate->template->assign("help", $help);
+    $xtemplate->template->parse("header.help");
+  }
+
+  if ($message = theme_status_messages()) {
+    $xtemplate->template->assign("message", $message);
+    $xtemplate->template->parse("header.message");
+  }
+
+  if (drupal_get_theme_setting('toggle_search')) {
+    $xtemplate->template->assign(array(
+          //"search" => search_form(),
+          "search_url" => url("search"),
+          "search_button_text" => t("Search"),
+          "search_description" => t("Enter the terms you wish to search for.")
+          ));
+    $xtemplate->template->parse("header.search_box");
+  }
+
+  // only parse the mission block if we are on the frontpage ...
+  if ($_GET["q"] == variable_get("site_frontpage", "node") && drupal_get_theme_setting('toggle_mission') && ($mission = drupal_get_theme_setting('mission'))) {
+    $xtemplate->template->assign("mission", $mission);
+    $xtemplate->template->parse("header.mission");
+  }
+
+  if ($blocks = theme("blocks", "left")) {
+    $xtemplate->template->assign("blocks", $blocks);
+    $xtemplate->template->parse("header.blocks");
+  }
+
+  $xtemplate->template->parse("header");
+  $output = $xtemplate->template->text("header");
+
+  $output .= "\n<!-- begin content -->\n";
+  $output .= $content;
+  $output .= "\n<!-- end content -->\n";
+
+  if ($blocks = theme("blocks", "right")) {
+    $xtemplate->template->assign("blocks", $blocks);
+    $xtemplate->template->parse("footer.blocks");
+  }
+
+  // only parse the footer block if site_footer is set
+  if ($footer_message = variable_get("site_footer", FALSE)) {
+    $xtemplate->template->assign("footer_message", $footer_message);
+    $xtemplate->template->parse("footer.message");
+  }
+
+  $xtemplate->template->assign("footer", theme_closure());
+  $xtemplate->template->parse("footer");
+
+  $output .= $xtemplate->template->text("footer");
+
+  return $output;
+}
+
+function xtemplate_block(&$block) {
+  global $xtemplate;
+
+  // create template variables for all block variables (module, delta, region, subject, content, ...)
+  foreach ($block as $key => $value) {
+    $xtemplate->template->assign($key == "subject" ? "title" : $key, $value); // TODO: standardize on 'title' (ie. rename all $block["subject"] to "title")
+  }
+  $xtemplate->template->parse("block");
+  $output = $xtemplate->template->text("block");
+  $xtemplate->template->reset("block");
+  return $output;
+}
+
+function xtemplate_box($title, $content, $region = "main") {
+  global $xtemplate;
+
+  $xtemplate->template->assign(array(
+        "title" => $title,
+        "content" => $content));
+
+  $xtemplate->template->parse("box");
+  $output = $xtemplate->template->text("box");
+  $xtemplate->template->reset("box");
+  return $output;
+}
+
+?>
diff --git a/themes/engines/xtemplate/xtemplate.inc b/themes/engines/xtemplate/xtemplate.inc
index 611ec2c8c99c41bf7ee00b6fc89fcfde5a9548ee..6c89be93d25c2f86cac67aae67a82dcfe585d02a 100644
--- a/themes/engines/xtemplate/xtemplate.inc
+++ b/themes/engines/xtemplate/xtemplate.inc
@@ -1,480 +1,480 @@
-<?php
-
-class XTemplate {
-
-/*
-  xtemplate class 0.3pre
-  html generation with templates - fast & easy
-  copyright (c) 2000-2001 Barnabas Debreceni [cranx@users.sourceforge.net]
-
-  contributors:
-  Ivar Smolin <okul@linux.ee> (14-march-2001)
-    - made some code optimizations
-  Bert Jandehoop <bert.jandehoop@users.info.wau.nl> (26-june-2001)
-    - new feature to substitute template files by other templates
-    - new method array_loop()
-
-  !!! {FILE {VAR}} file variable interpolation may still be buggy !!!
-
-  latest stable & CVS versions always available @
-  http://sourceforge.net/projects/xtpl/
-
-  This program is free software; you can redistribute it and/or
-  modify it under the terms of the GNU Lesser General Public License
-  version 2.1 as published by the Free Software Foundation.
-
-  This library is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU Lesser General Public License for more details at
-  http://www.gnu.org/copyleft/lgpl.html
-
-  You should have received a copy of the GNU General Public License
-  along with this program; if not, write to the Free Software
-  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-
-  $Id$
-
-*/
-
-/***[ variables ]***********************************************************/
-
-var $filecontents="";               /* raw contents of template file */
-var $blocks=array();                /* unparsed blocks */
-var $parsed_blocks=array();         /* parsed blocks */
-var $preparsed_blocks=array();      /* preparsed blocks, for file includes */
-var $block_parse_order=array();     /* block parsing order for recursive parsing (sometimes reverse:) */
-var $sub_blocks=array();            /* store sub-block names for fast resetting */
-var $VARS=array();                  /* variables array */
-var $FILEVARS=array();              /* file variables array */
-var $filevar_parent=array();        /* filevars' parent block */
-var $filecache=array();             /* file caching */
-
-var $tpldir="";                     /* location of template files */
-var $FILES=null;                    /* file names lookup table */
-
-var $file_delim="/\{FILE\s*\"([^\"]+)\"\s*\}/m";  /* regexp for file includes */
-var $filevar_delim="/\{FILE\s*\{([A-Za-z0-9\._]+?)\}\s*\}/m";  /* regexp for file includes */
-var $filevar_delim_nl="/^\s*\{FILE\s*\{([A-Za-z0-9\._]+?)\}\s*\}\s*\n/m";  /* regexp for file includes w/ newlines */
-var $block_start_delim="<!-- ";     /* block start delimiter */
-var $block_end_delim="-->";         /* block end delimiter */
-var $block_start_word="BEGIN:";     /* block start word */
-var $block_end_word="END:";         /* block end word */
-
-/* this makes the delimiters look like: <!-- BEGIN: block_name --> if you use my syntax. */
-
-var $NULL_STRING=array(""=>"");     /* null string for unassigned vars */
-var $NULL_BLOCK=array(""=>"");      /* null string for unassigned blocks */
-var $mainblock="main";
-var $ERROR="";
-var $AUTORESET=1;                    /* auto-reset sub blocks */
-
-/***[ constructor ]*********************************************************/
-
-
-function XTemplate ($file,$tpldir="",$files=null,$mainblock="main") {
-  $this->tpldir = $tpldir;
-  if (gettype($files)=="array")
-    $this->FILES = $files;
-  $this->mainblock=$mainblock;
-  $this->filecontents=$this->r_getfile($file);  /* read in template file */
-  $this->blocks=$this->maketree($this->filecontents,"");  /* preprocess some stuff */
-  $this->filevar_parent=$this->store_filevar_parents($this->blocks);
-  $this->scan_globals();
-}
-
-
-/***************************************************************************/
-/***[ public stuff ]********************************************************/
-/***************************************************************************/
-
-/***[ assign ]**************************************************************/
-/*
-  assign a variable
-*/
-
-function assign ($name,$val="") {
-  if (gettype($name)=="array")
-    foreach ($name as $k=>$v)
-      $this->VARS[$k]=$v;
-  else
-    $this->VARS[$name]=$val;
-}
-
-/***[ assign_file ]*********************************************************/
-/*
-  assign a file variable
-*/
-
-function assign_file ($name,$val="") {
-  if (gettype($name)=="array")
-    foreach ($name as $k=>$v)
-      $this->assign_file_($k,$v);
-  else
-    $this->assign_file_($name,$val);
-}
-
-function assign_file_ ($name,$val) {
-  if (isset($this->filevar_parent[$name])) {
-    if ($val!="") {
-      $val=$this->r_getfile($val);
-      foreach($this->filevar_parent[$name] as $parent) {
-        if (isset($this->preparsed_blocks[$parent]) and !isset($this->FILEVARS[$name]))
-          $copy=$this->preparsed_blocks[$parent];
-        else if (isset($this->blocks[$parent]))
-          $copy=$this->blocks[$parent];
-        preg_match_all($this->filevar_delim,$copy,$res,PREG_SET_ORDER);
-        foreach ($res as $v) {
-          $copy=preg_replace("/".preg_quote($v[0])."/","$val",$copy);
-          $this->preparsed_blocks=array_merge($this->preparsed_blocks,$this->maketree($copy,$parent));
-          $this->filevar_parent=array_merge($this->filevar_parent,$this->store_filevar_parents($this->preparsed_blocks));
-        }
-      }
-    }
-  }
-  $this->FILEVARS[$name]=$val;
-}
-
-/***[ parse ]***************************************************************/
-/*
-  parse a block
-*/
-
-function parse ($bname) {
-
-  if (isset($this->preparsed_blocks[$bname])) {
-    $copy=$this->preparsed_blocks[$bname];
-  }
-  else if (isset($this->blocks[$bname]))
-    $copy=$this->blocks[$bname];
-  else
-    $this->set_error ("parse: blockname [$bname] does not exist");
-
-  /* from there we should have no more {FILE } directives */
-  $copy=preg_replace($this->filevar_delim_nl,"",$copy);
-
-  /* find & replace variables+blocks */
-  preg_match_all("/\{([A-Za-z0-9\._]+?)}/",$copy,$var_array);
-  $var_array=$var_array[1];
-  foreach ($var_array as $k=>$v) {
-    $sub=explode(".",$v);
-    if ($sub[0]=="_BLOCK_") {
-      unset($sub[0]);
-      $bname2=implode(".",$sub);
-      $var=$this->parsed_blocks[$bname2];
-      $nul=(!isset($this->NULL_BLOCK[$bname2])) ? $this->NULL_BLOCK[""] : $this->NULL_BLOCK[$bname2];
-      if ($var=="") {
-        if ($nul=="") {
-          $copy=preg_replace("/^\s*\{".$v."\}\s*\n*/m","",$copy);
-        } else {
-          $copy=preg_replace("/\{".$v."\}/","$nul",$copy);
-        }
-      } else {
-        $var=trim($var);
-        $copy=str_replace("\{$v}","$var",$copy);
-      }
-    } else {
-      $var=$this->VARS;
-      foreach ($sub as $v1)
-        $var=$var[$v1];
-      $nul=(!isset($this->NULL_STRING[$v])) ? ($this->NULL_STRING[""]) : ($this->NULL_STRING[$v]);
-      $var=(!isset($var))?$nul:$var;
-      if ($var=="")
-        $copy=preg_replace("/^\s*\{".$v."\}\s*\n/m","",$copy);
-      $copy=str_replace("\{$v}","$var",$copy);
-    }
-  }
-  if (empty($this->parsed_blocks[$bname])) $this->parsed_blocks[$bname] = null; // eliminates incremental assign error, when using E_ALL error reporting
-  $this->parsed_blocks[$bname].=$copy;
-
-  /* reset sub-blocks */
-  if ($this->AUTORESET && (!empty($this->sub_blocks[$bname]))) {
-    reset($this->sub_blocks[$bname]);
-    foreach ($this->sub_blocks[$bname] as $k=>$v)
-      $this->reset($v);
-  }
-}
-
-/***[ rparse ]**************************************************************/
-/*
-  returns the parsed text for a block, including all sub-blocks.
-*/
-
-function rparse($bname) {
-  if (!empty($this->sub_blocks[$bname])) {
-    reset($this->sub_blocks[$bname]);
-    foreach ($this->sub_blocks[$bname] as $k=>$v)
-      if (!empty($v))
-        $this->rparse($v);
-  }
-  $this->parse($bname);
-}
-
-/***[ insert_loop ]*********************************************************/
-/*
-  inserts a loop ( call assign & parse )
-*/
-
-function insert_loop($bname,$var,$value="") {
-  $this->assign($var,$value);
-  $this->parse($bname);
-}
-
-/***[ array_loop ]*********************************************************/
-/*
-  parses a block for every set of data in the values array
-*/
-
-function array_loop($bname, $var, &$values)
-{
-  if (gettype($values)=="array")
-  {
-    foreach($values as $v)
-    {
-      $this->assign($var, $v);
-      $this->parse($bname);
-    }
-  }
-}
-
-/***[ text ]****************************************************************/
-/*
-  returns the parsed text for a block
-*/
-
-function text($bname) {
-  return $this->parsed_blocks[isset($bname) ? $bname :$this->mainblock];
-}
-
-/***[ out ]*****************************************************************/
-/*
-  prints the parsed text
-*/
-
-function out ($bname) {
-  $length=strlen($this->text($bname));
-  header("Content-Length: ".$length);
-  echo $this->text($bname);
-}
-
-/***[ reset ]***************************************************************/
-/*
-  resets the parsed text
-*/
-
-function reset ($bname) {
-  $this->parsed_blocks[$bname]="";
-}
-
-/***[ parsed ]**************************************************************/
-/*
-  returns true if block was parsed, false if not
-*/
-
-function parsed ($bname) {
-  return (!empty($this->parsed_blocks[$bname]));
-}
-
-/***[ SetNullString ]*******************************************************/
-/*
-  sets the string to replace in case the var was not assigned
-*/
-
-function SetNullString($str,$varname="") {
-  $this->NULL_STRING[$varname]=$str;
-}
-
-/***[ SetNullBlock ]********************************************************/
-/*
-  sets the string to replace in case the block was not parsed
-*/
-
-function SetNullBlock($str,$bname="") {
-  $this->NULL_BLOCK[$bname]=$str;
-}
-
-/***[ set_autoreset ]*******************************************************/
-/*
-  sets AUTORESET to 1. (default is 1)
-  if set to 1, parse() automatically resets the parsed blocks' sub blocks
-  (for multiple level blocks)
-*/
-
-function set_autoreset() {
-  $this->AUTORESET=1;
-}
-
-/***[ clear_autoreset ]*****************************************************/
-/*
-  sets AUTORESET to 0. (default is 1)
-  if set to 1, parse() automatically resets the parsed blocks' sub blocks
-  (for multiple level blocks)
-*/
-
-function clear_autoreset() {
-  $this->AUTORESET=0;
-}
-
-/***[ scan_globals ]********************************************************/
-/*
-  scans global variables
-*/
-
-function scan_globals() {
-  reset($GLOBALS);
-  foreach ($GLOBALS as $k=>$v)
-    $GLOB[$k]=$v;
-  $this->assign("PHP",$GLOB);  /* access global variables as {PHP.HTTP_HOST} in your template! */
-}
-
-/******
-
-    WARNING
-    PUBLIC FUNCTIONS BELOW THIS LINE DIDN'T GET TESTED
-
-******/
-
-
-/***************************************************************************/
-/***[ private stuff ]*******************************************************/
-/***************************************************************************/
-
-/***[ maketree ]************************************************************/
-/*
-  generates the array containing to-be-parsed stuff:
-  $blocks["main"],$blocks["main.table"],$blocks["main.table.row"], etc.
-  also builds the reverse parse order.
-*/
-
-
-function maketree($con,$parentblock="") {
-  $blocks=array();
-  $con2=explode($this->block_start_delim,$con);
-  if (!empty($parentblock)) {
-    $block_names=explode(".",$parentblock);
-    $level=sizeof($block_names);
-  } else {
-    $block_names=array();
-    $level=0;
-  }
-  foreach ($con2 as $k=>$v) {
-    $patt="($this->block_start_word|$this->block_end_word)\s*(\w+)\s*$this->block_end_delim(.*)";
-    if (preg_match_all("/$patt/ims",$v,$res,PREG_SET_ORDER)) {
-      // $res[0][1] = BEGIN or END
-      // $res[0][2] = block name
-      // $res[0][3] = kinda content
-      if ($res[0][1]==$this->block_start_word) {
-        $parent_name=implode(".",$block_names);
-        $block_names[++$level]=$res[0][2];              /* add one level - array("main","table","row")*/
-        $cur_block_name=implode(".",$block_names);  /* make block name (main.table.row) */
-        $this->block_parse_order[]=$cur_block_name;  /* build block parsing order (reverse) */
-        if (empty($blocks[$cur_block_name])) $blocks[$cur_block_name] = null; // eliminates incremental assign error, when using E_ALL error reporting
-        $blocks[$cur_block_name].=$res[0][3];          /* add contents */
-        $blocks[$parent_name].="{_BLOCK_.$cur_block_name}";  /* add {_BLOCK_.blockname} string to parent block */
-        $this->sub_blocks[$parent_name][]=$cur_block_name;    /* store sub block names for autoresetting and recursive parsing */
-        $this->sub_blocks[$cur_block_name][]="";    /* store sub block names for autoresetting */
-      } else if ($res[0][1]==$this->block_end_word) {
-        unset($block_names[$level--]);
-        $parent_name=implode(".",$block_names);
-        $blocks[$parent_name].=$res[0][3];  /* add rest of block to parent block */
-      }
-    } else { /* no block delimiters found */
-      if ($k)
-        $blocks[implode(".",$block_names)].=$this->block_start_delim;
-      if (empty($blocks[implode(".",$block_names)])) $blocks[implode(".",$block_names)] = null; // eliminates incremental assign error, when using E_ALL error reporting
-      $blocks[implode(".",$block_names)].=$v;
-    }
-  }
-  return $blocks;
-}
-
-/***[ store_filevar_parents ]***********************************************/
-/*
-  store container block's name for file variables
-*/
-
-function store_filevar_parents($blocks){
-  $parents=array();
-  foreach ($blocks as $bname=>$con) {
-    preg_match_all($this->filevar_delim,$con,$res);
-    foreach ($res[1] as $k=>$v)
-      $parents[$v][]=$bname;
-  }
-  return $parents;
-}
-
-/***[ error stuff ]*********************************************************/
-/*
-  sets and gets error
-*/
-
-function get_error()  {
-  return ($this->ERROR=="")?0:$this->ERROR;
-}
-
-
-function set_error($str)  {
-  $this->ERROR="<strong>[XTemplate]</strong>&nbsp;<i>".$str."</i>";
-  trigger_error($this->get_error());
-}
-
-/***[ getfile ]*************************************************************/
-/*
-  returns the contents of a file
-*/
-
-function getfile($file) {
-  if (!isset($file)) {
-    $this->set_error("!isset file name!");
-    return "";
-  }
-
- // check if filename is mapped to other filename
-  if (isset($this->FILES))
-  {
-    if (isset($this->FILES[$file]))
-      $file = $this->FILES[$file];
-  }
-  // prepend template dir
-  if (!empty($this->tpldir))
-    $file = $this->tpldir."/".$file;
-
-  if (isset($this->filecache[$file]))
-    $file_text=$this->filecache[$file];
-  else {
-    if (is_file($file)) {
-      if (!($fh=fopen($file,"r"))) {
-        $this->set_error("Cannot open file: $file");
-        return "";
-      }
-
-      $file_text=fread($fh,filesize($file));
-      fclose($fh);
-    } else {
-      $this->set_error("[$file] does not exist");
-      $file_text="<strong>__XTemplate fatal error: file [$file] does not exist__</strong>";
-    }
-    $this->filecache[$file]=$file_text;
-  }
-  return $file_text;
-}
-
-/***[ r_getfile ]***********************************************************/
-/*
-  recursively gets the content of a file with {FILE "filename.tpl"} directives
-*/
-
-
-function r_getfile($file) {
-  $text=$this->getfile($file);
-  while (preg_match($this->file_delim,$text,$res)) {
-    $text2=$this->getfile($res[1]);
-    $text=preg_replace("'".preg_quote($res[0])."'",$text2,$text);
-  }
-
-  return $text;
-}
-
-
-} /* end of XTemplate class. */
-?>
+<?php
+
+class XTemplate {
+
+/*
+  xtemplate class 0.3pre
+  html generation with templates - fast & easy
+  copyright (c) 2000-2001 Barnabas Debreceni [cranx@users.sourceforge.net]
+
+  contributors:
+  Ivar Smolin <okul@linux.ee> (14-march-2001)
+    - made some code optimizations
+  Bert Jandehoop <bert.jandehoop@users.info.wau.nl> (26-june-2001)
+    - new feature to substitute template files by other templates
+    - new method array_loop()
+
+  !!! {FILE {VAR}} file variable interpolation may still be buggy !!!
+
+  latest stable & CVS versions always available @
+  http://sourceforge.net/projects/xtpl/
+
+  This program is free software; you can redistribute it and/or
+  modify it under the terms of the GNU Lesser General Public License
+  version 2.1 as published by the Free Software Foundation.
+
+  This library is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU Lesser General Public License for more details at
+  http://www.gnu.org/copyleft/lgpl.html
+
+  You should have received a copy of the GNU General Public License
+  along with this program; if not, write to the Free Software
+  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+
+  $Id$
+
+*/
+
+/***[ variables ]***********************************************************/
+
+var $filecontents="";               /* raw contents of template file */
+var $blocks=array();                /* unparsed blocks */
+var $parsed_blocks=array();         /* parsed blocks */
+var $preparsed_blocks=array();      /* preparsed blocks, for file includes */
+var $block_parse_order=array();     /* block parsing order for recursive parsing (sometimes reverse:) */
+var $sub_blocks=array();            /* store sub-block names for fast resetting */
+var $VARS=array();                  /* variables array */
+var $FILEVARS=array();              /* file variables array */
+var $filevar_parent=array();        /* filevars' parent block */
+var $filecache=array();             /* file caching */
+
+var $tpldir="";                     /* location of template files */
+var $FILES=null;                    /* file names lookup table */
+
+var $file_delim="/\{FILE\s*\"([^\"]+)\"\s*\}/m";  /* regexp for file includes */
+var $filevar_delim="/\{FILE\s*\{([A-Za-z0-9\._]+?)\}\s*\}/m";  /* regexp for file includes */
+var $filevar_delim_nl="/^\s*\{FILE\s*\{([A-Za-z0-9\._]+?)\}\s*\}\s*\n/m";  /* regexp for file includes w/ newlines */
+var $block_start_delim="<!-- ";     /* block start delimiter */
+var $block_end_delim="-->";         /* block end delimiter */
+var $block_start_word="BEGIN:";     /* block start word */
+var $block_end_word="END:";         /* block end word */
+
+/* this makes the delimiters look like: <!-- BEGIN: block_name --> if you use my syntax. */
+
+var $NULL_STRING=array(""=>"");     /* null string for unassigned vars */
+var $NULL_BLOCK=array(""=>"");      /* null string for unassigned blocks */
+var $mainblock="main";
+var $ERROR="";
+var $AUTORESET=1;                    /* auto-reset sub blocks */
+
+/***[ constructor ]*********************************************************/
+
+
+function XTemplate ($file,$tpldir="",$files=null,$mainblock="main") {
+  $this->tpldir = $tpldir;
+  if (gettype($files)=="array")
+    $this->FILES = $files;
+  $this->mainblock=$mainblock;
+  $this->filecontents=$this->r_getfile($file);  /* read in template file */
+  $this->blocks=$this->maketree($this->filecontents,"");  /* preprocess some stuff */
+  $this->filevar_parent=$this->store_filevar_parents($this->blocks);
+  $this->scan_globals();
+}
+
+
+/***************************************************************************/
+/***[ public stuff ]********************************************************/
+/***************************************************************************/
+
+/***[ assign ]**************************************************************/
+/*
+  assign a variable
+*/
+
+function assign ($name,$val="") {
+  if (gettype($name)=="array")
+    foreach ($name as $k=>$v)
+      $this->VARS[$k]=$v;
+  else
+    $this->VARS[$name]=$val;
+}
+
+/***[ assign_file ]*********************************************************/
+/*
+  assign a file variable
+*/
+
+function assign_file ($name,$val="") {
+  if (gettype($name)=="array")
+    foreach ($name as $k=>$v)
+      $this->assign_file_($k,$v);
+  else
+    $this->assign_file_($name,$val);
+}
+
+function assign_file_ ($name,$val) {
+  if (isset($this->filevar_parent[$name])) {
+    if ($val!="") {
+      $val=$this->r_getfile($val);
+      foreach($this->filevar_parent[$name] as $parent) {
+        if (isset($this->preparsed_blocks[$parent]) and !isset($this->FILEVARS[$name]))
+          $copy=$this->preparsed_blocks[$parent];
+        else if (isset($this->blocks[$parent]))
+          $copy=$this->blocks[$parent];
+        preg_match_all($this->filevar_delim,$copy,$res,PREG_SET_ORDER);
+        foreach ($res as $v) {
+          $copy=preg_replace("/".preg_quote($v[0])."/","$val",$copy);
+          $this->preparsed_blocks=array_merge($this->preparsed_blocks,$this->maketree($copy,$parent));
+          $this->filevar_parent=array_merge($this->filevar_parent,$this->store_filevar_parents($this->preparsed_blocks));
+        }
+      }
+    }
+  }
+  $this->FILEVARS[$name]=$val;
+}
+
+/***[ parse ]***************************************************************/
+/*
+  parse a block
+*/
+
+function parse ($bname) {
+
+  if (isset($this->preparsed_blocks[$bname])) {
+    $copy=$this->preparsed_blocks[$bname];
+  }
+  else if (isset($this->blocks[$bname]))
+    $copy=$this->blocks[$bname];
+  else
+    $this->set_error ("parse: blockname [$bname] does not exist");
+
+  /* from there we should have no more {FILE } directives */
+  $copy=preg_replace($this->filevar_delim_nl,"",$copy);
+
+  /* find & replace variables+blocks */
+  preg_match_all("/\{([A-Za-z0-9\._]+?)}/",$copy,$var_array);
+  $var_array=$var_array[1];
+  foreach ($var_array as $k=>$v) {
+    $sub=explode(".",$v);
+    if ($sub[0]=="_BLOCK_") {
+      unset($sub[0]);
+      $bname2=implode(".",$sub);
+      $var=$this->parsed_blocks[$bname2];
+      $nul=(!isset($this->NULL_BLOCK[$bname2])) ? $this->NULL_BLOCK[""] : $this->NULL_BLOCK[$bname2];
+      if ($var=="") {
+        if ($nul=="") {
+          $copy=preg_replace("/^\s*\{".$v."\}\s*\n*/m","",$copy);
+        } else {
+          $copy=preg_replace("/\{".$v."\}/","$nul",$copy);
+        }
+      } else {
+        $var=trim($var);
+        $copy=str_replace("\{$v}","$var",$copy);
+      }
+    } else {
+      $var=$this->VARS;
+      foreach ($sub as $v1)
+        $var=$var[$v1];
+      $nul=(!isset($this->NULL_STRING[$v])) ? ($this->NULL_STRING[""]) : ($this->NULL_STRING[$v]);
+      $var=(!isset($var))?$nul:$var;
+      if ($var=="")
+        $copy=preg_replace("/^\s*\{".$v."\}\s*\n/m","",$copy);
+      $copy=str_replace("\{$v}","$var",$copy);
+    }
+  }
+  if (empty($this->parsed_blocks[$bname])) $this->parsed_blocks[$bname] = null; // eliminates incremental assign error, when using E_ALL error reporting
+  $this->parsed_blocks[$bname].=$copy;
+
+  /* reset sub-blocks */
+  if ($this->AUTORESET && (!empty($this->sub_blocks[$bname]))) {
+    reset($this->sub_blocks[$bname]);
+    foreach ($this->sub_blocks[$bname] as $k=>$v)
+      $this->reset($v);
+  }
+}
+
+/***[ rparse ]**************************************************************/
+/*
+  returns the parsed text for a block, including all sub-blocks.
+*/
+
+function rparse($bname) {
+  if (!empty($this->sub_blocks[$bname])) {
+    reset($this->sub_blocks[$bname]);
+    foreach ($this->sub_blocks[$bname] as $k=>$v)
+      if (!empty($v))
+        $this->rparse($v);
+  }
+  $this->parse($bname);
+}
+
+/***[ insert_loop ]*********************************************************/
+/*
+  inserts a loop ( call assign & parse )
+*/
+
+function insert_loop($bname,$var,$value="") {
+  $this->assign($var,$value);
+  $this->parse($bname);
+}
+
+/***[ array_loop ]*********************************************************/
+/*
+  parses a block for every set of data in the values array
+*/
+
+function array_loop($bname, $var, &$values)
+{
+  if (gettype($values)=="array")
+  {
+    foreach($values as $v)
+    {
+      $this->assign($var, $v);
+      $this->parse($bname);
+    }
+  }
+}
+
+/***[ text ]****************************************************************/
+/*
+  returns the parsed text for a block
+*/
+
+function text($bname) {
+  return $this->parsed_blocks[isset($bname) ? $bname :$this->mainblock];
+}
+
+/***[ out ]*****************************************************************/
+/*
+  prints the parsed text
+*/
+
+function out ($bname) {
+  $length=strlen($this->text($bname));
+  header("Content-Length: ".$length);
+  echo $this->text($bname);
+}
+
+/***[ reset ]***************************************************************/
+/*
+  resets the parsed text
+*/
+
+function reset ($bname) {
+  $this->parsed_blocks[$bname]="";
+}
+
+/***[ parsed ]**************************************************************/
+/*
+  returns true if block was parsed, false if not
+*/
+
+function parsed ($bname) {
+  return (!empty($this->parsed_blocks[$bname]));
+}
+
+/***[ SetNullString ]*******************************************************/
+/*
+  sets the string to replace in case the var was not assigned
+*/
+
+function SetNullString($str,$varname="") {
+  $this->NULL_STRING[$varname]=$str;
+}
+
+/***[ SetNullBlock ]********************************************************/
+/*
+  sets the string to replace in case the block was not parsed
+*/
+
+function SetNullBlock($str,$bname="") {
+  $this->NULL_BLOCK[$bname]=$str;
+}
+
+/***[ set_autoreset ]*******************************************************/
+/*
+  sets AUTORESET to 1. (default is 1)
+  if set to 1, parse() automatically resets the parsed blocks' sub blocks
+  (for multiple level blocks)
+*/
+
+function set_autoreset() {
+  $this->AUTORESET=1;
+}
+
+/***[ clear_autoreset ]*****************************************************/
+/*
+  sets AUTORESET to 0. (default is 1)
+  if set to 1, parse() automatically resets the parsed blocks' sub blocks
+  (for multiple level blocks)
+*/
+
+function clear_autoreset() {
+  $this->AUTORESET=0;
+}
+
+/***[ scan_globals ]********************************************************/
+/*
+  scans global variables
+*/
+
+function scan_globals() {
+  reset($GLOBALS);
+  foreach ($GLOBALS as $k=>$v)
+    $GLOB[$k]=$v;
+  $this->assign("PHP",$GLOB);  /* access global variables as {PHP.HTTP_HOST} in your template! */
+}
+
+/******
+
+    WARNING
+    PUBLIC FUNCTIONS BELOW THIS LINE DIDN'T GET TESTED
+
+******/
+
+
+/***************************************************************************/
+/***[ private stuff ]*******************************************************/
+/***************************************************************************/
+
+/***[ maketree ]************************************************************/
+/*
+  generates the array containing to-be-parsed stuff:
+  $blocks["main"],$blocks["main.table"],$blocks["main.table.row"], etc.
+  also builds the reverse parse order.
+*/
+
+
+function maketree($con,$parentblock="") {
+  $blocks=array();
+  $con2=explode($this->block_start_delim,$con);
+  if (!empty($parentblock)) {
+    $block_names=explode(".",$parentblock);
+    $level=sizeof($block_names);
+  } else {
+    $block_names=array();
+    $level=0;
+  }
+  foreach ($con2 as $k=>$v) {
+    $patt="($this->block_start_word|$this->block_end_word)\s*(\w+)\s*$this->block_end_delim(.*)";
+    if (preg_match_all("/$patt/ims",$v,$res,PREG_SET_ORDER)) {
+      // $res[0][1] = BEGIN or END
+      // $res[0][2] = block name
+      // $res[0][3] = kinda content
+      if ($res[0][1]==$this->block_start_word) {
+        $parent_name=implode(".",$block_names);
+        $block_names[++$level]=$res[0][2];              /* add one level - array("main","table","row")*/
+        $cur_block_name=implode(".",$block_names);  /* make block name (main.table.row) */
+        $this->block_parse_order[]=$cur_block_name;  /* build block parsing order (reverse) */
+        if (empty($blocks[$cur_block_name])) $blocks[$cur_block_name] = null; // eliminates incremental assign error, when using E_ALL error reporting
+        $blocks[$cur_block_name].=$res[0][3];          /* add contents */
+        $blocks[$parent_name].="{_BLOCK_.$cur_block_name}";  /* add {_BLOCK_.blockname} string to parent block */
+        $this->sub_blocks[$parent_name][]=$cur_block_name;    /* store sub block names for autoresetting and recursive parsing */
+        $this->sub_blocks[$cur_block_name][]="";    /* store sub block names for autoresetting */
+      } else if ($res[0][1]==$this->block_end_word) {
+        unset($block_names[$level--]);
+        $parent_name=implode(".",$block_names);
+        $blocks[$parent_name].=$res[0][3];  /* add rest of block to parent block */
+      }
+    } else { /* no block delimiters found */
+      if ($k)
+        $blocks[implode(".",$block_names)].=$this->block_start_delim;
+      if (empty($blocks[implode(".",$block_names)])) $blocks[implode(".",$block_names)] = null; // eliminates incremental assign error, when using E_ALL error reporting
+      $blocks[implode(".",$block_names)].=$v;
+    }
+  }
+  return $blocks;
+}
+
+/***[ store_filevar_parents ]***********************************************/
+/*
+  store container block's name for file variables
+*/
+
+function store_filevar_parents($blocks){
+  $parents=array();
+  foreach ($blocks as $bname=>$con) {
+    preg_match_all($this->filevar_delim,$con,$res);
+    foreach ($res[1] as $k=>$v)
+      $parents[$v][]=$bname;
+  }
+  return $parents;
+}
+
+/***[ error stuff ]*********************************************************/
+/*
+  sets and gets error
+*/
+
+function get_error()  {
+  return ($this->ERROR=="")?0:$this->ERROR;
+}
+
+
+function set_error($str)  {
+  $this->ERROR="<strong>[XTemplate]</strong>&nbsp;<i>".$str."</i>";
+  trigger_error($this->get_error());
+}
+
+/***[ getfile ]*************************************************************/
+/*
+  returns the contents of a file
+*/
+
+function getfile($file) {
+  if (!isset($file)) {
+    $this->set_error("!isset file name!");
+    return "";
+  }
+
+ // check if filename is mapped to other filename
+  if (isset($this->FILES))
+  {
+    if (isset($this->FILES[$file]))
+      $file = $this->FILES[$file];
+  }
+  // prepend template dir
+  if (!empty($this->tpldir))
+    $file = $this->tpldir."/".$file;
+
+  if (isset($this->filecache[$file]))
+    $file_text=$this->filecache[$file];
+  else {
+    if (is_file($file)) {
+      if (!($fh=fopen($file,"r"))) {
+        $this->set_error("Cannot open file: $file");
+        return "";
+      }
+
+      $file_text=fread($fh,filesize($file));
+      fclose($fh);
+    } else {
+      $this->set_error("[$file] does not exist");
+      $file_text="<strong>__XTemplate fatal error: file [$file] does not exist__</strong>";
+    }
+    $this->filecache[$file]=$file_text;
+  }
+  return $file_text;
+}
+
+/***[ r_getfile ]***********************************************************/
+/*
+  recursively gets the content of a file with {FILE "filename.tpl"} directives
+*/
+
+
+function r_getfile($file) {
+  $text=$this->getfile($file);
+  while (preg_match($this->file_delim,$text,$res)) {
+    $text2=$this->getfile($res[1]);
+    $text=preg_replace("'".preg_quote($res[0])."'",$text2,$text);
+  }
+
+  return $text;
+}
+
+
+} /* end of XTemplate class. */
+?>
diff --git a/themes/pushbutton/style.css b/themes/pushbutton/style.css
index 8888443fa6a80c094991cda4d680027e4ae15539..fe9ffcb013e177d4c02bf91c5e1a3da435da3247 100644
--- a/themes/pushbutton/style.css
+++ b/themes/pushbutton/style.css
@@ -1,539 +1,539 @@
-/* $Id$ */
-
-/*
-** HTML elements
-*/
-body  {
-  color: #000;
-  background-color: #fff;
-  margin: 0;
-  padding: 0;
-}
-body, p, td, li, ul, ol  {
-  font-family: Verdana, Helvetica, Arial, sans-serif;
-}
-h1, h2, h3, h4, h5, h6 {
-  font-family: "Trebuchet MS", Geneva, Arial, Helvetica, SunSans-Regular, Verdana, sans-serif;
-  margin: 0;
-}
-h1 {
-  color: #369;
-  font-size: 1.6em;
-}
-img {
-  display: block;
-  border: 0;
-}
-tr.dark td, tr.light td {
-  padding: 0.3em;
-}
-a:link {
-  text-decoration: none;
-  font-weight: bold;
-  color: #ff8c00;
-}
-a:visited {
-  text-decoration: none;
-  font-weight: bold;
-  color: #c96;
-}
-a:hover, a:active {
-  font-weight: bold;
-  color: #ff4500;
-  text-decoration: underline;
-}
-fieldset {
-  border: 1px solid #ccc;
-}
-p {
-  margin: 0 0 1.3em 0;
-  padding: 0;
-}
-blockquote {
-  border-left: 4px solid #69c;
-  padding: 0 15px 0 15px;
-  margin: 25px 100px 25px 50px;
-  color: #696969;
-  text-align: left;
-  font-size: 1.2em;
-  line-height: 1.3em;
-  font-family: "Trebuchet MS", Geneva, Arial, Helvetica, SunSans-Regular, Verdana, sans-serif;
-}
-pre {
-  background-color: #eee;
-  padding: 0.75em 1.5em;
-  font-size: 1.2em;
-  border: 1px solid #ddd;
-}
-.form-item {
-  margin-top: 1em;
-}
-.form-item label {
-  color: #369;
-}
-.item-list .title {
-  color: #369;
-  font-size: 0.85em;
-}
-
-/*
-** Page layout blocks / IDs
-*/
-#primary-menu  {
-  background-color: #e0edfb;
-}
-#primary-menu tr {
-  background: transparent url(header-a.jpg) left bottom repeat;
-}
-td#home {
-  background: transparent url(logo-background.jpg) left top repeat;
-}
-td#home a:link img, td#home a:visited img {
-  background: transparent url(logo-active.jpg) repeat;
-  width: 144px;
-  height: 63px;
-}
-td#home a:hover img {
-  background: transparent url(logo-hover.jpg) repeat;
-  width: 144px;
-  height: 63px;
-}
-.primary-links, .primary-links a:link, .primary-links a:visited {
-  color: #369;
-}
-.primary-links a:hover {
-  color: #000;
-}
-#primary-menu .primary-links   {
-  background: transparent url(header-b.jpg) left top no-repeat;
-  font-size: 0.79em;
-}
-#primary-menu .primary-links h1, #primary-menu .primary-links h2, #primary-menu .primary-links h3 {
-  font-size: 2.3em;
-  color: #369;
-}
-#secondary-menu {
-  background-color: #369;
-  border-top: 3px solid #69c;
-  border-bottom: 3px solid #69c;
-}
-.secondary-links, .secondary-links a:link, .secondary-links a:visited  {
-  color: #e4e9eb;
-}
-.secondary-links a:hover {
-  color: #fff;
-  text-decoration: underline;
-}
-#secondary-menu .secondary-links {
-  font-size: 0.85em;
-}
-#content {
-  background-color: #fff;
-}
-#contentstart {
-  background-color: #fff;
-}
-#menu {
-  padding: 0.5em 0.5em 0 0.5em;
-  text-align: right;
-  vertical-align: middle;
-}
-#search .form-text, #search .form-submit {
-  border: 1px solid #369;
-  font-size: 0.85em;
-}
-#search .form-text {
-  width: 8em;
-  height: 1.4em;
-  padding: 0 0.5em 0 0.5em;
-  margin: 0 0 0.5em 0;
-}
-#search .form-submit {
-  height: 1.5em;
-}
-#mission {
-  background-color: #fff;
-  color: #696969;
-  border-top: 2px solid #dcdcdc;
-  border-bottom: 2px solid #dcdcdc;
-  padding: 10px 10px 10px 10px;
-  margin: 20px 35px 0px 35px;
-  font-family: "Trebuchet MS", Geneva, Arial, Helvetica, SunSans-Regular, Verdana, sans-serif;
-  font-size: 1.1em;
-  font-weight: normal;
-}
-#site-info {
-  background-color: #bdd3ea;
-  background-image: none;
-  font-family: "Trebuchet MS", Geneva, Arial, Helvetica, SunSans-Regular, Verdana, sans-serif;
-}
-.site-name {
-  font-size: 1.2em;
-}
-.site-name a:link, .site-name a:visited {
-  color: #fff;
-}
-.site-name a:hover {
-  color: #ff8c00;
-  text-decoration: none;
-}
-.site-slogan {
-  font-size: 0.8em;
-  font-weight: bold;
-}
-#main {
-  /* padding in px not ex because IE messes up 100% width tables otherwise */
-  padding: 30px 35px 50px 35px;
-  background: transparent url(background.png) center center no-repeat;
-}
-#mission, .node .content, .comment .content {
-  line-height: 1.4;
-}
-#help {
-  font-size: 0.9em;
-  margin-bottom: 1em;
-}
-.breadcrumb {
-  margin-bottom: .5em;
-}
-.messages {
-  background-color: #eee;
-  border: 1px solid #ccc;
-  padding: 0.3em;
-  margin-bottom: 1em;
-}
-.error {
-  border-color: red;
-}
-.nav {
-  padding: 0px 0px 0px 0px;
-  margin: 0px 0px 0px 0px;
-}
-#sidebar-left, #sidebar-right {
-  font-size: 0.75em;
-  width: 175px;
-  /* padding in px not ex because IE messes up 100% width tables otherwise */
-  padding: 25px 10px 75px 10px;
-  vertical-align: top;
-  background: #FFFAF0;
-}
-#sidebar-left {
-  border-right: 3px solid #f5f5f5;
-}
-#sidebar-right {
-  border-left: 3px solid #f5f5f5;
-}
-#sidebar-left li, #sidebar-right li {
-  font-size: 1em;
-}
-.node .content {
-  text-align: left;
-  font-size: 0.85em;
-  line-height: 1.3;
-}
-.comment .content {
-  text-align: left;
-  font-size: 0.85em;
-  line-height: 1.3;
-}
-#footer-message {
-  padding: 15px 100px 30px 100px;
-  font-size: 0.85em;
-  text-align: center;
-  color: #aaa;
-}
-table#footer-menu {
-  border-top: 3px solid #6699cc;
-  border-bottom: 3px solid #6699cc;
-  background-color: #369;
-  color: #e4e9eb;
-}
-#footer-menu td {
-  padding: 5px;
-  font-size: 0.75em;
-}
-#footer-menu .primary-links, #footer-menu a:link, #footer-menu a:visited  {
-  color: #e4e9eb;
-}
-#footer-menu a:hover  {
-  color: #fff;
-  text-decoration: underline;
-}
-#footer-menu .primary-links h1, #footer-menu .primary-links h2, #footer-menu .primary-links h3 {
-  font-size: 1.3em;
-  color: #e4e9eb;
-}
-/*
-** Common declarations for child classes of node, comment, block, box, etc.
-** If you want any of them styled differently for a specific parent, add
-** additional rules /with only the differing properties!/ to .parent .class.
-** See .comment .title for an example.
-*/
-#content .title, #content .title a {
-  color: #369;
-}
-.content h1 {
-  color: #369;
-  font-size: 1.9em;
-}
-.content h2 {
-  color: #58b;
-  font-size: 1.7em;
-}
-.content h3 {
-  color: #69c;
-  font-size: 1.5em;
-}
-.content h4 {
-  color: #8be;
-  font-size: 1.3em;
-}
-.content h5 {
-  color: #96c6f6;
-  font-size: 1.15em;
-}
-.submitted {
-  color: #999;
-  font-size: 0.79em;
-}
-.links {
-  color: #ff8c00;
-  font-size: 0.8em;
-  padding: 0px 0px 0px 0px;
-  margin: 0px 0px 0px 0px;
-}
-.links a {
-  font-weight: bold;
-}
-.box {
-  padding: 0 0 1.5em 0;
-}
-.box {
-  padding: 0px 0px 0px 0px;
-  margin: 0px 0px 0px 0px;
-}
-.box h2 {
-  font-size: 9px;
-}
-.block .title h3 {
-  border-bottom: 2px solid #6699cc;
-  color: #369;
-  font-size: 18px;
-  font-weight: bold;
-  padding: 10px 5px 10px 30px;
-  margin-bottom: .25em;
-  background: transparent url(icon-block.png) left center no-repeat;
-}
-.block .content {
-  padding: 5px 5px 5px 5px;
-}
-.block {
-  margin-bottom: 1.5em;
-}
-.box .title {
-  font-size: 1.1em;
-}
-.node {
-  margin: .5em 0 2.5em 0;
-}
-.node .content, .comment .content {
-  margin: .5em 0 .5em 0;
-}
-.node .taxonomy {
-  color: #999;
-  font-size: 0.83em;
-  padding: 1.5em;
-}
-.node .picture {
-  border: 1px solid #fff;
-  float: right;
-  margin: 0.5em;
-}
-.comment {
-  border: 1px solid #abc;
-  padding: .5em;
-  margin-bottom: 1em;
-}
-.comment .title {
-  font-size: 1em;
-  padding: 10px 0px 12px 19px;
-  background: transparent url(icon-comment.png) left center no-repeat;
-}
-.comment .new {
-  font-weight: bold;
-  font-size: 1em;
-  margin-left: 2px;
-  color: red;
-}
-.comment .picture {
-  border: 1px solid #fff;
-  float: right;
-  margin: 10px;
-}
-.links {
-  font-size: 0.75em;
-}
-.links .prev, .links .next, .links .up {
-  font-size: 1.15em;
-}
-.titles .prev, .titles .next  {
-  font-size: 0.85em;
-  font-weight: bold;
-  color: #444;
-}
-.hide {
-  display: none
-}
-.nav .links .next a:link {
-  padding: 15px 15px 17px 0;
-  background: transparent url(arrow-next.png) right center no-repeat;
-}
-.nav .links .next a:hover {
-  padding: 15px 15px 17px 0;
-  background: transparent url(arrow-next-hover.png) right center no-repeat;
-}
-.nav .links .prev a:link {
-  padding: 15px 0 17px 15px;
-  background: transparent url(arrow-prev.png) left center no-repeat;
-}
-.nav .links .prev a:hover {
-  padding: 15px 0 17px 15px;
-  background: transparent url(arrow-prev-hover.png) left center no-repeat;
-}
-.nav .links .up a:link {
-  padding: 11px 0 15px 0;
-  background: transparent url(arrow-up.png) center top no-repeat;
-}
-.nav .links .up a:hover {
-  padding: 11px 0 15px 0;
-  background: transparent url(arrow-up-hover.png) center top no-repeat;
-}
-
-/*
-** Module specific styles
-*/
-.content .active {
-  color: #369;
-}
-#aggregator .feed {
-  background-color: #eee;
-  border: 1px solid #ccc;
-  padding: 1em;
-  margin: 1em 0 1em 0;
-}
-#aggregator .news-item .source {
-  color: #999;
-  font-style: italic;
-  font-size: 0.85em;
-}
-#aggregator .title {
-  font-size: 1em;
-}
-#aggregator h3 {
-  margin-top: 1em;
-}
-#tracker th {
-  text-align: center;
-  background-color: #f5f5f5;
-  border-bottom: 1px solid #ddd;
-  border-right: 1px solid #ddd;
-  border-left: 1px solid #fafafa;
-}
-#tracker th img {
-  float: right;
-}
-#tracker tr.light, #tracker tr.dark {
-  background-color: #fff;
-}
-#tracker td {
-  vertical-align: top;
-  padding: 1em 1em 1em 0;
-  border-bottom: 1px solid #bbb;
-}
-#forum {
-  margin: 15px 0 15px 0;
-  background-color: #fff;
-}
-#forum table {
-  width: 100%;
-  border: 2px solid #69c;
-}
-#forum table tr th {
-  text-align: center;
-  background: #69c;
-  color: #fff;
-  font-size: 0.75em;
-  border-bottom: 1px solid #aaa;
-}
-#forum table tr th a  {
-  color: #fff;
-  text-decoration: underline;
-}
-#forum table tr th img  {
-  margin: 0;
-}
-#forum tr.dark {
-  background: #e0edfb;
-}
-#forum tr.light {
-  background: #fff;
-}
-#forum td {
-  padding: 0.5em 0.5em 0.5em 0.5em;
-}
-#forum td.container {
-  color: #000;
-  background: #369 url(forum-container.jpg) right top no-repeat;
-  border: 2px solid #69c;
-}
-#forum td.container a {
-  color: #e4e9eb;
-  padding: 20px 0 20px 35px;
-  background: transparent url(forum-link.png) left center no-repeat;
-}
-#forum td.container a:visited {
-  color: #e4e9eb;
-}
-#forum td.statistics, #forum td.settings, #forum td.pager {
-  height: 1.5em;
-  border: 1px solid #bbb;
-}
-#forum td .name {
-  color: #96c;
-}
-#forum td .links {
-  padding-top: 0.7em;
-  font-size: 0.9em;
-}
-.block-forum h3 {
-  margin-bottom: .5em;
-}
-.calendar a {
-  text-decoration: none;
-}
-.calendar td, .calendar th {
-  padding: 0.4em 0;
-  border-color: #888;
-}
-.calendar .row-week td a {
-  padding: 0.4em 0;
-}
-.calendar .day-today {
-  background-color: #69c;
-}
-.calendar .day-today a {
-  color: #fff;
-}
-.calendar .day-selected {
-  background-color: #369;
-  color: #fff;
-}
-.calendar .header-week {
-  background-color: #ccc;
-}
-.calendar .day-blank {
-  background-color: #ccc;
-}
-.calendar .row-week td a:hover {
-  background-color: #fff; color: #000;
-}
+/* $Id$ */
+
+/*
+** HTML elements
+*/
+body  {
+  color: #000;
+  background-color: #fff;
+  margin: 0;
+  padding: 0;
+}
+body, p, td, li, ul, ol  {
+  font-family: Verdana, Helvetica, Arial, sans-serif;
+}
+h1, h2, h3, h4, h5, h6 {
+  font-family: "Trebuchet MS", Geneva, Arial, Helvetica, SunSans-Regular, Verdana, sans-serif;
+  margin: 0;
+}
+h1 {
+  color: #369;
+  font-size: 1.6em;
+}
+img {
+  display: block;
+  border: 0;
+}
+tr.dark td, tr.light td {
+  padding: 0.3em;
+}
+a:link {
+  text-decoration: none;
+  font-weight: bold;
+  color: #ff8c00;
+}
+a:visited {
+  text-decoration: none;
+  font-weight: bold;
+  color: #c96;
+}
+a:hover, a:active {
+  font-weight: bold;
+  color: #ff4500;
+  text-decoration: underline;
+}
+fieldset {
+  border: 1px solid #ccc;
+}
+p {
+  margin: 0 0 1.3em 0;
+  padding: 0;
+}
+blockquote {
+  border-left: 4px solid #69c;
+  padding: 0 15px 0 15px;
+  margin: 25px 100px 25px 50px;
+  color: #696969;
+  text-align: left;
+  font-size: 1.2em;
+  line-height: 1.3em;
+  font-family: "Trebuchet MS", Geneva, Arial, Helvetica, SunSans-Regular, Verdana, sans-serif;
+}
+pre {
+  background-color: #eee;
+  padding: 0.75em 1.5em;
+  font-size: 1.2em;
+  border: 1px solid #ddd;
+}
+.form-item {
+  margin-top: 1em;
+}
+.form-item label {
+  color: #369;
+}
+.item-list .title {
+  color: #369;
+  font-size: 0.85em;
+}
+
+/*
+** Page layout blocks / IDs
+*/
+#primary-menu  {
+  background-color: #e0edfb;
+}
+#primary-menu tr {
+  background: transparent url(header-a.jpg) left bottom repeat;
+}
+td#home {
+  background: transparent url(logo-background.jpg) left top repeat;
+}
+td#home a:link img, td#home a:visited img {
+  background: transparent url(logo-active.jpg) repeat;
+  width: 144px;
+  height: 63px;
+}
+td#home a:hover img {
+  background: transparent url(logo-hover.jpg) repeat;
+  width: 144px;
+  height: 63px;
+}
+.primary-links, .primary-links a:link, .primary-links a:visited {
+  color: #369;
+}
+.primary-links a:hover {
+  color: #000;
+}
+#primary-menu .primary-links   {
+  background: transparent url(header-b.jpg) left top no-repeat;
+  font-size: 0.79em;
+}
+#primary-menu .primary-links h1, #primary-menu .primary-links h2, #primary-menu .primary-links h3 {
+  font-size: 2.3em;
+  color: #369;
+}
+#secondary-menu {
+  background-color: #369;
+  border-top: 3px solid #69c;
+  border-bottom: 3px solid #69c;
+}
+.secondary-links, .secondary-links a:link, .secondary-links a:visited  {
+  color: #e4e9eb;
+}
+.secondary-links a:hover {
+  color: #fff;
+  text-decoration: underline;
+}
+#secondary-menu .secondary-links {
+  font-size: 0.85em;
+}
+#content {
+  background-color: #fff;
+}
+#contentstart {
+  background-color: #fff;
+}
+#menu {
+  padding: 0.5em 0.5em 0 0.5em;
+  text-align: right;
+  vertical-align: middle;
+}
+#search .form-text, #search .form-submit {
+  border: 1px solid #369;
+  font-size: 0.85em;
+}
+#search .form-text {
+  width: 8em;
+  height: 1.4em;
+  padding: 0 0.5em 0 0.5em;
+  margin: 0 0 0.5em 0;
+}
+#search .form-submit {
+  height: 1.5em;
+}
+#mission {
+  background-color: #fff;
+  color: #696969;
+  border-top: 2px solid #dcdcdc;
+  border-bottom: 2px solid #dcdcdc;
+  padding: 10px 10px 10px 10px;
+  margin: 20px 35px 0px 35px;
+  font-family: "Trebuchet MS", Geneva, Arial, Helvetica, SunSans-Regular, Verdana, sans-serif;
+  font-size: 1.1em;
+  font-weight: normal;
+}
+#site-info {
+  background-color: #bdd3ea;
+  background-image: none;
+  font-family: "Trebuchet MS", Geneva, Arial, Helvetica, SunSans-Regular, Verdana, sans-serif;
+}
+.site-name {
+  font-size: 1.2em;
+}
+.site-name a:link, .site-name a:visited {
+  color: #fff;
+}
+.site-name a:hover {
+  color: #ff8c00;
+  text-decoration: none;
+}
+.site-slogan {
+  font-size: 0.8em;
+  font-weight: bold;
+}
+#main {
+  /* padding in px not ex because IE messes up 100% width tables otherwise */
+  padding: 30px 35px 50px 35px;
+  background: transparent url(background.png) center center no-repeat;
+}
+#mission, .node .content, .comment .content {
+  line-height: 1.4;
+}
+#help {
+  font-size: 0.9em;
+  margin-bottom: 1em;
+}
+.breadcrumb {
+  margin-bottom: .5em;
+}
+.messages {
+  background-color: #eee;
+  border: 1px solid #ccc;
+  padding: 0.3em;
+  margin-bottom: 1em;
+}
+.error {
+  border-color: red;
+}
+.nav {
+  padding: 0px 0px 0px 0px;
+  margin: 0px 0px 0px 0px;
+}
+#sidebar-left, #sidebar-right {
+  font-size: 0.75em;
+  width: 175px;
+  /* padding in px not ex because IE messes up 100% width tables otherwise */
+  padding: 25px 10px 75px 10px;
+  vertical-align: top;
+  background: #FFFAF0;
+}
+#sidebar-left {
+  border-right: 3px solid #f5f5f5;
+}
+#sidebar-right {
+  border-left: 3px solid #f5f5f5;
+}
+#sidebar-left li, #sidebar-right li {
+  font-size: 1em;
+}
+.node .content {
+  text-align: left;
+  font-size: 0.85em;
+  line-height: 1.3;
+}
+.comment .content {
+  text-align: left;
+  font-size: 0.85em;
+  line-height: 1.3;
+}
+#footer-message {
+  padding: 15px 100px 30px 100px;
+  font-size: 0.85em;
+  text-align: center;
+  color: #aaa;
+}
+table#footer-menu {
+  border-top: 3px solid #6699cc;
+  border-bottom: 3px solid #6699cc;
+  background-color: #369;
+  color: #e4e9eb;
+}
+#footer-menu td {
+  padding: 5px;
+  font-size: 0.75em;
+}
+#footer-menu .primary-links, #footer-menu a:link, #footer-menu a:visited  {
+  color: #e4e9eb;
+}
+#footer-menu a:hover  {
+  color: #fff;
+  text-decoration: underline;
+}
+#footer-menu .primary-links h1, #footer-menu .primary-links h2, #footer-menu .primary-links h3 {
+  font-size: 1.3em;
+  color: #e4e9eb;
+}
+/*
+** Common declarations for child classes of node, comment, block, box, etc.
+** If you want any of them styled differently for a specific parent, add
+** additional rules /with only the differing properties!/ to .parent .class.
+** See .comment .title for an example.
+*/
+#content .title, #content .title a {
+  color: #369;
+}
+.content h1 {
+  color: #369;
+  font-size: 1.9em;
+}
+.content h2 {
+  color: #58b;
+  font-size: 1.7em;
+}
+.content h3 {
+  color: #69c;
+  font-size: 1.5em;
+}
+.content h4 {
+  color: #8be;
+  font-size: 1.3em;
+}
+.content h5 {
+  color: #96c6f6;
+  font-size: 1.15em;
+}
+.submitted {
+  color: #999;
+  font-size: 0.79em;
+}
+.links {
+  color: #ff8c00;
+  font-size: 0.8em;
+  padding: 0px 0px 0px 0px;
+  margin: 0px 0px 0px 0px;
+}
+.links a {
+  font-weight: bold;
+}
+.box {
+  padding: 0 0 1.5em 0;
+}
+.box {
+  padding: 0px 0px 0px 0px;
+  margin: 0px 0px 0px 0px;
+}
+.box h2 {
+  font-size: 9px;
+}
+.block .title h3 {
+  border-bottom: 2px solid #6699cc;
+  color: #369;
+  font-size: 18px;
+  font-weight: bold;
+  padding: 10px 5px 10px 30px;
+  margin-bottom: .25em;
+  background: transparent url(icon-block.png) left center no-repeat;
+}
+.block .content {
+  padding: 5px 5px 5px 5px;
+}
+.block {
+  margin-bottom: 1.5em;
+}
+.box .title {
+  font-size: 1.1em;
+}
+.node {
+  margin: .5em 0 2.5em 0;
+}
+.node .content, .comment .content {
+  margin: .5em 0 .5em 0;
+}
+.node .taxonomy {
+  color: #999;
+  font-size: 0.83em;
+  padding: 1.5em;
+}
+.node .picture {
+  border: 1px solid #fff;
+  float: right;
+  margin: 0.5em;
+}
+.comment {
+  border: 1px solid #abc;
+  padding: .5em;
+  margin-bottom: 1em;
+}
+.comment .title {
+  font-size: 1em;
+  padding: 10px 0px 12px 19px;
+  background: transparent url(icon-comment.png) left center no-repeat;
+}
+.comment .new {
+  font-weight: bold;
+  font-size: 1em;
+  margin-left: 2px;
+  color: red;
+}
+.comment .picture {
+  border: 1px solid #fff;
+  float: right;
+  margin: 10px;
+}
+.links {
+  font-size: 0.75em;
+}
+.links .prev, .links .next, .links .up {
+  font-size: 1.15em;
+}
+.titles .prev, .titles .next  {
+  font-size: 0.85em;
+  font-weight: bold;
+  color: #444;
+}
+.hide {
+  display: none
+}
+.nav .links .next a:link {
+  padding: 15px 15px 17px 0;
+  background: transparent url(arrow-next.png) right center no-repeat;
+}
+.nav .links .next a:hover {
+  padding: 15px 15px 17px 0;
+  background: transparent url(arrow-next-hover.png) right center no-repeat;
+}
+.nav .links .prev a:link {
+  padding: 15px 0 17px 15px;
+  background: transparent url(arrow-prev.png) left center no-repeat;
+}
+.nav .links .prev a:hover {
+  padding: 15px 0 17px 15px;
+  background: transparent url(arrow-prev-hover.png) left center no-repeat;
+}
+.nav .links .up a:link {
+  padding: 11px 0 15px 0;
+  background: transparent url(arrow-up.png) center top no-repeat;
+}
+.nav .links .up a:hover {
+  padding: 11px 0 15px 0;
+  background: transparent url(arrow-up-hover.png) center top no-repeat;
+}
+
+/*
+** Module specific styles
+*/
+.content .active {
+  color: #369;
+}
+#aggregator .feed {
+  background-color: #eee;
+  border: 1px solid #ccc;
+  padding: 1em;
+  margin: 1em 0 1em 0;
+}
+#aggregator .news-item .source {
+  color: #999;
+  font-style: italic;
+  font-size: 0.85em;
+}
+#aggregator .title {
+  font-size: 1em;
+}
+#aggregator h3 {
+  margin-top: 1em;
+}
+#tracker th {
+  text-align: center;
+  background-color: #f5f5f5;
+  border-bottom: 1px solid #ddd;
+  border-right: 1px solid #ddd;
+  border-left: 1px solid #fafafa;
+}
+#tracker th img {
+  float: right;
+}
+#tracker tr.light, #tracker tr.dark {
+  background-color: #fff;
+}
+#tracker td {
+  vertical-align: top;
+  padding: 1em 1em 1em 0;
+  border-bottom: 1px solid #bbb;
+}
+#forum {
+  margin: 15px 0 15px 0;
+  background-color: #fff;
+}
+#forum table {
+  width: 100%;
+  border: 2px solid #69c;
+}
+#forum table tr th {
+  text-align: center;
+  background: #69c;
+  color: #fff;
+  font-size: 0.75em;
+  border-bottom: 1px solid #aaa;
+}
+#forum table tr th a  {
+  color: #fff;
+  text-decoration: underline;
+}
+#forum table tr th img  {
+  margin: 0;
+}
+#forum tr.dark {
+  background: #e0edfb;
+}
+#forum tr.light {
+  background: #fff;
+}
+#forum td {
+  padding: 0.5em 0.5em 0.5em 0.5em;
+}
+#forum td.container {
+  color: #000;
+  background: #369 url(forum-container.jpg) right top no-repeat;
+  border: 2px solid #69c;
+}
+#forum td.container a {
+  color: #e4e9eb;
+  padding: 20px 0 20px 35px;
+  background: transparent url(forum-link.png) left center no-repeat;
+}
+#forum td.container a:visited {
+  color: #e4e9eb;
+}
+#forum td.statistics, #forum td.settings, #forum td.pager {
+  height: 1.5em;
+  border: 1px solid #bbb;
+}
+#forum td .name {
+  color: #96c;
+}
+#forum td .links {
+  padding-top: 0.7em;
+  font-size: 0.9em;
+}
+.block-forum h3 {
+  margin-bottom: .5em;
+}
+.calendar a {
+  text-decoration: none;
+}
+.calendar td, .calendar th {
+  padding: 0.4em 0;
+  border-color: #888;
+}
+.calendar .row-week td a {
+  padding: 0.4em 0;
+}
+.calendar .day-today {
+  background-color: #69c;
+}
+.calendar .day-today a {
+  color: #fff;
+}
+.calendar .day-selected {
+  background-color: #369;
+  color: #fff;
+}
+.calendar .header-week {
+  background-color: #ccc;
+}
+.calendar .day-blank {
+  background-color: #ccc;
+}
+.calendar .row-week td a:hover {
+  background-color: #fff; color: #000;
+}
diff --git a/themes/pushbutton/xtemplate.xtmpl b/themes/pushbutton/xtemplate.xtmpl
index a6e9043323ec5572f764d841fa0769f69f7bc1b8..8239d463409a3a8b95af83a5c1b928a2566d4b09 100644
--- a/themes/pushbutton/xtemplate.xtmpl
+++ b/themes/pushbutton/xtemplate.xtmpl
@@ -1,163 +1,163 @@
-<!-- BEGIN: header --><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-  <title>{head_title}</title>
-  {head}
-</head>
-
-<body bgcolor="#ffffff" {onload_attributes}>
-
-<div class="hide"><a href="#content" title="Skip navigation." accesskey="2">Skip navigation</a>.</div>
-
-<table id="primary-menu" summary="Navigation elements." border="0" cellpadding="0" cellspacing="0" width="100%">
-  <tr>
-    <td id="home" width="10%">
-    
-      <!-- BEGIN: logo -->
-        <a href="./" title="Home"><img src="{logo}" alt="Home" width="144" height="63" border="0" /></a>
-      <!-- END: logo -->
-           
-    </td>
-
-    <td id="site-info" width="20%">
-
-      <!-- BEGIN: site_name -->
-        <div class='site-name'><a href="./" title="Home">{site_name}</a></div>
-      <!-- END: site_name -->
-
-      <!-- BEGIN: site_slogan -->
-        <div class='site-slogan'>{site_slogan}</div>
-      <!-- END: site_slogan -->
-
-    </td>
-
-    <td class="primary-links" width="70%" align="center" valign="middle">
-         
-      {primary_links}
-    
-    </td>
-  </tr>
-</table>
-
-<table id="secondary-menu" summary="Navigation elements." border="0" cellpadding="0" cellspacing="0" width="100%">
-  <tr>
-    <td class="secondary-links" width="75%"  align="center" valign="middle">
-      {secondary_links}
-    </td>
-    <td  width="25%"  align="center" valign="middle">
-      <!-- BEGIN: search_box -->
-      <form action="{search_url}" method="post">
-        <div id="search">
-          <input class="form-text" type="text" size="15" value="" name="keys" alt="{search_description}" />
-          <input class="form-submit" type="submit" value="{search_button_text}" alt="submit" />
-        </div>
-      </form>
-      <!-- END: search_box -->
-    </td>
-    </tr>
-</table>
-
-<table id="content" border="0" cellpadding="15" cellspacing="0" width="100%">
-  <tr>
-    <!-- BEGIN: blocks -->
-    <td id="sidebar-left">
-      {blocks}
-    </td>
-      <!-- END: blocks -->
-    <td valign="top">
-      <!-- BEGIN: mission -->
-      <div id="mission">{mission}</div>
-      <!-- END: mission -->
-      <div id="main">
-        <!-- BEGIN: title -->
-        {breadcrumb}
-        <h1 class="title">{title}</h1>
-        <!-- BEGIN: tabs -->
-        <div class="tabs">{tabs}</div>
-        <!-- END: tabs -->
-
-        <!-- END: title -->
-          <!-- BEGIN: help -->
-        <div id="help">{help}</div>
-        <!-- END: help -->
-        <!-- BEGIN: message -->
-        {message}
-        <!-- END: message -->
-<!-- END: header -->
-
-<!-- BEGIN: node -->
-  <div class="node {sticky}">
-    <!-- BEGIN: picture -->
-    {picture}
-    <!-- END: picture -->
-    <!-- BEGIN: title -->
-    <h1 class="title"><a href="{link}">{title}</a></h1>
-    <!-- END: title -->
-    <span class="submitted">{submitted}</span>
-    <!-- BEGIN: taxonomy -->
-    <span class="taxonomy">{taxonomy}</span>
-    <!-- END: taxonomy -->
-    <div class="content">{content}</div>
-    <!-- BEGIN: links -->
-    <div class="links">&raquo; {links}</div>
-    <!-- END: links -->
-  </div>
-<!-- END: node -->
-
-<!-- BEGIN: comment -->
-  <div class="comment">
-    <!-- BEGIN: picture -->
-    {picture}
-    <!-- END: picture -->
-    <h3 class="title">{title}</h3>
-    <div class="submitted">{submitted}<!-- BEGIN: new --><span class="new"> *{new}</span><!-- END: new --></div>
-    <div class="content">{content}</div>
-    <!-- BEGIN: links -->
-    <div class="links">&raquo; {links}</div>
-    <!-- END: links -->
-  </div>
-<!-- END: comment -->
-
-<!-- BEGIN: box -->
-  <div class="box">
-    <h2 class="title">{title}</h2>
-    <div class="content">{content}</div>
- </div>
-<!-- END: box -->
-
-<!-- BEGIN: block -->
-  <div class="block block-{module}" id="block-{module}-{delta}">
-    <div class="title"><h3>{title}</h3></div>
-    <div class="content">{content}</div>
- </div>
-<!-- END: block -->
-
-<!-- BEGIN: footer -->
-      </div><!-- main -->
-    </td>
-    <!-- BEGIN: blocks -->
-    <td id="sidebar-right">
-      {blocks}
-    </td>
-    <!-- END: blocks -->
-  </tr>
-</table>
-
-<table id="footer-menu" summary="Navigation elements." border="0" cellpadding="0" cellspacing="0" width="100%">
-  <tr>
-    <td align="center" valign="middle">
-      <div class="primary-links">{primary_links}</div>
-      <div class="secondary-links">{secondary_links}</div>
-    </td>
-  </tr>
-</table>
-
-<!-- BEGIN: message -->
-<div id="footer-message">
-  {footer_message}
-</div>
-<!-- END: message -->
-{footer}
-</body>
-</html>
-<!-- END: footer -->
+<!-- BEGIN: header --><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+  <title>{head_title}</title>
+  {head}
+</head>
+
+<body bgcolor="#ffffff" {onload_attributes}>
+
+<div class="hide"><a href="#content" title="Skip navigation." accesskey="2">Skip navigation</a>.</div>
+
+<table id="primary-menu" summary="Navigation elements." border="0" cellpadding="0" cellspacing="0" width="100%">
+  <tr>
+    <td id="home" width="10%">
+
+      <!-- BEGIN: logo -->
+        <a href="./" title="Home"><img src="{logo}" alt="Home" width="144" height="63" border="0" /></a>
+      <!-- END: logo -->
+
+    </td>
+
+    <td id="site-info" width="20%">
+
+      <!-- BEGIN: site_name -->
+        <div class='site-name'><a href="./" title="Home">{site_name}</a></div>
+      <!-- END: site_name -->
+
+      <!-- BEGIN: site_slogan -->
+        <div class='site-slogan'>{site_slogan}</div>
+      <!-- END: site_slogan -->
+
+    </td>
+
+    <td class="primary-links" width="70%" align="center" valign="middle">
+
+      {primary_links}
+
+    </td>
+  </tr>
+</table>
+
+<table id="secondary-menu" summary="Navigation elements." border="0" cellpadding="0" cellspacing="0" width="100%">
+  <tr>
+    <td class="secondary-links" width="75%"  align="center" valign="middle">
+      {secondary_links}
+    </td>
+    <td  width="25%"  align="center" valign="middle">
+      <!-- BEGIN: search_box -->
+      <form action="{search_url}" method="post">
+        <div id="search">
+          <input class="form-text" type="text" size="15" value="" name="keys" alt="{search_description}" />
+          <input class="form-submit" type="submit" value="{search_button_text}" alt="submit" />
+        </div>
+      </form>
+      <!-- END: search_box -->
+    </td>
+    </tr>
+</table>
+
+<table id="content" border="0" cellpadding="15" cellspacing="0" width="100%">
+  <tr>
+    <!-- BEGIN: blocks -->
+    <td id="sidebar-left">
+      {blocks}
+    </td>
+      <!-- END: blocks -->
+    <td valign="top">
+      <!-- BEGIN: mission -->
+      <div id="mission">{mission}</div>
+      <!-- END: mission -->
+      <div id="main">
+        <!-- BEGIN: title -->
+        {breadcrumb}
+        <h1 class="title">{title}</h1>
+        <!-- BEGIN: tabs -->
+        <div class="tabs">{tabs}</div>
+        <!-- END: tabs -->
+
+        <!-- END: title -->
+          <!-- BEGIN: help -->
+        <div id="help">{help}</div>
+        <!-- END: help -->
+        <!-- BEGIN: message -->
+        {message}
+        <!-- END: message -->
+<!-- END: header -->
+
+<!-- BEGIN: node -->
+  <div class="node {sticky}">
+    <!-- BEGIN: picture -->
+    {picture}
+    <!-- END: picture -->
+    <!-- BEGIN: title -->
+    <h1 class="title"><a href="{link}">{title}</a></h1>
+    <!-- END: title -->
+    <span class="submitted">{submitted}</span>
+    <!-- BEGIN: taxonomy -->
+    <span class="taxonomy">{taxonomy}</span>
+    <!-- END: taxonomy -->
+    <div class="content">{content}</div>
+    <!-- BEGIN: links -->
+    <div class="links">&raquo; {links}</div>
+    <!-- END: links -->
+  </div>
+<!-- END: node -->
+
+<!-- BEGIN: comment -->
+  <div class="comment">
+    <!-- BEGIN: picture -->
+    {picture}
+    <!-- END: picture -->
+    <h3 class="title">{title}</h3>
+    <div class="submitted">{submitted}<!-- BEGIN: new --><span class="new"> *{new}</span><!-- END: new --></div>
+    <div class="content">{content}</div>
+    <!-- BEGIN: links -->
+    <div class="links">&raquo; {links}</div>
+    <!-- END: links -->
+  </div>
+<!-- END: comment -->
+
+<!-- BEGIN: box -->
+  <div class="box">
+    <h2 class="title">{title}</h2>
+    <div class="content">{content}</div>
+ </div>
+<!-- END: box -->
+
+<!-- BEGIN: block -->
+  <div class="block block-{module}" id="block-{module}-{delta}">
+    <div class="title"><h3>{title}</h3></div>
+    <div class="content">{content}</div>
+ </div>
+<!-- END: block -->
+
+<!-- BEGIN: footer -->
+      </div><!-- main -->
+    </td>
+    <!-- BEGIN: blocks -->
+    <td id="sidebar-right">
+      {blocks}
+    </td>
+    <!-- END: blocks -->
+  </tr>
+</table>
+
+<table id="footer-menu" summary="Navigation elements." border="0" cellpadding="0" cellspacing="0" width="100%">
+  <tr>
+    <td align="center" valign="middle">
+      <div class="primary-links">{primary_links}</div>
+      <div class="secondary-links">{secondary_links}</div>
+    </td>
+  </tr>
+</table>
+
+<!-- BEGIN: message -->
+<div id="footer-message">
+  {footer_message}
+</div>
+<!-- END: message -->
+{footer}
+</body>
+</html>
+<!-- END: footer -->