diff -urN punbb-1.4.1/admin/bans.php punbb-1.4.2/admin/bans.php
--- punbb-1.4.1/admin/bans.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/admin/bans.php	2012-02-09 20:42:20.000000000 +0000
@@ -4,7 +4,7 @@
  *
  * Allows administrators and moderators to create, modify, and delete bans.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -223,7 +223,7 @@
 			</fieldset>
 <?php ($hook = get_hook('aba_add_edit_ban_criteria_fieldset_end')) ? eval($hook) : null; ?>
 			<div class="frm-buttons">
-				<span class="submit"><input type="submit" name="add_edit_ban" value=" <?php echo $lang_admin_bans['Save ban'] ?>" /></span>
+				<span class="submit primary"><input type="submit" name="add_edit_ban" value=" <?php echo $lang_admin_bans['Save ban'] ?>" /></span>
 			</div>
 		</form>
 	</div>
@@ -478,7 +478,7 @@
 				</div>
 			</fieldset>
 			<div class="frm-buttons">
-				<span class="submit"><input type="submit" name="add_ban" value=" <?php echo $lang_admin_bans['Add ban'] ?> " /></span>
+				<span class="submit primary"><input type="submit" name="add_ban" value=" <?php echo $lang_admin_bans['Add ban'] ?> " /></span>
 			</div>
 		</form>
 	</div>
@@ -544,7 +544,7 @@
 			<div class="ct-set set<?php echo ++$forum_page['item_num'] ?>">
 				<div class="ct-box">
 					<div class="ct-legend">
-						<h3 class=""><span><?php printf($lang_admin_bans['Current ban head'], $forum_page['ban_creator']) ?></span></h3>
+						<h3><span><?php printf($lang_admin_bans['Current ban head'], $forum_page['ban_creator']) ?></span></h3>
 						<p><?php printf($lang_admin_bans['Edit or remove'], '<a href="'.forum_link($forum_url['admin_bans']).'&amp;edit_ban='.$cur_ban['id'].'">'.$lang_admin_bans['Edit ban'].'</a>', '<a href="'.forum_link($forum_url['admin_bans']).'&amp;del_ban='.$cur_ban['id'].'&amp;csrf_token='.generate_form_token('del_ban'.$cur_ban['id']).'">'.$lang_admin_bans['Remove ban'].'</a>') ?></p>
 					</div>
 <?php if (!empty($forum_page['ban_info'])): ?>
diff -urN punbb-1.4.1/admin/categories.php punbb-1.4.2/admin/categories.php
--- punbb-1.4.1/admin/categories.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/admin/categories.php	2012-02-09 20:42:20.000000000 +0000
@@ -4,7 +4,7 @@
  *
  * Allows administrators to create, reposition, and remove categories.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -193,7 +193,7 @@
 				<?php echo implode("\n\t\t\t\t", $forum_page['hidden_fields'])."\n" ?>
 			</div>
 			<div class="frm-buttons">
-				<span class="submit primary"><input type="submit" name="del_cat_comply" value="<?php echo $lang_admin_categories['Delete category'] ?>" /></span>
+				<span class="submit primary caution"><input type="submit" name="del_cat_comply" value="<?php echo $lang_admin_categories['Delete category'] ?>" /></span>
 				<span class="cancel"><input type="submit" name="del_cat_cancel" value="<?php echo $lang_admin_common['Cancel'] ?>" /></span>
 			</div>
 		</form>
@@ -345,7 +345,7 @@
 			</fieldset>
 <?php ($hook = get_hook('acg_add_cat_fieldset_end')) ? eval($hook) : null; ?>
 			<div class="frm-buttons">
-				<span class="submit"><input type="submit" name="add_cat" value="<?php echo $lang_admin_categories['Add category'] ?>" /></span>
+				<span class="submit primary"><input type="submit" name="add_cat" value="<?php echo $lang_admin_categories['Add category'] ?>" /></span>
 			</div>
 		</form>
 	</div>
@@ -391,7 +391,7 @@
 			</fieldset>
 <?php ($hook = get_hook('acg_del_cat_fieldset_end')) ? eval($hook) : null; ?>
 			<div class="frm-buttons">
-				<span class="submit"><input type="submit" name="del_cat" value="<?php echo $lang_admin_categories['Delete category'] ?>" /></span>
+				<span class="submit primary"><input type="submit" name="del_cat" value="<?php echo $lang_admin_categories['Delete category'] ?>" /></span>
 			</div>
 		</form>
 	</div>
@@ -421,7 +421,7 @@
 
 ?>
 			<fieldset class="frm-group group<?php echo ++$forum_page['group_count'] ?>">
-				<legend class="group-legend"><span><?php echo $lang_admin_categories['Edit category legend']; ?></span></legend>
+				<legend class="group-legend"><span><?php echo $lang_admin_categories['Edit category legend'] ?></span></legend>
 				<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
 <?php ($hook = get_hook('acg_pre_edit_cat_name')) ? eval($hook) : null; ?>
 					<div class="sf-box text">
@@ -445,7 +445,7 @@
 
 ?>
 			<div class="frm-buttons">
-				<span class="submit"><input type="submit" name="update" value="<?php echo $lang_admin_categories['Update all categories'] ?>" /></span>
+				<span class="submit primary"><input type="submit" name="update" value="<?php echo $lang_admin_categories['Update all categories'] ?>" /></span>
 			</div>
 		</form>
 	</div>
diff -urN punbb-1.4.1/admin/censoring.php punbb-1.4.2/admin/censoring.php
--- punbb-1.4.1/admin/censoring.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/admin/censoring.php	2012-02-09 20:42:20.000000000 +0000
@@ -4,7 +4,7 @@
  *
  * Allows administrators and moderators to add, modify, and delete the word censors used by the software when censoring is enabled.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
diff -urN punbb-1.4.1/admin/db_update.php punbb-1.4.2/admin/db_update.php
--- punbb-1.4.1/admin/db_update.php	2011-11-29 18:13:36.000000000 +0000
+++ punbb-1.4.2/admin/db_update.php	2012-02-09 20:42:20.000000000 +0000
@@ -4,13 +4,13 @@
  *
  * Updates the database to the latest version.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
 
 
-define('UPDATE_TO', '1.4.1');
+define('UPDATE_TO', '1.4.2');
 define('UPDATE_TO_DB_REVISION', 5);
 
 // The number of items to process per pageview (lower this if the update script times out during UTF-8 conversion)
@@ -87,6 +87,9 @@
 // Load DB abstraction layer and try to connect
 require FORUM_ROOT.'include/dblayer/common_db.php';
 
+// Start a transaction
+$forum_db->start_transaction();
+
 // Check current version
 $query = array(
 	'SELECT'	=> 'conf_value',
@@ -347,7 +350,7 @@
 	global $forum_db;
 
 	$types = array(
-		'char' 			=> 'binary',
+		'char'			=> 'binary',
 		'varchar'		=> 'varbinary',
 		'tinytext'		=> 'tinyblob',
 		'mediumtext'	=> 'mediumblob',
@@ -389,7 +392,7 @@
 	{
 		while (false !== ($avatar = readdir($handle)))
 		{
-			$avatar_file =  $avatar_dir.$avatar;
+			$avatar_file = $avatar_dir.$avatar;
 			if (!is_file($avatar_file))
 			{
 				continue;
@@ -471,9 +474,9 @@
 <!--[if IE 8 ]>    <html class="oldie ie8" lang="en" dir="ltr"> <![endif]-->
 <!--[if gt IE 8]><!--> <html lang="en" dir="ltr"> <!--<![endif]-->
 <head>
-	<meta charset="utf-8"/>
+	<meta charset="utf-8" />
 	<title>PunBB Database Update</title>
-	<link rel="stylesheet" type="text/css" href="<?php echo $base_url ?>/style/Oxygen/min/Oxygen.min.css" />
+	<link rel="stylesheet" type="text/css" href="<?php echo $base_url ?>/style/Oxygen/Oxygen.min.css" />
 	<script type="text/javascript" src="<?php echo $base_url ?>/include/js/min/punbb.common.min.js"></script>
 </head>
 <body>
@@ -563,7 +566,7 @@
 
 ?>
 			<div class="frm-buttons">
-				<span class="submit"><input type="submit" name="start" value="Start update" /></span>
+				<span class="submit primary"><input type="submit" name="start" value="Start update" /></span>
 			</div>
 		</form>
 	</div>
@@ -833,7 +836,7 @@
 		$forum_db->alter_field('reports', 'message', 'TEXT', true);
 
 
-		// Drop fulltext indexes  (should only apply to SVN installs)
+		// Drop fulltext indexes (should only apply to SVN installs)
 		if (in_array($db_type, array('mysql', 'mysqli', 'mysql_innodb', 'mysqli_innodb')))
 		{
 			$forum_db->drop_index('topics', 'subject_idx');
@@ -1363,7 +1366,7 @@
 				while ($cur_user = $forum_db->fetch_assoc($result))
 				{
 					if ($cur_user['linkedin'] != '' &&
-						strpos(strtolower($cur_user['linkedin']), 'http://') !== 0  &&
+						strpos(strtolower($cur_user['linkedin']), 'http://') !== 0 &&
 						strpos(strtolower($cur_user['linkedin']), 'https://') !== 0)
 					{
 						$query = array(
@@ -2180,9 +2183,9 @@
 <!--[if IE 8 ]>    <html class="oldie ie8" lang="en" dir="ltr"> <![endif]-->
 <!--[if gt IE 8]><!--> <html lang="en" dir="ltr"> <!--<![endif]-->
 <head>
-	<meta charset="utf-8"/>
+	<meta charset="utf-8" />
 	<title>PunBB Database Update</title>
-	<link rel="stylesheet" type="text/css" href="<?php echo $base_url ?>/style/Oxygen/min/Oxygen.min.css" />
+	<link rel="stylesheet" type="text/css" href="<?php echo $base_url ?>/style/Oxygen/Oxygen.min.css" />
 	<script type="text/javascript" src="<?php echo $base_url ?>/include/js/min/punbb.common.min.js"></script>
 </head>
 <body>
diff -urN punbb-1.4.1/admin/extensions.php punbb-1.4.2/admin/extensions.php
--- punbb-1.4.1/admin/extensions.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/admin/extensions.php	2012-02-09 20:42:20.000000000 +0000
@@ -4,7 +4,7 @@
  *
  * Allows administrators to control the extensions and hotfixes installed in the site.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -62,6 +62,16 @@
 	if (!empty($errors))
 		message(isset($_GET['install']) ? $lang_common['Bad request'] : $lang_admin_ext['Hotfix download failed']);
 
+	// Get core amd major versions
+	if (!defined('FORUM_DISABLE_EXTENSIONS_VERSION_CHECK'))
+	{
+		list($forum_version_core, $forum_version_major) = explode('.', clean_version($forum_config['o_cur_version']));
+		list($extension_maxtestedon_version_core, $extension_maxtestedon_version_major) = explode('.', clean_version($ext_data['extension']['maxtestedon']));
+
+		if (version_compare($forum_version_core.'.'.$forum_version_major, $extension_maxtestedon_version_core.'.'.$extension_maxtestedon_version_major, '>'))
+			message($lang_admin_ext['Maxtestedon error']);
+	}
+
 	// Make sure we have an array of dependencies
 	if (!isset($ext_data['extension']['dependencies']['dependency']))
 		$ext_data['extension']['dependencies'] = array();
@@ -192,7 +202,7 @@
 		if (isset($ext_data['extension']['hooks']['hook']))
 		{
 			foreach ($ext_data['extension']['hooks']['hook'] as $ext_hook)
-  			{
+			{
 				$cur_hooks = explode(',', $ext_hook['attributes']['id']);
 				foreach ($cur_hooks as $cur_hook)
 				{
@@ -205,8 +215,8 @@
 					($hook = get_hook('aex_install_comply_qr_add_hook')) ? eval($hook) : null;
 					$forum_db->query_build($query) or error(__FILE__, __LINE__);
 				}
-  			}
-  		}
+			}
+		}
 
 		// Empty the PHP cache
 		forum_clear_cache();
@@ -308,7 +318,7 @@
 				<div class="ct-set data-set set1">
 					<div class="ct-box data-box">
 						<h3 class="ct-legend hn"><span><?php echo forum_htmlencode($ext_data['extension']['title']) ?></span></h3>
-						<p><?php  echo ((strpos($id, 'hotfix_') !== 0) ? sprintf($lang_admin_ext['Version'], $ext_data['extension']['version']) : $lang_admin_ext['Hotfix']) ?></p>
+						<p><?php echo ((strpos($id, 'hotfix_') !== 0) ? sprintf($lang_admin_ext['Version'], $ext_data['extension']['version']) : $lang_admin_ext['Hotfix']) ?></p>
 						<p><?php printf($lang_admin_ext['Extension by'], forum_htmlencode($ext_data['extension']['author'])) ?></p>
 						<p><?php echo forum_htmlencode($ext_data['extension']['description']) ?></p>
 					</div>
@@ -562,7 +572,7 @@
 				<p class="warn"><?php echo $lang_admin_ext['Installed extensions warn'] ?></p>
 			</div>
 <?php endif; ?>				<div class="frm-buttons">
-				<span class="submit primary"><input type="submit" name="uninstall_comply" value="<?php echo $lang_admin_ext['Uninstall'] ?>" /></span>
+				<span class="submit primary caution"><input type="submit" name="uninstall_comply" value="<?php echo $lang_admin_ext['Uninstall'] ?>" /></span>
 				<span class="cancel"><input type="submit" name="uninstall_cancel" value="<?php echo $lang_admin_common['Cancel'] ?>" /></span>
 			</div>
 		</form>
@@ -757,7 +767,7 @@
 		{
 			if (!array_key_exists($hotfix['attributes']['id'], $inst_exts))
 			{
-				$forum_page['ext_item'][] = '<div class="ct-box info-box hotfix available">'."\n\t\t\t".'<h3 class="ct-legend hn"><span>'.forum_htmlencode($hotfix['content']).'</span></h3>'."\n\t\t\t".'<ul>'."\n\t\t\t\t".'<li><span>'.sprintf($lang_admin_ext['Extension by'], 'PunBB').'</span></li>'."\n\t\t\t\t".'<li><span>'.$lang_admin_ext['Hotfix description'].'</span></li>'."\n\t\t\t".'</ul>'."\n\t\t\t\t".'<p class="options"><span class="first-item"><a href="'.$base_url.'/admin/extensions.php?install_hotfix='.urlencode($hotfix['attributes']['id']).'">'.$lang_admin_ext['Install hotfix'].'</a></span></p>'."\n\t\t".'</div>';
+				$forum_page['ext_item'][] = '<div class="ct-box info-box hotfix available">'."\n\t\t\t".'<h3 class="ct-legend hn">'.forum_htmlencode($hotfix['content']).'</h3>'."\n\t\t\t".'<ul>'."\n\t\t\t\t".'<li><span>'.sprintf($lang_admin_ext['Extension by'], 'PunBB').'</span></li>'."\n\t\t\t\t".'<li><span>'.$lang_admin_ext['Hotfix description'].'</span></li>'."\n\t\t\t".'</ul>'."\n\t\t\t\t".'<p class="options"><span class="first-item"><a href="'.$base_url.'/admin/extensions.php?install_hotfix='.urlencode($hotfix['attributes']['id']).'">'.$lang_admin_ext['Install hotfix'].'</a></span></p>'."\n\t\t".'</div>';
 				++$num_exts;
 			}
 		}
@@ -810,8 +820,10 @@
 			<ul class="data-list">
 				<li><span><?php echo ((strpos($id, 'hotfix_') !== 0) ? sprintf($lang_admin_ext['Version'], $ext['version']) : $lang_admin_ext['Hotfix']) ?></span></li>
 				<li><span><?php printf($lang_admin_ext['Extension by'], forum_htmlencode($ext['author'])) ?></span></li>
-<?php if ($ext['description'] != ''): ?>				<li><span><?php echo forum_htmlencode($ext['description']) ?></span></li>
-<?php endif; ?>			</ul>
+				<?php if ($ext['description'] != ''): ?>
+					<li><span><?php echo forum_htmlencode($ext['description']) ?></span></li>
+				<?php endif; ?>
+			</ul>
 			<p class="options"><?php echo implode(' ', $forum_page['ext_actions']) ?></p>
 		</div>
 <?php
@@ -848,8 +860,7 @@
 	if ($forum_config['o_check_for_versions'] == 1)
 	{
 		// Check for the new versions of the extensions istalled
-
-		$repository_urls = array('http://punbb.informer.com/extensions');
+		$repository_urls = array('http://punbb.informer.com/extensions/1.4');
 		($hook = get_hook('aex_add_extensions_repository')) ? eval($hook) : null;
 
 		$repository_url_by_extension = array();
@@ -859,18 +870,18 @@
 		if (is_readable(FORUM_CACHE_DIR.'cache_ext_version_notifications.php'))
 			include FORUM_CACHE_DIR.'cache_ext_version_notifications.php';
 
-		//Get latest timestamp in cache
+		// Get latest timestamp in cache
 		if (isset($forum_ext_repos))
 		{
 			$min_timestamp = 10000000000;
-			foreach ( $forum_ext_repos as $rep)
+			foreach ($forum_ext_repos as $rep)
 				$min_timestamp = min($min_timestamp, $rep['timestamp']);
 		}
 
 		$update_hour = (isset($forum_ext_versions_update_cache) && (time() - $forum_ext_versions_update_cache > 60 * 60));
 
 		// Update last versions if there is no cahe or some extension was added/removed or one day has gone since last update
-		$update_new_versions_cache = !defined('FORUM_EXT_VERSIONS_LOADED') || (isset($forum_ext_last_versions) && array_diff($inst_exts, $forum_ext_last_versions) != array()) || $update_hour  || ( $update_hour && isset($min_timestamp) && (time() - $min_timestamp > 60*60*24));
+		$update_new_versions_cache = !defined('FORUM_EXT_VERSIONS_LOADED') || (isset($forum_ext_last_versions) && array_diff($inst_exts, $forum_ext_last_versions) != array()) || $update_hour || ($update_hour && isset($min_timestamp) && (time() - $min_timestamp > 60*60*24));
 
 		($hook = get_hook('aex_before_update_checking')) ? eval($hook) : null;
 
@@ -954,7 +965,7 @@
 			{
 				if (!array_key_exists($entry, $inst_exts) || version_compare($inst_exts[$entry]['version'], $ext_data['extension']['version'], '!='))
 				{
-					$forum_page['ext_item'][] = '<div class="ct-box info-box extension available">'."\n\t\t\t".'<h3 class="ct-legend hn"><span>'.forum_htmlencode($ext_data['extension']['title']).'</span></h3>'."\n\t\t\t".'<ul class="data-list">'."\n\t\t\t\t".'<li><span>'.sprintf($lang_admin_ext['Version'], $ext_data['extension']['version']).'</span></li>'."\n\t\t\t\t".'<li><span>'.sprintf($lang_admin_ext['Extension by'], forum_htmlencode($ext_data['extension']['author'])).'</span></li>'.(($ext_data['extension']['description'] != '') ? "\n\t\t\t\t".'<li><span>'.forum_htmlencode($ext_data['extension']['description']).'</span></li>' : '')."\n\t\t\t".'</ul>'."\n\t\t\t".'<p class="options"><span class="first-item"><a href="'.$base_url.'/admin/extensions.php?install='.urlencode($entry).'">'.(isset($inst_exts[$entry]['version']) ? $lang_admin_ext['Upgrade extension'] : $lang_admin_ext['Install extension']).'</a></span></p>'."\n\t\t".'</div>';
+					$forum_page['ext_item'][] = '<div class="ct-box info-box extension available">'."\n\t\t\t".'<h3 class="ct-legend hn">'.forum_htmlencode($ext_data['extension']['title']).' <em>'.$ext_data['extension']['version'].'</em></h3>'."\n\t\t\t".'<ul class="data-list">'."\n\t\t\t\t".'<li><span>'.sprintf($lang_admin_ext['Extension by'], forum_htmlencode($ext_data['extension']['author'])).'</span></li>'.(($ext_data['extension']['description'] != '') ? "\n\t\t\t\t".'<li><span>'.forum_htmlencode($ext_data['extension']['description']).'</span></li>' : '')."\n\t\t\t".'</ul>'."\n\t\t\t".'<p class="options"><span class="first-item"><a href="'.$base_url.'/admin/extensions.php?install='.urlencode($entry).'">'.(isset($inst_exts[$entry]['version']) ? $lang_admin_ext['Upgrade extension'] : $lang_admin_ext['Install extension']).'</a></span></p>'."\n\t\t".'</div>';
 					++$num_exts;
 				}
 			}
@@ -1021,9 +1032,9 @@
 		($hook = get_hook('aex_section_manage_pre_ext_actions')) ? eval($hook) : null;
 
 		if ($ext['disabled'] == '1')
-			$forum_page['ext_item'][] = '<div class="ct-box info-box extension disabled">'."\n\t\t".'<h3 class="ct-legend hn"><span>'.forum_htmlencode($ext['title']).' ( <span>'.$lang_admin_ext['Extension disabled'].'</span> )</span></h3>'."\n\t\t".'<ul class="data-list">'."\n\t\t\t".'<li><span>'.sprintf($lang_admin_ext['Version'], $ext['version']).'</span></li>'."\n\t\t\t".'<li><span>'.sprintf($lang_admin_ext['Extension by'], forum_htmlencode($ext['author'])).'</span></li>'."\n\t\t\t".(($ext['description'] != '') ? '<li><span>'.forum_htmlencode($ext['description']).'</span></li>' : '')."\n\t\t\t".'</ul>'."\n\t\t".'<p class="options">'.implode(' ', $forum_page['ext_actions']).'</p>'."\n\t".'</div>';
+			$forum_page['ext_item'][] = '<div class="ct-box info-box extension disabled">'."\n\t\t".'<h3 class="ct-legend hn">'.forum_htmlencode($ext['title']).' <em>'.$ext['version'].'</em> ('.$lang_admin_ext['Extension disabled'].')</h3>'."\n\t\t".'<ul class="data-list">'."\n\t\t\t".'<li><span>'.sprintf($lang_admin_ext['Extension by'], forum_htmlencode($ext['author'])).'</span></li>'."\n\t\t\t".(($ext['description'] != '') ? '<li><span>'.forum_htmlencode($ext['description']).'</span></li>' : '')."\n\t\t\t".'</ul>'."\n\t\t".'<p class="options">'.implode(' ', $forum_page['ext_actions']).'</p>'."\n\t".'</div>';
 		else
-			$forum_page['ext_item'][] = '<div class="ct-box info-box extension enabled">'."\n\t\t".'<h3 class="ct-legend hn"><span>'.forum_htmlencode($ext['title']).'</span></h3>'."\n\t\t".'<ul class="data-list">'."\n\t\t\t".'<li><span>'.sprintf($lang_admin_ext['Version'], $ext['version']).'</span></li>'."\n\t\t\t".'<li><span>'.sprintf($lang_admin_ext['Extension by'], forum_htmlencode($ext['author'])).'</span></li>'."\n\t\t\t".(($ext['description'] != '') ? '<li><span>'.forum_htmlencode($ext['description']).'</span></li>' : '')."\n\t\t".'</ul>'."\n\t\t".'<p class="options">'.implode(' ', $forum_page['ext_actions']).'</p>'."\n\t".'</div>';
+			$forum_page['ext_item'][] = '<div class="ct-box info-box extension enabled">'."\n\t\t".'<h3 class="ct-legend hn">'.forum_htmlencode($ext['title']).' <em>'.$ext['version'].'</em></h3>'."\n\t\t".'<ul class="data-list">'."\n\t\t\t".'<li><span>'.sprintf($lang_admin_ext['Extension by'], forum_htmlencode($ext['author'])).'</span></li>'."\n\t\t\t".(($ext['description'] != '') ? '<li><span>'.forum_htmlencode($ext['description']).'</span></li>' : '')."\n\t\t".'</ul>'."\n\t\t".'<p class="options">'.implode(' ', $forum_page['ext_actions']).'</p>'."\n\t".'</div>';
 
 		$installed_count++;
 	}
diff -urN punbb-1.4.1/admin/forums.php punbb-1.4.2/admin/forums.php
--- punbb-1.4.1/admin/forums.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/admin/forums.php	2012-02-09 20:42:20.000000000 +0000
@@ -4,7 +4,7 @@
  *
  * Allows administrators to add, modify, and remove forums.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -188,7 +188,7 @@
 				<p class="warn"><?php echo $lang_admin_forums['Delete forum warning'] ?></p>
 			</div>
 			<div class="frm-buttons">
-				<span class="submit primary"><input type="submit" name="del_forum_comply" value="<?php echo $lang_admin_forums['Delete forum'] ?>" /></span>
+				<span class="submit primary caution"><input type="submit" name="del_forum_comply" value="<?php echo $lang_admin_forums['Delete forum'] ?>" /></span>
 				<span class="cancel"><input type="submit" name="del_forum_cancel" value="<?php echo $lang_admin_common['Cancel'] ?>" /></span>
 			</div>
 		</form>
@@ -549,7 +549,7 @@
 				<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
 					<div class="sf-box text">
 						<label for="fld<?php echo ++$forum_page['fld_count'] ?>"><span><?php echo $lang_admin_forums['Redirect URL'] ?></span></label><br />
-						<span class="fld-input"><?php echo ($cur_forum['num_topics']) ? '<input type="url" id="fld'.$forum_page['fld_count'].'" name="redirect_url" size="45" maxlength="100" value="'.$lang_admin_forums['Only for empty forums'].'" disabled="disabled" />' : '<input type="text" id="fld'.$forum_page['fld_count'].'" name="redirect_url" size="45" maxlength="100" value="'.forum_htmlencode($cur_forum['redirect_url']).'" />'; ?></span>
+						<span class="fld-input"><?php echo ($cur_forum['num_topics']) ? '<input type="url" id="fld'.$forum_page['fld_count'].'" name="redirect_url" size="45" maxlength="100" value="'.$lang_admin_forums['Only for empty forums'].'" disabled="disabled" />' : '<input type="text" id="fld'.$forum_page['fld_count'].'" name="redirect_url" size="35" maxlength="100" value="'.forum_htmlencode($cur_forum['redirect_url']).'" />' ?></span>
 					</div>
 				</div>
 <?php ($hook = get_hook('afo_edit_forum_pre_details_fieldset_end')) ? eval($hook) : null; ?>
@@ -612,19 +612,19 @@
 					<div class="mf-box mf-yesno">
 <?php ($hook = get_hook('afo_edit_forum_pre_cur_group_read_forum_permission')) ? eval($hook) : null; ?>
 						<div class="mf-item">
-							<input type="hidden" name="read_forum_old[<?php echo $cur_perm['g_id'] ?>]" value="<?php echo ($read_forum) ? '1' : '0'; ?>" />
+							<input type="hidden" name="read_forum_old[<?php echo $cur_perm['g_id'] ?>]" value="<?php echo ($read_forum) ? '1' : '0' ?>" />
 							<span class="fld-input"><input type="checkbox" id="fld<?php echo ++$forum_page['fld_count'] ?>" name="read_forum_new[<?php echo $cur_perm['g_id'] ?>]" value="1"<?php if ($read_forum) echo ' checked="checked"'; echo ($cur_perm['g_read_board'] == '0') ? ' disabled="disabled"' : ''; ?> /></span>
-							<label for="fld<?php echo $forum_page['fld_count'] ?>"<?php if (!$read_forum_def) echo ' class="warn"' ?>><?php echo $lang_admin_forums['Read forum'] ?> <?php if (!$read_forum_def) echo $lang_admin_forums['Not default']  ?></label>
+							<label for="fld<?php echo $forum_page['fld_count'] ?>"<?php if (!$read_forum_def) echo ' class="warn"' ?>><?php echo $lang_admin_forums['Read forum'] ?> <?php if (!$read_forum_def) echo $lang_admin_forums['Not default'] ?></label>
 						</div>
 <?php ($hook = get_hook('afo_edit_forum_pre_cur_group_post_replies_permission')) ? eval($hook) : null; ?>
 						<div class="mf-item">
-							<input type="hidden" name="post_replies_old[<?php echo $cur_perm['g_id'] ?>]" value="<?php echo ($post_replies) ? '1' : '0'; ?>" />
+							<input type="hidden" name="post_replies_old[<?php echo $cur_perm['g_id'] ?>]" value="<?php echo ($post_replies) ? '1' : '0' ?>" />
 							<span class="fld-input"><input type="checkbox" id="fld<?php echo ++$forum_page['fld_count'] ?>" name="post_replies_new[<?php echo $cur_perm['g_id'] ?>]" value="1"<?php if ($post_replies) echo ' checked="checked"'; echo ($cur_forum['redirect_url'] != '') ? ' disabled="disabled"' : ''; ?> /></span>
 							<label for="fld<?php echo $forum_page['fld_count'] ?>"<?php if (!$post_replies_def) echo ' class="warn"'; ?>><?php echo $lang_admin_forums['Post replies'] ?> <?php if (!$post_replies_def) echo $lang_admin_forums['Not default'] ?></label>
 						</div>
 <?php ($hook = get_hook('afo_edit_forum_pre_cur_group_post_topics_permission')) ? eval($hook) : null; ?>
 						<div class="mf-item">
-							<input type="hidden" name="post_topics_old[<?php echo $cur_perm['g_id'] ?>]" value="<?php echo ($post_topics) ? '1' : '0'; ?>" />
+							<input type="hidden" name="post_topics_old[<?php echo $cur_perm['g_id'] ?>]" value="<?php echo ($post_topics) ? '1' : '0' ?>" />
 							<span class="fld-input"><input type="checkbox" id="fld<?php echo ++$forum_page['fld_count'] ?>" name="post_topics_new[<?php echo $cur_perm['g_id'] ?>]" value="1"<?php if ($post_topics) echo ' checked="checked"'; echo ($cur_forum['redirect_url'] != '') ? ' disabled="disabled"' : ''; ?> /></span>
 							<label for="fld<?php echo $forum_page['fld_count'] ?>"<?php if (!$post_topics_def) echo ' class="warn"'; ?>><?php echo $lang_admin_forums['Post topics'] ?> <?php if (!$post_topics_def) echo $lang_admin_forums['Not default'] ?></label>
 						</div>
@@ -735,7 +735,7 @@
 			</fieldset>
 <?php ($hook = get_hook('afo_add_forum_fieldset_end')) ? eval($hook) : null; ?>
 			<div class="frm-buttons">
-				<span class="submit"><input type="submit" name="add_forum" value=" <?php echo $lang_admin_forums['Add forum'] ?> " /></span>
+				<span class="submit primary"><input type="submit" name="add_forum" value=" <?php echo $lang_admin_forums['Add forum'] ?> " /></span>
 			</div>
 		</form>
 	</div>
@@ -806,7 +806,7 @@
 ($hook = get_hook('afo_pre_edit_cur_forum_fieldset')) ? eval($hook) : null;
 
 ?>
-				<fieldset id="forum<? echo $cur_forum['fid']; ?>" class="mf-set set<?php echo ++$forum_page['item_count'] ?><?php echo ($forum_page['item_count'] == 1) ? ' mf-head' : ' mf-extra' ?>">
+				<fieldset id="forum<?php echo $cur_forum['fid'] ?>" class="mf-set set<?php echo ++$forum_page['item_count'] ?><?php echo ($forum_page['item_count'] == 1) ? ' mf-head' : ' mf-extra' ?>">
 					<legend><span><?php printf($lang_admin_forums['Edit or delete'], '<a href="'.forum_link($forum_url['admin_forums']).'?edit_forum='.$cur_forum['fid'].'">'.$lang_admin_forums['Edit'].'</a>', '<a href="'.forum_link($forum_url['admin_forums']).'?del_forum='.$cur_forum['fid'].'">'.$lang_admin_forums['Delete'].'</a>') ?></span></legend>
 					<div class="mf-box">
 <?php ($hook = get_hook('afo_pre_edit_cur_forum_name')) ? eval($hook) : null; ?>
@@ -832,7 +832,7 @@
 ?>
 			</div>
 			<div class="frm-buttons">
-				<span class="submit"><input type="submit" name="update_positions" value="<?php echo $lang_admin_forums['Update positions'] ?>" /></span>
+				<span class="submit primary"><input type="submit" name="update_positions" value="<?php echo $lang_admin_forums['Update positions'] ?>" /></span>
 			</div>
 		</form>
 	</div>
diff -urN punbb-1.4.1/admin/groups.php punbb-1.4.2/admin/groups.php
--- punbb-1.4.1/admin/groups.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/admin/groups.php	2012-02-09 20:42:20.000000000 +0000
@@ -4,7 +4,7 @@
  *
  * Allows administrators to control group permissions.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -99,7 +99,7 @@
 	</div>
 	<div class="main-content main-frm">
 		<div id="req-msg" class="req-warn ct-box error-box">
-			<p class="important"><?php echo $lang_admin_common['Required warn']; ?></p>
+			<p class="important"><?php echo $lang_admin_common['Required warn'] ?></p>
 		</div>
 		<form class="frm-form" method="post" accept-charset="utf-8" action="<?php echo forum_link($forum_url['admin_groups']) ?>">
 			<div class="hidden">
@@ -304,7 +304,7 @@
 
 ?>
 			<div class="frm-buttons">
-				<span class="submit"><input type="submit" name="add_edit_group" value=" <?php echo $lang_admin_groups['Update group'] ?> " /></span>
+				<span class="submit primary"><input type="submit" name="add_edit_group" value=" <?php echo $lang_admin_groups['Update group'] ?> " /></span>
 			</div>
 		</form>
 	</div>
@@ -664,7 +664,7 @@
 			</fieldset>
 <?php ($hook = get_hook('agr_del_group_del_fieldset_end')) ? eval($hook) : null; ?>
 			<div class="frm-buttons">
-				<span class="submit"><input type="submit" name="del_group" value="<?php echo $lang_admin_groups['Remove group'] ?>" /></span>
+				<span class="submit primary"><input type="submit" name="del_group" value="<?php echo $lang_admin_groups['Remove group'] ?>" /></span>
 				<span class="cancel"><input type="submit" name="del_group_cancel" value="<?php echo $lang_admin_common['Cancel'] ?>" /></span>
 			</div>
 		</form>
@@ -743,7 +743,7 @@
 			</fieldset>
 <?php ($hook = get_hook('agr_add_group_fieldset_end')) ? eval($hook) : null; ?>
 			<div class="frm-buttons">
-				<span class="submit"><input type="submit" name="add_group" value="<?php echo $lang_admin_groups['Add group'] ?> " /></span>
+				<span class="submit primary"><input type="submit" name="add_group" value="<?php echo $lang_admin_groups['Add group'] ?> " /></span>
 			</div>
 		</form>
 	</div>
@@ -796,7 +796,7 @@
 			</fieldset>
 <?php ($hook = get_hook('agr_default_group_fieldset_end')) ? eval($hook) : null; ?>
 			<div class="frm-buttons">
-				<span class="submit"><input type="submit" name="set_default_group" value="<?php echo $lang_admin_groups['Set default'] ?>" /></span>
+				<span class="submit primary"><input type="submit" name="set_default_group" value="<?php echo $lang_admin_groups['Set default'] ?>" /></span>
 			</div>
 		</form>
 	</div>
@@ -846,7 +846,7 @@
 ?>
 			<div class="ct-set set<?php echo ++$forum_page['item_count'] ?>">
 				<div class="ct-box">
-					<h3 class="ct-legend hn"><span><?php echo forum_htmlencode($cur_group['g_title']) ?> <?php echo ($cur_group['g_id'] == $forum_config['o_default_user_group']) ? $lang_admin_groups['default'] : '' ?></span></h3>
+					<h3 class="ct-legend hn"><span><?php echo forum_htmlencode($cur_group['g_title']) ?> <?php if ($cur_group['g_id'] == $forum_config['o_default_user_group']) echo $lang_admin_groups['default']; ?></span></h3>
 					<p class="options"><?php echo implode(' ', $forum_page['group_options']) ?></p>
 				</div>
 			</div>
diff -urN punbb-1.4.1/admin/index.php punbb-1.4.2/admin/index.php
--- punbb-1.4.1/admin/index.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/admin/index.php	2012-02-09 20:42:20.000000000 +0000
@@ -4,7 +4,7 @@
  *
  * Gives an overview of some statistics to administrators and moderators.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -100,14 +100,9 @@
 $result = $forum_db->query_build($query) or error(__FILE__, __LINE__);
 $num_online = $forum_db->result($result);
 
-// Get the database system version
-$db_version = $forum_db->get_version();
-
 // Collect some additional info about MySQL
 if (in_array($db_type, array('mysql', 'mysqli', 'mysql_innodb', 'mysqli_innodb')))
 {
-	$db_version = 'MySQL '.$db_version;
-
 	// Calculate total db size/row count
 	$result = $forum_db->query('SHOW TABLE STATUS FROM `'.$db_name.'` LIKE \''.$db_prefix.'%\'') or error(__FILE__, __LINE__);
 
diff -urN punbb-1.4.1/admin/install.php punbb-1.4.2/admin/install.php
--- punbb-1.4.1/admin/install.php	2011-11-27 18:23:16.000000000 +0000
+++ punbb-1.4.2/admin/install.php	2012-02-09 20:42:20.000000000 +0000
@@ -4,13 +4,13 @@
  *
  * Used to actually install PunBB.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
 
 
-define('FORUM_VERSION', '1.4.1');
+define('FORUM_VERSION', '1.4.2');
 define('FORUM_DB_REVISION', 5);
 define('MIN_PHP_VERSION', '5.0.0');
 define('MIN_MYSQL_VERSION', '4.1.2');
@@ -64,6 +64,7 @@
 	$config_body .= "\n\n// Disable forum hooks (extensions) by removing // from the following line\n//define('FORUM_DISABLE_HOOKS', 1);";
 	$config_body .= "\n\n// Disable forum output buffering by removing // from the following line\n//define('FORUM_DISABLE_BUFFERING', 1);";
 	$config_body .= "\n\n// Disable forum async JS loader by removing // from the following line\n//define('FORUM_DISABLE_ASYNC_JS_LOADER', 1);";
+	$config_body .= "\n\n// Disable forum extensions version check by removing // from the following line\n//define('FORUM_DISABLE_EXTENSIONS_VERSION_CHECK', 1);";
 
 	return $config_body;
 }
@@ -142,9 +143,9 @@
 <!--[if IE 8 ]>    <html class="oldie ie8" lang="en" dir="ltr"> <![endif]-->
 <!--[if gt IE 8]><!--> <html lang="en" dir="ltr"> <!--<![endif]-->
 <head>
-	<meta charset="utf-8"/>
+	<meta charset="utf-8" />
 	<title>PunBB Installation</title>
-	<link rel="stylesheet" type="text/css" href="<?php echo FORUM_ROOT ?>style/Oxygen/min/Oxygen.min.css" />
+	<link rel="stylesheet" type="text/css" href="<?php echo FORUM_ROOT ?>style/Oxygen/Oxygen.min.css" />
 </head>
 <body>
 <div id="brd-install" class="brd-page">
@@ -187,7 +188,7 @@
 			</div>
 		</fieldset>
 		<div class="frm-buttons">
-			<span class="submit"><input type="submit" name="changelang" value="<?php echo $lang_install['Choose language'] ?>" /></span>
+			<span class="submit primary"><input type="submit" name="changelang" value="<?php echo $lang_install['Choose language'] ?>" /></span>
 		</div>
 	</div>
 	</form>
@@ -195,7 +196,7 @@
 
 	}
 
-?>	<form class="frm-form" method="post" accept-charset="utf-8" action="install.php">
+?>	<form class="frm-form frm-suggest-username" method="post" accept-charset="utf-8" action="install.php">
 	<div class="hidden">
 		<input type="hidden" name="form_sent" value="1" />
 	</div>
@@ -214,7 +215,7 @@
 			</ul>
 		</div>
 		<div id="req-msg" class="req-warn ct-box error-box">
-			<p class="important"><?php echo $lang_install['Required warn']; ?></p>
+			<p class="important"><?php echo $lang_install['Required warn'] ?></p>
 		</div>
 		<fieldset class="frm-group group1">
 			<legend class="group-legend"><strong><?php echo $lang_install['Part1 legend'] ?></strong></legend>
@@ -230,10 +231,10 @@
 ?>					</select></span>
 				</div>
 			</div>
-			<div class="sf-set set1">
+			<div class="sf-set set1" id="db_host_block">
 				<div class="sf-box text required">
-					<label for="fld2"><span><?php echo $lang_install['Database server'] ?></span> <small><?php echo $lang_install['Database server help'] ?></small></label><br />
-					<span class="fld-input"><input id="fld2" type="text" name="req_db_host" value="localhost" size="35" maxlength="100" required /></span>
+					<label for="db_host"><span><?php echo $lang_install['Database server'] ?></span> <small><?php echo $lang_install['Database server help'] ?></small></label><br />
+					<span class="fld-input"><input id="db_host" type="text" name="req_db_host" value="localhost" size="35" maxlength="100" required /></span>
 				</div>
 			</div>
 			<div class="sf-set set2">
@@ -272,22 +273,22 @@
 		</div>
 		<fieldset class="frm-group group1">
 			<legend class="group-legend"><strong><?php echo $lang_install['Part2 legend'] ?></strong></legend>
-			<div class="sf-set set1">
+			<div class="sf-set set4">
 				<div class="sf-box text required">
-					<label for="fld7"><span><?php echo $lang_install['Admin username'] ?></span> <small><?php echo $lang_install['Username help'] ?></small></label><br />
-					<span class="fld-input"><input id="fld7" type="text" name="req_username" size="35" maxlength="25" required /></span>
+					<label for="admin_email"><span><?php echo $lang_install['Admin e-mail'] ?></span> <small><?php echo $lang_install['E-mail address help'] ?></small></label><br />
+					<span class="fld-input"><input id="admin_email" type="email" data-suggest-role="email" name="req_email" size="35" maxlength="80" required /></span>
 				</div>
 			</div>
-			<div class="sf-set set2">
+			<div class="sf-set set1 prepend-top">
 				<div class="sf-box text required">
-					<label for="fld8"><span><?php echo $lang_install['Admin password'] ?></span> <small><?php echo $lang_install['Password help'] ?></small></label><br />
-					<span class="fld-input"><input id="fld8" type="text" name="req_password1" size="35" required autocomplete="off" /></span>
+					<label for="admin_username"><span><?php echo $lang_install['Admin username'] ?></span> <small><?php echo $lang_install['Username help'] ?></small></label><br />
+					<span class="fld-input"><input id="admin_username" type="text" data-suggest-role="username" name="req_username" size="35" maxlength="25" required /></span>
 				</div>
 			</div>
-			<div class="sf-set set4 prepend-top">
+			<div class="sf-set set2">
 				<div class="sf-box text required">
-					<label for="fld9"><span><?php echo $lang_install['Admin e-mail'] ?></span> <small><?php echo $lang_install['E-mail address help'] ?></small></label><br />
-					<span class="fld-input"><input id="fld9" type="email" name="req_email" size="35" maxlength="80" required /></span>
+					<label for="fld8"><span><?php echo $lang_install['Admin password'] ?></span> <small><?php echo $lang_install['Password help'] ?></small></label><br />
+					<span class="fld-input"><input id="fld8" type="text" name="req_password1" size="35" required autocomplete="off" /></span>
 				</div>
 			</div>
 		</fieldset>
@@ -334,7 +335,7 @@
 	{
 
 ?>			<div class="hidden">
-				<input type="hidden" name="req_language" value="<?php echo $languages[0]; ?>" />
+				<input type="hidden" name="req_language" value="<?php echo $languages[0] ?>" />
 			</div>
 <?php
 	}
@@ -1911,9 +1912,9 @@
 <!--[if IE 8 ]>    <html class="oldie ie8" lang="en" dir="ltr"> <![endif]-->
 <!--[if gt IE 8]><!--> <html lang="en" dir="ltr"> <!--<![endif]-->
 <head>
-	<meta charset="utf-8"/>
+	<meta charset="utf-8" />
 	<title>PunBB Installation</title>
-	<link rel="stylesheet" type="text/css" href="<?php echo FORUM_ROOT ?>style/Oxygen/min/Oxygen.min.css" />
+	<link rel="stylesheet" type="text/css" href="<?php echo FORUM_ROOT ?>style/Oxygen/Oxygen.min.css" />
 </head>
 <body>
 <div id="brd-install" class="brd-page">
@@ -1946,14 +1947,14 @@
 				<form class="frm-form" method="post" accept-charset="utf-8" action="install.php">
 					<div class="hidden">
 					<input type="hidden" name="generate_config" value="1" />
-					<input type="hidden" name="db_type" value="<?php echo $db_type; ?>" />
-					<input type="hidden" name="db_host" value="<?php echo $db_host; ?>" />
-					<input type="hidden" name="db_name" value="<?php echo forum_htmlencode($db_name); ?>" />
-					<input type="hidden" name="db_username" value="<?php echo forum_htmlencode($db_username); ?>" />
-					<input type="hidden" name="db_password" value="<?php echo forum_htmlencode($db_password); ?>" />
-					<input type="hidden" name="db_prefix" value="<?php echo forum_htmlencode($db_prefix); ?>" />
-					<input type="hidden" name="base_url" value="<?php echo forum_htmlencode($base_url); ?>" />
-					<input type="hidden" name="cookie_name" value="<?php echo forum_htmlencode($cookie_name); ?>" />
+					<input type="hidden" name="db_type" value="<?php echo $db_type ?>" />
+					<input type="hidden" name="db_host" value="<?php echo $db_host ?>" />
+					<input type="hidden" name="db_name" value="<?php echo forum_htmlencode($db_name) ?>" />
+					<input type="hidden" name="db_username" value="<?php echo forum_htmlencode($db_username) ?>" />
+					<input type="hidden" name="db_password" value="<?php echo forum_htmlencode($db_password) ?>" />
+					<input type="hidden" name="db_prefix" value="<?php echo forum_htmlencode($db_prefix) ?>" />
+					<input type="hidden" name="base_url" value="<?php echo forum_htmlencode($base_url) ?>" />
+					<input type="hidden" name="cookie_name" value="<?php echo forum_htmlencode($cookie_name) ?>" />
 					</div>
 					<div class="frm-buttons">
 						<span class="submit"><input type="submit" value="<?php echo $lang_install['Download config'] ?>" /></span>
diff -urN punbb-1.4.1/admin/prune.php punbb-1.4.2/admin/prune.php
--- punbb-1.4.1/admin/prune.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/admin/prune.php	2012-02-09 20:42:20.000000000 +0000
@@ -4,7 +4,7 @@
  *
  * Allows administrators to delete older topics from the site.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -152,7 +152,7 @@
 			</div>
 <?php ($hook = get_hook('apr_prune_comply_pre_buttons')) ? eval($hook) : null; ?>
 			<div class="frm-buttons">
-				<span class="submit"><input type="submit" name="prune_comply" value="<?php echo $lang_admin_prune['Prune topics'] ?>" /></span>
+				<span class="submit primary"><input type="submit" name="prune_comply" value="<?php echo $lang_admin_prune['Prune topics'] ?>" /></span>
 			</div>
 		</form>
 	</div>
@@ -205,7 +205,7 @@
 			<p class="important"><?php echo $lang_admin_prune['Prune caution'] ?></p>
 		</div>
 		<div id="req-msg" class="req-warn ct-box error-box">
-			<p class="important"><?php echo $lang_admin_common['Required warn']; ?></p>
+			<p class="important"><?php echo $lang_admin_common['Required warn'] ?></p>
 		</div>
 		<form class="frm-form" method="post" accept-charset="utf-8" action="<?php echo forum_link($forum_url['admin_prune']) ?>?action=foo">
 			<div class="hidden">
@@ -270,14 +270,14 @@
 				<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
 					<div class="sf-box checkbox">
 						<span class="fld-input"><input type="checkbox" id="fld<?php echo ++$forum_page['fld_count'] ?>" name="prune_sticky" value="1" checked="checked" /></span>
-						<label for="fld<?php echo $forum_page['fld_count'] ?>"><span><?php echo $lang_admin_prune['Prune sticky'] ?></span> <?php echo $lang_admin_prune['Prune sticky enable'] ?></label>
+						<label for="fld<?php echo $forum_page['fld_count'] ?>"><?php echo $lang_admin_prune['Prune sticky enable'] ?></label>
 					</div>
 				</div>
 <?php ($hook = get_hook('apr_pre_prune_fieldset_end')) ? eval($hook) : null; ?>
 			</fieldset>
 <?php ($hook = get_hook('apr_prune_fieldset_end')) ? eval($hook) : null; ?>
 			<div class="frm-buttons">
-				<span class="submit"><input type="submit" name="prune" value="<?php echo $lang_admin_prune['Prune topics'] ?>" /></span>
+				<span class="submit primary"><input type="submit" name="prune" value="<?php echo $lang_admin_prune['Prune topics'] ?>" /></span>
 			</div>
 		</form>
 	</div>
diff -urN punbb-1.4.1/admin/ranks.php punbb-1.4.2/admin/ranks.php
--- punbb-1.4.1/admin/ranks.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/admin/ranks.php	2012-02-09 20:42:20.000000000 +0000
@@ -4,7 +4,7 @@
  *
  * Allows administrators to control the tags given to posters based on their post count.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
diff -urN punbb-1.4.1/admin/reindex.php punbb-1.4.2/admin/reindex.php
--- punbb-1.4.1/admin/reindex.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/admin/reindex.php	2012-02-09 20:42:20.000000000 +0000
@@ -4,7 +4,7 @@
  *
  * Allows administrators to rebuild the index used to search the posts and topics.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -212,8 +212,10 @@
 		<h2 class="hn"><span><?php echo $lang_admin_reindex['Reindex heading'] ?></span></h2>
 	</div>
 	<div class="main-content main-frm">
-		<div class="ct-box">
+		<div class="ct-box warn-box">
 			<p><?php echo $lang_admin_reindex['Reindex info'] ?></p>
+			<p class="important"><?php echo $lang_admin_reindex['Reindex warning'] ?></p>
+			<p class="warn"><?php echo $lang_admin_reindex['Empty index warning'] ?></p>
 		</div>
 		<form class="frm-form" method="get" accept-charset="utf-8" action="<?php echo forum_link($forum_url['admin_reindex']) ?>">
 			<div class="hidden">
@@ -240,18 +242,14 @@
 				<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
 					<div class="sf-box checkbox">
 						<span class="fld-input"><input type="checkbox" id="fld<?php echo ++$forum_page['fld_count'] ?>" name="i_empty_index" value="1" checked="checked" /></span>
-						<label for="fld<?php echo $forum_page['fld_count'] ?>"><span><?php echo $lang_admin_reindex['Empty index'] ?></span> <?php echo $lang_admin_reindex['Empty index info'] ?></label>
+						<label for="fld<?php echo $forum_page['fld_count'] ?>"><?php echo $lang_admin_reindex['Empty index'] ?></label>
 					</div>
 				</div>
 <?php ($hook = get_hook('ari_pre_rebuild_fieldset_end')) ? eval($hook) : null; ?>
 			</fieldset>
 <?php ($hook = get_hook('ari_rebuild_fieldset_end')) ? eval($hook) : null; ?>
-			<div class="ct-box warn-box">
-				<p class="important"><?php echo $lang_admin_reindex['Reindex warning'] ?></p>
-				<p class="warn"><?php echo $lang_admin_reindex['Empty index warning'] ?></p>
-			</div>
 			<div class="frm-buttons">
-				<span class="submit"><input type="submit" name="rebuild_index" value="<?php echo $lang_admin_reindex['Rebuild index'] ?>" /></span>
+				<span class="submit primary"><input type="submit" name="rebuild_index" value="<?php echo $lang_admin_reindex['Rebuild index'] ?>" /></span>
 			</div>
 		</form>
 	</div>
diff -urN punbb-1.4.1/admin/reports.php punbb-1.4.2/admin/reports.php
--- punbb-1.4.1/admin/reports.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/admin/reports.php	2012-02-09 20:42:20.000000000 +0000
@@ -4,7 +4,7 @@
  *
  * Allows administrators and moderators to handle reported posts.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -134,7 +134,7 @@
 		$forum = ($cur_report['forum_name'] != '') ? '<a href="'.forum_link($forum_url['forum'], array($cur_report['forum_id'], sef_friendly($cur_report['forum_name']))).'">'.forum_htmlencode($cur_report['forum_name']).'</a>' : $lang_admin_reports['Deleted forum'];
 		$topic = ($cur_report['subject'] != '') ? '<a href="'.forum_link($forum_url['topic'], array($cur_report['topic_id'], sef_friendly($cur_report['subject']))).'">'.forum_htmlencode($cur_report['subject']).'</a>' : $lang_admin_reports['Deleted topic'];
 		$message = str_replace("\n", '<br />', forum_htmlencode($cur_report['message']));
-		$post_id = ($cur_report['pid'] != '') ? '<a href="'.forum_link($forum_url['post'], $cur_report['pid']).'">Post #'.$cur_report['pid'].'</a>' : $lang_admin_reports['Deleted post'];
+		$post_id = ($cur_report['pid'] != '') ? '<a href="'.forum_link($forum_url['post'], $cur_report['pid']).'">'.sprintf($lang_admin_reports['Post'], $cur_report['pid']).'</a>' : $lang_admin_reports['Deleted post'];
 
 		($hook = get_hook('arp_new_report_pre_display')) ? eval($hook) : null;
 
@@ -155,7 +155,7 @@
 ?>
 			<div class="frm-buttons">
 				<span class="select-all js_link" data-check-form="arp-new-report-form"><?php echo $lang_admin_common['Select all'] ?></span>
-				<span class="submit"><input type="submit" name="mark_as_read" value="<?php echo $lang_admin_reports['Mark read'] ?>" /></span>
+				<span class="submit primary"><input type="submit" name="mark_as_read" value="<?php echo $lang_admin_reports['Mark read'] ?>" /></span>
 			</div>
 		</form>
 	</div>
@@ -224,7 +224,7 @@
 		$forum = ($cur_report['forum_name'] != '') ? '<a href="'.forum_link($forum_url['forum'], array($cur_report['forum_id'], sef_friendly($cur_report['forum_name']))).'">'.forum_htmlencode($cur_report['forum_name']).'</a>' : $lang_admin_reports['Deleted forum'];
 		$topic = ($cur_report['subject'] != '') ? '<a href="'.forum_link($forum_url['topic'], array($cur_report['topic_id'], sef_friendly($cur_report['subject']))).'">'.forum_htmlencode($cur_report['subject']).'</a>' : $lang_admin_reports['Deleted topic'];
 		$message = str_replace("\n", '<br />', forum_htmlencode($cur_report['message']));
-		$post_id = ($cur_report['pid'] != '') ? '<a href="'.forum_link($forum_url['post'], $cur_report['pid']).'">Post #'.$cur_report['pid'].'</a>' : $lang_admin_reports['Deleted post'];
+		$post_id = ($cur_report['pid'] != '') ? '<a href="'.forum_link($forum_url['post'], $cur_report['pid']).'">'.sprintf($lang_admin_reports['Post'], $cur_report['pid']).'</a>' : $lang_admin_reports['Deleted post'];
 		$zapped_by = ($cur_report['zapped_by'] != '') ? '<a href="'.forum_link($forum_url['user'], $cur_report['zapped_by_id']).'">'.forum_htmlencode($cur_report['zapped_by']).'</a>' : $lang_admin_reports['Deleted user'];
 
 		($hook = get_hook('arp_report_pre_display')) ? eval($hook) : null;
diff -urN punbb-1.4.1/admin/settings.php punbb-1.4.2/admin/settings.php
--- punbb-1.4.1/admin/settings.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/admin/settings.php	2012-02-09 20:42:20.000000000 +0000
@@ -4,7 +4,7 @@
  *
  * Allows administrators to control many of the settings used in the site.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -434,7 +434,7 @@
 <?php ($hook = get_hook('aop_setup_pre_default_dst')) ? eval($hook) : null; ?>
 					<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
 						<div class="sf-box checkbox">
-							<span class="fld-input"><input type="checkbox" id="fld<?php echo ++$forum_page['fld_count'] ?>" name="form[default_dst]" value="1" <?php if ($forum_config['o_default_dst'] == 1) echo 'checked="checked" ' ?>/></span>
+							<span class="fld-input"><input type="checkbox" id="fld<?php echo ++$forum_page['fld_count'] ?>" name="form[default_dst]" value="1"<?php if ($forum_config['o_default_dst'] == 1) echo ' checked="checked"' ?> /></span>
 							<label for="fld<?php echo $forum_page['fld_count'] ?>"><?php echo $lang_admin_settings['DST label'] ?></label>
 						</div>
 					</div>
@@ -629,7 +629,7 @@
 				</fieldset>
 <?php ($hook = get_hook('aop_setup_links_fieldset_end')) ? eval($hook) : null; ?>
 			<div class="frm-buttons">
-				<span class="submit"><input type="submit" name="save" value="<?php echo $lang_admin_common['Save changes'] ?>" /></span>
+				<span class="submit primary"><input type="submit" name="save" value="<?php echo $lang_admin_common['Save changes'] ?>" /></span>
 			</div>
 		</form>
 	</div>
@@ -1065,7 +1065,7 @@
 			</fieldset>
 <?php ($hook = get_hook('aop_features_gzip_fieldset_end')) ? eval($hook) : null; ?>
 			<div class="frm-buttons">
-				<span class="submit"><input type="submit" name="save" value="<?php echo $lang_admin_common['Save changes'] ?>" /></span>
+				<span class="submit primary"><input type="submit" name="save" value="<?php echo $lang_admin_common['Save changes'] ?>" /></span>
 			</div>
 		</form>
 	</div>
@@ -1134,7 +1134,7 @@
 			</fieldset>
 <?php ($hook = get_hook('aop_announcements_announcement_fieldset_end')) ? eval($hook) : null; ?>
 			<div class="frm-buttons">
-				<span class="submit"><input type="submit" name="save" value="<?php echo $lang_admin_common['Save changes'] ?>" /></span>
+				<span class="submit primary"><input type="submit" name="save" value="<?php echo $lang_admin_common['Save changes'] ?>" /></span>
 			</div>
 		</form>
 	</div>
@@ -1274,7 +1274,7 @@
 				</fieldset>
 <?php ($hook = get_hook('aop_registration_rules_fieldset_end')) ? eval($hook) : null; ?>
 				<div class="frm-buttons">
-					<span class="submit"><input type="submit" name="save" value="<?php echo $lang_admin_common['Save changes'] ?>" /></span>
+					<span class="submit primary"><input type="submit" name="save" value="<?php echo $lang_admin_common['Save changes'] ?>" /></span>
 				</div>
 		</form>
 	</div>
@@ -1327,7 +1327,7 @@
 				<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
 					<div class="sf-box checkbox">
 						<span class="fld-input"><input type="checkbox" id="fld<?php echo ++$forum_page['fld_count'] ?>" name="form[maintenance]" value="1"<?php if ($forum_config['o_maintenance'] == '1') echo ' checked="checked"' ?> /></span>
-						<label for="fld<?php echo $forum_page['fld_count'] ?>"><span><?php echo $lang_admin_settings['Maintenance mode'] ?></span> <?php echo $lang_admin_settings['Maintenance mode label'] ?></label>
+						<label for="fld<?php echo $forum_page['fld_count'] ?>"><?php echo $lang_admin_settings['Maintenance mode label'] ?></label>
 					</div>
 				</div>
 <?php ($hook = get_hook('aop_maintenance_pre_maintenance_message')) ? eval($hook) : null; ?>
@@ -1341,7 +1341,7 @@
 			</fieldset>
 <?php ($hook = get_hook('aop_maintenance_maintenance_fieldset_end')) ? eval($hook) : null; ?>
 			<div class="frm-buttons">
-				<span class="submit"><input type="submit" name="save" value="<?php echo $lang_admin_common['Save changes'] ?>" /></span>
+				<span class="submit primary"><input type="submit" name="save" value="<?php echo $lang_admin_common['Save changes'] ?>" /></span>
 			</div>
 		</form>
 	</div>
@@ -1458,7 +1458,7 @@
 				</fieldset>
 <?php ($hook = get_hook('aop_email_smtp_fieldset_end')) ? eval($hook) : null; ?>
 			<div class="frm-buttons">
-				<span class="submit"><input type="submit" name="save" value="<?php echo $lang_admin_common['Save changes'] ?>" /></span>
+				<span class="submit primary"><input type="submit" name="save" value="<?php echo $lang_admin_common['Save changes'] ?>" /></span>
 			</div>
 		</form>
 	</div>
diff -urN punbb-1.4.1/admin/users.php punbb-1.4.2/admin/users.php
--- punbb-1.4.1/admin/users.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/admin/users.php	2012-02-09 20:42:20.000000000 +0000
@@ -4,7 +4,7 @@
  *
  * Allows administrators or moderators to search the existing users based on various criteria.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -451,6 +451,14 @@
 				delete_user($id, isset($_POST['delete_posts']));
 		}
 
+		// Remove cache file with forum stats
+		if (!defined('FORUM_CACHE_FUNCTIONS_LOADED'))
+		{
+			require FORUM_ROOT.'include/cache.php';
+		}
+
+		clean_stats_cache();
+
 		($hook = get_hook('aus_delete_users_pre_redirect')) ? eval($hook) : null;
 
 		redirect(forum_link($forum_url['admin_users']), $lang_admin_users['Users deleted']);
@@ -502,7 +510,7 @@
 				</div>
 			</fieldset>
 			<div class="frm-buttons">
-				<span class="submit primary"><input type="submit" name="delete_users_comply" value="<?php echo $lang_admin_users['Delete users'] ?>" /></span>
+				<span class="submit primary caution"><input type="submit" name="delete_users_comply" value="<?php echo $lang_admin_users['Delete users'] ?>" /></span>
 				<span class="cancel"><input type="submit" name="delete_users_cancel" value="<?php echo $lang_admin_common['Cancel'] ?>" /></span>
 			</div>
 		</form>
@@ -674,7 +682,7 @@
 				</div>
 			</fieldset>
 			<div class="frm-buttons">
-				<span class="submit"><input type="submit" name="ban_users_comply" value="<?php echo $lang_admin_users['Ban'] ?>" /></span>
+				<span class="submit primary"><input type="submit" name="ban_users_comply" value="<?php echo $lang_admin_users['Ban'] ?>" /></span>
 			</div>
 		</form>
 	</div>
@@ -1410,7 +1418,7 @@
 			</fieldset>
 <?php ($hook = get_hook('aus_search_form_results_fieldset_end')) ? eval($hook) : null; ?>
 			<div class="frm-buttons">
-				<span class="submit"><input type="submit" name="find_user" value="<?php echo $lang_admin_users['Submit search'] ?>" /></span>
+				<span class="submit primary"><input type="submit" name="find_user" value="<?php echo $lang_admin_users['Submit search'] ?>" /></span>
 			</div>
 		</form>
 	</div>
@@ -1440,7 +1448,7 @@
 			</fieldset>
 <?php ($hook = get_hook('aus_search_form_ip_search_fieldset_end')) ? eval($hook) : null; ?>
 			<div class="frm-buttons">
-				<span class="submit"><input type="submit" value=" <?php echo $lang_admin_users['Submit search'] ?> " /></span>
+				<span class="submit primary"><input type="submit" value=" <?php echo $lang_admin_users['Submit search'] ?> " /></span>
 			</div>
 		</form>
 	</div>
diff -urN punbb-1.4.1/ChangeLog punbb-1.4.2/ChangeLog
--- punbb-1.4.1/ChangeLog	2011-11-27 18:47:43.000000000 +0000
+++ punbb-1.4.2/ChangeLog	2012-02-09 20:42:20.000000000 +0000
@@ -1,3 +1,23 @@
+PunBB 1.4.2
+2012-02-09 20:36:00
+====================
+
+ * Oxygen style is updated.
+ * Errors are translatable.
+ * The link from the last part of breadcrumbs is removed.
+ * "Last edited message" is moved to the post header.
+ * Flash messages is automatically disabled in the case of a redirect with delay > 0.
+ * Fixed non-updated info block of the last registered user.
+ * Fixed redirect of a post to the previous one after its deleting. Fix #53.
+ * Fixed upload of avatars in open_basedir cases.
+ * Fixed censoring functions. Thanks to Gargaj for helping.
+ * Fixed all known "Full-path disclosure" errors.
+ * Fixed extension of  an updated subsystem - broken in 1.4.0.
+ * Fixed broken update in SQLite.
+ * Auto-suggest username from the email inserted in the registration form.
+ * New function to start a session - forum_session_start().
+
+
 PunBB 1.4.1
 2011-10-27 20:29:00
 ====================
diff -urN punbb-1.4.1/delete.php punbb-1.4.2/delete.php
--- punbb-1.4.1/delete.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/delete.php	2012-02-09 20:42:20.000000000 +0000
@@ -4,7 +4,7 @@
  *
  * Deletes the specified post (and, if necessary, the topic it is in).
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -102,11 +102,31 @@
 		// Delete just this one post
 		delete_post($id, $cur_post['tid'], $cur_post['fid']);
 
+		// Fetch previus post #id in some topic for redirect after delete
+		$query = array(
+			'SELECT'	=> 'p.id',
+			'FROM'		=> 'posts AS p',
+			'WHERE'		=> 'p.topic_id = '.$cur_post['tid'].' AND p.id < '.$id,
+			'ORDER BY'	=> 'p.id DESC',
+			'LIMIT'		=> '1'
+		);
+
+		($hook = get_hook('dl_post_deleted_get_prev_post_id')) ? eval($hook) : null;
+		$result = $forum_db->query_build($query) or error(__FILE__, __LINE__);
+		$prev_post = $forum_db->fetch_assoc($result);
+
 		$forum_flash->add_info($lang_delete['Post del redirect']);
 
 		($hook = get_hook('dl_post_deleted_pre_redirect')) ? eval($hook) : null;
 
-		redirect(forum_link($forum_url['topic'], array($cur_post['tid'], sef_friendly($cur_post['subject']))), $lang_delete['Post del redirect']);
+		if (isset($prev_post['id']))
+		{
+			redirect(forum_link($forum_url['post'], $prev_post['id']), $lang_delete['Post del redirect']);
+		}
+		else
+		{
+			redirect(forum_link($forum_url['topic'], array($cur_post['tid'], sef_friendly($cur_post['subject']))), $lang_delete['Post del redirect']);
+		}
 	}
 }
 
@@ -128,8 +148,7 @@
 // Setup form information
 $forum_page['frm_info'] = array(
 	'<li><span>'.$lang_delete['Forum'].':<strong> '.forum_htmlencode($cur_post['forum_name']).'</strong></span></li>',
-	'<li><span>'.$lang_delete['Topic'].':<strong> '.forum_htmlencode($cur_post['subject']).'</strong></span></li>',
-	'<li><span>'.sprintf((($cur_post['is_topic']) ? $lang_delete['Delete topic info'] : $lang_delete['Delete post info']), forum_htmlencode($cur_post['poster']), format_time($cur_post['posted'])).'</span></li>'
+	'<li><span>'.$lang_delete['Topic'].':<strong> '.forum_htmlencode($cur_post['subject']).'</strong></span></li>'
 );
 
 // Generate the post heading
@@ -206,7 +225,7 @@
 			</fieldset>
 <?php ($hook = get_hook('dl_confirm_delete_fieldset_end')) ? eval($hook) : null; ?>
 			<div class="frm-buttons">
-				<span class="submit primary"><input type="submit" name="delete" value="<?php echo ($cur_post['is_topic']) ? $lang_delete['Delete topic'] : $lang_delete['Delete post'] ?>" /></span>
+				<span class="submit primary caution"><input type="submit" name="delete" value="<?php echo ($cur_post['is_topic']) ? $lang_delete['Delete topic'] : $lang_delete['Delete post'] ?>" /></span>
 				<span class="cancel"><input type="submit" name="cancel" value="<?php echo $lang_common['Cancel'] ?>" formnovalidate /></span>
 			</div>
 		</form>
diff -urN punbb-1.4.1/edit.php punbb-1.4.2/edit.php
--- punbb-1.4.1/edit.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/edit.php	2012-02-09 20:42:20.000000000 +0000
@@ -4,7 +4,7 @@
  *
  * Modifies the contents of the specified post.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -284,7 +284,7 @@
 
 ?>
 		<div id="req-msg" class="req-warn ct-box error-box">
-			<p class="important"><?php echo $lang_common['Required warn']; ?></p>
+			<p class="important"><?php echo $lang_common['Required warn'] ?></p>
 		</div>
 		<form id="afocus" class="frm-form frm-ctrl-submit" method="post" accept-charset="utf-8" action="<?php echo $forum_page['form_action'] ?>"<?php if (!empty($forum_page['form_attributes'])) echo ' '.implode(' ', $forum_page['form_attributes']) ?>>
 			<div class="hidden">
@@ -303,7 +303,7 @@
 <?php endif; ($hook = get_hook('ed_pre_message_box')) ? eval($hook) : null; ?>				<div class="txt-set set<?php echo ++$forum_page['item_count'] ?>">
 					<div class="txt-box textarea required">
 						<label for="fld<?php echo ++ $forum_page['fld_count'] ?>"><span><?php echo $lang_post['Write message'] ?></span></label>
-						<div class="txt-input"><span class="fld-input"><textarea id="fld<?php echo $forum_page['fld_count'] ?>" name="req_message" rows="14" cols="95" required spellcheck="true"><?php echo forum_htmlencode(isset($_POST['req_message']) ? $message : $cur_post['message']) ?></textarea></span></div>
+						<div class="txt-input"><span class="fld-input"><textarea id="fld<?php echo $forum_page['fld_count'] ?>" name="req_message" rows="15" cols="95" required spellcheck="true"><?php echo forum_htmlencode(isset($_POST['req_message']) ? $message : $cur_post['message']) ?></textarea></span></div>
 					</div>
 				</div>
 <?php
@@ -333,7 +333,7 @@
 ?>
 				<fieldset class="mf-set set<?php echo ++$forum_page['item_count'] ?>">
 					<div class="mf-box checkbox">
-						<?php echo implode("\n\t\t\t\t\t", $forum_page['checkboxes'])."\n"; ?>
+						<?php echo implode("\n\t\t\t\t\t", $forum_page['checkboxes'])."\n" ?>
 					</div>
 <?php ($hook = get_hook('ed_pre_checkbox_fieldset_end')) ? eval($hook) : null; ?>
 				</fieldset>
diff -urN punbb-1.4.1/extern.php punbb-1.4.2/extern.php
--- punbb-1.4.1/extern.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/extern.php	2012-02-09 20:42:20.000000000 +0000
@@ -5,57 +5,54 @@
  * Allows forum content to be syndicated outside of the site in various formats
  * (ie: RSS, Atom, XML, HTML).
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
 
 /***********************************************************************
 
-  INSTRUCTIONS
+	INSTRUCTIONS
 
-  This script is used to include information about your board from
-  pages outside the forums and to syndicate news about recent
-  discussions via RSS/Atom/XML. The script can display a list of
-  recent discussions, a list of active users or a collection of
-  general board statistics. The script can be called directly via
-  an URL, from a PHP include command or through the use of Server
-  Side Includes (SSI).
-
-  The scripts behaviour is controlled via variables supplied in the
-  URL to the script. The different variables are: action (what to
-  do), show (how many items to display), fid (the ID or ID's of
-  the forum(s) to poll for topics), nfid (the ID or ID's of forums
-  that should be excluded), tid (the ID of the topic from which to
-  display posts) and type (output as HTML or RSS). The only
-  mandatory variable is action. Possible/default values are:
-
-    action: feed - show most recent topics/posts (HTML or RSS)
-            online - show users online (HTML)
-            online_full - as above, but includes a full list (HTML)
-            stats - show board statistics (HTML)
-
-    type:   rss - output as RSS 2.0
-            atom - output as Atom 1.0
-            xml - output as XML
-            html - output as HTML (<li>'s)
-
-    fid:    One or more forum ID's (comma-separated). If ignored,
-            topics from all readable forums will be pulled.
-
-    nfid:   One or more forum ID's (comma-separated) that are to be
-            excluded. E.g. the ID of a a test forum.
-
-    tid:    A topic ID from which to show posts. If a tid is supplied,
-            fid and nfid are ignored.
-
-    show:   Any integer value between 1 and 50. The default is 15.
-
-    sort:	posted - sort topics by posted time (default)
-			last_post - sort topics by last post
+	This script is used to include information about your board from
+	pages outside the forums and to syndicate news about recent
+	discussions via RSS/Atom/XML. The script can display a list of
+	recent discussions, a list of active users or a collection of
+	general board statistics. The script can be called directly via
+	an URL, from a PHP include command or through the use of Server
+	Side Includes (SSI).
+
+	The scripts behaviour is controlled via variables supplied in the
+	URL to the script. The different variables are: action (what to
+	do), show (how many items to display), fid (the ID or ID's of
+	the forum(s) to poll for topics), nfid (the ID or ID's of forums
+	that should be excluded), tid (the ID of the topic from which to
+	display posts) and type (output as HTML or RSS). The only
+	mandatory variable is action. Possible/default values are:
+
+		action: feed - show most recent topics/posts (HTML or RSS)
+				online - show users online (HTML)
+				online_full - as above, but includes a full list (HTML)
+				stats - show board statistics (HTML)
+
+		type:   rss - output as RSS 2.0
+				atom - output as Atom 1.0
+				xml - output as XML
+				html - output as HTML (<li>'s)
+
+		fid:    One or more forum ID's (comma-separated). If ignored,
+				topics from all readable forums will be pulled.
+
+		nfid:   One or more forum ID's (comma-separated) that are to be
+				excluded. E.g. the ID of a a test forum.
 
+		tid:    A topic ID from which to show posts. If a tid is supplied,
+				fid and nfid are ignored.
 
+		show:   Any integer value between 1 and 50. The default is 15.
 
+		sort:	posted - sort topics by posted time (default)
+				last_post - sort topics by last post
 
 /***********************************************************************/
 
@@ -69,7 +66,7 @@
 
 // The length at which topic subjects will be truncated (for HTML output)
 if (!defined('FORUM_EXTERN_MAX_SUBJECT_LENGTH'))
-    define('FORUM_EXTERN_MAX_SUBJECT_LENGTH', 30);
+	define('FORUM_EXTERN_MAX_SUBJECT_LENGTH', 30);
 
 // If we're a guest and we've sent a username/pass, we can try to authenticate using those details
 if ($forum_user['is_guest'] && isset($_SERVER['PHP_AUTH_USER']))
@@ -165,7 +162,7 @@
 	echo '<feed xmlns="http://www.w3.org/2005/Atom">'."\n";
 
 	echo "\t".'<title type="html"><![CDATA['.escape_cdata($feed['title']).']]></title>'."\n";
-	echo "\t".'<link rel="self" href="'.forum_htmlencode(get_current_url()).'"/>'."\n";
+	echo "\t".'<link rel="self" href="'.forum_htmlencode(get_current_url()).'" />'."\n";
 	echo "\t".'<updated>'.gmdate('Y-m-d\TH:i:s\Z', count($feed['items']) ? $feed['items'][0]['pubdate'] : time()).'</updated>'."\n";
 
 	if ($forum_config['o_show_version'] == '1')
@@ -183,7 +180,7 @@
 	{
 		echo "\t\t".'<entry>'."\n";
 		echo "\t\t\t".'<title type="html"><![CDATA['.escape_cdata($item['title']).']]></title>'."\n";
-		echo "\t\t\t".'<link rel="alternate" href="'.$item['link'].'"/>'."\n";
+		echo "\t\t\t".'<link rel="alternate" href="'.$item['link'].'" />'."\n";
 		echo "\t\t\t".'<'.$content_tag.' type="html"><![CDATA['.escape_cdata($item['description']).']]></'.$content_tag.'>'."\n";
 		echo "\t\t\t".'<author>'."\n";
 		echo "\t\t\t\t".'<name><![CDATA['.escape_cdata($item['author']['name']).']]></name>'."\n";
@@ -327,7 +324,7 @@
 
 		// Setup the feed
 		$feed = array(
-			'title' 		=>	$forum_config['o_board_title'].$lang_common['Title separator'].$cur_topic['subject'],
+			'title'		=>	$forum_config['o_board_title'].$lang_common['Title separator'].$cur_topic['subject'],
 			'link'			=>	forum_link($forum_url['topic'], array($tid, sef_friendly($cur_topic['subject']))),
 			'description'	=>	sprintf($lang_common['RSS description topic'], $cur_topic['subject']),
 			'items'			=>	array(),
@@ -439,7 +436,7 @@
 
 		// Setup the feed
 		$feed = array(
-			'title' 		=>	$forum_config['o_board_title'].$forum_name,
+			'title'			=>	$forum_config['o_board_title'].$forum_name,
 			'link'			=>	forum_link($forum_url['index']),
 			'description'	=>	sprintf($lang_common['RSS description'], $forum_config['o_board_title']),
 			'items'			=>	array(),
diff -urN punbb-1.4.1/footer.php punbb-1.4.2/footer.php
--- punbb-1.4.1/footer.php	2011-11-27 18:23:16.000000000 +0000
+++ punbb-1.4.2/footer.php	2012-02-09 20:42:20.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Outputs the footer used by most forum pages.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -60,8 +60,28 @@
 	if (defined('FORUM_DEBUG'))
 	{
 		// Calculate script generation time
-		$time_diff = forum_number_format(forum_microtime() - $forum_start, 3);
-		echo '<p id="querytime" class="quiet">'.sprintf($lang_common['Querytime'], $time_diff, forum_number_format($forum_db->get_num_queries())).'</p>'."\n";
+		$time_diff = forum_microtime() - $forum_start;
+		$query_time_total = $time_percent_db = 0.0;
+
+		$saved_queries = $forum_db->get_saved_queries();
+		if (count($saved_queries) > 0)
+		{
+			foreach ($saved_queries as $cur_query)
+			{
+				$query_time_total += $cur_query[1];
+			}
+
+			if ($query_time_total > 0 && $time_diff > 0)
+			{
+				$time_percent_db = ($query_time_total / $time_diff) * 100;
+			}
+		}
+
+		echo '<p id="querytime" class="quiet">'.sprintf($lang_common['Querytime'],
+			forum_number_format($time_diff, 3),
+			forum_number_format(100 - $time_percent_db, 0),
+			forum_number_format($time_percent_db, 0),
+			forum_number_format($forum_db->get_num_queries())).'</p>'."\n";
 	}
 
 	if (defined('FORUM_SHOW_QUERIES'))
diff -urN punbb-1.4.1/header.php punbb-1.4.2/header.php
--- punbb-1.4.1/header.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/header.php	2012-02-09 20:42:20.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Outputs the header used by most forum pages.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -54,7 +54,7 @@
 while (preg_match('#<!-- ?forum_include "([^/\\\\]*?)" ?-->#', $tpl_main, $cur_include))
 {
 	if (!file_exists(FORUM_ROOT.'include/user/'.$cur_include[1]))
-		error('Unable to process user include &lt;!-- forum_include "'.forum_htmlencode($cur_include[1]).'" --&gt; from template main.tpl.<br/>There is no such file in folder /include/user/', __FILE__, __LINE__);
+		error('Unable to process user include &lt;!-- forum_include "'.forum_htmlencode($cur_include[1]).'" --&gt; from template main.tpl.<br />There is no such file in folder /include/user/', __FILE__, __LINE__);
 
 	ob_start();
 	include FORUM_ROOT.'include/user/'.$cur_include[1];
@@ -98,7 +98,7 @@
 else if (FORUM_PAGE == 'viewtopic')
 {
 	$forum_head['rss'] = '<link rel="alternate" type="application/rss+xml" href="'.forum_link($forum_url['topic_rss'], $id).'" title="RSS" />';
-	$forum_head['atom'] =  '<link rel="alternate" type="application/atom+xml" href="'.forum_link($forum_url['topic_atom'], $id).'" title="ATOM" />';
+	$forum_head['atom'] = '<link rel="alternate" type="application/atom+xml" href="'.forum_link($forum_url['topic_atom'], $id).'" title="ATOM" />';
 }
 
 // If there are other page navigation links (first, next, prev and last)
@@ -229,7 +229,7 @@
 	$result_header = $forum_db->query_build($query) or error(__FILE__, __LINE__);
 
 	if ($forum_db->result($result_header))
-		$admod_links['reports'] = '<span id="reports"><a href="'.forum_link($forum_url['admin_reports']).'">'.$lang_common['New reports'].'</a></span>';
+		$admod_links['reports'] = '<li id="reports"><a href="'.forum_link($forum_url['admin_reports']).'">'.$lang_common['New reports'].'</a></li>';
 }
 
 if ($forum_user['g_id'] == FORUM_ADMIN)
@@ -258,12 +258,12 @@
 		$alert_items['newer_database'] = '<p><strong>'.$lang_common['Database mismatch'].'</strong> '.$lang_common['Database mismatch alert'].'</p>';
 
 	if (!empty($alert_items))
-		$admod_links['alert'] = '<span id="alert"><a href="'.forum_link($forum_url['admin_index']).'"><strong>'.$lang_common['New alerts'].'</strong></a></span>';
+		$admod_links['alert'] = '<li id="alert"><a href="'.forum_link($forum_url['admin_index']).'">'.$lang_common['New alerts'].'</a></li>';
 
 	($hook = get_hook('hd_alert')) ? eval($hook) : null;
 }
 
-$tpl_main = str_replace('<!-- forum_admod -->', (!empty($admod_links)) ? '<p id="brd-admod">'.implode(' ', $admod_links).'</p>' : '', $tpl_main);
+$tpl_main = str_replace('<!-- forum_admod -->', (!empty($admod_links)) ? '<ul id="brd-admod">'.implode(' ', $admod_links).'</ul>' : '', $tpl_main);
 
 // END SUBST - <!-- forum_admod -->
 
@@ -277,7 +277,7 @@
 // Bottom breadcrumbs
 $main_elements['<!-- forum_crumbs_end -->'] = (FORUM_PAGE != 'index') ? '<div id="brd-crumbs-end" class="crumbs">'."\n\t".'<p>'.generate_crumbs(false).'</p>'."\n".'</div>' : '';
 // Main section heading
-$main_elements['<!-- forum_main_title -->'] =  '<h1 class="main-title">'.((isset($forum_page['main_title'])) ? $forum_page['main_title'] : forum_htmlencode(is_array($last_crumb = end($forum_page['crumbs'])) ? reset($last_crumb) : $last_crumb)).(isset($forum_page['main_head_pages']) ? ' <small>'.$forum_page['main_head_pages'].'</small>' : '').'</h1>'."\n";
+$main_elements['<!-- forum_main_title -->'] = '<h1 class="main-title">'.((isset($forum_page['main_title'])) ? $forum_page['main_title'] : forum_htmlencode(is_array($last_crumb = end($forum_page['crumbs'])) ? reset($last_crumb) : $last_crumb)).(isset($forum_page['main_head_pages']) ? ' <small>'.$forum_page['main_head_pages'].'</small>' : '').'</h1>'."\n";
 
 // Top pagination and post links
 $main_elements['<!-- forum_main_pagepost_top -->'] = (!empty($forum_page['page_post'])) ? '<div id="brd-pagepost-top" class="main-pagepost gen-content">'."\n\t".implode("\n\t", $forum_page['page_post'])."\n".'</div>' : '';
@@ -299,7 +299,7 @@
 
 ($hook = get_hook('hd_main_elements')) ? eval($hook) : null;
 
-$tpl_main = str_replace(array_keys($main_elements),  array_values($main_elements), $tpl_main);
+$tpl_main = str_replace(array_keys($main_elements), array_values($main_elements), $tpl_main);
 unset($main_elements);
 
 // END MAIN SECTION INTERFACE ELEMENT SUBSTITUTION
diff -urN punbb-1.4.1/help.php punbb-1.4.2/help.php
--- punbb-1.4.1/help.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/help.php	2012-02-09 20:42:20.000000000 +0000
@@ -4,7 +4,7 @@
  *
  * Provides examples of how to use various features of the forum (ie: BBCode, smilies).
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
diff -urN punbb-1.4.1/include/cache.php punbb-1.4.2/include/cache.php
--- punbb-1.4.1/include/cache.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/include/cache.php	2012-02-09 20:42:20.000000000 +0000
@@ -4,7 +4,7 @@
  *
  * This file contains all of the functions used to generate the cache files used by the site.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -79,7 +79,7 @@
 	// Output config as PHP code
 	if (!write_cache_file(FORUM_CACHE_DIR.'cache_config.php', '<?php'."\n\n".'define(\'FORUM_CONFIG_LOADED\', 1);'."\n\n".'$forum_config = '.var_export($output, true).';'."\n\n".'?>'))
 	{
-		error('Unable to write configuration cache file to cache directory.<br/>Please make sure PHP has write access to the directory \'cache\'.', __FILE__, __LINE__);
+		error('Unable to write configuration cache file to cache directory.<br />Please make sure PHP has write access to the directory \'cache\'.', __FILE__, __LINE__);
 	}
 }
 
@@ -118,7 +118,7 @@
 	// Output ban list as PHP code
 	if (!write_cache_file(FORUM_CACHE_DIR.'cache_bans.php', '<?php'."\n\n".'define(\'FORUM_BANS_LOADED\', 1);'."\n\n".'$forum_bans = '.var_export($output, true).';'."\n\n".'?>'))
 	{
-		error('Unable to write bans cache file to cache directory.<br/>Please make sure PHP has write access to the directory \'cache\'.', __FILE__, __LINE__);
+		error('Unable to write bans cache file to cache directory.<br />Please make sure PHP has write access to the directory \'cache\'.', __FILE__, __LINE__);
 	}
 }
 
@@ -151,7 +151,7 @@
 	// Output ranks list as PHP code
 	if (!write_cache_file(FORUM_CACHE_DIR.'cache_ranks.php', '<?php'."\n\n".'define(\'FORUM_RANKS_LOADED\', 1);'."\n\n".'$forum_ranks = '.var_export($output, true).';'."\n\n".'?>'))
 	{
-		error('Unable to write ranks cache file to cache directory.<br/>Please make sure PHP has write access to the directory \'cache\'.', __FILE__, __LINE__);
+		error('Unable to write ranks cache file to cache directory.<br />Please make sure PHP has write access to the directory \'cache\'.', __FILE__, __LINE__);
 	}
 }
 
@@ -212,13 +212,25 @@
 	// Output ranks list as PHP code
 	if (!write_cache_file(FORUM_CACHE_DIR.'cache_stats.php', '<?php'."\n\n".'if (!defined(\'FORUM_STATS_LOADED\')) define(\'FORUM_STATS_LOADED\', 1);'."\n\n".'$forum_stats = '.var_export($stats, true).';'."\n\n".'?>'))
 	{
-		error('Unable to write stats cache file to cache directory.<br/>Please make sure PHP has write access to the directory \'cache\'.', __FILE__, __LINE__);
+		error('Unable to write stats cache file to cache directory.<br />Please make sure PHP has write access to the directory \'cache\'.', __FILE__, __LINE__);
 	}
 
 	unset($stats);
 }
 
 
+//
+// Clean stats cache PHP scripts
+//
+function clean_stats_cache()
+{
+	$cache_file = FORUM_CACHE_DIR.'cache_stats.php';
+	if (file_exists($cache_file))
+	{
+		unlink($cache_file);
+	}
+}
+
 
 //
 // Generate the censor cache PHP script
@@ -248,7 +260,7 @@
 	// Output censors list as PHP code
 	if (!write_cache_file(FORUM_CACHE_DIR.'cache_censors.php', '<?php'."\n\n".'define(\'FORUM_CENSORS_LOADED\', 1);'."\n\n".'$forum_censors = '.var_export($output, true).';'."\n\n".'?>'))
 	{
-		error('Unable to write censor cache file to cache directory.<br/>Please make sure PHP has write access to the directory \'cache\'.', __FILE__, __LINE__);
+		error('Unable to write censor cache file to cache directory.<br />Please make sure PHP has write access to the directory \'cache\'.', __FILE__, __LINE__);
 	}
 }
 
@@ -358,7 +370,7 @@
 		// Output quickjump as PHP code
 		if (!write_cache_file(FORUM_CACHE_DIR.'cache_quickjump_'.$group_id.'.php', $output))
 		{
-			error('Unable to write quickjump cache file to cache directory.<br/>Please make sure PHP has write access to the directory \'cache\'.', __FILE__, __LINE__);
+			error('Unable to write quickjump cache file to cache directory.<br />Please make sure PHP has write access to the directory \'cache\'.', __FILE__, __LINE__);
 		}
 	}
 }
@@ -470,7 +482,7 @@
 	// Output hooks as PHP code
 	if (!write_cache_file(FORUM_CACHE_DIR.'cache_hooks.php', '<?php'."\n\n".'define(\'FORUM_HOOKS_LOADED\', 1);'."\n\n".'$forum_hooks = '.var_export($output, true).';'."\n\n".'?>'))
 	{
-		error('Unable to write hooks cache file to cache directory.<br/>Please make sure PHP has write access to the directory \'cache\'.', __FILE__, __LINE__);
+		error('Unable to write hooks cache file to cache directory.<br />Please make sure PHP has write access to the directory \'cache\'.', __FILE__, __LINE__);
 	}
 }
 
@@ -529,7 +541,7 @@
 	// Output update status as PHP code
 	if (!write_cache_file(FORUM_CACHE_DIR.'cache_updates.php', '<?php'."\n\n".'if (!defined(\'FORUM_UPDATES_LOADED\')) define(\'FORUM_UPDATES_LOADED\', 1);'."\n\n".'$forum_updates = '.var_export($output, true).';'."\n\n".'?>'))
 	{
-		error('Unable to write updates cache file to cache directory.<br/>Please make sure PHP has write access to the directory \'cache\'.', __FILE__, __LINE__);
+		error('Unable to write updates cache file to cache directory.<br />Please make sure PHP has write access to the directory \'cache\'.', __FILE__, __LINE__);
 	}
 }
 
@@ -540,17 +552,17 @@
 
 	foreach (array_unique(array_merge($repository_urls, $repository_url_by_extension)) as $url)
 	{
-		//Get repository timestamp
-		$remote_file = get_remote_file( $url.'/timestamp', 2);
+		// Get repository timestamp
+		$remote_file = get_remote_file($url.'/timestamp', 2);
 		$repository_timestamp = empty($remote_file['content']) ? '' : forum_trim($remote_file['content']);
 		unset($remote_file);
 		if (!is_numeric($repository_timestamp))
 			continue;
 
-		if (!isset( $forum_ext_repos[ $url ][ 'timestamp' ] ))
-			$forum_ext_repos[ $url ][ 'timestamp' ] = $repository_timestamp;
+		if (!isset($forum_ext_repos[$url]['timestamp']))
+			$forum_ext_repos[$url]['timestamp'] = $repository_timestamp;
 
-		if ($forum_ext_repos[ $url ][ 'timestamp' ] <= $repository_timestamp)
+		if ($forum_ext_repos[$url]['timestamp'] <= $repository_timestamp)
 		{
 			foreach ($inst_exts as $ext)
 			{
@@ -560,28 +572,29 @@
 				if (empty($version) || !preg_match('~^[0-9a-zA-Z\. +-]+$~u', $version))
 					continue;
 
-				$forum_ext_repos[ $url ][ 'extension_versions' ][ $ext['id'] ] = $version;
+				$forum_ext_repos[$url]['extension_versions'][$ext['id']] = $version;
 
-				//If key with current extension exist in array, compare it with version in rep-ry
-				if (!isset($forum_ext_last_versions[ $ext['id'] ]) || ( version_compare($forum_ext_last_versions[ $ext['id'] ][ 'version' ], $version, '<') ) )
+				// If key with current extension exist in array, compare it with version in repository
+				if (!isset($forum_ext_last_versions[$ext['id']]) || (version_compare($forum_ext_last_versions[$ext['id']]['version'], $version, '<')))
 				{
-					$forum_ext_last_versions[ $ext['id'] ] = array('version' => $version, 'repo_url' => $url);
+					$forum_ext_last_versions[$ext['id']] = array('version' => $version, 'repo_url' => $url);
 
 					$remote_file = get_remote_file($url.'/'.$ext['id'].'/lastchanges', 2);
 					$last_changes = empty($remote_file['content']) ? '' : forum_trim($remote_file['content']);
 					unset($remote_file);
-					if ( !empty($last_changes) )
-						$forum_ext_last_versions[ $ext['id'] ][ 'changes' ] = $last_changes;
+					if (!empty($last_changes))
+						$forum_ext_last_versions[$ext['id']]['changes'] = $last_changes;
 				}
 			}
-			//Write timestamp to cache
-			$forum_ext_repos[ $url ][ 'timestamp' ] = $repository_timestamp;
+
+			// Write timestamp to cache
+			$forum_ext_repos[$url]['timestamp'] = $repository_timestamp;
 		}
 	}
 
 	if (array_keys($forum_ext_last_versions) != array_keys($inst_exts))
 		foreach ($inst_exts as $ext)
-			if ( !in_array($ext['id'], array_keys($forum_ext_last_versions)) )
+			if (!in_array($ext['id'], array_keys($forum_ext_last_versions)))
 				$forum_ext_last_versions[$ext['id']] = array('version' => $ext['version'], 'repo_url' => '', 'changes' => '');
 
 	($hook = get_hook('ch_generate_ext_versions_cache_check_repository')) ? eval($hook) : null;
@@ -589,7 +602,7 @@
 	// Output config as PHP code
 	if (!write_cache_file(FORUM_CACHE_DIR.'cache_ext_version_notifications.php', '<?php'."\n\n".'if (!defined(\'FORUM_EXT_VERSIONS_LOADED\')) define(\'FORUM_EXT_VERSIONS_LOADED\', 1);'."\n\n".'$forum_ext_repos = '.var_export($forum_ext_repos, true).';'."\n\n".' $forum_ext_last_versions = '.var_export($forum_ext_last_versions, true).";\n\n".'$forum_ext_versions_update_cache = '.time().";\n\n".'?>'))
 	{
-		error('Unable to write configuration cache file to cache directory.<br/>Please make sure PHP has write access to the directory \'cache\'.', __FILE__, __LINE__);
+		error('Unable to write configuration cache file to cache directory.<br />Please make sure PHP has write access to the directory \'cache\'.', __FILE__, __LINE__);
 	}
 }
 
diff -urN punbb-1.4.1/include/common_admin.php punbb-1.4.2/include/common_admin.php
--- punbb-1.4.1/include/common_admin.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/include/common_admin.php	2012-02-09 20:42:20.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Loads common functions used in the administration panel.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
diff -urN punbb-1.4.1/include/common.php punbb-1.4.2/include/common.php
--- punbb-1.4.1/include/common.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/include/common.php	2012-02-09 20:42:20.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Loads common data and performs various functions necessary for the site to work properly.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -66,7 +66,7 @@
 if (file_exists(FORUM_ROOT.'lang/'.$forum_user['language'].'/common.php'))
 	include FORUM_ROOT.'lang/'.$forum_user['language'].'/common.php';
 else
-	error('There is no valid language pack \''.forum_htmlencode($forum_user['language']).'\' installed.<br/>Please reinstall a language of that name.');
+	error('There is no valid language pack \''.forum_htmlencode($forum_user['language']).'\' installed.<br />Please reinstall a language of that name.');
 
 // Setup the URL rewriting scheme
 if ($forum_config['o_sef'] != 'Default' && file_exists(FORUM_ROOT.'include/url/'.$forum_config['o_sef'].'/forum_urls.php'))
diff -urN punbb-1.4.1/include/dblayer/common_db.php punbb-1.4.2/include/dblayer/common_db.php
--- punbb-1.4.1/include/dblayer/common_db.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/include/dblayer/common_db.php	2012-02-09 20:42:20.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Loads the proper database layer class.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
diff -urN punbb-1.4.1/include/dblayer/mysqli_innodb.php punbb-1.4.2/include/dblayer/mysqli_innodb.php
--- punbb-1.4.1/include/dblayer/mysqli_innodb.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/include/dblayer/mysqli_innodb.php	2012-02-09 20:42:20.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * A database layer class that relies on the MySQLi PHP extension.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -79,14 +79,14 @@
 		if (strlen($sql) > 140000)
 			exit('Insane query. Aborting.');
 
-		if (defined('FORUM_SHOW_QUERIES'))
+		if (defined('FORUM_SHOW_QUERIES') || defined('FORUM_DEBUG'))
 			$q_start = forum_microtime();
 
 		$this->query_result = mysqli_query($this->link_id, $sql);
 
 		if ($this->query_result)
 		{
-			if (defined('FORUM_SHOW_QUERIES'))
+			if (defined('FORUM_SHOW_QUERIES') || defined('FORUM_DEBUG'))
 				$this->saved_queries[] = array($sql, sprintf('%.5f', forum_microtime() - $q_start));
 
 			++$this->num_queries;
@@ -95,7 +95,7 @@
 		}
 		else
 		{
-			if (defined('FORUM_SHOW_QUERIES'))
+			if (defined('FORUM_SHOW_QUERIES') || defined('FORUM_DEBUG'))
 				$this->saved_queries[] = array($sql, 0);
 
 			if ($this->in_transaction)
diff -urN punbb-1.4.1/include/dblayer/mysql_innodb.php punbb-1.4.2/include/dblayer/mysql_innodb.php
--- punbb-1.4.1/include/dblayer/mysql_innodb.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/include/dblayer/mysql_innodb.php	2012-02-09 20:42:20.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * A database layer class that relies on the MySQL PHP extension.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -80,7 +80,7 @@
 		if (strlen($sql) > 140000)
 			exit('Insane query. Aborting.');
 
-		if (defined('FORUM_SHOW_QUERIES'))
+		if (defined('FORUM_SHOW_QUERIES') || defined('FORUM_DEBUG'))
 			$q_start = forum_microtime();
 
 		if ($unbuffered)
@@ -90,7 +90,7 @@
 
 		if ($this->query_result)
 		{
-			if (defined('FORUM_SHOW_QUERIES'))
+			if (defined('FORUM_SHOW_QUERIES') || defined('FORUM_DEBUG'))
 				$this->saved_queries[] = array($sql, sprintf('%.5f', forum_microtime() - $q_start));
 
 			++$this->num_queries;
@@ -99,7 +99,7 @@
 		}
 		else
 		{
-			if (defined('FORUM_SHOW_QUERIES'))
+			if (defined('FORUM_SHOW_QUERIES') || defined('FORUM_DEBUG'))
 				$this->saved_queries[] = array($sql, 0);
 
 			if ($this->in_transaction)
diff -urN punbb-1.4.1/include/dblayer/mysqli.php punbb-1.4.2/include/dblayer/mysqli.php
--- punbb-1.4.1/include/dblayer/mysqli.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/include/dblayer/mysqli.php	2012-02-09 20:42:20.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * A database layer class that relies on the MySQLi PHP extension.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -41,7 +41,7 @@
 			$this->link_id = @mysqli_connect($db_host, $db_username, $db_password, $db_name);
 
 		if (!$this->link_id)
-			error('Unable to connect to MySQL and select database.<br/>MySQL reported: '.mysqli_connect_error(), __FILE__, __LINE__);
+			error('Unable to connect to MySQL and select database.<br />MySQL reported: '.mysqli_connect_error(), __FILE__, __LINE__);
 
 		// Setup the client-server character set (UTF-8)
 		if (!defined('FORUM_NO_SET_NAMES'))
@@ -68,14 +68,14 @@
 		if (strlen($sql) > 140000)
 			exit('Insane query. Aborting.');
 
-		if (defined('FORUM_SHOW_QUERIES'))
+		if (defined('FORUM_SHOW_QUERIES') || defined('FORUM_DEBUG'))
 			$q_start = forum_microtime();
 
 		$this->query_result = @mysqli_query($this->link_id, $sql);
 
 		if ($this->query_result)
 		{
-			if (defined('FORUM_SHOW_QUERIES'))
+			if (defined('FORUM_SHOW_QUERIES') || defined('FORUM_DEBUG'))
 				$this->saved_queries[] = array($sql, sprintf('%.5f', forum_microtime() - $q_start));
 
 			++$this->num_queries;
@@ -84,7 +84,7 @@
 		}
 		else
 		{
-			if (defined('FORUM_SHOW_QUERIES'))
+			if (defined('FORUM_SHOW_QUERIES') || defined('FORUM_DEBUG'))
 				$this->saved_queries[] = array($sql, 0);
 
 			return false;
diff -urN punbb-1.4.1/include/dblayer/mysql.php punbb-1.4.2/include/dblayer/mysql.php
--- punbb-1.4.1/include/dblayer/mysql.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/include/dblayer/mysql.php	2012-02-09 20:42:20.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * A database layer class that relies on the MySQL PHP extension.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -69,7 +69,7 @@
 		if (strlen($sql) > 140000)
 			exit('Insane query. Aborting.');
 
-		if (defined('FORUM_SHOW_QUERIES'))
+		if (defined('FORUM_SHOW_QUERIES') || defined('FORUM_DEBUG'))
 			$q_start = forum_microtime();
 
 		if ($unbuffered)
@@ -79,7 +79,7 @@
 
 		if ($this->query_result)
 		{
-			if (defined('FORUM_SHOW_QUERIES'))
+			if (defined('FORUM_SHOW_QUERIES') || defined('FORUM_DEBUG'))
 				$this->saved_queries[] = array($sql, sprintf('%.5f', forum_microtime() - $q_start));
 
 			++$this->num_queries;
@@ -88,7 +88,7 @@
 		}
 		else
 		{
-			if (defined('FORUM_SHOW_QUERIES'))
+			if (defined('FORUM_SHOW_QUERIES') || defined('FORUM_DEBUG'))
 				$this->saved_queries[] = array($sql, 0);
 
 			return false;
diff -urN punbb-1.4.1/include/dblayer/pgsql.php punbb-1.4.2/include/dblayer/pgsql.php
--- punbb-1.4.1/include/dblayer/pgsql.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/include/dblayer/pgsql.php	2012-02-09 20:42:20.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * A database layer class that relies on the PostgreSQL PHP extension.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -107,7 +107,7 @@
 		if (strrpos($sql, 'LIMIT') !== false)
 			$sql = preg_replace('#LIMIT ([0-9]+),([ 0-9]+)#', 'LIMIT \\2 OFFSET \\1', $sql);
 
-		if (defined('FORUM_SHOW_QUERIES'))
+		if (defined('FORUM_SHOW_QUERIES') || defined('FORUM_DEBUG'))
 			$q_start = forum_microtime();
 
 		@pg_send_query($this->link_id, $sql);
@@ -115,7 +115,7 @@
 
 		if (pg_result_status($this->query_result) != PGSQL_FATAL_ERROR)
 		{
-			if (defined('FORUM_SHOW_QUERIES'))
+			if (defined('FORUM_SHOW_QUERIES') || defined('FORUM_DEBUG'))
 				$this->saved_queries[] = array($sql, sprintf('%.5f', forum_microtime() - $q_start));
 
 			++$this->num_queries;
@@ -126,7 +126,7 @@
 		}
 		else
 		{
-			if (defined('FORUM_SHOW_QUERIES'))
+			if (defined('FORUM_SHOW_QUERIES') || defined('FORUM_DEBUG'))
 				$this->saved_queries[] = array($sql, 0);
 
 			$this->error_msg = @pg_result_error($this->query_result);
@@ -326,7 +326,7 @@
 		{
 			if ($this->in_transaction)
 			{
-				if (defined('FORUM_SHOW_QUERIES'))
+				if (defined('FORUM_SHOW_QUERIES') || defined('FORUM_DEBUG'))
 					$this->saved_queries[] = array('COMMIT', 0);
 
 				@pg_query($this->link_id, 'COMMIT');
diff -urN punbb-1.4.1/include/dblayer/sqlite3.php punbb-1.4.2/include/dblayer/sqlite3.php
--- punbb-1.4.1/include/dblayer/sqlite3.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/include/dblayer/sqlite3.php	2012-02-09 20:42:20.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * A database layer class that relies on the SQLite PHP extension.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -90,14 +90,14 @@
 		if (strlen($sql) > 140000)
 			exit('Insane query. Aborting.');
 
-		if (defined('FORUM_SHOW_QUERIES'))
+		if (defined('FORUM_SHOW_QUERIES') || defined('FORUM_DEBUG'))
 			$q_start = forum_microtime();
 
 		$this->query_result = $this->link_id->query($sql);
 
 		if ($this->query_result)
 		{
-			if (defined('FORUM_SHOW_QUERIES'))
+			if (defined('FORUM_SHOW_QUERIES') || defined('FORUM_DEBUG'))
 				$this->saved_queries[] = array($sql, sprintf('%.5f', forum_microtime() - $q_start));
 
 			++$this->num_queries;
@@ -106,7 +106,7 @@
 		}
 		else
 		{
-			if (defined('FORUM_SHOW_QUERIES'))
+			if (defined('FORUM_SHOW_QUERIES') || defined('FORUM_DEBUG'))
 				$this->saved_queries[] = array($sql, 0);
 
 			$this->error_no = $this->link_id->lastErrorCode();
@@ -333,7 +333,7 @@
 		{
 			if ($this->in_transaction)
 			{
-				if (defined('FORUM_SHOW_QUERIES'))
+				if (defined('FORUM_SHOW_QUERIES') || defined('FORUM_DEBUG'))
 					$this->saved_queries[] = array('COMMIT', 0);
 
 				$this->link_id->exec('COMMIT');
diff -urN punbb-1.4.1/include/dblayer/sqlite.php punbb-1.4.2/include/dblayer/sqlite.php
--- punbb-1.4.1/include/dblayer/sqlite.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/include/dblayer/sqlite.php	2012-02-09 20:42:20.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * A database layer class that relies on the SQLite PHP extension.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -93,7 +93,7 @@
 		if (strlen($sql) > 140000)
 			exit('Insane query. Aborting.');
 
-		if (defined('FORUM_SHOW_QUERIES'))
+		if (defined('FORUM_SHOW_QUERIES') || defined('FORUM_DEBUG'))
 			$q_start = forum_microtime();
 
 		if ($unbuffered)
@@ -103,7 +103,7 @@
 
 		if ($this->query_result)
 		{
-			if (defined('FORUM_SHOW_QUERIES'))
+			if (defined('FORUM_SHOW_QUERIES') || defined('FORUM_DEBUG'))
 				$this->saved_queries[] = array($sql, sprintf('%.5f', forum_microtime() - $q_start));
 
 			++$this->num_queries;
@@ -112,7 +112,7 @@
 		}
 		else
 		{
-			if (defined('FORUM_SHOW_QUERIES'))
+			if (defined('FORUM_SHOW_QUERIES') || defined('FORUM_DEBUG'))
 				$this->saved_queries[] = array($sql, 0);
 
 			$this->error_no = @sqlite_last_error($this->link_id);
@@ -325,7 +325,7 @@
 		{
 			if ($this->in_transaction)
 			{
-				if (defined('FORUM_SHOW_QUERIES'))
+				if (defined('FORUM_SHOW_QUERIES') || defined('FORUM_DEBUG'))
 					$this->saved_queries[] = array('COMMIT', 0);
 
 				@sqlite_query($this->link_id, 'COMMIT');
diff -urN punbb-1.4.1/include/email.php punbb-1.4.2/include/email.php
--- punbb-1.4.1/include/email.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/include/email.php	2012-02-09 20:42:20.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Loads functions used in dealing with email addresses and email sending.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -117,11 +117,11 @@
 	while (substr($server_response, 3, 1) != ' ')
 	{
 		if (!($server_response = fgets($socket, 256)))
-			error('Couldn\'t get mail server response codes.<br/>Please contact the forum administrator.', __FILE__, __LINE__);
+			error('Couldn\'t get mail server response codes.<br />Please contact the forum administrator.', __FILE__, __LINE__);
 	}
 
 	if (!(substr($server_response, 0, 3) == $expected_response))
-		error('Unable to send e-mail.<br/>Please contact the forum administrator with the following error message reported by the SMTP server: "'.$server_response.'"', __FILE__, __LINE__);
+		error('Unable to send e-mail.<br />Please contact the forum administrator with the following error message reported by the SMTP server: "'.$server_response.'"', __FILE__, __LINE__);
 }
 
 
diff -urN punbb-1.4.1/include/essentials.php punbb-1.4.2/include/essentials.php
--- punbb-1.4.1/include/essentials.php	2011-11-27 18:23:16.000000000 +0000
+++ punbb-1.4.2/include/essentials.php	2012-02-09 20:42:20.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Loads the minimum amount of data (eg: functions, database connection, config data, etc) necessary to integrate the site.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -11,7 +11,7 @@
 	exit('The constant FORUM_ROOT must be defined and point to a valid PunBB installation root directory.');
 
 // Define the version and database revision that this code was written for
-define('FORUM_VERSION', '1.4.1');
+define('FORUM_VERSION', '1.4.2');
 define('FORUM_DB_REVISION', 5);
 
 // Record the start time (will be used to calculate the generation time for the page)
@@ -22,8 +22,6 @@
 require FORUM_ROOT.'include/functions.php';
 // Load the Loader class
 require FORUM_ROOT.'include/loader.php';
-// Load the Flash messenger class
-require FORUM_ROOT.'include/flash_messenger.php';
 
 // Load UTF-8 functions
 require FORUM_ROOT.'include/utf8/utf8.php';
@@ -46,7 +44,7 @@
 	define('FORUM', 1);
 
 if (!defined('FORUM'))
-	error('The file \'config.php\' doesn\'t exist or is corrupt.<br/>Please run <a href="'.FORUM_ROOT.'admin/install.php">install.php</a> to install PunBB first.');
+	error('The file \'config.php\' doesn\'t exist or is corrupt.<br />Please run <a href="'.FORUM_ROOT.'admin/install.php">install.php</a> to install PunBB first.');
 
 // Block prefetch requests
 if (isset($_SERVER['HTTP_X_MOZ']) && $_SERVER['HTTP_X_MOZ'] == 'prefetch')
@@ -100,6 +98,9 @@
 	require FORUM_CACHE_DIR.'cache_config.php';
 }
 
+// Load the Flash messenger class
+require FORUM_ROOT.'include/flash_messenger.php';
+
 // If the request_uri is invalid try fix it
 forum_fix_request_uri();
 
@@ -115,7 +116,7 @@
 
 // Verify that we are running the proper database schema revision
 if (defined('PUN') || !isset($forum_config['o_database_revision']) || $forum_config['o_database_revision'] < FORUM_DB_REVISION || version_compare($forum_config['o_cur_version'], FORUM_VERSION, '<'))
-	error('Your PunBB database is out-of-date and must be upgraded in order to continue.<br/>Please run <a href="'.$base_url.'/admin/db_update.php">db_update.php</a> in order to complete the upgrade process.');
+	error('Your PunBB database is out-of-date and must be upgraded in order to continue.<br />Please run <a href="'.$base_url.'/admin/db_update.php">db_update.php</a> in order to complete the upgrade process.');
 
 
 // Load hooks
diff -urN punbb-1.4.1/include/flash_messenger.php punbb-1.4.2/include/flash_messenger.php
--- punbb-1.4.1/include/flash_messenger.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/include/flash_messenger.php	2012-02-09 20:42:20.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Loads the flash messenger class.
  *
- * @copyright (C) 2008-2011 PunBB
+ * @copyright (C) 2008-2012 PunBB
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -19,14 +19,22 @@
 	const MSG_TYPE_INFO = 'message_info';
 
 	//
-	private $messages;
+	private $message;
 
 
 	public function __construct()
 	{
-		session_cache_limiter(FALSE);
-		$result = session_start();
-		$this->messages = $this->get_messages();
+		global $forum_config;
+
+		// Do not use with redirect
+		$disabled = isset($forum_config['o_redirect_delay']) && intval($forum_config['o_redirect_delay'], 10) > 0;
+
+		if (!$disabled)
+		{
+			forum_session_start();
+		}
+
+		$this->message = $this->get_message();
 	}
 
 
@@ -54,26 +62,19 @@
 	//
 	public function show($just_return = false)
 	{
-		if (empty($this->messages))
+		if (empty($this->message))
 			return;
 
-		$messages_list = array();
-		foreach ($this->messages as $msg)
-		{
-			$messages_list[] = sprintf(self::TEMPLATE_MSG, forum_htmlencode($msg[1]), forum_htmlencode($msg[0]));
-		}
-
-		if (!empty($messages_list))
-		{
-			$m = sprintf(self::TEMPLATE_MSG_BLOCK, implode('', $messages_list));
-			if ($just_return) {
-				$this->clear();
-				return $m;
-			}
+		$message = sprintf(self::TEMPLATE_MSG, forum_htmlencode($this->message[1]), forum_htmlencode($this->message[0]));
 
-			echo $m;
+		$m = sprintf(self::TEMPLATE_MSG_BLOCK, $message);
+		if ($just_return) {
+			$this->clear();
+			return $m;
 		}
 
+		echo $m;
+
 		$this->clear();
 	}
 
@@ -81,41 +82,44 @@
 	//
 	private function clear()
 	{
-		$this->messages = array();
-		$this->save_messages();
+		$this->message = NULL;
+		$this->save_message();
 	}
 
 
 	//
 	private function add_message($message, $type)
 	{
-		array_push($this->messages, array($message, $type));
-
-		$this->save_messages();
+		$this->message = array($message, $type);
+		$this->save_message();
 	}
 
 
-	private function save_messages()
+	private function save_message()
 	{
-		 $_SESSION['punbb_forum_flash'] = serialize($this->messages);
+		$_SESSION['punbb_forum_flash'] = serialize($this->message);
 	}
 
 
-	private function get_messages()
+	private function get_message()
 	{
-		$messages = array();
+		$message = NULL;
 
 		if (isset($_SESSION['punbb_forum_flash'])) {
-			$tmp_messages = unserialize($_SESSION['punbb_forum_flash']);
+			$tmp_message = unserialize($_SESSION['punbb_forum_flash']);
 
-			if (is_array($tmp_messages))
-				$messages = $tmp_messages;
+			if (!is_null($tmp_message) && !empty($tmp_message))
+			{
+				if (is_array($tmp_message) && !empty($tmp_message[0]) && !empty($tmp_message[1]))
+				{
+					$message = $tmp_message;
+				}
+			}
 		}
 
-		return $messages;
+		return $message;
 	}
 }
 
-
 // Create the flash messenger adapter object
 $forum_flash = new FlashMessenger();
diff -urN punbb-1.4.1/include/functions.php punbb-1.4.2/include/functions.php
--- punbb-1.4.1/include/functions.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/include/functions.php	2012-02-09 20:42:20.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Loads common functions used throughout the site.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -32,6 +32,45 @@
 }
 
 
+// Start PHP session
+function forum_session_start() {
+	static $forum_session_started = FALSE;
+
+	$return = ($hook = get_hook('fn_forum_session_start_start')) ? eval($hook) : null;
+	if ($return != null)
+		return;
+
+	// Check if session already started
+	if ($forum_session_started && session_id())
+		return;
+
+	session_cache_limiter(FALSE);
+
+	// Check session id
+	$forum_session_id = NULL;
+	if (isset($_COOKIE['PHPSESSID']))
+		$forum_session_id = $_COOKIE['PHPSESSID'];
+	else if (isset($_GET['PHPSESSID']))
+		$forum_session_id = $_GET['PHPSESSID'];
+
+	if (empty($forum_session_id) || !preg_match('/^[a-z0-9]{16,32}$/', $forum_session_id))
+	{
+		// Create new session id
+		$forum_session_id = random_key(32, FALSE, TRUE);
+		session_id($forum_session_id);
+	}
+
+	session_start();
+	if (!isset($_SESSION['initiated']))
+	{
+		session_regenerate_id();
+		$_SESSION['initiated'] = TRUE;
+	}
+
+	$forum_session_started = TRUE;
+}
+
+
 // Converts the CDATA end sequence ]]> into ]]&gt;
 function escape_cdata($str)
 {
@@ -90,7 +129,7 @@
 function forum_unregister_globals()
 {
 	$register_globals = @ini_get('register_globals');
-	if ($register_globals === "" || $register_globals === "0" || strtolower($register_globals) === "off")
+	if ($register_globals === '' || $register_globals === '0' || strtolower($register_globals) === 'off')
 		return;
 
 	// Prevent script.php?GLOBALS[foo]=bar
@@ -156,7 +195,7 @@
 
 		// Otherwise I am not aware of a work around...
 		else
-			error('The web server you are using is not correctly setting the REQUEST_URI variable.<br/>This usually means you are using IIS6, or an unpatched IIS7. Please either disable SEF URLs, upgrade to IIS7 and install any available patches or try a different web server.');
+			error('The web server you are using is not correctly setting the REQUEST_URI variable.<br />This usually means you are using IIS6, or an unpatched IIS7. Please either disable SEF URLs, upgrade to IIS7 and install any available patches or try a different web server.');
 	}
 }
 
@@ -475,8 +514,8 @@
 		{
 			$links['search'] = '<li id="navsearch"'.((FORUM_PAGE == 'search') ? ' class="isactive"' : '').'><a href="'.forum_link($forum_url['search']).'">'.$lang_common['Search'].'</a></li>';
 			$links['profile'] = '<li id="navprofile"'.((substr(FORUM_PAGE, 0, 7) == 'profile') ? ' class="isactive"' : '').'><a href="'.forum_link($forum_url['user'], $forum_user['id']).'">'.$lang_common['Profile'].'</a></li>';
-			$links['logout'] = '<li id="navlogout"><a href="'.forum_link($forum_url['logout'], array($forum_user['id'], generate_form_token('logout'.$forum_user['id']))).'">'.$lang_common['Logout'].'</a></li>';
 			$links['admin'] = '<li id="navadmin"'.((substr(FORUM_PAGE, 0, 5) == 'admin') ? ' class="isactive"' : '').'><a href="'.forum_link($forum_url['admin_index']).'">'.$lang_common['Admin'].'</a></li>';
+			$links['logout'] = '<li id="navlogout"><a href="'.forum_link($forum_url['logout'], array($forum_user['id'], generate_form_token('logout'.$forum_user['id']))).'">'.$lang_common['Logout'].'</a></li>';
 		}
 	}
 
@@ -599,7 +638,7 @@
 		return $return;
 
 	if ($forum_page['num_pages'] == 1)
-		$item_info =  '<span class="item-info">'.sprintf($lang_common['Item info single'], $label, forum_number_format($total)).'</span>';
+		$item_info = '<span class="item-info">'.sprintf($lang_common['Item info single'], $label, forum_number_format($total)).'</span>';
 	else
 		$item_info = '<span class="item-info">'.sprintf($lang_common['Item info plural'], $label, forum_number_format($first), forum_number_format($forum_page['finish_at']), forum_number_format($total)).'</span>';
 
@@ -657,7 +696,7 @@
 			if ($current < 1 || $current > $num_pages)
 				continue;
 			else if ($current != $cur_page || $link_to_all)
-				$pages[] = '<a'.(empty($pages) ? ' class="first-item" ' : '').' href="'.forum_sublink($link, $forum_url_page, $current, $args).'">'.forum_number_format($current).'</a>';
+				$pages[] = '<a'.(empty($pages) ? ' class="first-item"' : '').' href="'.forum_sublink($link, $forum_url_page, $current, $args).'">'.forum_number_format($current).'</a>';
 			else
 				$pages[] = '<strong'.(empty($pages) ? ' class="first-item"' : '').'>'.forum_number_format($current).'</strong>';
 
@@ -666,12 +705,12 @@
 			if ($cur_page != ($num_pages-3) && $cur_page != ($num_pages-4))
 				$pages[] = '<span>'.$lang_common['Spacer'].'</span>';
 
-			$pages[] = '<a'.(empty($pages) ? ' class="first-item" ' : '').' href="'.forum_sublink($link, $forum_url_page, $num_pages, $args).'">'.forum_number_format($num_pages).'</a>';
+			$pages[] = '<a'.(empty($pages) ? ' class="first-item"' : '').' href="'.forum_sublink($link, $forum_url_page, $num_pages, $args).'">'.forum_number_format($num_pages).'</a>';
 		}
 
 		// Add a next page link
 		if ($num_pages > 1 && !$link_to_all && $cur_page < $num_pages)
-			$pages[] = '<a'.(empty($pages) ? ' class="first-item" ' : '').' href="'.forum_sublink($link, $forum_url_page, ($cur_page + 1), $args).'">'.$lang_common['Next'].'</a>';
+			$pages[] = '<a'.(empty($pages) ? ' class="first-item"' : '').' href="'.forum_sublink($link, $forum_url_page, ($cur_page + 1), $args).'">'.$lang_common['Next'].'</a>';
 	}
 
 	($hook = get_hook('fn_paginate_end')) ? eval($hook) : null;
@@ -844,7 +883,7 @@
 // Replace censored words in $text loader
 function censor_words($text)
 {
-	global $forum_db;
+	global $forum_db, $forum_censors;
 
 	$return = ($hook = get_hook('fn_censor_words_start')) ? eval($hook) : null;
 	if ($return != null)
@@ -876,10 +915,15 @@
 // Replace censored words in $text
 function censor_words_do($forum_censors, $text, $unicode)
 {
-	static $search_for, $replace_with;
+	static $search_for = NULL;
+	static $replace_with = NULL;
+
+	if (is_null($search_for))
+		$search_for = array();
+
+	if (is_null($replace_with))
+		$replace_with = array();
 
-	$search_for = array();
-	$replace_with = array();
 
 	if (!empty($forum_censors))
 	{
@@ -1033,7 +1077,7 @@
 // Return a list of all URL schemes installed
 function get_scheme_packs()
 {
-  	$schemes = array();
+	$schemes = array();
 
 	if ($handle = opendir(FORUM_ROOT.'include/url'))
 	{
@@ -3098,7 +3142,7 @@
 	while (preg_match('#<!-- ?forum_include "([^/\\\\]*?)" ?-->#', $tpl_maint, $cur_include))
 	{
 		if (!file_exists(FORUM_ROOT.'include/user/'.$cur_include[1]))
-			error('Unable to process user include &lt;!-- forum_include "'.forum_htmlencode($cur_include[1]).'" --&gt; from template maintenance.tpl.<br/>There is no such file in folder /include/user/.');
+			error('Unable to process user include &lt;!-- forum_include "'.forum_htmlencode($cur_include[1]).'" --&gt; from template maintenance.tpl.<br />There is no such file in folder /include/user/.');
 
 		ob_start();
 		include FORUM_ROOT.'include/user/'.$cur_include[1];
@@ -3220,7 +3264,7 @@
 	while (preg_match('#<!-- ?forum_include "([^/\\\\]*?)" ?-->#', $tpl_redir, $cur_include))
 	{
 		if (!file_exists(FORUM_ROOT.'include/user/'.$cur_include[1]))
-			error('Unable to process user include &lt;!-- forum_include "'.forum_htmlencode($cur_include[1]).'" --&gt; from template redirect.tpl.<br/>There is no such file in folder /include/user/.');
+			error('Unable to process user include &lt;!-- forum_include "'.forum_htmlencode($cur_include[1]).'" --&gt; from template redirect.tpl.<br />There is no such file in folder /include/user/.');
 
 		ob_start();
 		include FORUM_ROOT.'include/user/'.$cur_include[1];
@@ -3241,7 +3285,7 @@
 // Display a simple error message
 function error()
 {
-	global $forum_config;
+	global $forum_config, $lang_common;
 
 	if (!headers_sent())
 	{
@@ -3279,6 +3323,33 @@
 		$forum_config['o_gzip'] = '0';
 	}
 
+	// Set a default error messages string if the script failed before $common_lang loaded
+	if (empty($lang_common['Forum error header']))
+	{
+		$lang_common['Forum error header'] = 'Sorry! The page could not be loaded.';
+	}
+
+	if (empty($lang_common['Forum error description']))
+	{
+		$lang_common['Forum error description'] = 'This is probably a temporary error. Just refresh the page and retry. If problem continues, please check back in 5-10 minutes.';
+	}
+
+	if (empty($lang_common['Forum error location']))
+	{
+		$lang_common['Forum error location'] = 'The error occurred on line %1$s in %2$s';
+	}
+
+	if (empty($lang_common['Forum error db reported']))
+	{
+		$lang_common['Forum error db reported'] = 'Database reported:';
+	}
+
+	if (empty($lang_common['Forum error db query']))
+	{
+		$lang_common['Forum error db query'] = 'Failed query:';
+	}
+
+
 	// Empty all output buffers and stop buffering
 	while (@ob_end_clean());
 
@@ -3290,42 +3361,45 @@
 <!DOCTYPE html>
 <html lang="en" dir="ltr">
 <head>
-	<meta charset="utf-8"/>
+	<meta charset="utf-8" />
 	<title>Error - <?php echo forum_htmlencode($forum_config['o_board_title']) ?></title>
+	<style>
+		strong	{ font-weight: bold; }
+		body	{ margin: 50px; font: 85%/150% verdana, arial, sans-serif; color: #222; max-width: 55em; }
+		h1		{ color: #a00000; font-weight: normal; font-size: 1.45em; }
+		code	{ font-family: monospace, sans-serif; }
+		.error_line { color: #999; font-size: .95em; }
+	</style>
 </head>
-<body style="margin: 40px; font: 85%/150% verdana, arial, sans-serif; color: #222; max-width: 55em;">
-<h1 style="color: #a00000; font-weight: normal;">An error was encountered</h1>
+<body>
+	<h1><?php echo forum_htmlencode($lang_common['Forum error header']) ?></h1>
 <?php
-
 	if (isset($message))
 		echo '<p>'.$message.'</p>'."\n";
+	else
+		echo '<p>'.forum_htmlencode($lang_common['Forum error description']).'</p>'."\n";
 
 	if ($num_args > 1)
 	{
 		if (defined('FORUM_DEBUG'))
 		{
-			if (isset($file) && isset($line))
-				echo '<p>The error occurred on line '.$line.' in '.$file.'</p>'."\n";
-
 			$db_error = isset($GLOBALS['forum_db']) ? $GLOBALS['forum_db']->error() : array();
 			if (!empty($db_error['error_msg']))
 			{
-				echo '<p><strong>Database reported:</strong> '.forum_htmlencode($db_error['error_msg']).(($db_error['error_no']) ? ' (Errno: '.$db_error['error_no'].')' : '').'.</p>'."\n";
+				echo '<p><strong>'.forum_htmlencode($lang_common['Forum error db reported']).'</strong> '.forum_htmlencode($db_error['error_msg']).(($db_error['error_no']) ? ' (Errno: '.$db_error['error_no'].')' : '').'.</p>'."\n";
 
 				if ($db_error['error_sql'] != '')
-					echo '<p><strong>Failed query:</strong> <code>'.forum_htmlencode($db_error['error_sql']).'</code></p>'."\n";
+					echo '<p><strong>'.forum_htmlencode($lang_common['Forum error db query']).'</strong> <code>'.forum_htmlencode($db_error['error_sql']).'</code></p>'."\n";
 			}
+
+			if (isset($file) && isset($line))
+				echo '<p class="error_line">'.forum_htmlencode(sprintf($lang_common['Forum error location'], $line, $file)).'</p>'."\n";
 		}
-		else
-			echo '<p style="font-size: .95em;"><strong>Note:</strong> For detailed error information (necessary for troubleshooting), enable "DEBUG mode".<br/>To enable "DEBUG mode", open up&nbsp;the file config.php in&nbsp;a&nbsp;text editor, add a&nbsp;line that looks like <nobr>"define(\'FORUM_DEBUG\', 1);"</nobr> (without the quotation marks), and re-upload the file.<br/>Once you\'ve solved the problem, it&nbsp;is recommended that "DEBUG mode" be&nbsp;turned off again (just remove the line from the file and re-upload it).</p>'."\n";
 	}
-
 ?>
-
 </body>
 </html>
 <?php
-
 	// If a database connection was established (before this error) we close it
 	if (isset($GLOBALS['forum_db']))
 		$GLOBALS['forum_db']->close();
diff -urN punbb-1.4.1/include/js/LAB.src.js punbb-1.4.2/include/js/LAB.src.js
--- punbb-1.4.1/include/js/LAB.src.js	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/include/js/LAB.src.js	1970-01-01 00:00:00.000000000 +0000
@@ -1,368 +0,0 @@
-/*! LAB.js (LABjs :: Loading And Blocking JavaScript)
-    v1.2.0 (c) Kyle Simpson
-    MIT License
-*/
-
-(function(global){
-	var sSTRING = "string",				// constants used for compression optimization
-		sHEAD = "head",
-		sBODY = "body",
-		sSCRIPT = "script",
-		sREADYSTATE = "readyState",
-		sPRELOADDONE = "preloaddone",
-		sLOADTRIGGER = "loadtrigger",
-		sSRCURI = "srcuri",
-		sPRELOAD = "preload",
-		sCOMPLETE = "complete",
-		sDONE = "done",
-		sWHICH = "which",
-		sPRESERVE = "preserve",
-		sONREADYSTATECHANGE = "onreadystatechange",
-		sONLOAD = "onload",
-		sHASOWNPROPERTY = "hasOwnProperty",
-		sSCRIPTCACHE = "script/cache",
-		sTYPEOBJ = "[object ",
-		sTYPEFUNC = sTYPEOBJ+"Function]",
-		sTYPEARRAY = sTYPEOBJ+"Array]",
-		nNULL = null,
-		bTRUE = true,
-		bFALSE = false,
-		oDOC = global.document,
-		oWINLOC = global.location,
-		oACTIVEX = global.ActiveXObject,
-		fSETTIMEOUT = global.setTimeout,
-		fCLEARTIMEOUT = global.clearTimeout,
-		fGETELEMENTSBYTAGNAME = function(tn){return oDOC.getElementsByTagName(tn);},
-		fOBJTOSTRING = Object.prototype.toString,
-		fNOOP = function(){},
-		append_to = {},
-		all_scripts = {},
-		PAGEROOT = /^[^?#]*\//.exec(oWINLOC.href)[0], // these ROOTs do not support file:/// usage, only http:// type usage
-		DOCROOT = /^\w+\:\/\/\/?[^\/]+/.exec(PAGEROOT)[0], // optional third / in the protocol portion of this regex so that LABjs doesn't blow up when used in file:/// usage
-		docScripts = fGETELEMENTSBYTAGNAME(sSCRIPT),
-
-		// Ah-ha hush that fuss, feature inference is used to detect specific browsers
-		// because the techniques used in LABjs have no known feature detection. If
-		// you know of a feature test please contact me ASAP. Feature inference is used
-		// instead of user agent sniffing because the UA string can be easily
-		// spoofed and is not adequate for such a mission critical part of the code.
-		is_opera = global.opera && fOBJTOSTRING.call(global.opera) == sTYPEOBJ+"Opera]",
-		is_gecko = ("MozAppearance" in oDOC.documentElement.style),
-		
-		// the following is a feature sniff for the ability to set async=false on dynamically created script elements, as proposed to the W3C
-		// RE: http://wiki.whatwg.org/wiki/Dynamic_Script_Execution_Order
-		is_script_async = (oDOC.createElement(sSCRIPT).async === true),
-
-		global_defs = {
-			cache:!(is_gecko||is_opera), // browsers like IE/Safari/Chrome can use the "cache" trick to preload
-			order:is_gecko||is_opera||is_script_async,	// FF(prior to FF4) & Opera preserve execution order with script tags automatically,
-														// so just add all scripts as fast as possible. FF4 has async=false to do the same
-			xhr:bTRUE, // use XHR trick to preload local scripts
-			dupe:bTRUE, // allow duplicate scripts? defaults to true now 'cause is slightly more performant that way (less checks)
-			base:"", // base path to prepend to all non-absolute-path scripts
-			which:sHEAD // which DOM object ("head" or "body") to append scripts to
-		}
-	;
-	global_defs[sPRESERVE] = bFALSE; // force preserve execution order of all loaded scripts (regardless of preloading)
-	global_defs[sPRELOAD] = bTRUE; // use various tricks for "preloading" scripts
-	
-	append_to[sHEAD] = oDOC.head || fGETELEMENTSBYTAGNAME(sHEAD);
-	append_to[sBODY] = fGETELEMENTSBYTAGNAME(sBODY);
-	
-	function isFunc(func) { return fOBJTOSTRING.call(func) === sTYPEFUNC; }
-	function canonicalScriptURI(src,base_path) {
-		var regex = /^\w+\:\/\//, ret; 
-		if (typeof src != sSTRING) src = "";
-		if (typeof base_path != sSTRING) base_path = "";
-		ret = ((/^\/\//.test(src)) ? oWINLOC.protocol : "") + src;
-		ret = (regex.test(ret) ? "" : base_path) + ret;
-		return ((regex.test(ret) ? "" : (ret.charAt(0) === "/" ? DOCROOT : PAGEROOT)) + ret);
-	}
-	function sameDomain(src) { return (canonicalScriptURI(src).indexOf(DOCROOT) === 0); }
-	function scriptTagExists(uri) { // checks if a script uri has ever been loaded into this page's DOM
-		var script, idx=-1;
-		while (script = docScripts[++idx]) {
-			if (typeof script.src == sSTRING && uri === canonicalScriptURI(script.src) && script.type !== sSCRIPTCACHE) return bTRUE;
-		}
-		return bFALSE;
-	}
-	function engine(queueExec,opts) {
-		queueExec = !(!queueExec);
-		if (opts == nNULL) opts = global_defs;
-		
-		var ready = bFALSE,
-			_use_preload = queueExec && opts[sPRELOAD],
-			_use_cache_preload = _use_preload && opts.cache,
-			_use_script_order = _use_preload && opts.order,
-			_use_xhr_preload = _use_preload && opts.xhr,
-			_auto_wait = opts[sPRESERVE],
-			_which = opts.which,
-			_base_path = opts.base,
-			waitFunc = fNOOP,
-			scripts_loading = bFALSE,
-			publicAPI,
-
-			first_pass = bTRUE,
-			scripts = {},
-			exec = [],
-			end_of_chain_check_interval = nNULL
-		;
-		
-		_use_preload = _use_cache_preload || _use_xhr_preload || _use_script_order; // if all flags are turned off, preload is moot so disable it
-		
-		function isScriptLoaded(elem,scriptentry) {
-			if ((elem[sREADYSTATE] && elem[sREADYSTATE]!==sCOMPLETE && elem[sREADYSTATE]!=="loaded") || scriptentry[sDONE]) { return bFALSE; }
-			elem[sONLOAD] = elem[sONREADYSTATECHANGE] = nNULL; // prevent memory leak
-			return bTRUE;
-		}
-		function handleScriptLoad(elem,scriptentry,skipReadyCheck) {
-			skipReadyCheck = !(!skipReadyCheck); // used to override ready check when script text was injected from XHR preload
-			if (!skipReadyCheck && !(isScriptLoaded(elem,scriptentry))) return;
-			scriptentry[sDONE] = bTRUE;
-
-			for (var key in scripts) {
-				if (scripts[sHASOWNPROPERTY](key) && !(scripts[key][sDONE])) return;
-			}
-			ready = bTRUE;
-			waitFunc();
-		}
-		function loadTriggerExecute(scriptentry) {
-			if (isFunc(scriptentry[sLOADTRIGGER])) {
-				scriptentry[sLOADTRIGGER]();
-				scriptentry[sLOADTRIGGER] = nNULL; // prevent memory leak
-			}
-		}
-		function handleScriptPreload(elem,scriptentry) {
-			if (!isScriptLoaded(elem,scriptentry)) return;
-			scriptentry[sPRELOADDONE] = bTRUE;
-			fSETTIMEOUT(function(){
-				append_to[scriptentry[sWHICH]].removeChild(elem); // remove preload script node
-				loadTriggerExecute(scriptentry);
-			},0);
-		}
-		function handleXHRPreload(xhr,scriptentry) {
-			if (xhr[sREADYSTATE] === 4) {
-				xhr[sONREADYSTATECHANGE] = fNOOP; // fix a memory leak in IE
-				scriptentry[sPRELOADDONE] = bTRUE;
-				fSETTIMEOUT(function(){ loadTriggerExecute(scriptentry); },0);
-			}
-		}
-		function createScriptTag(scriptentry,src,type,charset,onload,scriptText) {
-			var _script_which = scriptentry[sWHICH];
-			fSETTIMEOUT(function() { // this setTimeout waiting "hack" prevents a nasty race condition browser hang (IE) when the document.write("<script defer=true>") type dom-ready hack is present in the page
-				if ("item" in append_to[_script_which]) { // check if ref is still a live node list
-					if (!append_to[_script_which][0]) { // append_to node not yet ready
-						fSETTIMEOUT(arguments.callee,25); // try again in a little bit -- note, will recall the anonymous function in the outer setTimeout, not the parent createScriptTag()
-						return;
-					}
-					append_to[_script_which] = append_to[_script_which][0]; // reassign from live node list ref to pure node ref -- avoids nasty IE bug where changes to DOM invalidate live node lists
-				}
-				var scriptElem = oDOC.createElement(sSCRIPT);
-				if (typeof type == sSTRING) scriptElem.type = type;
-				if (typeof charset == sSTRING) scriptElem.charset = charset;
-				if (isFunc(onload)) { // load script via 'src' attribute, set onload/onreadystatechange listeners
-					scriptElem[sONLOAD] = scriptElem[sONREADYSTATECHANGE] = function(){onload(scriptElem,scriptentry);};
-					scriptElem.src = src;
-					if (is_script_async) {
-						scriptElem.async = bFALSE;
-					}
-				}
-				// only for appending to <head>, fix a bug in IE6 if <base> tag is present -- otherwise, insertBefore(...,null) acts just like appendChild()
-				append_to[_script_which].insertBefore(scriptElem,(_script_which===sHEAD?append_to[_script_which].firstChild:nNULL));
-				if (typeof scriptText == sSTRING) { // script text already avaiable from XHR preload, so just inject it
-					scriptElem.text = scriptText;
-					handleScriptLoad(scriptElem,scriptentry,bTRUE); // manually call 'load' callback function, skipReadyCheck=true
-				}
-			},0);
-		}
-		function loadScriptElem(scriptentry,src,type,charset) {
-			all_scripts[scriptentry[sSRCURI]] = bTRUE;
-			createScriptTag(scriptentry,src,type,charset,handleScriptLoad);
-		}
-		function loadScriptCache(scriptentry,src,type,charset) {
-			var args = arguments;
-			if (first_pass && scriptentry[sPRELOADDONE] == nNULL) { // need to preload into cache
-				scriptentry[sPRELOADDONE] = bFALSE;
-				createScriptTag(scriptentry,src,sSCRIPTCACHE,charset,handleScriptPreload); // fake mimetype causes a fetch into cache, but no execution
-			}
-			else if (!first_pass && scriptentry[sPRELOADDONE] != nNULL && !scriptentry[sPRELOADDONE]) { // preload still in progress, make sure trigger is set for execution later
-				scriptentry[sLOADTRIGGER] = function(){loadScriptCache.apply(nNULL,args);};
-			}
-			else if (!first_pass) { // preload done, so reload (from cache, hopefully!) as regular script element
-				loadScriptElem.apply(nNULL,args);
-			}
-		}
-		function loadScriptXHR(scriptentry,src,type,charset) {
-			var args = arguments, xhr;
-			if (first_pass && scriptentry[sPRELOADDONE] == nNULL) { // need to preload
-				scriptentry[sPRELOADDONE] = bFALSE;
-				xhr = scriptentry.xhr = (oACTIVEX ? new oACTIVEX("Microsoft.XMLHTTP") : new global.XMLHttpRequest());
-				xhr[sONREADYSTATECHANGE] = function(){handleXHRPreload(xhr,scriptentry);};
-				xhr.open("GET",src);
-				xhr.send("");
-			}
-			else if (!first_pass && scriptentry[sPRELOADDONE] != nNULL && !scriptentry[sPRELOADDONE]) {	// preload XHR still in progress, make sure trigger is set for execution later
-				scriptentry[sLOADTRIGGER] = function(){loadScriptXHR.apply(nNULL,args);};
-			}
-			else if (!first_pass) { // preload done, so "execute" script via injection
-				all_scripts[scriptentry[sSRCURI]] = bTRUE;
-				createScriptTag(scriptentry,src,type,charset,nNULL,scriptentry.xhr.responseText);
-				scriptentry.xhr = nNULL;
-			}
-		}
-		function loadScript(o) {
-			if (typeof o == "undefined" || !o) return; // skip over this script call if there's nothing to load
-			if (o.allowDup == nNULL) o.allowDup = opts.dupe;
-			var src = o.src, type = o.type, charset = o.charset, allowDup = o.allowDup, 
-				src_uri = canonicalScriptURI(src,_base_path), scriptentry, same_domain = sameDomain(src_uri);
-			if (typeof charset != sSTRING) charset = nNULL;
-			allowDup = !(!allowDup);
-			if (!allowDup && 
-				(
-					(all_scripts[src_uri] != nNULL) || (first_pass && scripts[src_uri]) || scriptTagExists(src_uri)
-				)
-			) {
-				if (scripts[src_uri] != nNULL && scripts[src_uri][sPRELOADDONE] && !scripts[src_uri][sDONE] && same_domain) {
-					// this script was preloaded via XHR, but is a duplicate, and dupes are not allowed
-					handleScriptLoad(nNULL,scripts[src_uri],bTRUE); // mark the entry as done and check if chain group is done
-				}
-				return;
-			}
-			if (scripts[src_uri] == nNULL) scripts[src_uri] = {};
-			scriptentry = scripts[src_uri];
-			if (scriptentry[sWHICH] == nNULL) scriptentry[sWHICH] = _which;
-			scriptentry[sDONE] = bFALSE;
-			scriptentry[sSRCURI] = src_uri;
-			scripts_loading = bTRUE;
-			
-			if (!_use_script_order && _use_xhr_preload && same_domain) loadScriptXHR(scriptentry,src_uri,type,charset);
-			else if (!_use_script_order && _use_cache_preload) loadScriptCache(scriptentry,src_uri,type,charset);
-			else loadScriptElem(scriptentry,src_uri,type,charset);
-		}
-		function queueAndExecute(execBody) { // helper for publicAPI functions below
-			if (queueExec && !_use_script_order) exec.push(execBody);
-			if (!queueExec || _use_preload) execBody(); // if engine is either not queueing, or is queuing in preload mode, go ahead and execute
-		}
-		function serializeArgs(args) {
-			var sargs = [], idx;
-			for (idx=-1; ++idx<args.length;) {
-				if (fOBJTOSTRING.call(args[idx]) === sTYPEARRAY) sargs = sargs.concat(serializeArgs(args[idx]));
-				else sargs[sargs.length] = args[idx];
-			}
-			return sargs;
-		}
-				
-		publicAPI = {
-			script:function() {
-				fCLEARTIMEOUT(end_of_chain_check_interval);
-				var args = serializeArgs(arguments), use_engine = publicAPI, idx;
-				if (_auto_wait) {
-					for (idx=-1; ++idx<args.length;) {
-						if (isFunc(args[idx])) args[idx] = args[idx](); // if a function is found, call/evaluate it first
-						if (idx===0) {
-							queueAndExecute(function(){
-								loadScript((typeof args[0] == sSTRING) ? {src:args[0]} : args[0]);
-							});
-						}
-						else use_engine = use_engine.script(args[idx]);
-						use_engine = use_engine.wait();
-					}
-				}
-				else {
-					for (idx=-1; ++idx<args.length;) {
-						if (isFunc(args[idx])) args[idx] = args[idx](); // if a function is found, call/evaluate it first
-					}
-					queueAndExecute(function(){
-						for (idx=-1; ++idx<args.length;) {
-							loadScript((typeof args[idx] == sSTRING) ? {src:args[idx]} : args[idx]);
-						}
-					});
-				}
-				end_of_chain_check_interval = fSETTIMEOUT(function(){first_pass = bFALSE;},5); // hack to "detect" the end of the chain if a wait() is not the last call
-				return use_engine;
-			},
-			wait:function(func) {
-				fCLEARTIMEOUT(end_of_chain_check_interval);
-				first_pass = bFALSE;
-				if (!isFunc(func)) func = fNOOP;
-				// On this current chain's waitFunc function, tack on call to trigger the queue for the *next* engine 
-				// in the chain, which will be executed when the current chain finishes loading
-				var e = engine(queueExec||scripts_loading,opts),	// if already in queuing, or if scripts now loading, keep queuing
-					triggerNextChain = e.trigger, // store ref to e's trigger function for use by 'wfunc'
-					wfunc = function(){ try { func(); } catch(err) {} triggerNextChain(); };
-				delete e.trigger; // remove the 'trigger' property from e's public API, since only used internally
-				var fn = function(){
-					if (scripts_loading && !ready) waitFunc = wfunc;
-					else wfunc();
-				};
-
-				if (queueExec && !scripts_loading) exec.push(fn);
-				else queueAndExecute(fn);
-				return e;
-			}
-		};
-		if (queueExec) {
-			// if queueing, return a function that the previous chain's waitFunc function can use to trigger this 
-			// engine's queue. NOTE: this trigger function is captured and removed from the public chain API before return
-			publicAPI.trigger = function() {
-				var fn, idx=-1;
-				while (fn = exec[++idx]) fn();
-				exec = []; 
-			};
-		}
-		else publicAPI.trigger = fNOOP; // no-op trigger function because this chain is not in queuing mode, so nothing to trigger
-		return publicAPI;
-	}
-	function processOpts(opts) {
-		var k, newOpts = {}, 
-			boolOpts = {"UseCachePreload":"cache","UseLocalXHR":"xhr","UsePreloading":sPRELOAD,"AlwaysPreserveOrder":sPRESERVE,"AllowDuplicates":"dupe"},
-			allOpts = {"AppendTo":sWHICH,"BasePath":"base"}
-		;
-		for (k in boolOpts) allOpts[k] = boolOpts[k];
-		newOpts.order = !(!global_defs.order);
-		for (k in allOpts) {
-			if (allOpts[sHASOWNPROPERTY](k) && global_defs[allOpts[k]] != nNULL) newOpts[allOpts[k]] = (opts[k] != nNULL) ? opts[k] : global_defs[allOpts[k]];
-		}
-		for (k in boolOpts) { // normalize bool props to actual boolean values if not already
-			if (boolOpts[sHASOWNPROPERTY](k)) newOpts[boolOpts[k]] = !(!newOpts[boolOpts[k]]);
-		}
-		if (!newOpts[sPRELOAD]) newOpts.cache = newOpts.order = newOpts.xhr = bFALSE; // turn off all flags if preloading is disabled
-		newOpts.which = (newOpts.which === sHEAD || newOpts.which === sBODY) ? newOpts.which : sHEAD;
-		return newOpts;
-	}
-	
-	global.$LAB = {
-		setGlobalDefaults:function(gdefs) { // intentionally does not return an "engine" instance -- must call as stand-alone function call on $LAB
-			global_defs = processOpts(gdefs);
-		},
-		setOptions:function(opts){ // set options per chain
-			return engine(bFALSE,processOpts(opts));
-		},
-		script:function(){ // will load one or more scripts
-			return engine().script.apply(nNULL,arguments);
-		},
-		wait:function(){ // will ensure that the chain's previous scripts are executed before execution of scripts in subsequent chain links
-			return engine().wait.apply(nNULL,arguments);
-		}
-	};
-	
-	/* The following "hack" was suggested by Andrea Giammarchi and adapted from: http://webreflection.blogspot.com/2009/11/195-chars-to-help-lazy-loading.html
-	   NOTE: this hack only operates in FF and then only in versions where document.readyState is not present (FF < 3.6?).
-	   
-	   The hack essentially "patches" the **page** that LABjs is loaded onto so that it has a proper conforming document.readyState, so that if a script which does 
-	   proper and safe dom-ready detection is loaded onto a page, after dom-ready has passed, it will still be able to detect this state, by inspecting the now hacked 
-	   document.readyState property. The loaded script in question can then immediately trigger any queued code executions that were waiting for the DOM to be ready. 
-	   For instance, jQuery 1.4+ has been patched to take advantage of document.readyState, which is enabled by this hack. But 1.3.2 and before are **not** safe or 
-	   fixed by this hack, and should therefore **not** be lazy-loaded by script loader tools such as LABjs.
-	*/ 
-	(function(addEvent,domLoaded,handler){
-		if (oDOC[sREADYSTATE] == nNULL && oDOC[addEvent]){
-			oDOC[sREADYSTATE] = "loading";
-			oDOC[addEvent](domLoaded,handler = function(){
-				oDOC.removeEventListener(domLoaded,handler,bFALSE);
-				oDOC[sREADYSTATE] = sCOMPLETE;
-			},bFALSE);
-		}
-	})("addEventListener","DOMContentLoaded");
-	
-})(window);
\ No newline at end of file
diff -urN punbb-1.4.1/include/js/min/punbb.common.min.js punbb-1.4.2/include/js/min/punbb.common.min.js
--- punbb-1.4.1/include/js/min/punbb.common.min.js	2011-11-27 18:23:16.000000000 +0000
+++ punbb-1.4.2/include/js/min/punbb.common.min.js	2012-02-09 20:42:20.000000000 +0000
@@ -3,5 +3,5 @@
     MIT License
 */
 (function(c){var h="string",k="head",t="body",U="script",O="readyState",R="preloaddone",D="loadtrigger",K="srcuri",H="preload",u="complete",f="done",b="which",v="preserve",o="onreadystatechange",L="onload",I="hasOwnProperty",E="script/cache",g="[object ",M=g+"Function]",F=g+"Array]",y=null,G=true,z=false,n=c.document,N=c.location,S=c.ActiveXObject,e=c.setTimeout,C=c.clearTimeout,T=function(V){return n.getElementsByTagName(V);},r=Object.prototype.toString,s=function(){},w={},A={},a=/^[^?#]*\//.exec(N.href)[0],x=/^\w+\:\/\/\/?[^\/]+/.exec(a)[0],Q=T(U),p=c.opera&&r.call(c.opera)==g+"Opera]",q=("MozAppearance" in n.documentElement.style),d=(n.createElement(U).async===true),m={cache:!(q||p),order:q||p||d,xhr:G,dupe:G,base:"",which:k};m[v]=z;m[H]=G;w[k]=n.head||T(k);w[t]=T(t);function P(V){return r.call(V)===M;}function B(Y,X){var W=/^\w+\:\/\//,V;if(typeof Y!=h){Y="";}if(typeof X!=h){X="";}V=((/^\/\//.test(Y))?N.protocol:"")+Y;V=(W.test(V)?"":X)+V;return((W.test(V)?"":(V.charAt(0)==="/"?x:a))+V);}function J(V){return(B(V).indexOf(x)===0);}function i(X){var W,V=-1;while(W=Q[++V]){if(typeof W.src==h&&X===B(W.src)&&W.type!==E){return G;}}return z;}function l(ay,am){ay=!(!ay);if(am==y){am=m;}var al=z,af=ay&&am[H],at=af&&am.cache,av=af&&am.order,Z=af&&am.xhr,aw=am[v],Y=am.which,ap=am.base,aa=s,ao=z,ai,ac=G,ad={},au=[],ag=y;af=at||Z||av;function ax(aA,az){if((aA[O]&&aA[O]!==u&&aA[O]!=="loaded")||az[f]){return z;}aA[L]=aA[o]=y;return G;}function X(aB,aA,aC){aC=!(!aC);if(!aC&&!(ax(aB,aA))){return;}aA[f]=G;for(var az in ad){if(ad[I](az)&&!(ad[az][f])){return;}}al=G;aa();}function ah(az){if(P(az[D])){az[D]();az[D]=y;}}function ae(aA,az){if(!ax(aA,az)){return;}az[R]=G;e(function(){w[az[b]].removeChild(aA);ah(az);},0);}function V(aA,az){if(aA[O]===4){aA[o]=s;az[R]=G;e(function(){ah(az);},0);}}function ar(aB,aE,aC,aF,aD,az){var aA=aB[b];e(function(){if("item" in w[aA]){if(!w[aA][0]){e(arguments.callee,25);return;}w[aA]=w[aA][0];}var aG=n.createElement(U);if(typeof aC==h){aG.type=aC;}if(typeof aF==h){aG.charset=aF;}if(P(aD)){aG[L]=aG[o]=function(){aD(aG,aB);};aG.src=aE;if(d){aG.async=z;}}w[aA].insertBefore(aG,(aA===k?w[aA].firstChild:y));if(typeof az==h){aG.text=az;X(aG,aB,G);}},0);}function ak(az,aB,aA,aC){A[az[K]]=G;ar(az,aB,aA,aC,X);}function aq(aA,aC,aB,aD){var az=arguments;if(ac&&aA[R]==y){aA[R]=z;ar(aA,aC,E,aD,ae);}else{if(!ac&&aA[R]!=y&&!aA[R]){aA[D]=function(){aq.apply(y,az);};}else{if(!ac){ak.apply(y,az);}}}}function W(aA,aD,aB,aE){var az=arguments,aC;if(ac&&aA[R]==y){aA[R]=z;aC=aA.xhr=(S?new S("Microsoft.XMLHTTP"):new c.XMLHttpRequest());aC[o]=function(){V(aC,aA);};aC.open("GET",aD);aC.send("");}else{if(!ac&&aA[R]!=y&&!aA[R]){aA[D]=function(){W.apply(y,az);};}else{if(!ac){A[aA[K]]=G;ar(aA,aD,aB,aE,y,aA.xhr.responseText);aA.xhr=y;}}}}function aj(aF){if(typeof aF=="undefined"||!aF){return;}if(aF.allowDup==y){aF.allowDup=am.dupe;}var aE=aF.src,aC=aF.type,aG=aF.charset,aA=aF.allowDup,az=B(aE,ap),aB,aD=J(az);if(typeof aG!=h){aG=y;}aA=!(!aA);if(!aA&&((A[az]!=y)||(ac&&ad[az])||i(az))){if(ad[az]!=y&&ad[az][R]&&!ad[az][f]&&aD){X(y,ad[az],G);}return;}if(ad[az]==y){ad[az]={};}aB=ad[az];if(aB[b]==y){aB[b]=Y;}aB[f]=z;aB[K]=az;ao=G;if(!av&&Z&&aD){W(aB,az,aC,aG);}else{if(!av&&at){aq(aB,az,aC,aG);}else{ak(aB,az,aC,aG);}}}function ab(az){if(ay&&!av){au.push(az);}if(!ay||af){az();}}function an(aB){var aA=[],az;for(az=-1;++az<aB.length;){if(r.call(aB[az])===F){aA=aA.concat(an(aB[az]));}else{aA[aA.length]=aB[az];}}return aA;}ai={script:function(){C(ag);var aB=an(arguments),aA=ai,az;if(aw){for(az=-1;++az<aB.length;){if(P(aB[az])){aB[az]=aB[az]();}if(az===0){ab(function(){aj((typeof aB[0]==h)?{src:aB[0]}:aB[0]);});}else{aA=aA.script(aB[az]);}aA=aA.wait();}}else{for(az=-1;++az<aB.length;){if(P(aB[az])){aB[az]=aB[az]();}}ab(function(){for(az=-1;++az<aB.length;){aj((typeof aB[az]==h)?{src:aB[az]}:aB[az]);}});}ag=e(function(){ac=z;},5);return aA;},wait:function(aC){C(ag);ac=z;if(!P(aC)){aC=s;}var aD=l(ay||ao,am),az=aD.trigger,aB=function(){try{aC();}catch(aE){}az();};delete aD.trigger;var aA=function(){if(ao&&!al){aa=aB;}else{aB();}};if(ay&&!ao){au.push(aA);}else{ab(aA);}return aD;}};if(ay){ai.trigger=function(){var aA,az=-1;while(aA=au[++az]){aA();}au=[];};}else{ai.trigger=s;}return ai;}function j(Z){var V,X={},W={"UseCachePreload":"cache","UseLocalXHR":"xhr","UsePreloading":H,"AlwaysPreserveOrder":v,"AllowDuplicates":"dupe"},Y={"AppendTo":b,"BasePath":"base"};for(V in W){Y[V]=W[V];}X.order=!(!m.order);for(V in Y){if(Y[I](V)&&m[Y[V]]!=y){X[Y[V]]=(Z[V]!=y)?Z[V]:m[Y[V]];}}for(V in W){if(W[I](V)){X[W[V]]=!(!X[W[V]]);}}if(!X[H]){X.cache=X.order=X.xhr=z;}X.which=(X.which===k||X.which===t)?X.which:k;return X;}c.$LAB={setGlobalDefaults:function(V){m=j(V);},setOptions:function(V){return l(z,j(V));},script:function(){return l().script.apply(y,arguments);},wait:function(){return l().wait.apply(y,arguments);}};(function(X,V,W){if(n[O]==y&&n[X]){n[O]="loading";
-n[X](V,W=function(){n.removeEventListener(V,W,z);n[O]=u;},z);}})("addEventListener","DOMContentLoaded");})(window);if(typeof PUNBB==="undefined"||!PUNBB){var PUNBB={};}PUNBB.common=(function(){var d=document.documentElement,c=false,a=false;function b(e){return document.getElementById(e);}return{on_domready_init:function(){c=true;PUNBB.common.addClass(d,"js");PUNBB.common.attachWindowOpen();PUNBB.common.autoFocus();PUNBB.common.attachCtrlEnterForm();if(!PUNBB.common.input_support_attr("required")){PUNBB.common.attachValidateForm();}var e=b("brd-messages");if(e){setTimeout(function(){e.style.visibility="hidden";},3500);}},on_load_init:function(){a=true;},addLoadEvent:function(f){if(a===true){f();}else{var e=window.onload;window.onload=(e&&typeof e==="function")?function(){e();f();}:f;}},addDOMReadyEvent:function(g){var e=false;if(c===true){g();return;}if(document.addEventListener){document.addEventListener("DOMContentLoaded",function(){g();e=true;},false);window.addEventListener("load",function(){if(!e){g();}},false);}else{if(window.attachEvent){if(window.ActiveXObject&&window===window.top){f();}else{window.attachEvent("onload",g);}}else{PUNBB.common.addLoadEvent(g);}}function f(){try{d.doScroll("left");}catch(h){setTimeout(f,0);return;}g();}},hasClass:function(f,e){return(new RegExp("\\b"+e+"\\b")).test(f.className);},addClass:function(f,e){if(PUNBB.common.hasClass(f,e)){return false;}else{f.className+=" "+e;}return true;},removeClass:function(f,e){if(!PUNBB.common.hasClass(f,e)){return false;}e=new RegExp("\\s*\\b"+e+"\\b","g");f.className=f.className.replace(e,"");return true;},blink:function(g,f){if(typeof f===undefined){f=2;}var e=g.style.visibility;if(f&&e!=="hidden"){g.style.visibility="hidden";setTimeout(function(){g.style.visibility=e;},200);setTimeout(function(){PUNBB.common.blink(g,f-1);},400);}},onScreen:function(l){function i(){var m=-1;if(window.pageYOffset){m=window.pageYOffset;}else{if(d&&d.scrollTop){m=d.scrollTop;}else{if(document.body){m=document.body.scrollTop;}}}return m;}function h(){var m=-1;if(window.innerHeight){m=window.innerHeight;}else{if(d&&d.clientHeight){m=d.clientHeight;}else{if(document.body){m=document.body.clientHeight;}}}return m;}function f(o){var m=o.offsetTop;o=o.offsetParent;return o?m+=f(o):m;}var e=i(),k=e+h(),g=f(l),j=g+l.clientHeight;return g>=e&&j<k;},map:function(h,f){var g,e;for(g=0,e=f.length;g<e;g+=1){f[g]=h(f[g]);}return f;},find:function(h,f){var g,e;for(g=0,e=f.length;g<e;g+=1){if(h(f[g])){return g;}}return -1;},arrayOfMatched:function(j,g){var h,f,e=[];for(h=0,f=g.length;h<f;h+=1){if(j(g[h])){e.push(g[h]);}}return e;},flatten:function(f){var g,e,h=[];for(g=0,e=f.length;g<e;g+=1){if(typeof f[g]==="object"&&f.length){h.concat(PUNBB.common.flatten(f[g]));}else{h.push(f[g]);}}return h;},validateForm:function(g){var f=function(l){return l.name&&l.name.indexOf("req_")===0;};var i=g.elements,e=PUNBB.common.arrayOfMatched(f,i);f=function(l){return(/^\s*$/).test(l.value);};var h=PUNBB.common.find(f,e);if(h>-1){if(PUNBB.common.find(f,e)>-1){var k=b("req-msg");PUNBB.common.removeClass(k,"req-warn");var j=PUNBB.common.addClass(k,"req-error");if(!PUNBB.common.onScreen(k)){k.scrollIntoView();setTimeout(function(){PUNBB.common.blink(k);},500);}else{if(!j){PUNBB.common.blink(k);}}if(PUNBB.common.onScreen(e[h])){e[h].focus();}return false;}}return true;},doQuickjumpRedirect:function(g,f){var e=b("qjump-select")[b("qjump-select").selectedIndex].value;g=g.replace("$1",e);g=g.replace("$2",f[e]);document.location=g;return false;},attachQuickjumpRedirect:function(e,h){var g=b("qjump-select"),f=b("qjump-submit");if(g){g.onchange=function(){return PUNBB.common.doQuickjumpRedirect(e,h);};}if(f){f.onclick=function(){return PUNBB.common.doQuickjumpRedirect(e,h);};PUNBB.common.addClass(f,"visual-hidden");}},initToggleCheckboxes:function(){var j=function(i){return function(){return PUNBB.common.toggleCheckboxes(i);};};var f,e,k=document.getElementsByTagName("span");for(f=0,e=k.length;f<e;f+=1){var g=k[f];if(PUNBB.common.hasClass(g,"select-all")&&g.getAttribute("data-check-form")){var h=b(g.getAttribute("data-check-form"));if(h){g.onclick=j(h);}}}},toggleCheckboxes:function(h){if(!h){return false;}var f,e,j=h.getElementsByTagName("input");for(f=0,e=j.length;f<e;f+=1){var g=j[f];if(g.getAttribute("data-no-select-all")){continue;}if(g.getAttribute("type")=="checkbox"&&g.disabled===false){g.checked=!g.checked;}}return false;},attachCtrlEnterForm:function(){var q=function(f){return function(j){j=j||window.event;var i=j.keyCode||j.which;if(((i==13)||(i==10))&&(j.ctrlKey===true)){return f.submit();}};};var m=function(f){return f.tagName.toUpperCase()=="TEXTAREA";};var l,p,g=document.forms;for(l=0,p=g.length;l<p;l+=1){var o=g[l];if(!PUNBB.common.hasClass(o,"frm-ctrl-submit")){continue;}var k,n,e=o.elements,h=PUNBB.common.arrayOfMatched(m,e);for(k=0,n=h.length;k<n;k+=1){h[k].onkeypress=q(o);}}},attachValidateForm:function(){var n=function(i){return i.name&&i.name.indexOf("req_")===0;};var k=function(i){return i.type&&(i.type=="submit"&&i.name!="cancel");
-};var l=function(i){return function(){return PUNBB.common.validateForm(i);};};var j,m,f=document.forms;for(j=0,m=f.length;j<m;j+=1){var e=f[j].elements;if(PUNBB.common.find(n,e)>-1){var g=PUNBB.common.arrayOfMatched(k,e),h=f[j];g=PUNBB.common.map(function(i){i.onclick=l(h);},g);}}},attachWindowOpen:function(){if(!document.getElementsByTagName){return;}var g=function(){return function(){window.open(this.href);return false;};};var f,e=document.getElementsByTagName("a");for(f=0;f<e.length;f+=1){if(PUNBB.common.hasClass(e[f],"exthelp")){e[f].onclick=g();}}},autoFocus:function(){var f=function(h){return h.offsetWidth>0&&(h.tagName.toUpperCase()=="TEXTAREA"||(h.tagName.toUpperCase()=="INPUT"&&(h.type=="text")||(h.type=="password")||(h.type=="email")||(h.type=="url")||(h.type=="number")));};var e=b("afocus");if(!e||window.location.hash.replace(/#/g,"")){return;}e=e.all||e.getElementsByTagName("*");var g=PUNBB.common.find(f,e);if(g>-1){e[g].focus();}},input_support_attr:function(e){var f=document.createElement("input");if(!e){return false;}return !!(e in f);}};}());PUNBB.common.addDOMReadyEvent(PUNBB.common.on_domready_init);PUNBB.common.addLoadEvent(PUNBB.common.on_load_init);
\ No newline at end of file
+n[X](V,W=function(){n.removeEventListener(V,W,z);n[O]=u;},z);}})("addEventListener","DOMContentLoaded");})(window);if(typeof PUNBB==="undefined"||!PUNBB){var PUNBB={};}PUNBB.common=(function(){var e=document.documentElement,d=false,a=false;function b(f){return document.getElementById(f);}function c(f,h){if(f&&h){if(f.value.length===0&&h.value.length===0){return;}if(f.value===h.value){return;}var g=parseInt(h.getAttribute("maxlength"),10)||0;if(g>0){h.value=f.value.replace(/@.*/,"").replace(/\s/g,"").substr(0,g);}else{h.value=f.value.replace(/@.*/,"").replace(/\s/g,"");}}}return{on_domready_init:function(){d=true;PUNBB.common.addClass(e,"js");PUNBB.common.attachWindowOpen();PUNBB.common.autoFocus();PUNBB.common.attachCtrlEnterForm();PUNBB.common.attachUsernameFromEmail();PUNBB.common.attachEmailFieldFixer();if(!PUNBB.common.input_support_attr("required")){PUNBB.common.attachValidateForm();}var f=b("brd-messages");if(f){setTimeout(function(){f.style.visibility="hidden";},3500);}},on_load_init:function(){a=true;},addLoadEvent:function(g){if(a===true){g();}else{var f=window.onload;window.onload=(f&&typeof f==="function")?function(){f();g();}:g;}},addDOMReadyEvent:function(h){var f=false;if(d===true){h();return;}if(document.addEventListener){document.addEventListener("DOMContentLoaded",function(){h();f=true;},false);window.addEventListener("load",function(){if(!f){h();}},false);}else{if(window.attachEvent){if(window.ActiveXObject&&window===window.top){g();}else{window.attachEvent("onload",h);}}else{PUNBB.common.addLoadEvent(h);}}function g(){try{e.doScroll("left");}catch(i){setTimeout(g,0);return;}h();}},hasClass:function(g,f){return(new RegExp("\\b"+f+"\\b")).test(g.className);},addClass:function(g,f){if(PUNBB.common.hasClass(g,f)){return false;}else{g.className+=" "+f;}return true;},removeClass:function(g,f){if(!PUNBB.common.hasClass(g,f)){return false;}f=new RegExp("\\s*\\b"+f+"\\b","g");g.className=g.className.replace(f,"");return true;},blink:function(h,g){if(typeof g===undefined){g=2;}var f=h.style.visibility;if(g&&f!=="hidden"){h.style.visibility="hidden";setTimeout(function(){h.style.visibility=f;},200);setTimeout(function(){PUNBB.common.blink(h,g-1);},400);}},onScreen:function(m){function j(){var n=-1;if(window.pageYOffset){n=window.pageYOffset;}else{if(e&&e.scrollTop){n=e.scrollTop;}else{if(document.body){n=document.body.scrollTop;}}}return n;}function i(){var n=-1;if(window.innerHeight){n=window.innerHeight;}else{if(e&&e.clientHeight){n=e.clientHeight;}else{if(document.body){n=document.body.clientHeight;}}}return n;}function g(p){var o=p.offsetTop;p=p.offsetParent;return p?o+=g(p):o;}var f=j(),l=f+i(),h=g(m),k=h+m.clientHeight;return h>=f&&k<l;},map:function(j,g){var h,f;for(h=0,f=g.length;h<f;h+=1){g[h]=j(g[h]);}return g;},find:function(j,g){var h,f;for(h=0,f=g.length;h<f;h+=1){if(j(g[h])){return h;}}return -1;},arrayOfMatched:function(k,h){var j,g,f=[];for(j=0,g=h.length;j<g;j+=1){if(k(h[j])){f.push(h[j]);}}return f;},flatten:function(g){var h,f,j=[];for(h=0,f=g.length;h<f;h+=1){if(typeof g[h]==="object"&&g.length){j.concat(PUNBB.common.flatten(g[h]));}else{j.push(g[h]);}}return j;},validateForm:function(h){var g=function(m){return m.name&&m.name.indexOf("req_")===0;};var j=h.elements,f=PUNBB.common.arrayOfMatched(g,j);g=function(m){return(/^\s*$/).test(m.value);};var i=PUNBB.common.find(g,f);if(i>-1){if(PUNBB.common.find(g,f)>-1){var l=b("req-msg");PUNBB.common.removeClass(l,"req-warn");var k=PUNBB.common.addClass(l,"req-error");if(!PUNBB.common.onScreen(l)){l.scrollIntoView();setTimeout(function(){PUNBB.common.blink(l);},500);}else{if(!k){PUNBB.common.blink(l);}}if(PUNBB.common.onScreen(f[i])){f[i].focus();}return false;}}return true;},doQuickjumpRedirect:function(h,g){var f=b("qjump-select")[b("qjump-select").selectedIndex].value;h=h.replace("$1",f);h=h.replace("$2",g[f]);document.location=h;return false;},attachQuickjumpRedirect:function(f,i){var h=b("qjump-select"),g=b("qjump-submit");if(h){h.onchange=function(){return PUNBB.common.doQuickjumpRedirect(f,i);};}if(g){g.onclick=function(){return PUNBB.common.doQuickjumpRedirect(f,i);};PUNBB.common.addClass(g,"visual-hidden");}},initToggleCheckboxes:function(){var k=function(i){return function(){return PUNBB.common.toggleCheckboxes(i);};};var g,f,l=document.getElementsByTagName("span");for(g=0,f=l.length;g<f;g+=1){var h=l[g];if(PUNBB.common.hasClass(h,"select-all")&&h.getAttribute("data-check-form")){var j=b(h.getAttribute("data-check-form"));if(j){h.onclick=k(j);}}}},toggleCheckboxes:function(j){if(!j){return false;}var g,f,k=j.getElementsByTagName("input");for(g=0,f=k.length;g<f;g+=1){var h=k[g];if(h.getAttribute("data-no-select-all")){continue;}if(h.getAttribute("type")=="checkbox"&&h.disabled===false){h.checked=!h.checked;}}return false;},attachCtrlEnterForm:function(){var r=function(f){return function(j){j=j||window.event;var i=j.keyCode||j.which;if(((i==13)||(i==10))&&(j.ctrlKey===true)){return f.submit();}};};var n=function(f){return f.tagName.toUpperCase()=="TEXTAREA";
+};var m,q,h=document.forms;for(m=0,q=h.length;m<q;m+=1){var p=h[m];if(!PUNBB.common.hasClass(p,"frm-ctrl-submit")){continue;}var l,o,g=p.elements,k=PUNBB.common.arrayOfMatched(n,g);for(l=0,o=k.length;l<o;l+=1){k[l].onkeypress=r(p);}}},attachValidateForm:function(){var o=function(i){return i.name&&i.name.indexOf("req_")===0;};var l=function(i){return i.type&&(i.type=="submit"&&i.name!="cancel");};var m=function(i){return function(){return PUNBB.common.validateForm(i);};};var k,n,g=document.forms;for(k=0,n=g.length;k<n;k+=1){var f=g[k].elements;if(PUNBB.common.find(o,f)>-1){var h=PUNBB.common.arrayOfMatched(l,f),j=g[k];h=PUNBB.common.map(function(i){i.onclick=m(j);},h);}}},attachWindowOpen:function(){if(!document.getElementsByTagName){return;}var h=function(){return function(){window.open(this.href);return false;};};var g,f=document.getElementsByTagName("a");for(g=0;g<f.length;g+=1){if(PUNBB.common.hasClass(f[g],"exthelp")){f[g].onclick=h();}}},autoFocus:function(){var g=function(i){return i.offsetWidth>0&&(i.tagName.toUpperCase()=="TEXTAREA"||(i.tagName.toUpperCase()=="INPUT"&&(i.type=="text")||(i.type=="password")||(i.type=="email")||(i.type=="url")||(i.type=="number")));};var f=b("afocus");if(!f||window.location.hash.replace(/#/g,"")){return;}f=f.all||f.getElementsByTagName("*");var h=PUNBB.common.find(g,f);if(h>-1){f[h].focus();}},input_support_attr:function(f){var g=document.createElement("input");if(!f){return false;}return !!(f in g);},attachUsernameFromEmail:function(){var m=function(f){return(f.tagName.toUpperCase()=="INPUT"&&f.type=="email"&&f.getAttribute("data-suggest-role")==="email");};var p=function(f){return(f.tagName.toUpperCase()=="INPUT"&&f.type=="text"&&f.getAttribute("data-suggest-role")==="username");};var j,n,g=document.forms;for(j=0,n=g.length;j<n;j+=1){var l=g[j],k=-1,h=-1;if(!PUNBB.common.hasClass(l,"frm-suggest-username")){continue;}k=PUNBB.common.find(m,l.elements);h=PUNBB.common.find(p,l.elements);if(k>0&&h>0){var o=function(f){return function(i){c(this,f);};};l.elements[k].onkeyup=o(l.elements[h]);}}},attachEmailFieldFixer:function(){var n=function(i){return(i.tagName.toUpperCase()=="INPUT"&&i.type=="email");};var p=function(){var i=this;if(i&&i.value.length>0){i.value=i.value.replace(/\s/g,"");}};var l,o,g=document.forms;for(l=0,o=g.length;l<o;l+=1){var k,m,f=g[l].elements,h=PUNBB.common.arrayOfMatched(n,f);for(k=0,m=h.length;k<m;k+=1){h[k].onblur=p;}}}};}());PUNBB.common.addDOMReadyEvent(PUNBB.common.on_domready_init);PUNBB.common.addLoadEvent(PUNBB.common.on_load_init);
\ No newline at end of file
diff -urN punbb-1.4.1/include/js/min/punbb.install.min.js punbb-1.4.2/include/js/min/punbb.install.min.js
--- punbb-1.4.1/include/js/min/punbb.install.min.js	2011-11-16 21:10:15.000000000 +0000
+++ punbb-1.4.2/include/js/min/punbb.install.min.js	2012-02-09 20:42:20.000000000 +0000
@@ -1 +1 @@
-if(typeof PUNBB==="undefined"||!PUNBB){var PUNBB={};}PUNBB.install=(function(){function a(b){return document.getElementById(b);}return{init:function(){PUNBB.install.selectDB_attach_event();},selectDB_update:function(){var b=a("req_db_type")[a("req_db_type").selectedIndex].value;if(b==="sqlite"||b==="sqlite3"){PUNBB.common.addClass(a("db_username_block"),"hidden");PUNBB.common.addClass(a("db_password_block"),"hidden");}else{PUNBB.common.removeClass(a("db_username_block"),"hidden");PUNBB.common.removeClass(a("db_password_block"),"hidden");}return false;},selectDB_attach_event:function(){var b=a("req_db_type");if(b){b.onchange=function(){return PUNBB.install.selectDB_update();};PUNBB.install.selectDB_update();}}};}());PUNBB.common.addDOMReadyEvent(PUNBB.install.init);
\ No newline at end of file
+if(typeof PUNBB==="undefined"||!PUNBB){var PUNBB={};}PUNBB.install=(function(){function a(b){return document.getElementById(b);}return{init:function(){PUNBB.install.selectDB_attach_event();},selectDB_update:function(){var b=a("req_db_type")[a("req_db_type").selectedIndex].value;if(b==="sqlite"||b==="sqlite3"){PUNBB.common.addClass(a("db_host_block"),"hidden");PUNBB.common.addClass(a("db_username_block"),"hidden");PUNBB.common.addClass(a("db_password_block"),"hidden");if(a("db_host").value.length<0){a("db_host").value="localhost";}}else{PUNBB.common.removeClass(a("db_host_block"),"hidden");PUNBB.common.removeClass(a("db_username_block"),"hidden");PUNBB.common.removeClass(a("db_password_block"),"hidden");}return false;},selectDB_attach_event:function(){var b=a("req_db_type");if(b){b.onchange=function(){return PUNBB.install.selectDB_update();};PUNBB.install.selectDB_update();}}};}());PUNBB.common.addDOMReadyEvent(PUNBB.install.init);
\ No newline at end of file
diff -urN punbb-1.4.1/include/js/min/punbb.timezone.min.js punbb-1.4.2/include/js/min/punbb.timezone.min.js
--- punbb-1.4.1/include/js/min/punbb.timezone.min.js	2011-11-16 21:10:15.000000000 +0000
+++ punbb-1.4.2/include/js/min/punbb.timezone.min.js	2012-02-09 20:42:20.000000000 +0000
@@ -1 +1 @@
-if(typeof PUNBB==="undefined"||!PUNBB){var PUNBB={};}PUNBB.timezone=(function(){var b="SOUTH",a="NORTH",c="N/A",h={},e;e=function(l,k,j){this.utc_offset=l;this.olson_tz=k;this.uses_dst=j;};h.timezones={"-720,0":new e("-12:00","Etc/GMT+12",false),"-660,0":new e("-11:00","Pacific/Pago_Pago",false),"-600,1":new e("-11:00","America/Adak",true),"-660,1,s":new e("-11:00","Pacific/Apia",true),"-600,0":new e("-10:00","Pacific/Honolulu",false),"-570,0":new e("-09:30","Pacific/Marquesas",false),"-540,0":new e("-09:00","Pacific/Gambier",false),"-540,1":new e("-09:00","America/Anchorage",true),"-480,1":new e("-08:00","America/Los_Angeles",true),"-480,0":new e("-08:00","Pacific/Pitcairn",false),"-420,0":new e("-07:00","America/Phoenix",false),"-420,1":new e("-07:00","America/Denver",true),"-360,0":new e("-06:00","America/Guatemala",false),"-360,1":new e("-06:00","America/Chicago",true),"-360,1,s":new e("-06:00","Pacific/Easter",true),"-300,0":new e("-05:00","America/Bogota",false),"-300,1":new e("-05:00","America/New_York",true),"-270,0":new e("-04:30","America/Caracas",false),"-240,1":new e("-04:00","America/Halifax",true),"-240,0":new e("-04:00","America/Santo_Domingo",false),"-240,1,s":new e("-04:00","America/Asuncion",true),"-210,1":new e("-03:30","America/St_Johns",true),"-180,1":new e("-03:00","America/Godthab",true),"-180,0":new e("-03:00","America/Argentina/Buenos_Aires",false),"-180,1,s":new e("-03:00","America/Montevideo",true),"-120,0":new e("-02:00","America/Noronha",false),"-120,1":new e("-02:00","Etc/GMT+2",true),"-60,1":new e("-01:00","Atlantic/Azores",true),"-60,0":new e("-01:00","Atlantic/Cape_Verde",false),"0,0":new e("00:00","Etc/UTC",false),"0,1":new e("00:00","Europe/London",true),"60,1":new e("+01:00","Europe/Berlin",true),"60,0":new e("+01:00","Africa/Lagos",false),"60,1,s":new e("+01:00","Africa/Windhoek",true),"120,1":new e("+02:00","Asia/Beirut",true),"120,0":new e("+02:00","Africa/Johannesburg",false),"180,1":new e("+03:00","Europe/Moscow",true),"180,0":new e("+03:00","Asia/Baghdad",false),"210,1":new e("+03:30","Asia/Tehran",true),"240,0":new e("+04:00","Asia/Dubai",false),"240,1":new e("+04:00","Asia/Yerevan",true),"270,0":new e("+04:30","Asia/Kabul",false),"300,1":new e("+05:00","Asia/Yekaterinburg",true),"300,0":new e("+05:00","Asia/Karachi",false),"330,0":new e("+05:30","Asia/Kolkata",false),"345,0":new e("+05:45","Asia/Kathmandu",false),"360,0":new e("+06:00","Asia/Dhaka",false),"360,1":new e("+06:00","Asia/Omsk",true),"390,0":new e("+06:30","Asia/Rangoon",false),"420,1":new e("+07:00","Asia/Krasnoyarsk",true),"420,0":new e("+07:00","Asia/Jakarta",false),"480,0":new e("+08:00","Asia/Shanghai",false),"480,1":new e("+08:00","Asia/Irkutsk",true),"525,0":new e("+08:45","Australia/Eucla",true),"525,1,s":new e("+08:45","Australia/Eucla",true),"540,1":new e("+09:00","Asia/Yakutsk",true),"540,0":new e("+09:00","Asia/Tokyo",false),"570,0":new e("+09:30","Australia/Darwin",false),"570,1,s":new e("+09:30","Australia/Adelaide",true),"600,0":new e("+10:00","Australia/Brisbane",false),"600,1":new e("+10:00","Asia/Vladivostok",true),"600,1,s":new e("+10:00","Australia/Sydney",true),"630,1,s":new e("+10:30","Australia/Lord_Howe",true),"660,1":new e("+11:00","Asia/Kamchatka",true),"660,0":new e("+11:00","Pacific/Noumea",false),"690,0":new e("+11:30","Pacific/Norfolk",false),"720,1,s":new e("+12:00","Pacific/Auckland",true),"720,0":new e("+12:00","Pacific/Tarawa",false),"765,1,s":new e("+12:45","Pacific/Chatham",true),"780,0":new e("+13:00","Pacific/Tongatapu",false),"840,0":new e("+14:00","Pacific/Kiritimati",false)};function d(j){return -j.getTimezoneOffset();}function f(){return d(new Date(2011,0,1,0,0,0,0));}function i(){return d(new Date(2011,5,1,0,0,0,0));}function g(){var j=f(),k=i(),l=j-k;if(l<0){return{"utc_offset":j,"dst":1,"hemisphere":a};}else{if(l>0){return{"utc_offset":k,"dst":1,"hemisphere":b};}}return{"utc_offset":j,"dst":0,"hemisphere":c};}return{determine:function(){var l=g(),k="",j;if(l.hemisphere===b){k=",s";}j=l.utc_offset+","+l.dst.toString()+k;return{"timezone":h.timezones[j],"key":j};},detect_on_register_form:function(){PUNBB.common.addDOMReadyEvent(function(){var l=PUNBB.timezone.determine().timezone,k=document.getElementById("register_timezone"),j=document.getElementById("register_dst");if(k&&j){k.value=l.utc_offset;j.value=l.uses_dst?"1":"0";}});}};}());
\ No newline at end of file
+if(typeof PUNBB==="undefined"||!PUNBB){var PUNBB={};}PUNBB.timezone=(function(){var b="SOUTH",a="NORTH",c="N/A",h={},e;e=function(l,k,j){this.utc_offset=l;this.olson_tz=k;this.uses_dst=j;};h.timezones={"-720,0":new e("-12:00","Etc/GMT+12",false),"-660,0":new e("-11:00","Pacific/Pago_Pago",false),"-600,1":new e("-11:00","America/Adak",true),"-600,0":new e("-10:00","Pacific/Honolulu",false),"-570,0":new e("-09:30","Pacific/Marquesas",false),"-540,0":new e("-09:00","Pacific/Gambier",false),"-540,1":new e("-09:00","America/Anchorage",true),"-480,1":new e("-08:00","America/Los_Angeles",true),"-480,0":new e("-08:00","Pacific/Pitcairn",false),"-420,0":new e("-07:00","America/Phoenix",false),"-420,1":new e("-07:00","America/Denver",true),"-360,0":new e("-06:00","America/Guatemala",false),"-360,1":new e("-06:00","America/Chicago",true),"-360,1,s":new e("-06:00","Pacific/Easter",true),"-300,0":new e("-05:00","America/Bogota",false),"-300,1":new e("-05:00","America/New_York",true),"-270,0":new e("-04:30","America/Caracas",false),"-240,1":new e("-04:00","America/Halifax",true),"-240,0":new e("-04:00","America/Santo_Domingo",false),"-240,1,s":new e("-04:00","America/Asuncion",true),"-210,1":new e("-03:30","America/St_Johns",true),"-180,1":new e("-03:00","America/Godthab",true),"-180,0":new e("-03:00","America/Argentina/Buenos_Aires",false),"-180,1,s":new e("-03:00","America/Montevideo",true),"-120,0":new e("-02:00","America/Noronha",false),"-120,1":new e("-02:00","Etc/GMT+2",true),"-60,1":new e("-01:00","Atlantic/Azores",true),"-60,0":new e("-01:00","Atlantic/Cape_Verde",false),"0,0":new e("00:00","Etc/UTC",false),"0,1":new e("00:00","Europe/London",true),"60,1":new e("+01:00","Europe/Berlin",true),"60,0":new e("+01:00","Africa/Lagos",false),"60,1,s":new e("+01:00","Africa/Windhoek",true),"120,1":new e("+02:00","Asia/Beirut",true),"120,0":new e("+02:00","Africa/Johannesburg",false),"180,1":new e("+03:00","Europe/Moscow",true),"180,0":new e("+03:00","Asia/Baghdad",false),"210,1":new e("+03:30","Asia/Tehran",true),"240,0":new e("+04:00","Asia/Dubai",false),"240,1":new e("+04:00","Asia/Yerevan",true),"270,0":new e("+04:30","Asia/Kabul",false),"300,1":new e("+05:00","Asia/Yekaterinburg",true),"300,0":new e("+05:00","Asia/Karachi",false),"330,0":new e("+05:30","Asia/Kolkata",false),"345,0":new e("+05:45","Asia/Kathmandu",false),"360,0":new e("+06:00","Asia/Dhaka",false),"360,1":new e("+06:00","Asia/Omsk",true),"390,0":new e("+06:30","Asia/Rangoon",false),"420,1":new e("+07:00","Asia/Krasnoyarsk",true),"420,0":new e("+07:00","Asia/Jakarta",false),"480,0":new e("+08:00","Asia/Shanghai",false),"480,1":new e("+08:00","Asia/Irkutsk",true),"525,0":new e("+08:45","Australia/Eucla",true),"525,1,s":new e("+08:45","Australia/Eucla",true),"540,1":new e("+09:00","Asia/Yakutsk",true),"540,0":new e("+09:00","Asia/Tokyo",false),"570,0":new e("+09:30","Australia/Darwin",false),"570,1,s":new e("+09:30","Australia/Adelaide",true),"600,0":new e("+10:00","Australia/Brisbane",false),"600,1":new e("+10:00","Asia/Vladivostok",true),"600,1,s":new e("+10:00","Australia/Sydney",true),"630,1,s":new e("+10:30","Australia/Lord_Howe",true),"660,1":new e("+11:00","Asia/Kamchatka",true),"660,0":new e("+11:00","Pacific/Noumea",false),"690,0":new e("+11:30","Pacific/Norfolk",false),"720,1,s":new e("+12:00","Pacific/Auckland",true),"720,0":new e("+12:00","Pacific/Tarawa",false),"765,1,s":new e("+12:45","Pacific/Chatham",true),"780,0":new e("+13:00","Pacific/Tongatapu",false),"780,1,s":new e("+13:00","Pacific/Apia",true),"840,0":new e("+14:00","Pacific/Kiritimati",false)};function d(j){return -j.getTimezoneOffset();}function f(){var j=new Date();return d(new Date(j.getFullYear(),0,1,0,0,0,0));}function i(){var j=new Date();return d(new Date(j.getFullYear(),5,1,0,0,0,0));}function g(){var j=f(),k=i(),l=j-k;if(l<0){return{"utc_offset":j,"dst":1,"hemisphere":a};}else{if(l>0){return{"utc_offset":k,"dst":1,"hemisphere":b};}}return{"utc_offset":j,"dst":0,"hemisphere":c};}return{determine:function(){var l=g(),k="",j;if(l.hemisphere===b){k=",s";}j=l.utc_offset+","+l.dst.toString()+k;return{"timezone":h.timezones[j],"key":j};},detect_on_register_form:function(){PUNBB.common.addDOMReadyEvent(function(){var l=PUNBB.timezone.determine().timezone,k=document.getElementById("register_timezone"),j=document.getElementById("register_dst");if(k&&j){k.value=l.utc_offset;j.value=l.uses_dst?"1":"0";}});}};}());
\ No newline at end of file
diff -urN punbb-1.4.1/include/js/punbb.common.js punbb-1.4.2/include/js/punbb.common.js
--- punbb-1.4.1/include/js/punbb.common.js	2011-11-27 18:23:16.000000000 +0000
+++ punbb-1.4.2/include/js/punbb.common.js	1970-01-01 00:00:00.000000000 +0000
@@ -1,495 +0,0 @@
-/* FORUM
- * version 0.3
- */
-
-/*global PUNBB: true */
-
-if (typeof PUNBB === 'undefined' || !PUNBB) {
-	var PUNBB = {};
-}
-
-PUNBB.common = (function () {
-	'use strict';
-	var docEl = document.documentElement,
-		isDOMReady = false,
-		isWindowLoaded = false;
-
-	function get(el) {
-		return document.getElementById(el);
-	}
-
-	return {
-		on_domready_init: function () {
-			isDOMReady = true;
-
-			PUNBB.common.addClass(docEl, "js");
-
-			PUNBB.common.attachWindowOpen();
-			PUNBB.common.autoFocus();
-			PUNBB.common.attachCtrlEnterForm();
-
-			if (!PUNBB.common.input_support_attr("required")) {
-				PUNBB.common.attachValidateForm();
-			}
-
-			// Hide Flash Messages
-			var msgEl = get("brd-messages");
-			if (msgEl) {
-				setTimeout(function () {
-					msgEl.style.visibility = 'hidden';
-				}, 3500);
-			}
-		},
-
-		// run on window.load
-		on_load_init: function () {
-			isWindowLoaded = true;
-		},
-
-		// attach FN to WINDOW.ONLOAD handler
-		addLoadEvent: function (fn) {
-			if (isWindowLoaded === true) {
-				fn();
-			} else {
-				var x = window.onload;
-				window.onload = (x && typeof x === 'function') ? function () { x(); fn(); } : fn;
-			}
-		},
-
-
-		// attach FN to WINDOW.ONDOMREADY handler
-		addDOMReadyEvent: function (fn) {
-			var isLoaded = false;
-
-			// DOM already ready?
-			if (isDOMReady === true) {
-				fn();
-				return;
-			}
-
-			if (document.addEventListener) {
-				document.addEventListener('DOMContentLoaded', function () {
-					fn();
-					isLoaded = true;
-				}, false);
-
-				window.addEventListener('load', function () {
-					if (!isLoaded) {
-						fn();
-					}
-				}, false);
-			} else if (window.attachEvent) {
-				if (window.ActiveXObject && window === window.top) {
-					_ie();
-				} else {
-					window.attachEvent('onload', fn);
-				}
-			} else {
-				PUNBB.common.addLoadEvent(fn);
-			}
-
-			function _ie() {
-				try {
-					docEl.doScroll('left');
-				} catch (error) {
-					setTimeout(_ie, 0);
-					return;
-				}
-				fn();
-			}
-		},
-
-
-		// return TRUE if node N has class X, else FALSE
-		hasClass: function (n, x) {
-			return (new RegExp("\\b" + x + "\\b")).test(n.className);
-		},
-
-		// add X class to N node, return TRUE if added, FALSE if already exists
-		addClass: function (n, x) {
-			if (PUNBB.common.hasClass(n, x)) {
-				return false;
-			} else {
-				n.className += " " + x;
-			}
-
-			return true;
-		},
-
-		// remove X class from N node, return TRUE if removed, FALSE if not present
-		removeClass: function (n, x) {
-			if (!PUNBB.common.hasClass(n, x)) {
-				return false;
-			}
-
-			x = new RegExp("\\s*\\b" + x + "\\b", "g");
-			n.className = n.className.replace(x, "");
-			return true;
-		},
-
-		// blink node N twice
-		blink: function (n, i) {
-			if (typeof i === undefined) {
-				i = 2;
-			}
-
-			var x = n.style.visibility;
-			if (i && x !== 'hidden') {
-				n.style.visibility = 'hidden';
-				setTimeout(function () { n.style.visibility = x; }, 200);
-				setTimeout(function () { PUNBB.common.blink(n, i - 1); }, 400);
-			}
-		},
-
-		// return true if node N scrolled into view, else false (y axis only)
-		onScreen: function (n) {
-			function pageYOffset() {
-				// return number of pixels page has scrolled
-				var y = -1;
-				if (window.pageYOffset) {
-					// all except IE
-					y = window.pageYOffset;
-				} else if (docEl && docEl.scrollTop) {
-					// IE 6 Strict
-					y = docEl.scrollTop;
-				} else if (document.body) {
-					// all other IE ver
-					y = document.body.scrollTop;
-				}
-
-				return y;
-			}
-
-			function innerHeight() {
-				// return inner height of browser window
-				var y = -1;
-				if (window.innerHeight) {
-					// all except IE
-					y = window.innerHeight;
-				} else if (docEl && docEl.clientHeight) {
-					// IE 6 Strict Mode
-					y = docEl.clientHeight;
-				} else if (document.body) {
-					// all other IE ver
-					y = document.body.clientHeight;
-				}
-
-				return y;
-			}
-
-			function nodeYOffset(n) {
-			// return y coordinate of node N
-				var y = n.offsetTop;
-				n = n.offsetParent;
-				return n ? y += nodeYOffset(n) : y;
-			}
-
-			var screenTop = pageYOffset(),
-				screenBottom = screenTop + innerHeight(),
-				nodeTop = nodeYOffset(n),
-				nodeBottom = nodeTop + n.clientHeight;
-
-			return nodeTop >= screenTop && nodeBottom < screenBottom;
-		},
-
-		// apply FN to every ARR item, return array of results
-		map: function (fn, arr) {
-			var i, len;
-			for (i = 0, len = arr.length; i < len; i += 1) {
-				arr[i] = fn(arr[i]);
-			}
-			return arr;
-		},
-
-		// return first index where FN(ARR[i]) is true or -1 if none
-		find: function (fn, arr) {
-			var i, len;
-			for (i = 0, len = arr.length; i < len; i += 1) {
-				if (fn(arr[i])) {
-					return i;
-				}
-			}
-			return -1;
-		},
-
-		// return array of elements for which FN(ARR[i]) is true
-		arrayOfMatched: function (fn, arr) {
-			var i, len, matched = [];
-			for (i = 0, len = arr.length; i < len; i += 1) {
-				if (fn(arr[i])) {
-					matched.push(arr[i]);
-				}
-			}
-			return matched;
-		},
-
-		// flattens multi-dimentional arrays into simple arrays
-		flatten: function (arr) {
-			var i, len, flt = [];
-			for (i = 0, len = arr.length; i < len; i += 1) {
-				if (typeof arr[i] === 'object' && arr.length) {
-					flt.concat(PUNBB.common.flatten(arr[i]));
-				} else {
-					flt.push(arr[i]);
-				}
-			}
-
-			return flt;
-		},
-
-		// check FORMs required (REQ_) fields
-		validateForm: function (form) {
-			var fn = function (x) {
-				return x.name && x.name.indexOf("req_") === 0;
-			};
-
-			var elements = form.elements,
-				nodes = PUNBB.common.arrayOfMatched(fn, elements);
-
-			fn = function (x) {
-				return (/^\s*$/).test(x.value);
-			};
-
-			var empty = PUNBB.common.find(fn, nodes);
-			if (empty > -1) {
-				if (PUNBB.common.find(fn, nodes) > -1) {
-					var n = get("req-msg");
-					PUNBB.common.removeClass(n, "req-warn");
-					var newlyAdded = PUNBB.common.addClass(n, "req-error");
-
-					if (!PUNBB.common.onScreen(n)) {
-						n.scrollIntoView(); // method not in W3C DOM, but fully cross-browser?
-						setTimeout(function () { PUNBB.common.blink(n); }, 500);
-					} else if (!newlyAdded) {
-						PUNBB.common.blink(n);
-					}
-
-					if (PUNBB.common.onScreen(nodes[empty])) {
-						nodes[empty].focus();
-					}
-
-					return false;
-				}
-			}
-
-			return true;
-		},
-
-
-		// create a proper redirect URL (if were using SEF friendly URLs) and go there
-		doQuickjumpRedirect: function (url, forum_names) {
-			var selected_forum_id = get("qjump-select")[get("qjump-select").selectedIndex].value;
-			url = url.replace("$1", selected_forum_id);
-			url = url.replace("$2", forum_names[selected_forum_id]);
-			document.location = url;
-			return false;
-		},
-
-
-		//
-		attachQuickjumpRedirect: function (qj_url, sf_url_array) {
-			var qj_sel = get("qjump-select"),
-				qj_submit = get("qjump-submit");
-
-			if (qj_sel) {
-				qj_sel.onchange = function () {
-					return PUNBB.common.doQuickjumpRedirect(qj_url, sf_url_array);
-				};
-			}
-
-			if (qj_submit) {
-				qj_submit.onclick = function () {
-					return PUNBB.common.doQuickjumpRedirect(qj_url, sf_url_array);
-				};
-
-				// Hide
-				PUNBB.common.addClass(qj_submit, "visual-hidden");
-			}
-		},
-
-
-		initToggleCheckboxes: function () {
-			var fn_click = function (frm) {
-				return function () {
-					return PUNBB.common.toggleCheckboxes(frm);
-				};
-			};
-
-			var i, cl, inputlist = document.getElementsByTagName("span");
-			for (i = 0, cl = inputlist.length; i < cl; i += 1) {
-				var el = inputlist[i];
-				if (PUNBB.common.hasClass(el, "select-all") && el.getAttribute("data-check-form")) {
-					var frm = get(el.getAttribute("data-check-form"));
-					if (frm) {
-						el.onclick = fn_click(frm);
-					}
-				}
-			}
-		},
-
-		// toggle all checkboxes in the given form
-		toggleCheckboxes: function (curForm) {
-			if (!curForm) {
-				return false;
-			}
-
-			var i, cl, inputlist = curForm.getElementsByTagName("input");
-			for (i = 0, cl = inputlist.length; i < cl; i += 1) {
-				var el = inputlist[i];
-				if (el.getAttribute("data-no-select-all")) {
-					continue;
-				}
-
-				if (el.getAttribute("type") == "checkbox" && el.disabled === false) {
-					el.checked = !el.checked;
-				}
-			}
-
-			return false;
-		},
-
-
-		// attach form submit by ctrl + enter
-		attachCtrlEnterForm: function () {
-			var fn_keypress = function (frm) {
-				return function (e) {
-					e = e || window.event;
-					var key = e.keyCode || e.which;
-					if (((key == 13) || (key == 10)) && (e.ctrlKey === true)) {
-						return frm.submit();
-					}
-				};
-			};
-
-			var fn_textarea = function (x) {
-				return x.tagName.toUpperCase() == 'TEXTAREA';
-			};
-
-			var i, len, forms = document.forms;
-			for (i = 0, len = forms.length; i < len; i += 1) {
-				var f = forms[i];
-				if (!PUNBB.common.hasClass(f, 'frm-ctrl-submit')) {
-					continue;
-				}
-
-				var j, j_len,
-					elements = f.elements,
-					nodes = PUNBB.common.arrayOfMatched(fn_textarea, elements);
-
-				for (j = 0, j_len = nodes.length; j < j_len; j += 1) {
-					nodes[j].onkeypress = fn_keypress(f);
-				}
-			}
-		},
-
-
-		// attach form validation function to submit-type inputs
-		attachValidateForm: function () {
-			var fn_req = function (x) {
-				return x.name && x.name.indexOf("req_") === 0;
-			};
-
-			var fn_button = function (x) {
-				return x.type && (x.type == "submit" && x.name != "cancel");
-			};
-
-			var fn_validator = function (frm) {
-				return function () {
-					return PUNBB.common.validateForm(frm);
-				};
-			};
-
-			var i, len, forms = document.forms;
-			for (i = 0, len = forms.length; i < len; i += 1) {
-				var elements = forms[i].elements;
-				if (PUNBB.common.find(fn_req, elements) > -1) {
-					var nodes = PUNBB.common.arrayOfMatched(fn_button, elements),
-						formRef = forms[i];
-
-					//TODO: look at passing array of node refs instead of forum ref
-					//fn = function() { return Forum.checkReq(required.slice(0)) };
-					nodes = PUNBB.common.map(function (x) {
-						x.onclick = fn_validator(formRef);
-					}, nodes);
-				}
-			}
-		},
-
-		//
-		attachWindowOpen: function () {
-			if (!document.getElementsByTagName) {
-				return;
-			}
-
-			var fn_open = function () {
-				return function () {
-					window.open(this.href);
-					return false;
-				};
-			};
-
-			var i, nodes = document.getElementsByTagName("a");
-			for (i = 0; i < nodes.length; i += 1) {
-				if (PUNBB.common.hasClass(nodes[i], "exthelp")) {
-					nodes[i].onclick = fn_open();
-				}
-			}
-		},
-
-		//
-		autoFocus: function () {
-			var fn_input = function (x) {
-				return x.offsetWidth > 0 && (x.tagName.toUpperCase() == "TEXTAREA" || (x.tagName.toUpperCase() == "INPUT" && (x.type == "text") || (x.type == "password") || (x.type == "email") || (x.type == "url") || (x.type == "number")));
-			};
-
-			var nodes = get("afocus");
-			if (!nodes || window.location.hash.replace(/#/g, "")) {
-				return;
-			}
-
-			nodes = nodes.all || nodes.getElementsByTagName("*");
-			// TODO: make sure line above gets nodes in display-order across browsers
-			var n = PUNBB.common.find(fn_input, nodes);
-			if (n > -1) {
-				nodes[n].focus();
-			}
-		},
-
-		input_support_attr: function (attr) {
-			var inputElem = document.createElement("input");
-
-			if (!attr) {
-				return false;
-			}
-
-			return !!(attr in inputElem);
-		}
-	};
-}());
-
-
-// One onload handler
-PUNBB.common.addDOMReadyEvent(PUNBB.common.on_domready_init);
-PUNBB.common.addLoadEvent(PUNBB.common.on_load_init);
-
-
-/* A handful of functions in this script have been released into the Public
-   Domain by Shawn Brown or other authors. Although I, Shawn Brown, do not
-   believe that it is legally necessary to note which parts of a Copyrighted
-   work are based on Public Domain content, a list of the Public Domain
-   code (functions and methods) contained in this file is included below:
-
-   * addLoadEvent: Released into the Public Domain by Shawn Brown and
-        based on Simon Willisons Public Domain function of the same name.
-   * hasClass, addClass & removeClass: Released into the Public Domain
-        by Shawn Brown.
-   * onScreen: Released into the Public Domain by Shawn Brown and based,
-        in-part, on Peter Paul-Kochs Public Domain node-position functions.
-   * map, find, arrayOfMatched & flatten: These basic functional methods
-        have been released into the Public Domain by Shawn Brown.
-
-   It is entirely possible that, in the future, someone may contribute code
-   that is in the Public Domain but not note it as such. This should not be
-   a problem, but one should keep in mind that the list provided here is known
-   to be complete and accurate only up until 24-JUNE-2007.
-*/
diff -urN punbb-1.4.1/include/js/punbb.install.js punbb-1.4.2/include/js/punbb.install.js
--- punbb-1.4.1/include/js/punbb.install.js	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/include/js/punbb.install.js	1970-01-01 00:00:00.000000000 +0000
@@ -1,59 +0,0 @@
-// PunBB install functions
-// version 0.2
-
-/*jslint browser: true, maxerr: 50, indent: 4 */
-/*global PUNBB: true */
-
-if (typeof PUNBB === 'undefined' || !PUNBB) {
-	var PUNBB = {};
-}
-
-// INSTALL
-PUNBB.install = (function () {
-	'use strict';
-
-	function get(el) {
-		return document.getElementById(el);
-	}
-
-	return {
-		init: function () {
-			PUNBB.install.selectDB_attach_event();
-		},
-
-
-		// Hide/unhide optional db_username/password fileds depends on selected DB type
-		selectDB_update: function () {
-			var selected_db = get('req_db_type')[get('req_db_type').selectedIndex].value;
-
-			if (selected_db === 'sqlite' || selected_db === 'sqlite3') {
-				PUNBB.common.addClass(get('db_username_block'), 'hidden');
-				PUNBB.common.addClass(get('db_password_block'), 'hidden');
-			} else {
-				PUNBB.common.removeClass(get('db_username_block'), 'hidden');
-				PUNBB.common.removeClass(get('db_password_block'), 'hidden');
-			}
-			return false;
-		},
-
-
-		// Attach change event for DB-type select box
-		selectDB_attach_event: function () {
-			var db_sel = get('req_db_type');
-
-			if (db_sel) {
-				db_sel.onchange = function () {
-					return PUNBB.install.selectDB_update();
-				};
-
-				// Run first for update on page load
-				PUNBB.install.selectDB_update();
-			}
-		}
-	};
-}());
-
-
-// One onload handler
-PUNBB.common.addDOMReadyEvent(PUNBB.install.init);
-
diff -urN punbb-1.4.1/include/js/punbb.timezone.js punbb-1.4.2/include/js/punbb.timezone.js
--- punbb-1.4.1/include/js/punbb.timezone.js	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/include/js/punbb.timezone.js	1970-01-01 00:00:00.000000000 +0000
@@ -1,221 +0,0 @@
-// PunBB timezone functions
-// version 0.1.1
-//
-// Based on jsTimezoneDetect by Jon Nylander at https://bitbucket.org/pellepim/jstimezonedetect
-
-/*jslint browser: true, maxerr: 50, indent: 4 */
-/*global PUNBB: true */
-
-if (typeof PUNBB === 'undefined' || !PUNBB) {
-	var PUNBB = {};
-}
-
-// TIMEZONE DETECT
-PUNBB.timezone = (function () {
-	'use strict';
-
-	var HEMISPHERE_SOUTH = 'SOUTH',
-		HEMISPHERE_NORTH = 'NORTH',
-		HEMISPHERE_UNKNOWN = 'N/A',
-		olson = {},
-		TimeZone;
-
-
-	/**
-	* A simple object containing information of utc_offset, which olson timezone key to use,
-	* and if the timezone cares about daylight savings or not.
-	*
-	* @constructor
-	* @param {string} offset - for example '-11:00'
-	* @param {string} olson_tz - the olson Identifier, such as "America/Denver"
-	* @param {boolean} uses_dst - flag for whether the time zone somehow cares about daylight savings.
-	*/
-	TimeZone = function (offset, olson_tz, uses_dst) {
-		this.utc_offset = offset;
-		this.olson_tz = olson_tz;
-		this.uses_dst = uses_dst;
-	};
-
-
-	/**
-	 * The keys in this dictionary are comma separated as such:
-	 * First the offset compared to UTC time in minutes.
-	 * Then a flag which is 0 if the timezone does not take daylight savings into account and 1 if it does.
-	 * Thirdly an optional 's' signifies that the timezone is in the southern hemisphere, only interesting for timezones with DST.
-	 * The values of the dictionary are TimeZone objects.
-	 */
-	olson.timezones = {
-		'-720,0': new TimeZone('-12:00', 'Etc/GMT+12', false),
-		'-660,0': new TimeZone('-11:00', 'Pacific/Pago_Pago', false),
-		'-600,1': new TimeZone('-11:00', 'America/Adak', true),
-		'-660,1,s': new TimeZone('-11:00', 'Pacific/Apia', true),
-		'-600,0': new TimeZone('-10:00', 'Pacific/Honolulu', false),
-		'-570,0': new TimeZone('-09:30', 'Pacific/Marquesas', false),
-		'-540,0': new TimeZone('-09:00', 'Pacific/Gambier', false),
-		'-540,1': new TimeZone('-09:00', 'America/Anchorage', true),
-		'-480,1': new TimeZone('-08:00', 'America/Los_Angeles', true),
-		'-480,0': new TimeZone('-08:00', 'Pacific/Pitcairn', false),
-		'-420,0': new TimeZone('-07:00', 'America/Phoenix', false),
-		'-420,1': new TimeZone('-07:00', 'America/Denver', true),
-		'-360,0': new TimeZone('-06:00', 'America/Guatemala', false),
-		'-360,1': new TimeZone('-06:00', 'America/Chicago', true),
-		'-360,1,s': new TimeZone('-06:00', 'Pacific/Easter', true),
-		'-300,0': new TimeZone('-05:00', 'America/Bogota', false),
-		'-300,1': new TimeZone('-05:00', 'America/New_York', true),
-		'-270,0': new TimeZone('-04:30', 'America/Caracas', false),
-		'-240,1': new TimeZone('-04:00', 'America/Halifax', true),
-		'-240,0': new TimeZone('-04:00', 'America/Santo_Domingo', false),
-		'-240,1,s': new TimeZone('-04:00', 'America/Asuncion', true),
-		'-210,1': new TimeZone('-03:30', 'America/St_Johns', true),
-		'-180,1': new TimeZone('-03:00', 'America/Godthab', true),
-		'-180,0': new TimeZone('-03:00', 'America/Argentina/Buenos_Aires', false),
-		'-180,1,s': new TimeZone('-03:00', 'America/Montevideo', true),
-		'-120,0': new TimeZone('-02:00', 'America/Noronha', false),
-		'-120,1': new TimeZone('-02:00', 'Etc/GMT+2', true),
-		'-60,1': new TimeZone('-01:00', 'Atlantic/Azores', true),
-		'-60,0': new TimeZone('-01:00', 'Atlantic/Cape_Verde', false),
-		'0,0': new TimeZone('00:00', 'Etc/UTC', false),
-		'0,1': new TimeZone('00:00', 'Europe/London', true),
-		'60,1': new TimeZone('+01:00', 'Europe/Berlin', true),
-		'60,0': new TimeZone('+01:00', 'Africa/Lagos', false),
-		'60,1,s': new TimeZone('+01:00', 'Africa/Windhoek', true),
-		'120,1': new TimeZone('+02:00', 'Asia/Beirut', true),
-		'120,0': new TimeZone('+02:00', 'Africa/Johannesburg', false),
-		'180,1': new TimeZone('+03:00', 'Europe/Moscow', true),
-		'180,0': new TimeZone('+03:00', 'Asia/Baghdad', false),
-		'210,1': new TimeZone('+03:30', 'Asia/Tehran', true),
-		'240,0': new TimeZone('+04:00', 'Asia/Dubai', false),
-		'240,1': new TimeZone('+04:00', 'Asia/Yerevan', true),
-		'270,0': new TimeZone('+04:30', 'Asia/Kabul', false),
-		'300,1': new TimeZone('+05:00', 'Asia/Yekaterinburg', true),
-		'300,0': new TimeZone('+05:00', 'Asia/Karachi', false),
-		'330,0': new TimeZone('+05:30', 'Asia/Kolkata', false),
-		'345,0': new TimeZone('+05:45', 'Asia/Kathmandu', false),
-		'360,0': new TimeZone('+06:00', 'Asia/Dhaka', false),
-		'360,1': new TimeZone('+06:00', 'Asia/Omsk', true),
-		'390,0': new TimeZone('+06:30', 'Asia/Rangoon', false),
-		'420,1': new TimeZone('+07:00', 'Asia/Krasnoyarsk', true),
-		'420,0': new TimeZone('+07:00', 'Asia/Jakarta', false),
-		'480,0': new TimeZone('+08:00', 'Asia/Shanghai', false),
-		'480,1': new TimeZone('+08:00', 'Asia/Irkutsk', true),
-		'525,0': new TimeZone('+08:45', 'Australia/Eucla', true),
-		'525,1,s': new TimeZone('+08:45', 'Australia/Eucla', true),
-		'540,1': new TimeZone('+09:00', 'Asia/Yakutsk', true),
-		'540,0': new TimeZone('+09:00', 'Asia/Tokyo', false),
-		'570,0': new TimeZone('+09:30', 'Australia/Darwin', false),
-		'570,1,s': new TimeZone('+09:30', 'Australia/Adelaide', true),
-		'600,0': new TimeZone('+10:00', 'Australia/Brisbane', false),
-		'600,1': new TimeZone('+10:00', 'Asia/Vladivostok', true),
-		'600,1,s': new TimeZone('+10:00', 'Australia/Sydney', true),
-		'630,1,s': new TimeZone('+10:30', 'Australia/Lord_Howe', true),
-		'660,1': new TimeZone('+11:00', 'Asia/Kamchatka', true),
-		'660,0': new TimeZone('+11:00', 'Pacific/Noumea', false),
-		'690,0': new TimeZone('+11:30', 'Pacific/Norfolk', false),
-		'720,1,s': new TimeZone('+12:00', 'Pacific/Auckland', true),
-		'720,0': new TimeZone('+12:00', 'Pacific/Tarawa', false),
-		'765,1,s': new TimeZone('+12:45', 'Pacific/Chatham', true),
-		'780,0': new TimeZone('+13:00', 'Pacific/Tongatapu', false),
-		'840,0': new TimeZone('+14:00', 'Pacific/Kiritimati', false)
-	};
-
-
-	/**
-	 * Gets the offset in minutes from UTC for a certain date.
-	 *
-	 * @param date
-	 * @returns {number}
-	 */
-	function get_date_offset(date) {
-		return -date.getTimezoneOffset();
-	}
-
-
-	function get_january_offset() {
-		return get_date_offset(new Date(2011, 0, 1, 0, 0, 0, 0));
-	}
-
-
-	function get_june_offset() {
-		return get_date_offset(new Date(2011, 5, 1, 0, 0, 0, 0));
-	}
-
-
-	/**
-	 * This function does some basic calculations to create information about
-	 * the user's timezone.
-	 *
-	 * Returns a primitive object on the format
-	 * {'utc_offset' : -9, 'dst': 1, hemisphere' : 'north'}
-	 * where dst is 1 if the region uses daylight savings.
-	 *
-	 * @returns {Object}
-	 */
-	function get_info() {
-		var january_offset = get_january_offset(),
-			june_offset = get_june_offset(),
-			diff = january_offset - june_offset;
-
-		if (diff < 0) {
-		    return {
-				'utc_offset': january_offset,
-				'dst':	1,
-				'hemisphere': HEMISPHERE_NORTH
-			};
-		} else if (diff > 0) {
-			return {
-				'utc_offset': june_offset,
-				'dst': 1,
-				'hemisphere': HEMISPHERE_SOUTH
-			};
-		}
-
-		return {
-			'utc_offset': january_offset,
-			'dst': 0,
-			'hemisphere': HEMISPHERE_UNKNOWN
-		};
-	}
-
-
-	return {
-		/**
-		 * Uses get_timezone_info() to formulate a key to use in the olson.timezones dictionary.
-		 *
-		 * Returns a primitive object on the format:
-		 * {'timezone': TimeZone, 'key' : 'the key used to find the TimeZone object'}
-		 *
-		 * @returns Object
-		 */
-		determine: function () {
-			var timezone_key_info = get_info(),
-				hemisphere_suffix = '',
-				tz_key;
-
-			if (timezone_key_info.hemisphere === HEMISPHERE_SOUTH) {
-				hemisphere_suffix = ',s';
-			}
-
-			tz_key = timezone_key_info.utc_offset + ',' + timezone_key_info.dst.toString() + hemisphere_suffix;
-
-			return {
-				'timezone': olson.timezones[tz_key],
-				'key': tz_key
-			};
-		},
-
-
-		//
-		detect_on_register_form: function () {
-			PUNBB.common.addDOMReadyEvent(function () {
-				var timezone = PUNBB.timezone.determine().timezone,
-					timezone_el = document.getElementById('register_timezone'),
-					dst_el = document.getElementById('register_dst');
-
-				if (timezone_el && dst_el) {
-					timezone_el.value = timezone.utc_offset;
-					dst_el.value = timezone.uses_dst ? '1' : '0';
-				}
-			});
-		}
-	};
-}());
diff -urN punbb-1.4.1/include/loader.php punbb-1.4.2/include/loader.php
--- punbb-1.4.1/include/loader.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/include/loader.php	2012-02-09 20:42:20.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Loader class for inject CSS and JS files.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on Drupal code
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -23,7 +23,7 @@
 	private $libs;
 
 	// Class instance
-    private static $instance;
+	private static $instance;
 
 
 	// Start of life
@@ -41,20 +41,20 @@
 
 
 	// Singleton
-    public static function singleton() {
-        if (!isset(self::$instance)) {
-            $c = __CLASS__;
-            self::$instance = new $c;
-        }
-
-        return self::$instance;
-    }
+	public static function singleton() {
+		if (!isset(self::$instance)) {
+			$c = __CLASS__;
+			self::$instance = new $c;
+		}
 
+		return self::$instance;
+	}
 
-    // Clone forbiden
-    public function __clone() {
-        trigger_error('Clone is forbiden.', E_USER_ERROR);
-    }
+
+	// Clone forbiden
+	public function __clone() {
+		trigger_error('Clone is forbiden.', E_USER_ERROR);
+	}
 
 
 	// Add JS url to load
@@ -471,7 +471,7 @@
 		}
 		elseif ($a['weight'] > $b['weight'])
 		{
-		    return 1;
+			return 1;
 		}
 		else
 		{
@@ -517,8 +517,8 @@
 		}
 		else
 		{
-		    // "downlevel-revealed".
-		    $data = "\n<!--[if $expression]><!-->".$data."<!--<![endif]-->";
+			// "downlevel-revealed".
+			$data = "\n<!--[if $expression]><!-->".$data."<!--<![endif]-->";
 		}
 
 		return $data;
diff -urN punbb-1.4.1/include/parser.php punbb-1.4.2/include/parser.php
--- punbb-1.4.1/include/parser.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/include/parser.php	2012-02-09 20:42:20.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Loads various functions used to parse posts.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -62,9 +62,7 @@
 
 		if ($forum_config['o_make_links'] == '1')
 		{
-			// Check Unicode support
-			$unicode = defined('FORUM_SUPPORT_PCRE_UNICODE');
-			$text = do_clickable($text, $unicode);
+			$text = do_clickable($text, defined('FORUM_SUPPORT_PCRE_UNICODE'));
 		}
 
 		// If we split up the message before we have to concatenate it together again (code tags)
@@ -138,11 +136,11 @@
 	$tags_quotes = array('url', 'email', 'img');
 	// Tags we limit bbcode in
 	$tags_limit_bbcode = array(
-		'*' 	=> array('b', 'i', 'u', 'color', 'colour', 'url', 'email', 'list', 'img'),
-		'list' 	=> array('*'),
-		'url' 	=> array('b', 'i', 'u', 'color', 'colour', 'img'),
+		'*'		=> array('b', 'i', 'u', 'color', 'colour', 'url', 'email', 'list', 'img'),
+		'list'	=> array('*'),
+		'url'	=> array('b', 'i', 'u', 'color', 'colour', 'img'),
 		'email' => array('b', 'i', 'u', 'color', 'colour', 'img'),
-		'img' 	=> array()
+		'img'	=> array()
 	);
 	// Tags we can automatically fix bad nesting
 	$tags_fix = array('quote', 'b', 'i', 'u', 'color', 'colour', 'url', 'email', 'h');
@@ -597,16 +595,33 @@
 		$full_url = 'http://'.$full_url;
 	else if (strpos($url, 'ftp.') === 0)	// Else if it starts with ftp, we add ftp://
 		$full_url = 'ftp://'.$full_url;
-	else if (!preg_match('#^([a-z0-9]{3,6})://#', $url)) 	// Else if it doesn't start with abcdef://, we add http://
+	else if (!preg_match('#^([a-z0-9]{3,6})://#', $url))	// Else if it doesn't start with abcdef://, we add http://
 		$full_url = 'http://'.$full_url;
 
 	if (defined('FORUM_SUPPORT_PCRE_UNICODE') && defined('FORUM_ENABLE_IDNA'))
 	{
-		$idn = new idna_convert();
-		$idn->set_parameter('encoding', 'utf8');
-		$idn->set_parameter('strict', false);
+		static $idn;
+		static $cached_encoded_urls = null;
 
-		$full_url = $idn->encode($full_url);
+		if (is_null($cached_encoded_urls))
+			$cached_encoded_urls = array();
+
+		// Check in cache
+		$cache_key = md5($full_url);
+		if (isset($cached_encoded_urls[$cache_key]))
+			$full_url = $cached_encoded_urls[$cache_key];
+		else
+		{
+			if (!isset($idn))
+			{
+				$idn = new idna_convert();
+				$idn->set_parameter('encoding', 'utf8');
+				$idn->set_parameter('strict', false);
+			}
+
+			$full_url = $idn->encode($full_url);
+			$cached_encoded_urls[$cache_key] = $full_url;
+		}
 	}
 
 	// Ok, not very pretty :-)
diff -urN punbb-1.4.1/include/search_functions.php punbb-1.4.2/include/search_functions.php
--- punbb-1.4.1/include/search_functions.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/include/search_functions.php	2012-02-09 20:42:20.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Loads various functions that are used for searching the forum.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -78,7 +78,7 @@
 		// Remove any words that are not indexed
 		$keywords_array = array_filter($keywords_array, 'validate_search_word');
 
-  		if (empty($keywords_array))
+		if (empty($keywords_array))
 			no_search_results();
 
 		$word_count = 0;
@@ -872,7 +872,7 @@
 		case 'show_user_topics':
 			$forum_page['crumbs'][] = sprintf($lang_search['Topics by'], $search_set[0]['poster']);
 			$forum_page['items_info'] = generate_items_info($lang_search['Topics found'], ($forum_page['start_from'] + 1), $num_hits);
-			$forum_page['main_head_options']['user_posts'] =  '<span'.(empty($forum_page['main_head_options']) ? ' class="first-item"' : '').'><a href="'.forum_link($forum_url['search_user_posts'], $search_id).'">'.sprintf($lang_search['Posts by'], forum_htmlencode($search_set[0]['poster'])).'</a></span>';
+			$forum_page['main_head_options']['user_posts'] = '<span'.(empty($forum_page['main_head_options']) ? ' class="first-item"' : '').'><a href="'.forum_link($forum_url['search_user_posts'], $search_id).'">'.sprintf($lang_search['Posts by'], forum_htmlencode($search_set[0]['poster'])).'</a></span>';
 			$forum_page['main_head_options']['defined_search'] = '<span'.(empty($forum_page['main_head_options']) ? ' class="first-item"' : '').'><a href="'.forum_link($forum_url['search']).'">'.$lang_search['User defined search'].'</a></span>';
 			break;
 
diff -urN punbb-1.4.1/include/search_idx.php punbb-1.4.2/include/search_idx.php
--- punbb-1.4.1/include/search_idx.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/include/search_idx.php	2012-02-09 20:42:20.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Load various functions used in indexing posts and topics for searching.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
diff -urN punbb-1.4.1/include/template/admin.tpl punbb-1.4.2/include/template/admin.tpl
--- punbb-1.4.1/include/template/admin.tpl	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/include/template/admin.tpl	2012-02-09 20:42:20.000000000 +0000
@@ -4,7 +4,7 @@
 <!--[if IE 8 ]>    <html class="oldie ie8" <!-- forum_local -->> <![endif]-->
 <!--[if gt IE 8]><!--> <html <!-- forum_local -->> <!--<![endif]-->
 <head>
-<meta charset="utf-8"/>
+<meta charset="utf-8" />
 <!-- forum_head -->
 </head>
 <body>
diff -urN punbb-1.4.1/include/template/help.tpl punbb-1.4.2/include/template/help.tpl
--- punbb-1.4.1/include/template/help.tpl	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/include/template/help.tpl	2012-02-09 20:42:20.000000000 +0000
@@ -5,7 +5,7 @@
 <!--[if gt IE 8]><!--> <html <!-- forum_local -->> <!--<![endif]-->
 <head>
 <head>
-<meta charset="utf-8"/>
+<meta charset="utf-8" />
 <!-- forum_head -->
 </head>
 <body>
diff -urN punbb-1.4.1/include/template/maintenance.tpl punbb-1.4.2/include/template/maintenance.tpl
--- punbb-1.4.1/include/template/maintenance.tpl	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/include/template/maintenance.tpl	2012-02-09 20:42:20.000000000 +0000
@@ -4,7 +4,7 @@
 <!--[if IE 8 ]>    <html class="oldie ie8" <!-- forum_local -->> <![endif]-->
 <!--[if gt IE 8]><!--> <html <!-- forum_local -->> <!--<![endif]-->
 <head>
-<meta charset="utf-8"/>
+<meta charset="utf-8" />
 <!-- forum_head -->
 </head>
 <body>
diff -urN punbb-1.4.1/include/template/main.tpl punbb-1.4.2/include/template/main.tpl
--- punbb-1.4.1/include/template/main.tpl	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/include/template/main.tpl	2012-02-09 20:42:20.000000000 +0000
@@ -4,7 +4,7 @@
 <!--[if IE 8 ]>    <html class="oldie ie8" <!-- forum_local -->> <![endif]-->
 <!--[if gt IE 8]><!--> <html <!-- forum_local -->> <!--<![endif]-->
 <head>
-<meta charset="utf-8"/>
+<meta charset="utf-8" />
 <!-- forum_head -->
 </head>
 <body>
diff -urN punbb-1.4.1/include/template/redirect.tpl punbb-1.4.2/include/template/redirect.tpl
--- punbb-1.4.1/include/template/redirect.tpl	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/include/template/redirect.tpl	2012-02-09 20:42:20.000000000 +0000
@@ -4,7 +4,7 @@
 <!--[if IE 8 ]>    <html class="oldie ie8" <!-- forum_local -->> <![endif]-->
 <!--[if gt IE 8]><!--> <html <!-- forum_local -->> <!--<![endif]-->
 <head>
-<meta charset="utf-8"/>
+<meta charset="utf-8" />
 <!-- forum_head -->
 </head>
 <body>
diff -urN punbb-1.4.1/include/url/Default/forum_urls.php punbb-1.4.2/include/url/Default/forum_urls.php
--- punbb-1.4.1/include/url/Default/forum_urls.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/include/url/Default/forum_urls.php	2012-02-09 20:42:20.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Regular URL scheme.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
diff -urN punbb-1.4.1/include/url/Default/reserved_strings.php punbb-1.4.2/include/url/Default/reserved_strings.php
--- punbb-1.4.1/include/url/Default/reserved_strings.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/include/url/Default/reserved_strings.php	2012-02-09 20:42:20.000000000 +0000
@@ -3,7 +3,7 @@
  * Loads the reserved strings used to transform problematic strings in URLs.
  * These are matched against the whole string after all other transformations.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
diff -urN punbb-1.4.1/include/url/Default/rewrite_rules.php punbb-1.4.2/include/url/Default/rewrite_rules.php
--- punbb-1.4.1/include/url/Default/rewrite_rules.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/include/url/Default/rewrite_rules.php	2012-02-09 20:42:20.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Loads the regular expressions used to match SEF URL requests to their proper URLs.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
diff -urN punbb-1.4.1/include/url/File_based/forum_urls.php punbb-1.4.2/include/url/File_based/forum_urls.php
--- punbb-1.4.1/include/url/File_based/forum_urls.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/include/url/File_based/forum_urls.php	2012-02-09 20:42:20.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * SEF URLs that use a file-like layout.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -14,8 +14,8 @@
 
 // These are the simple file based SEF URLs
 $forum_url = array(
-	'insertion_find'				=>  '.html',
-	'insertion_replace'				=>  '-$1.html',
+	'insertion_find'				=>	'.html',
+	'insertion_replace'				=>	'-$1.html',
 	'change_email'					=>	'change-email$1.html',
 	'change_email_key'				=>	'change-email$1-$2.html',
 	'change_password'				=>	'change-password$1.html',
diff -urN punbb-1.4.1/include/url/File_based/reserved_strings.php punbb-1.4.2/include/url/File_based/reserved_strings.php
--- punbb-1.4.1/include/url/File_based/reserved_strings.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/include/url/File_based/reserved_strings.php	2012-02-09 20:42:20.000000000 +0000
@@ -3,7 +3,7 @@
  * Loads the reserved strings used to transform problematic strings in URLs.
  * These are matched against the whole string after all other transformations.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
diff -urN punbb-1.4.1/include/url/File_based/rewrite_rules.php punbb-1.4.2/include/url/File_based/rewrite_rules.php
--- punbb-1.4.1/include/url/File_based/rewrite_rules.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/include/url/File_based/rewrite_rules.php	2012-02-09 20:42:20.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Loads the regular expressions used to match SEF URL requests to their proper URLs.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
diff -urN punbb-1.4.1/include/url/File_based_(fancy)/forum_urls.php punbb-1.4.2/include/url/File_based_(fancy)/forum_urls.php
--- punbb-1.4.1/include/url/File_based_(fancy)/forum_urls.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/include/url/File_based_(fancy)/forum_urls.php	2012-02-09 20:42:20.000000000 +0000
@@ -3,7 +3,7 @@
  * SEF URLs that use a file-like layout and include topic name and forum name
  * where applicable.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -15,8 +15,8 @@
 
 // These are the "fancy" file based SEF URLs
 $forum_url = array(
-	'insertion_find'				=>  '.html',
-	'insertion_replace'				=>  '-$1.html',
+	'insertion_find'				=>	'.html',
+	'insertion_replace'				=>	'-$1.html',
 	'change_email'					=>	'change-email$1.html',
 	'change_email_key'				=>	'change-email$1-$2.html',
 	'change_password'				=>	'change-password$1.html',
diff -urN punbb-1.4.1/include/url/File_based_(fancy)/reserved_strings.php punbb-1.4.2/include/url/File_based_(fancy)/reserved_strings.php
--- punbb-1.4.1/include/url/File_based_(fancy)/reserved_strings.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/include/url/File_based_(fancy)/reserved_strings.php	2012-02-09 20:42:20.000000000 +0000
@@ -3,7 +3,7 @@
  * Loads the reserved strings used to transform problematic strings in URLs.
  * These are matched against the whole string after all other transformations.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
diff -urN punbb-1.4.1/include/url/File_based_(fancy)/rewrite_rules.php punbb-1.4.2/include/url/File_based_(fancy)/rewrite_rules.php
--- punbb-1.4.1/include/url/File_based_(fancy)/rewrite_rules.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/include/url/File_based_(fancy)/rewrite_rules.php	2012-02-09 20:42:20.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Loads the regular expressions used to match SEF URL requests to their proper URLs.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
diff -urN punbb-1.4.1/include/url/Folder_based/forum_urls.php punbb-1.4.2/include/url/Folder_based/forum_urls.php
--- punbb-1.4.1/include/url/Folder_based/forum_urls.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/include/url/Folder_based/forum_urls.php	2012-02-09 20:42:20.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * SEF URLs that use a folder-like layout.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
diff -urN punbb-1.4.1/include/url/Folder_based/reserved_strings.php punbb-1.4.2/include/url/Folder_based/reserved_strings.php
--- punbb-1.4.1/include/url/Folder_based/reserved_strings.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/include/url/Folder_based/reserved_strings.php	2012-02-09 20:42:20.000000000 +0000
@@ -3,7 +3,7 @@
  * Loads the reserved strings used to transform problematic strings in URLs.
  * These are matched against the whole string after all other transformations.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
diff -urN punbb-1.4.1/include/url/Folder_based/rewrite_rules.php punbb-1.4.2/include/url/Folder_based/rewrite_rules.php
--- punbb-1.4.1/include/url/Folder_based/rewrite_rules.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/include/url/Folder_based/rewrite_rules.php	2012-02-09 20:42:20.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Loads the regular expressions used to match SEF URL requests to their proper URLs.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
diff -urN punbb-1.4.1/include/url/Folder_based_(fancy)/forum_urls.php punbb-1.4.2/include/url/Folder_based_(fancy)/forum_urls.php
--- punbb-1.4.1/include/url/Folder_based_(fancy)/forum_urls.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/include/url/Folder_based_(fancy)/forum_urls.php	2012-02-09 20:42:20.000000000 +0000
@@ -3,7 +3,7 @@
  * SEF URLs that use a folder-like layout and include topic name and forum name
  * where applicable.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
diff -urN punbb-1.4.1/include/url/Folder_based_(fancy)/reserved_strings.php punbb-1.4.2/include/url/Folder_based_(fancy)/reserved_strings.php
--- punbb-1.4.1/include/url/Folder_based_(fancy)/reserved_strings.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/include/url/Folder_based_(fancy)/reserved_strings.php	2012-02-09 20:42:20.000000000 +0000
@@ -3,7 +3,7 @@
  * Loads the reserved strings used to transform problematic strings in URLs.
  * These are matched against the whole string after all other transformations.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
diff -urN punbb-1.4.1/include/url/Folder_based_(fancy)/rewrite_rules.php punbb-1.4.2/include/url/Folder_based_(fancy)/rewrite_rules.php
--- punbb-1.4.1/include/url/Folder_based_(fancy)/rewrite_rules.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/include/url/Folder_based_(fancy)/rewrite_rules.php	2012-02-09 20:42:20.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Loads the regular expressions used to match SEF URL requests to their proper URLs.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
diff -urN punbb-1.4.1/include/xml.php punbb-1.4.2/include/xml.php
--- punbb-1.4.1/include/xml.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/include/xml.php	2012-02-09 20:42:20.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Loads various functions used in parsing XML (mostly for extensions).
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -173,6 +173,7 @@
 			$errors[] = sprintf($lang_admin_ext['extension/minversion error2'], $ext['minversion']);
 		if (!isset($ext['maxtestedon']) || $ext['maxtestedon'] == '')
 			$errors[] = $lang_admin_ext['extension/maxtestedon error'];
+
 		if (isset($ext['note']))
 		{
 			foreach ($ext['note'] as $note)
@@ -183,6 +184,7 @@
 					$errors[] = $lang_admin_ext['extension/note error2'];
 			}
 		}
+
 		if (isset($ext['hooks']) && is_array($ext['hooks']))
 		{
 			if (!isset($ext['hooks']['hook']) || !is_array($ext['hooks']['hook']))
diff -urN punbb-1.4.1/index.php punbb-1.4.2/index.php
--- punbb-1.4.1/index.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/index.php	2012-02-09 20:42:20.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Displays a list of the categories/forums that the current user can see, along with some statistics.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
diff -urN punbb-1.4.1/lang/English/admin_ext.php punbb-1.4.2/lang/English/admin_ext.php
--- punbb-1.4.1/lang/English/admin_ext.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/lang/English/admin_ext.php	2012-02-09 20:42:20.000000000 +0000
@@ -21,6 +21,7 @@
 'Extension error'				=>	'Error',
 'Extension loading error'		=>	'Loading of extension "%s" failed.',
 'Illegal ID'					=>	'The ID must contain only lowercase alphanumeric characters (a-z and 0-9) and the underscore character (_).',
+'Maxtestedon error'				=>	'This extension is not compatible with your PunBB version.',
 'Maxtestedon warning'			=>	'This extension has not been explicitly tested on your PunBB version and might therefore not be compatible with your current setup.',
 'Missing manifest'				=>	'Missing manifest.xml.',
 'Failed parse manifest'			=>	'Unable to parse manifest.xml.',
diff -urN punbb-1.4.1/lang/English/admin_index.php punbb-1.4.2/lang/English/admin_index.php
--- punbb-1.4.1/lang/English/admin_index.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/lang/English/admin_index.php	2012-02-09 20:42:20.000000000 +0000
@@ -7,7 +7,7 @@
 'Alerts'						=>	'Administrator Alerts',
 'Check for updates enabled'		=>	'This board is setup to automatically check for updates and hotfixes against the punbb.informer.com updates service.',
 'Check for updates manual'		=>	'Check for updates',	// Link text
-'Copyright message'				=>	'&copy; 2008-2011 <a href="http://punbb.informer.com/">PunBB</a>, partially based on code &copy; 2008-2009 <a href="http://fluxbb.org/">FluxBB</a>',
+'Copyright message'				=>	'&copy; 2008-2012 <a href="http://punbb.informer.com/">PunBB</a>',
 'PunBB version'					=>	'PunBB version',
 'PunBB community'				=>	'Community',
 'Forums'						=>	'Forums',
diff -urN punbb-1.4.1/lang/English/admin_prune.php punbb-1.4.2/lang/English/admin_prune.php
--- punbb-1.4.1/lang/English/admin_prune.php	2011-10-09 17:49:11.000000000 +0000
+++ punbb-1.4.2/lang/English/admin_prune.php	2012-02-09 20:42:20.000000000 +0000
@@ -16,7 +16,6 @@
 'Number of topics'				=>	'Number of topics',
 'Prune caution'					=>	'<strong>IMPORTANT!</strong> Use this feature with caution. Pruned posts can <em>NEVER</em> be recovered. For best performance you should put the forum in maintenance mode during pruning.',
 'Prune intro'					=>	'You may prune topics from all forums or from one particular forum. Topics will be pruned according to the value you specify for "Days old". E.g. if you were to enter 30, every topic that didn\'t contain a post dated less than 30 days old would be deleted.',
-'Prune sticky'					=>	'Prune sticky topics',
 'Prune sticky enable'			=>	'Enable pruning of sticky topics.',
 'Prune from'					=>	'Prune from forum',
 'Days to prune message'			=>	'Days to prune must be a positive integer.',
diff -urN punbb-1.4.1/lang/English/admin_reindex.php punbb-1.4.2/lang/English/admin_reindex.php
--- punbb-1.4.1/lang/English/admin_reindex.php	2011-10-09 17:49:11.000000000 +0000
+++ punbb-1.4.2/lang/English/admin_reindex.php	2012-02-09 20:42:20.000000000 +0000
@@ -6,14 +6,13 @@
 'Reindex heading'			=>	'Rebuild search index to restore search performance',
 'Rebuild index legend'		=>	'Rebuild search index',
 'Reindex info'				=>	'If you have added, edited or removed posts manually in the database or if you are having problems searching, you should rebuild the search index. For best performance you should put the forum in maintenance mode during rebuilding. Once the process has completed you will be redirected back to this page. It is highly recommended that you have JavaScript enabled in your browser during rebuilding (for automatic redirect when a cycle has completed).',
-'Reindex warning'			=>	'<strong>IMPORTANT!</strong> Rebuilding the search index can take a long time and will increase server load during the rebuild process. If you are forced to abort the rebuild process, make a note of the last processed post ID and enter that ID+1 in "Starting post ID" when/if you want to continue.',
+'Reindex warning'			=>	'<strong>IMPORTANT!</strong> Rebuilding the search index can take a long time and will increase server load during the rebuild process. If you are forced to abort the rebuild process, make a note of the last processed post ID and enter that ID+1 in "Starting post ID" when you want to continue.',
 'Empty index warning'		=>	'<strong>WARNING!</strong> If you want to resume an aborted rebuild, do not select "empty index".',
 'Posts per cycle'			=>	'Posts per cycle',
 'Posts per cycle info'		=>	'The number of posts to process per pageview. E.g. if you were to enter 100, one hundred posts would be processed and then the page would refresh. This is to prevent the script from timing out during the rebuild process.',
 'Starting post'				=>	'Starting post ID',
 'Starting post info'		=>	'The post ID to start rebuilding at. The default value is the first available ID in the database. Normally you would not want to change this.',
-'Empty index'				=>	'Empty index',
-'Empty index info'			=>	'Empty search index before rebuilding (see below).',
+'Empty index'				=>	'Empty search index before rebuilding (see below).',
 'Rebuilding index title'	=>	'Rebuilding search index…',
 'Rebuilding index'			=>	'Rebuilding index… This might be a good time to put on some coffee :-)',
 'Processing post'			=>	'Processing post <strong>%s</strong> in topic <strong>%s</strong>.',
@@ -21,4 +20,4 @@
 'Click to continue'			=>	'Click here to continue',
 'Rebuild index'				=>	'Rebuild index',
 
-);
\ No newline at end of file
+);
diff -urN punbb-1.4.1/lang/English/admin_reports.php punbb-1.4.2/lang/English/admin_reports.php
--- punbb-1.4.1/lang/English/admin_reports.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/lang/English/admin_reports.php	2012-02-09 20:42:20.000000000 +0000
@@ -18,5 +18,6 @@
 'Read reports heading'			=>	'Last 10 reports marked as read',
 'No reports'					=>	'There are no reports either read or unread for you to view.',
 'Marked read by'				=>	'Read %s by %s',
+'Post'							=> 'Post #%s',
 
 );
diff -urN punbb-1.4.1/lang/English/admin_settings.php punbb-1.4.2/lang/English/admin_settings.php
--- punbb-1.4.1/lang/English/admin_settings.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/lang/English/admin_settings.php	2012-02-09 20:42:20.000000000 +0000
@@ -210,7 +210,7 @@
 'Maintenance mode'				=>	'Maintenance mode',
 'Maintenance mode label'		=>	'Put board into maintenance mode.',
 'Maintenance message label'		=>	'Maintenance message',
-'Maintenance message help'		=>	'The message to be shown when the board is in maintenance mode. You may use the default message provided or compose your own. You may use HTML in your message.',
+'Maintenance message help'		=>	'The message to be shown when the board is in maintenance mode. You may use HTML in your message.',
 'Maintenance message default'	=>	'The forums are temporarily down for maintenance. Please try again in a few minutes.<br /><br />Administrator',
 
 );
diff -urN punbb-1.4.1/lang/English/admin_users.php punbb-1.4.2/lang/English/admin_users.php
--- punbb-1.4.1/lang/English/admin_users.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/lang/English/admin_users.php	2012-02-09 20:42:20.000000000 +0000
@@ -76,7 +76,7 @@
 'Ban admin message'				=>	'One of the selected users is an administrator and can\'t be banned. If you want to ban an administrator, you must first move him/her to any other user group.',
 'Users banned'					=>	'Users banned.',
 'Mass ban info'					=>	'You may set a message to be displayed to the banned users and set the date their bans are to expire.',
-'Ban settings legend'			=> 	'Ban users',
+'Ban settings legend'			=>	'Ban users',
 'Change group head'				=>	'Move the selected users to a new group',
 'User groups updated'			=>	'User groups updated.',
 'Move users legend'				=>	'Move users',
diff -urN punbb-1.4.1/lang/English/common.php punbb-1.4.2/lang/English/common.php
--- punbb-1.4.1/lang/English/common.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/lang/English/common.php	2012-02-09 20:42:20.000000000 +0000
@@ -86,8 +86,8 @@
 'Info separator'			=>	' ', // e.g. 1 Page | 10 Topics
 'Powered by'				=>	'Powered by %s, supported by %s.',
 'Maintenance'				=>	'Maintenance',
-'Installed extension'		=>	'The %s official extension is installed. Copyright &copy; 2003&ndash;2011 <a href="http://punbb.informer.com/">PunBB</a>.',
-'Installed extensions'		=>	'Currently installed <span id="extensions-used" title="%s">%s official extensions</span>. Copyright &copy; 2003&ndash;2011 <a href="http://punbb.informer.com/">PunBB</a>.',
+'Installed extension'		=>	'The %s official extension is installed. Copyright &copy; 2003&ndash;2012 <a href="http://punbb.informer.com/">PunBB</a>.',
+'Installed extensions'		=>	'Currently installed <span id="extensions-used" title="%s">%s official extensions</span>. Copyright &copy; 2003&ndash;2012 <a href="http://punbb.informer.com/">PunBB</a>.',
 
 // CSRF confirmation form
 'Confirm'					=>	'Confirm',	// Button
@@ -115,13 +115,13 @@
 // Stuff for the navigator (top of every page)
 'Index'						=>	'Index',
 'User list'					=>	'User list',
-'Rules'						=>  'Rules',
-'Search'					=>  'Search',
-'Register'					=>  'Register',
+'Rules'						=>	'Rules',
+'Search'					=>	'Search',
+'Register'					=>	'Register',
 'register'					=>	'register',
-'Login'						=>  'Login',
+'Login'						=>	'Login',
 'login'						=>	'login',
-'Not logged in'				=>  'You are not logged in.',
+'Not logged in'				=>	'You are not logged in.',
 'Profile'					=>	'Profile',
 'Logout'					=>	'Logout',
 'Logged in as'				=>	'Logged in as %s.',
@@ -155,11 +155,18 @@
 'Skip to content'			=>	'Skip to forum content',
 
 // Debug information
-'Querytime'					=>	'Generated in %1$s seconds, %2$s queries executed',
+'Querytime'					=>	'Generated in %1$s seconds (%2$s%% PHP - %3$s%% DB) with %4$s queries',
 'Debug table'				=>	'Debug information',
 'Debug summary'				=>	'Database query performance information',
 'Query times'				=>	'Time (s)',
 'Query'						=>	'Query',
 'Total query time'			=>	'Total query time',
 
+// Error message
+'Forum error header'		=> 'Sorry! The page could not be loaded.',
+'Forum error description'	=> 'This is probably a temporary error. Just refresh the page and retry. If problem continues, please check back in 5-10 minutes.',
+'Forum error location'		=> 'The error occurred on line %1$s in %2$s',
+'Forum error db reported'	=> 'Database reported:',
+'Forum error db query'		=> 'Failed query:',
+
 );
diff -urN punbb-1.4.1/lang/English/index.php punbb-1.4.2/lang/English/index.php
--- punbb-1.4.1/lang/English/index.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/lang/English/index.php	2012-02-09 20:42:20.000000000 +0000
@@ -3,7 +3,7 @@
 // Language definitions used in index.php
 $lang_index = array(
 
-'Moderated by'				=>  'Moderated by %s',
+'Moderated by'				=>	'Moderated by %s',
 'Link to'					=>	'Link to %s',	// As in "Link to http://punbb.informer.com/"
 'Category subtitle'			=>	'%1$s in this category with details of %2$s',
 'Forums'					=>	'Forums',
diff -urN punbb-1.4.1/lang/English/install.php punbb-1.4.2/lang/English/install.php
--- punbb-1.4.1/lang/English/install.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/lang/English/install.php	2012-02-09 20:42:20.000000000 +0000
@@ -40,7 +40,7 @@
 'Admin confirm password'	=>	'Confirm password',
 'Admin e-mail'				=>	'Admin\'s email',
 'Username help'				=>	'Between 2 and 25 characters.',
-'Password help'				=>	'Minimum 4 characters. Case sensitive.',
+'Password help'				=>	'Minimum 4 characters. cAsE sEnsiTive.',
 'Confirm password help'		=>	'Re-enter exactly as before.',
 'E-mail address help'		=>	'A valid current email address for the forum administrator.',
 'Part3'						=>	'Part 3 — Forum setup',
diff -urN punbb-1.4.1/lang/English/misc.php punbb-1.4.2/lang/English/misc.php
--- punbb-1.4.1/lang/English/misc.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/lang/English/misc.php	2012-02-09 20:42:20.000000000 +0000
@@ -41,8 +41,8 @@
 'Select'					=>	'Select',	// the header of a column of checkboxes
 'Move'						=>	'Move',
 'Merge'						=>	'Merge',
-'Open'						=>  'Open',
-'Close'						=>  'Close',
+'Open'						=>	'Open',
+'Close'						=>	'Close',
 'Select all'				=>	'Select all',
 
 
diff -urN punbb-1.4.1/lang/English/profile.php punbb-1.4.2/lang/English/profile.php
--- punbb-1.4.1/lang/English/profile.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/lang/English/profile.php	2012-02-09 20:42:20.000000000 +0000
@@ -31,7 +31,7 @@
 
 // Avatar stuff
 'Avatar welcome'			=>	'Set an avatar image to enhance your forum identity',
-'Avatar welcome user'		=>	'Set an avatar image to enhance  %s\'s forum identity',
+'Avatar welcome user'		=>	'Set an avatar image to enhance %s\'s forum identity',
 'Avatar deleted redirect'	=>	'Avatar deleted.',
 'Avatars disabled'			=>	'The administrator has disabled avatar support.',
 'No file'					=>	'You did not select a file for upload.',
@@ -83,7 +83,7 @@
 'Note'						=>	'Note',
 'Posts'						=>	'Posts',
 'Last post'					=>	'Last post',
-'Last visit'				=> 	'Last visit',
+'Last visit'				=>	'Last visit',
 'Send forum e-mail'			=>	'Send forum email',
 'Contact info'				=>	'Contact information',
 'Jabber'					=>	'Jabber',
@@ -115,9 +115,9 @@
 'Settings welcome'			=>	'Modify your localization, display and email settings',
 'Settings welcome user'		=>	'Modify %s\'s localization, display and email settings',
 'Timezone info'				=>	'Must be set for correct time display.',
-'Time format'				=>  'Time format',
-'Default'					=>  'default',
-'Date format'				=>  'Date format',
+'Time format'				=>	'Time format',
+'Default'					=>	'default',
+'Date format'				=>	'Date format',
 'Display settings'			=>	'Display settings',
 'Styles'					=>	'Available styles',
 'Image display'				=>	'Image display',
@@ -231,7 +231,7 @@
 'Username'					=>	'Username',
 'Username help'				=>	'Between 2 and 25 characters.',
 'Password'					=>	'Password',
-'Password help'				=>	'Minimum 4 characters. Case sensitive.',
+'Password help'				=>	'Minimum 4 characters. cAsE sEnsiTive.',
 'Confirm password'			=>	'Confirm password',
 'Confirm password help'		=>	'Re-enter your password exactly as before.',
 'E-mail'					=>	'Email',
diff -urN punbb-1.4.1/lang/English/topic.php punbb-1.4.2/lang/English/topic.php
--- punbb-1.4.1/lang/English/topic.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/lang/English/topic.php	2012-02-09 20:42:20.000000000 +0000
@@ -24,7 +24,7 @@
 'E-mail'				=>	'Email',
 'Online'				=>	'Online',
 'Offline'				=>	'Offline',
-'Last edited'			=>	'Last edited by %1$s (%2$s)',
+'Last edited'			=>	'(edited by %1$s %2$s)',
 'Report'				=>	'Report',
 'Delete'				=>	'Delete',
 'Delete topic'			=>	'Delete topic',
diff -urN punbb-1.4.1/lang/English/url_replace.php punbb-1.4.2/lang/English/url_replace.php
--- punbb-1.4.1/lang/English/url_replace.php	2011-10-09 17:49:11.000000000 +0000
+++ punbb-1.4.2/lang/English/url_replace.php	2012-02-09 20:42:20.000000000 +0000
@@ -1,7 +1,7 @@
 <?php
 
 // The contents of this file are very much inspired by the file i18n-ascii.txt
-// from the CMS software Textpattern (http://textpattern.com/). 
+// from the CMS software Textpattern (http://textpattern.com/).
 
 // Replacements done by sef_friendly function
 $lang_url_replace = array(
diff -urN punbb-1.4.1/lang/English/userlist.php punbb-1.4.2/lang/English/userlist.php
--- punbb-1.4.1/lang/English/userlist.php	2011-10-09 17:49:11.000000000 +0000
+++ punbb-1.4.2/lang/English/userlist.php	2012-02-09 20:42:20.000000000 +0000
@@ -23,8 +23,8 @@
 'All users'				=>	'All users',
 'Perform new search'	=>	'Perform new user search',
 'Table summary'			=>	'List of users filtered and sorted according to the criteria (if any) you have chosen.',
-'Submit user search'	=>	'Submit user criteria',
+'Submit user search'	=>	'Search',
 'Title'					=>	'Title',
 'Posts'					=>	'Posts'
 
-);
\ No newline at end of file
+);
diff -urN punbb-1.4.1/login.php punbb-1.4.2/login.php
--- punbb-1.4.1/login.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/login.php	2012-02-09 20:42:20.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Handles logins, logouts, and password reset requests.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -95,6 +95,14 @@
 
 			($hook = get_hook('li_login_qr_update_user_group')) ? eval($hook) : null;
 			$forum_db->query_build($query) or error(__FILE__, __LINE__);
+
+			// Remove cache file with forum stats
+			if (!defined('FORUM_CACHE_FUNCTIONS_LOADED'))
+			{
+				require FORUM_ROOT.'include/cache.php';
+			}
+
+			clean_stats_cache();
 		}
 
 		// Remove this user's guest entry from the online list
@@ -273,7 +281,7 @@
 	// Setup breadcrumbs
 	$forum_page['crumbs'] = array(
 		array($forum_config['o_board_title'], forum_link($forum_url['index'])),
-		array($lang_login['New password request'], forum_link($forum_url['request_password']))
+		$lang_login['New password request']
 	);
 
 	($hook = get_hook('li_forgot_pass_pre_header_load')) ? eval($hook) : null;
@@ -318,7 +326,7 @@
 
 ?>
 		<div id="req-msg" class="req-warn ct-box error-box">
-			<p class="important"><?php echo $lang_common['Required warn']; ?></p>
+			<p class="important"><?php echo $lang_common['Required warn'] ?></p>
 		</div>
 		<form id="afocus" class="frm-form" method="post" accept-charset="utf-8" action="<?php echo $forum_page['form_action'] ?>">
 			<div class="hidden">
@@ -331,7 +339,7 @@
 				<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
 					<div class="sf-box text required">
 						<label for="fld<?php echo ++$forum_page['fld_count'] ?>"><span><?php echo $lang_login['E-mail address'] ?></span> <small><?php echo $lang_login['E-mail address help'] ?></small></label><br />
-						<span class="fld-input"><input id="fld<?php echo $forum_page['fld_count'] ?>" type="email" name="req_email" value="<?php echo isset($_POST['req_email']) ? forum_htmlencode($_POST['req_email']) : '' ?>" size="35" maxlength="80" required /></span>
+						<span class="fld-input"><input id="fld<?php echo $forum_page['fld_count'] ?>" type="email" name="req_email" value="<?php if (isset($_POST['req_email'])) echo forum_htmlencode($_POST['req_email']); ?>" size="35" maxlength="80" required spellcheck="false" /></span>
 					</div>
 				</div>
 <?php ($hook = get_hook('li_forgot_pass_pre_group_end')) ? eval($hook) : null; ?>
@@ -371,7 +379,7 @@
 // Setup breadcrumbs
 $forum_page['crumbs'] = array(
 	array($forum_config['o_board_title'], forum_link($forum_url['index'])),
-	array(sprintf($lang_login['Login info'], $forum_config['o_board_title']), forum_link($forum_url['login']))
+	sprintf($lang_login['Login info'], $forum_config['o_board_title'])
 );
 
 ($hook = get_hook('li_login_pre_header_load')) ? eval($hook) : null;
@@ -416,7 +424,7 @@
 
 ?>
 		<div id="req-msg" class="req-warn ct-box error-box">
-			<p class="important"><?php echo $lang_common['Required warn']; ?></p>
+			<p class="important"><?php echo $lang_common['Required warn'] ?></p>
 		</div>
 		<form id="afocus" class="frm-form" method="post" accept-charset="utf-8" action="<?php echo $forum_page['form_action'] ?>">
 			<div class="hidden">
@@ -428,20 +436,20 @@
 				<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
 					<div class="sf-box text required">
 						<label for="fld<?php echo ++$forum_page['fld_count'] ?>"><span><?php echo $lang_login['Username'] ?></span></label><br />
-						<span class="fld-input"><input type="text" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_username" value="<?php echo isset($_POST['req_username']) ? forum_htmlencode($_POST['req_username']) : '' ?>" size="35" maxlength="25" required /></span>
+						<span class="fld-input"><input type="text" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_username" value="<?php if (isset($_POST['req_username'])) echo forum_htmlencode($_POST['req_username']); ?>" size="35" maxlength="25" required spellcheck="false" /></span>
 					</div>
 				</div>
 <?php ($hook = get_hook('li_login_pre_pass')) ? eval($hook) : null; ?>
 				<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
 					<div class="sf-box text required">
 						<label for="fld<?php echo ++$forum_page['fld_count'] ?>"><span><?php echo $lang_login['Password'] ?></span></label><br />
-						<span class="fld-input"><input type="password" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_password" value="<?php echo isset($_POST['req_password']) ? forum_htmlencode($_POST['req_password']) : '' ?>" size="35" required /></span>
+						<span class="fld-input"><input type="password" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_password" value="<?php if (isset($_POST['req_password'])) echo forum_htmlencode($_POST['req_password']); ?>" size="35" required /></span>
 					</div>
 				</div>
 <?php ($hook = get_hook('li_login_pre_remember_me_checkbox')) ? eval($hook) : null; ?>
 				<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
 					<div class="sf-box checkbox">
-						<span class="fld-input"><input type="checkbox" id="fld<?php echo ++$forum_page['fld_count'] ?>" name="save_pass" value="1" <?php echo isset($_POST['save_pass']) ? 'checked="checked" ' : '' ?>/></span>
+						<span class="fld-input"><input type="checkbox" id="fld<?php echo ++$forum_page['fld_count'] ?>" name="save_pass" value="1"<?php if (isset($_POST['save_pass'])) echo ' checked="checked"'; ?> /></span>
 						<label for="fld<?php echo $forum_page['fld_count'] ?>"><?php echo $lang_login['Remember me'] ?></label>
 					</div>
 				</div>
diff -urN punbb-1.4.1/misc.php punbb-1.4.2/misc.php
--- punbb-1.4.1/misc.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/misc.php	2012-02-09 20:42:20.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Provides various features for forum users (ie: display rules, send emails through the forum, mark a forum as read, etc).
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -33,7 +33,7 @@
 	// Setup breadcrumbs
 	$forum_page['crumbs'] = array(
 		array($forum_config['o_board_title'], forum_link($forum_url['index'])),
-		array($lang_common['Rules'], forum_link($forum_url['rules']))
+		$lang_common['Rules']
 	);
 
 	($hook = get_hook('mi_rules_pre_header_load')) ? eval($hook) : null;
@@ -52,7 +52,7 @@
 	</div>
 
 	<div class="main-content main-frm">
-		<div class="ct-box user-box">
+		<div id="rules-content" class="ct-box user-box">
 			<?php echo $forum_config['o_rules_message']."\n" ?>
 		</div>
 	</div>
@@ -314,7 +314,7 @@
 
 ?>
 		<div id="req-msg" class="req-warn ct-box error-box">
-			<p class="important"><?php echo $lang_common['Required warn']; ?></p>
+			<p class="important"><?php echo $lang_common['Required warn'] ?></p>
 		</div>
 		<form id="afocus" class="frm-form" method="post" accept-charset="utf-8" action="<?php echo $forum_page['form_action'] ?>">
 			<div class="hidden">
@@ -506,7 +506,7 @@
 	</div>
 	<div class="main-content main-frm">
 		<div id="req-msg" class="req-warn ct-box error-box">
-			<p class="important"><?php echo $lang_common['Required warn']; ?></p>
+			<p class="important"><?php echo $lang_common['Required warn'] ?></p>
 		</div>
 <?php
 		// If there were any errors, show them
diff -urN punbb-1.4.1/moderate.php punbb-1.4.2/moderate.php
--- punbb-1.4.1/moderate.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/moderate.php	2012-02-09 20:42:20.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Provides various mass-moderation tools to moderators.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -25,14 +25,18 @@
 	if (!$forum_user['is_admmod'])
 		message($lang_common['No permission']);
 
+	$_get_host = $_GET['get_host'];
+	if (!is_string($_get_host))
+		message($lang_common['Bad request']);
+
 	($hook = get_hook('mr_view_ip_selected')) ? eval($hook) : null;
 
 	// Is get_host an IP address or a post ID?
-	if (preg_match('/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/', $_GET['get_host']) || preg_match('/^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$/', $_GET['get_host']))
-		$ip = $_GET['get_host'];
+	if (preg_match('/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/', $_get_host) || preg_match('/^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$/', $_get_host))
+		$ip = $_get_host;
 	else
 	{
-		$get_host = intval($_GET['get_host']);
+		$get_host = intval($_get_host);
 		if ($get_host < 1)
 			message($lang_common['Bad request']);
 
@@ -48,7 +52,6 @@
 
 		if (!$ip)
 			message($lang_common['Bad request']);
-
 	}
 
 	($hook = get_hook('mr_view_ip_pre_output')) ? eval($hook) : null;
@@ -234,7 +237,7 @@
 			</fieldset>
 <?php ($hook = get_hook('mr_confirm_delete_posts_fieldset_end')) ? eval($hook) : null; ?>
 			<div class="frm-buttons">
-				<span class="submit primary"><input type="submit" name="delete_posts_comply" value="<?php echo $lang_common['Delete'] ?>" /></span>
+				<span class="submit primary caution"><input type="submit" name="delete_posts_comply" value="<?php echo $lang_common['Delete'] ?>" /></span>
 				<span class="cancel"><input type="submit" name="cancel" value="<?php echo $lang_common['Cancel'] ?>" formnovalidate /></span>
 			</div>
 		</form>
@@ -378,7 +381,7 @@
 <?php ($hook = get_hook('mr_confirm_split_posts_pre_subject')) ? eval($hook) : null; ?>
 					<div class="sf-box text required">
 						<label for="fld<?php echo ++$forum_page['fld_count'] ?>"><span><?php echo $lang_misc['New subject'] ?></span></label><br />
-						<span class="fld-input"><input type="text" id="fld<?php echo $forum_page['fld_count'] ?>" name="new_subject" value="" size="70" maxlength="70" required /></span>
+						<span class="fld-input"><input type="text" id="fld<?php echo $forum_page['fld_count'] ?>" name="new_subject" size="70" maxlength="70" required /></span>
 					</div>
 <?php ($hook = get_hook('mr_confirm_split_posts_pre_confirm_checkbox')) ? eval($hook) : null; ?>
 					<div class="sf-box checkbox">
@@ -539,6 +542,9 @@
 
 		$forum_page['post_ident']['link'] = '<span class="post-link"><a class="permalink" rel="bookmark" title="'.$lang_topic['Permalink post'].'" href="'.forum_link($forum_url['post'], $cur_post['id']).'">'.format_time($cur_post['posted']).'</a></span>';
 
+		if ($cur_post['edited'] != '')
+			$forum_page['post_ident']['edited'] = '<span class="post-edit">'.sprintf($lang_topic['Last edited'], forum_htmlencode($cur_post['edited_by']), format_time($cur_post['edited'])).'</span>';
+
 		($hook = get_hook('mr_row_pre_item_ident_merge')) ? eval($hook) : null;
 
 		// Generate the checkbox field
@@ -577,9 +583,6 @@
 		// Perform the main parsing of the message (BBCode, smilies, censor words etc)
 		$forum_page['message']['message'] = parse_message($cur_post['message'], $cur_post['hide_smilies']);
 
-		if ($cur_post['edited'] != '')
-			$forum_page['message']['edited'] = '<p class="lastedit"><em>'.sprintf($lang_topic['Last edited'], forum_htmlencode($cur_post['edited_by']), format_time($cur_post['edited'])).'</em></p>';
-
 		($hook = get_hook('mr_post_actions_row_pre_display')) ? eval($hook) : null;
 
 ?>
@@ -1241,7 +1244,7 @@
 			</fieldset>
 <?php ($hook = get_hook('mr_delete_topics_fieldset_end')) ? eval($hook) : null; ?>
 			<div class="frm-buttons">
-				<span class="submit primary"><input type="submit" name="delete_topics_comply" value="<?php echo $lang_common['Delete'] ?>" /></span>
+				<span class="submit primary caution"><input type="submit" name="delete_topics_comply" value="<?php echo $lang_common['Delete'] ?>" /></span>
 				<span class="cancel"><input type="submit" name="cancel" value="<?php echo $lang_common['Cancel'] ?>" formnovalidate /></span>
 			</div>
 		</form>
diff -urN punbb-1.4.1/post.php punbb-1.4.2/post.php
--- punbb-1.4.1/post.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/post.php	2012-02-09 20:42:20.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Adds a new post to the specified topic or a new topic to the specified forum.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -359,7 +359,7 @@
 
 ?>
 	<div class="main-subhead">
-		<h2 class="hn"><span><?php echo $tid ? $lang_post['Preview reply'] : $lang_post['Preview new topic']; ?></span></h2>
+		<h2 class="hn"><span><?php echo $tid ? $lang_post['Preview reply'] : $lang_post['Preview new topic'] ?></span></h2>
 	</div>
 	<div id="post-preview" class="main-content main-frm">
 		<div class="post singlepost">
@@ -413,7 +413,7 @@
 
 ?>
 		<div id="req-msg" class="req-warn ct-box error-box">
-			<p class="important"><?php echo $lang_common['Required warn']; ?></p>
+			<p class="important"><?php echo $lang_common['Required warn'] ?></p>
 		</div>
 		<form id="afocus" class="frm-form frm-ctrl-submit" method="post" accept-charset="utf-8" action="<?php echo $forum_page['form_action'] ?>"<?php if (!empty($forum_page['form_attributes'])) echo ' '.implode(' ', $forum_page['form_attributes']) ?>>
 			<div class="hidden">
@@ -482,7 +482,7 @@
 				<div class="txt-set set<?php echo ++$forum_page['item_count'] ?>">
 					<div class="txt-box textarea required">
 						<label for="fld<?php echo ++$forum_page['fld_count'] ?>"><span><?php echo $lang_post['Write message'] ?></span></label>
-						<div class="txt-input"><span class="fld-input"><textarea id="fld<?php echo $forum_page['fld_count'] ?>" name="req_message" rows="14" cols="95" required spellcheck="true"><?php echo isset($_POST['req_message']) ? forum_htmlencode($message) : (isset($forum_page['quote']) ? forum_htmlencode($forum_page['quote']) : ''); ?></textarea></span></div>
+						<div class="txt-input"><span class="fld-input"><textarea id="fld<?php echo $forum_page['fld_count'] ?>" name="req_message" rows="15" cols="95" required spellcheck="true"><?php echo isset($_POST['req_message']) ? forum_htmlencode($message) : (isset($forum_page['quote']) ? forum_htmlencode($forum_page['quote']) : '') ?></textarea></span></div>
 					</div>
 				</div>
 <?php
@@ -517,7 +517,7 @@
 ?>
 				<fieldset class="mf-set set<?php echo ++$forum_page['item_count'] ?>">
 					<div class="mf-box checkbox">
-						<?php echo implode("\n\t\t\t\t\t", $forum_page['checkboxes'])."\n"; ?>
+						<?php echo implode("\n\t\t\t\t\t", $forum_page['checkboxes'])."\n" ?>
 					</div>
 <?php ($hook = get_hook('po_pre_checkbox_fieldset_end')) ? eval($hook) : null; ?>
 				</fieldset>
@@ -603,7 +603,7 @@
 		($hook = get_hook('po_topic_review_row_pre_display')) ? eval($hook) : null;
 
 ?>
-		<div class="post<?php echo ($forum_page['item_count'] == 1) ? ' firstpost' : '' ?><?php echo ($forum_page['item_total'] == $forum_page['item_count']) ? ' lastpost' : '' ?>">
+		<div class="post<?php if ($forum_page['item_count'] == 1) echo ' firstpost'; ?><?php if ($forum_page['item_total'] == $forum_page['item_count']) echo ' lastpost'; ?>">
 			<div class="posthead">
 				<h3 class="hn post-ident"><?php echo implode(' ', $forum_page['post_ident']) ?></h3>
 <?php ($hook = get_hook('po_topic_review_new_post_head_option')) ? eval($hook) : null; ?>
diff -urN punbb-1.4.1/profile.php punbb-1.4.2/profile.php
--- punbb-1.4.1/profile.php	2011-11-27 18:23:16.000000000 +0000
+++ punbb-1.4.2/profile.php	2012-02-09 20:42:20.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Allows users to view and edit their details.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -123,7 +123,7 @@
 			$forum_page['crumbs'] = array(
 				array($forum_config['o_board_title'], forum_link($forum_url['index'])),
 				array(sprintf($lang_profile['Users profile'], $user['username'], $lang_profile['Section about']), forum_link($forum_url['profile_about'], $id)),
-				($forum_page['own_profile']) ? array($lang_profile['Change your password'], forum_link($forum_url['change_password'], $id)) : array(sprintf($lang_profile['Change user password'], forum_htmlencode($user['username'])),forum_link($forum_url['change_password']), $id)
+				($forum_page['own_profile']) ? $lang_profile['Change your password'] : sprintf($lang_profile['Change user password'], forum_htmlencode($user['username']))
 			);
 
 			($hook = get_hook('pf_change_pass_key_pre_header_load')) ? eval($hook) : null;
@@ -165,7 +165,7 @@
 
 ?>
 		<div id="req-msg" class="req-warn ct-box error-box">
-			<p class="important"><?php echo $lang_common['Required warn']; ?></p>
+			<p class="important"><?php echo $lang_common['Required warn'] ?></p>
 		</div>
 		<form id="afocus" class="frm-form" method="post" accept-charset="utf-8" action="<?php echo $forum_page['form_action'] ?>" autocomplete="off">
 			<div class="hidden">
@@ -179,7 +179,7 @@
 				<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
 					<div class="sf-box text required">
 						<label for="fld<?php echo ++$forum_page['fld_count'] ?>"><span><?php echo $lang_profile['New password'] ?></span> <small><?php echo $lang_profile['Password help'] ?></small></label><br />
-						<span class="fld-input"><input type="<?php echo($forum_config['o_mask_passwords'] == '1' ? 'password' : 'text') ?>" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_new_password1" size="35" value="<?php echo(isset($_POST['req_new_password1']) ? forum_htmlencode($_POST['req_new_password1']) : ''); ?>" required autocomplete="off" /></span><br />
+						<span class="fld-input"><input type="<?php echo($forum_config['o_mask_passwords'] == '1' ? 'password' : 'text') ?>" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_new_password1" size="35" value="<?php if (isset($_POST['req_new_password1'])) echo forum_htmlencode($_POST['req_new_password1']); ?>" required autocomplete="off" /></span><br />
 					</div>
 				</div>
 <?php ($hook = get_hook('pf_change_pass_key_pre_new_password_confirm')) ? eval($hook) : null; ?>
@@ -187,7 +187,7 @@
 				<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
 					<div class="sf-box text required">
 						<label for="fld<?php echo ++$forum_page['fld_count'] ?>"><span><?php echo $lang_profile['Confirm new password'] ?></span> <small><?php echo $lang_profile['Confirm password help'] ?></small></label><br />
-						<span class="fld-input"><input type="password" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_new_password2" size="35" value="<?php echo(isset($_POST['req_new_password2']) ? forum_htmlencode($_POST['req_new_password2']) : ''); ?>" required autocomplete="off" /></span><br />
+						<span class="fld-input"><input type="password" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_new_password2" size="35" value="<?php if (isset($_POST['req_new_password2'])) echo forum_htmlencode($_POST['req_new_password2']); ?>" required autocomplete="off" /></span><br />
 					</div>
 				</div>
 <?php endif; ?>
@@ -292,7 +292,7 @@
 	$forum_page['crumbs'] = array(
 		array($forum_config['o_board_title'], forum_link($forum_url['index'])),
 		array(sprintf($lang_profile['Users profile'], $user['username']), forum_link($forum_url['profile_about'], $id)),
-		($forum_page['own_profile']) ? array($lang_profile['Change your password'], forum_link($forum_url['change_password'], $id)) : array(sprintf($lang_profile['Change user password'], forum_htmlencode($user['username'])),forum_link($forum_url['change_password'], $id))
+		($forum_page['own_profile']) ? $lang_profile['Change your password'] : sprintf($lang_profile['Change user password'], forum_htmlencode($user['username']))
 	);
 
 	($hook = get_hook('pf_change_pass_normal_pre_header_load')) ? eval($hook) : null;
@@ -334,9 +334,9 @@
 
 ?>
 		<div id="req-msg" class="req-warn ct-box error-box">
-			<p class="important"><?php echo $lang_common['Required warn']; ?></p>
+			<p class="important"><?php echo $lang_common['Required warn'] ?></p>
 		</div>
-		<form id="afocus" class="frm-form" method="post" accept-charset="utf-8" action="<?php echo $forum_page['form_action']  ?>" autocomplete="off">
+		<form id="afocus" class="frm-form" method="post" accept-charset="utf-8" action="<?php echo $forum_page['form_action'] ?>" autocomplete="off">
 			<div class="hidden">
 				<?php echo implode("\n\t\t\t\t", $forum_page['hidden_fields'])."\n" ?>
 			</div>
@@ -348,14 +348,14 @@
 				<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
 					<div class="sf-box text required">
 						<label for="fld<?php echo ++$forum_page['fld_count'] ?>"><span><?php echo $lang_profile['Old password'] ?></span> <small><?php echo $lang_profile['Old password help'] ?></small></label><br />
-						<span class="fld-input"><input type="<?php echo($forum_config['o_mask_passwords'] == '1' ? 'password' : 'text') ?>" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_old_password" size="35" value="<?php echo(isset($_POST['req_old_password']) ? forum_htmlencode($_POST['req_old_password']) : ''); ?>" required /></span>
+						<span class="fld-input"><input type="<?php echo($forum_config['o_mask_passwords'] == '1' ? 'password' : 'text') ?>" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_old_password" size="35" value="<?php if (isset($_POST['req_old_password'])) echo forum_htmlencode($_POST['req_old_password']); ?>" required /></span>
 					</div>
 				</div>
 <?php endif; ($hook = get_hook('pf_change_pass_normal_pre_new_password')) ? eval($hook) : null; ?>
-				<div class="sf-set set<?php echo ++$forum_page['item_count']; echo($forum_config['o_mask_passwords'] == '1' ? ' prepend-top' : ''); ?>">
+				<div class="sf-set set<?php echo ++$forum_page['item_count']; if ($forum_config['o_mask_passwords'] == '1') echo ' prepend-top'; ?>">
 					<div class="sf-box text required">
 						<label for="fld<?php echo ++$forum_page['fld_count'] ?>"><span><?php echo $lang_profile['New password'] ?></span> <small><?php echo $lang_profile['Password help'] ?></small></label><br />
-						<span class="fld-input"><input type="<?php echo($forum_config['o_mask_passwords'] == '1' ? 'password' : 'text') ?>" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_new_password1" size="35" value="<?php echo(isset($_POST['req_new_password1']) ? forum_htmlencode($_POST['req_new_password1']) : ''); ?>" required /></span><br />
+						<span class="fld-input"><input type="<?php echo($forum_config['o_mask_passwords'] == '1' ? 'password' : 'text') ?>" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_new_password1" size="35" value="<?php if (isset($_POST['req_new_password1'])) echo forum_htmlencode($_POST['req_new_password1']); ?>" required /></span><br />
 					</div>
 				</div>
 <?php ($hook = get_hook('pf_change_pass_normal_pre_new_password_confirm')) ? eval($hook) : null; ?>
@@ -363,7 +363,7 @@
 				<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
 					<div class="sf-box text required">
 						<label for="fld<?php echo ++$forum_page['fld_count'] ?>"><span><?php echo $lang_profile['Confirm new password'] ?></span> <small><?php echo $lang_profile['Confirm password help'] ?></small></label><br />
-						<span class="fld-input"><input type="<?php echo($forum_config['o_mask_passwords'] == '1' ? 'password' : 'text') ?>" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_new_password2" size="35" value="<?php echo(isset($_POST['req_new_password2']) ? forum_htmlencode($_POST['req_new_password2']) : ''); ?>" required /></span><br />
+						<span class="fld-input"><input type="<?php echo($forum_config['o_mask_passwords'] == '1' ? 'password' : 'text') ?>" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_new_password2" size="35" value="<?php if (isset($_POST['req_new_password2'])) echo forum_htmlencode($_POST['req_new_password2']); ?>" required /></span><br />
 					</div>
 				</div>
 <?php endif; ?>
@@ -559,7 +559,7 @@
 	$forum_page['crumbs'] = array(
 		array($forum_config['o_board_title'], forum_link($forum_url['index'])),
 		array(sprintf($lang_profile['Users profile'], $user['username'], $lang_profile['Section about']), forum_link($forum_url['profile_about'], $id)),
-		($forum_page['own_profile']) ? array($lang_profile['Change your e-mail'], forum_link($forum_url['change_email'], $id)) : array(sprintf($lang_profile['Change user e-mail'], forum_htmlencode($user['username'])), forum_link($forum_url['change_email'], $id))
+		($forum_page['own_profile']) ? $lang_profile['Change your e-mail'] : sprintf($lang_profile['Change user e-mail'], forum_htmlencode($user['username']))
 	);
 
 	($hook = get_hook('pf_change_email_normal_pre_header_load')) ? eval($hook) : null;
@@ -604,7 +604,7 @@
 
 ?>
 		<div id="req-msg" class="req-warn ct-box error-box">
-			<p class="important"><?php echo $lang_common['Required warn']; ?></p>
+			<p class="important"><?php echo $lang_common['Required warn'] ?></p>
 		</div>
 		<form id="afocus" class="frm-form" method="post" accept-charset="utf-8" action="<?php echo $forum_page['form_action'] ?>">
 			<div class="hidden">
@@ -617,14 +617,14 @@
 				<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
 					<div class="sf-box text required">
 						<label for="fld<?php echo ++$forum_page['fld_count'] ?>"><span><?php echo $lang_profile['New e-mail'] ?></span></label><br />
-						<span class="fld-input"><input type="email" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_new_email" size="35" maxlength="80" value="<?php echo(isset($_POST['req_new_email']) ? forum_htmlencode($_POST['req_new_email']) : ''); ?>" required /></span>
+						<span class="fld-input"><input type="email" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_new_email" size="35" maxlength="80" value="<?php if (isset($_POST['req_new_email'])) echo forum_htmlencode($_POST['req_new_email']); ?>" required /></span>
 					</div>
 				</div>
 <?php ($hook = get_hook('pf_change_email_normal_pre_password')) ? eval($hook) : null; ?>
 				<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
 					<div class="sf-box text required">
 						<label for="fld<?php echo ++$forum_page['fld_count'] ?>"><span><?php echo $lang_profile['Password'] ?></span><small><?php echo $lang_profile['Old password help'] ?></small></label><br />
-						<span class="fld-input"><input type="<?php echo($forum_config['o_mask_passwords'] == '1' ? 'password' : 'text') ?>" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_password" size="35" value="<?php echo(isset($_POST['req_password']) ? forum_htmlencode($_POST['req_password']) : ''); ?>" required autocomplete="off" /></span>
+						<span class="fld-input"><input type="<?php echo($forum_config['o_mask_passwords'] == '1' ? 'password' : 'text') ?>" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_password" size="35" value="<?php if (isset($_POST['req_password'])) echo forum_htmlencode($_POST['req_password']); ?>" required autocomplete="off" /></span>
 					</div>
 				</div>
 <?php ($hook = get_hook('pf_change_email_normal_pre_fieldset_end')) ? eval($hook) : null; ?>
@@ -668,6 +668,14 @@
 
 		delete_user($id, isset($_POST['delete_posts']));
 
+		// Remove cache file with forum stats
+		if (!defined('FORUM_CACHE_FUNCTIONS_LOADED'))
+		{
+			require FORUM_ROOT.'include/cache.php';
+		}
+
+		clean_stats_cache();
+
 		// Add flash message
 		$forum_flash->add_info($lang_profile['User delete redirect']);
 
@@ -690,7 +698,7 @@
 	$forum_page['crumbs'] = array(
 		array($forum_config['o_board_title'], forum_link($forum_url['index'])),
 		array(sprintf($lang_profile['Users profile'], $user['username'], $lang_profile['Section admin']), forum_link($forum_url['profile_admin'], $id)),
-		array($lang_profile['Delete user'], forum_link($forum_url['delete_user'], $id))
+		$lang_profile['Delete user']
 	);
 
 	($hook = get_hook('pf_delete_user_pre_header_load')) ? eval($hook) : null;
@@ -731,7 +739,7 @@
 			</fieldset>
 <?php ($hook = get_hook('pf_delete_user_fieldset_end')) ? eval($hook) : null; ?>
 			<div class="frm-buttons">
-				<span class="submit primary"><input type="submit" name="delete_user_comply" value="<?php echo $lang_common['Submit'] ?>" /></span>
+				<span class="submit primary caution"><input type="submit" name="delete_user_comply" value="<?php echo $lang_profile['Delete user'] ?>" /></span>
 				<span class="cancel"><input type="submit" name="cancel" value="<?php echo $lang_common['Cancel'] ?>" formnovalidate /></span>
 			</div>
 		</form>
@@ -964,11 +972,11 @@
 			}
 
 			// Add http:// if the URL doesn't contain it or https:// already
-			if ($form['url'] != '' && strpos(strtolower($form['url']), 'http://') !== 0  && strpos(strtolower($form['url']), 'https://') !== 0)
+			if ($form['url'] != '' && strpos(strtolower($form['url']), 'http://') !== 0 && strpos(strtolower($form['url']), 'https://') !== 0)
 				$form['url'] = 'http://'.$form['url'];
 
 			// Add http:// if the LinkedIn doesn't contain it or https:// already
-			if ($form['linkedin'] != '' && strpos(strtolower($form['linkedin']), 'http://') !== 0  && strpos(strtolower($form['linkedin']), 'https://') !== 0)
+			if ($form['linkedin'] != '' && strpos(strtolower($form['linkedin']), 'http://') !== 0 && strpos(strtolower($form['linkedin']), 'https://') !== 0)
 				$form['linkedin'] = 'http://'.$form['linkedin'];
 
 			// If the ICQ UIN contains anything other than digits it's invalid
@@ -1110,13 +1118,13 @@
 
 			if (is_uploaded_file($uploaded_file['tmp_name']) && empty($errors))
 			{
+				// First check simple by size and mime type
+				$allowed_mime_types = array('image/gif', 'image/jpeg', 'image/pjpeg', 'image/png', 'image/x-png');
 				$allowed_types = array(IMAGETYPE_JPEG, IMAGETYPE_PNG, IMAGETYPE_GIF);
 
 				($hook = get_hook('pf_change_details_avatar_allowed_types')) ? eval($hook) : null;
 
-				list($width, $height, $type,) = @/**/getimagesize($uploaded_file['tmp_name']);
-
-				if (!in_array($type, $allowed_types))
+				if (!in_array($uploaded_file['type'], $allowed_mime_types))
 					$errors[] = $lang_profile['Bad type'];
 				else
 				{
@@ -1127,44 +1135,54 @@
 
 				if (empty($errors))
 				{
-					// Determine type
-					$extension = null;
-					$avatar_type = FORUM_AVATAR_NONE;
-					if ($type == IMAGETYPE_GIF)
-					{
-						$extension = '.gif';
-						$avatar_type = FORUM_AVATAR_GIF;
-					}
-					else if ($type == IMAGETYPE_JPEG)
-					{
-						$extension = '.jpg';
-						$avatar_type = FORUM_AVATAR_JPG;
-					}
-					else if ($type == IMAGETYPE_PNG)
-					{
-						$extension = '.png';
-						$avatar_type = FORUM_AVATAR_PNG;
-					}
-
-					($hook = get_hook('pf_change_details_avatar_determine_extension')) ? eval($hook) : null;
+					$avatar_tmp_file = $forum_config['o_avatars_dir'].'/'.$id.'.tmp';
 
 					// Move the file to the avatar directory. We do this before checking the width/height to circumvent open_basedir restrictions.
-					if (!@move_uploaded_file($uploaded_file['tmp_name'], $forum_config['o_avatars_dir'].'/'.$id.'.tmp'))
+					if (!@move_uploaded_file($uploaded_file['tmp_name'], $avatar_tmp_file))
 						$errors[] = sprintf($lang_profile['Move failed'], '<a href="mailto:'.forum_htmlencode($forum_config['o_admin_email']).'">'.forum_htmlencode($forum_config['o_admin_email']).'</a>');
 
 					if (empty($errors))
 					{
 						($hook = get_hook('pf_change_details_avatar_modify_size')) ? eval($hook) : null;
 
-						// Now check the width/height
+						// Now check the width, height, type
+						list($width, $height, $type,) = @/**/getimagesize($avatar_tmp_file);
 						if (empty($width) || empty($height) || $width > $forum_config['o_avatars_width'] || $height > $forum_config['o_avatars_height'])
 						{
-							@unlink($forum_config['o_avatars_dir'].'/'.$id.'.tmp');
+							@unlink($avatar_tmp_file);
 							$errors[] = sprintf($lang_profile['Too wide or high'], $forum_config['o_avatars_width'], $forum_config['o_avatars_height']);
 						}
-						else if ($type == 1 && $uploaded_file['type'] != 'image/gif')	// Prevent dodgy uploads
+						else if ($type == IMAGETYPE_GIF && $uploaded_file['type'] != 'image/gif')	// Prevent dodgy uploads
 						{
-							@unlink($forum_config['o_avatars_dir'].'/'.$id.'.tmp');
+							@unlink($avatar_tmp_file);
+							$errors[] = $lang_profile['Bad type'];
+						}
+
+						// Determine type
+						$extension = null;
+						$avatar_type = FORUM_AVATAR_NONE;
+						if ($type == IMAGETYPE_GIF)
+						{
+							$extension = '.gif';
+							$avatar_type = FORUM_AVATAR_GIF;
+						}
+						else if ($type == IMAGETYPE_JPEG)
+						{
+							$extension = '.jpg';
+							$avatar_type = FORUM_AVATAR_JPG;
+						}
+						else if ($type == IMAGETYPE_PNG)
+						{
+							$extension = '.png';
+							$avatar_type = FORUM_AVATAR_PNG;
+						}
+
+						($hook = get_hook('pf_change_details_avatar_determine_extension')) ? eval($hook) : null;
+
+						// Check type from getimagesize type format
+						if (!in_array($avatar_type, $allowed_types) || empty($extension))
+						{
+							@unlink($avatar_tmp_file);
 							$errors[] = $lang_profile['Bad type'];
 						}
 
@@ -1176,7 +1194,7 @@
 							delete_avatar($id);
 
 							// Put the new avatar in its place
-							@rename($forum_config['o_avatars_dir'].'/'.$id.'.tmp', $forum_config['o_avatars_dir'].'/'.$id.$extension);
+							@rename($avatar_tmp_file, $forum_config['o_avatars_dir'].'/'.$id.$extension);
 							@chmod($forum_config['o_avatars_dir'].'/'.$id.$extension, 0644);
 
 							// Avatar
@@ -1374,7 +1392,7 @@
 
 	($hook = get_hook('pf_view_details_selected')) ? eval($hook) : null;
 
-	$forum_page['user_ident']['username'] = '<li class="username'.(($user['realname'] =='') ? ' fn nickname' :  ' nickname').'"><strong>'.forum_htmlencode($user['username']).'</strong></li>';
+	$forum_page['user_ident']['username'] = '<li class="username'.(($user['realname'] =='') ? ' fn nickname' : ' nickname').'"><strong>'.forum_htmlencode($user['username']).'</strong></li>';
 
 	if ($forum_config['o_avatars'] == '1')
 	{
@@ -1515,7 +1533,7 @@
 	// Setup breadcrumbs
 	$forum_page['crumbs'] = array(
 		array($forum_config['o_board_title'], forum_link($forum_url['index'])),
-		array(sprintf($lang_profile['Users profile'], $user['username']), forum_link($forum_url['user'], $id))
+		sprintf($lang_profile['Users profile'], $user['username'])
 	);
 
 	$forum_page['group_count'] = $forum_page['item_count'] = $forum_page['fld_count'] = 0;
@@ -1597,7 +1615,7 @@
 	// Setup breadcrumbs
 	$forum_page['crumbs'] = array(
 		array($forum_config['o_board_title'], forum_link($forum_url['index'])),
-		array(sprintf($lang_profile['Users profile'], $user['username']), forum_link($forum_url['user'], $id))
+		sprintf($lang_profile['Users profile'], $user['username'])
 	);
 
 	// Is this users own profile
@@ -1605,8 +1623,8 @@
 
 	// Setup navigation menu
 	$forum_page['main_menu'] = array();
-	$forum_page['main_menu']['about'] = '<li class="first-item'.(($section == 'about')  ? ' active' : '').'"><a href="'.forum_link($forum_url['profile_about'], $id).'"><span>'.$lang_profile['Section about'].'</span></a></li>';
-	$forum_page['main_menu']['identity'] = '<li'.(($section == 'identity')  ? ' class="active"' : '').'><a href="'.forum_link($forum_url['profile_identity'], $id).'"><span>'.$lang_profile['Section identity'].'</span></a></li>';
+	$forum_page['main_menu']['about'] = '<li class="first-item'.(($section == 'about') ? ' active' : '').'"><a href="'.forum_link($forum_url['profile_about'], $id).'"><span>'.$lang_profile['Section about'].'</span></a></li>';
+	$forum_page['main_menu']['identity'] = '<li'.(($section == 'identity') ? ' class="active"' : '').'><a href="'.forum_link($forum_url['profile_identity'], $id).'"><span>'.$lang_profile['Section identity'].'</span></a></li>';
 	$forum_page['main_menu']['settings'] = '<li'.(($section == 'settings') ? ' class="active"' : '').'><a href="'.forum_link($forum_url['profile_settings'], $id).'"><span>'.$lang_profile['Section settings'].'</span></a></li>';
 
 	if ($forum_config['o_signatures'] == '1')
@@ -1627,7 +1645,7 @@
 		$forum_page['crumbs'] = array(
 			array($forum_config['o_board_title'], forum_link($forum_url['index'])),
 			array(sprintf($lang_profile['Users profile'], $user['username']), forum_link($forum_url['user'], $id)),
-			array(sprintf($lang_profile['Section about']), forum_link($forum_url['profile_about'], $id)),
+			sprintf($lang_profile['Section about'])
 		);
 
 		// Setup user identification
@@ -1635,7 +1653,7 @@
 
 		($hook = get_hook('pf_change_details_about_selected')) ? eval($hook) : null;
 
-		$forum_page['user_ident']['username'] = '<li class="username'.(($user['realname'] =='') ? ' fn nickname' :  ' nickname').'"><strong>'.forum_htmlencode($user['username']).'</strong></li>';
+		$forum_page['user_ident']['username'] = '<li class="username'.(($user['realname'] =='') ? ' fn nickname' : ' nickname').'"><strong>'.forum_htmlencode($user['username']).'</strong></li>';
 
 		if ($forum_config['o_avatars'] == '1')
 		{
@@ -1663,7 +1681,7 @@
 		$forum_page['user_info']['lastvisit'] = '<li><span>'.$lang_profile['Last visit'].': <strong> '.format_time($user['last_visit']).'</strong></span></li>';
 		$forum_page['user_info']['lastpost'] = '<li><span>'.$lang_profile['Last post'].': <strong> '.format_time($user['last_post']).'</strong></span></li>';
 
- 		if ($forum_config['o_show_post_count'] == '1' || $forum_user['is_admmod'])
+		if ($forum_config['o_show_post_count'] == '1' || $forum_user['is_admmod'])
 			$forum_page['user_info']['posts'] = '<li><span>'.$lang_profile['Posts'].': <strong>'.forum_number_format($user['num_posts']).'</strong></span></li>';
 		else
 			$forum_page['user_private']['posts'] = '<li><span>'.$lang_profile['Posts'].': <strong>'.forum_number_format($user['num_posts']).'</strong></span></li>';
@@ -1798,10 +1816,10 @@
 		if (($forum_page['own_profile'] || $forum_user['g_id'] == FORUM_ADMIN) && $forum_config['o_subscriptions'] == '1')
 		{
 			// Topic subscriptions
-			 $forum_page['user_activity']['search_subs'] = '<li'.(empty($forum_page['user_activity']) ? ' class="first-item"' : '').'><a href="'.forum_link($forum_url['search_subscriptions'], $id).'">'.(($forum_page['own_profile']) ? $lang_profile['View your subscriptions'] : sprintf($lang_profile['View user subscriptions'], forum_htmlencode($user['username']))).'</a></li>';
+			$forum_page['user_activity']['search_subs'] = '<li'.(empty($forum_page['user_activity']) ? ' class="first-item"' : '').'><a href="'.forum_link($forum_url['search_subscriptions'], $id).'">'.(($forum_page['own_profile']) ? $lang_profile['View your subscriptions'] : sprintf($lang_profile['View user subscriptions'], forum_htmlencode($user['username']))).'</a></li>';
 
-			 // Forum subscriptions
-			 $forum_page['user_activity']['search_forum_subs'] = '<li'.(empty($forum_page['user_activity']) ? ' class="first-item"' : '').'><a href="'.forum_link($forum_url['search_forum_subscriptions'], $id).'">'.(($forum_page['own_profile']) ? $lang_profile['View your forum subscriptions'] : sprintf($lang_profile['View user forum subscriptions'], forum_htmlencode($user['username']))).'</a></li>';
+			// Forum subscriptions
+			$forum_page['user_activity']['search_forum_subs'] = '<li'.(empty($forum_page['user_activity']) ? ' class="first-item"' : '').'><a href="'.forum_link($forum_url['search_forum_subscriptions'], $id).'">'.(($forum_page['own_profile']) ? $lang_profile['View your forum subscriptions'] : sprintf($lang_profile['View user forum subscriptions'], forum_htmlencode($user['username']))).'</a></li>';
 		}
 
 		// Setup user options
@@ -1905,7 +1923,7 @@
 		$forum_page['crumbs'] = array(
 			array($forum_config['o_board_title'], forum_link($forum_url['index'])),
 			array(sprintf($lang_profile['Users profile'], $user['username']), forum_link($forum_url['user'], $id)),
-			array($lang_profile['Section identity'],forum_link($forum_url['profile_identity'], $id))
+			$lang_profile['Section identity']
 		);
 		// Setup the form
 		$forum_page['group_count'] = $forum_page['item_count'] = $forum_page['fld_count'] = 0;
@@ -1961,7 +1979,7 @@
 
 if ($forum_page['has_required']): ?>
 		<div id="req-msg" class="req-warn ct-box error-box">
-			<p class="important"><?php echo $lang_common['Required warn']; ?></p>
+			<p class="important"><?php echo $lang_common['Required warn'] ?></p>
 		</div>
 <?php endif; ?>
 		<form class="frm-form" method="post" accept-charset="utf-8" action="<?php echo $forum_page['form_action'] ?>">
@@ -2114,7 +2132,7 @@
 			</fieldset>
 <?php ($hook = get_hook('pf_change_details_identity_contact_fieldset_end')) ? eval($hook) : null; ?>
 			<div class="frm-buttons">
-				<span class="submit"><input type="submit" name="update" value="<?php echo $lang_profile['Update profile'] ?>" /></span>
+				<span class="submit primary"><input type="submit" name="update" value="<?php echo $lang_profile['Update profile'] ?>" /></span>
 			</div>
 		</form>
 	</div>
@@ -2154,7 +2172,7 @@
 		$forum_page['crumbs'] = array(
 			array($forum_config['o_board_title'], forum_link($forum_url['index'])),
 			array(sprintf($lang_profile['Users profile'], $user['username']), forum_link($forum_url['user'], $id)),
-			array($lang_profile['Section settings'],forum_link($forum_url['profile_settings'], $id))
+			$lang_profile['Section settings']
 		);
 
 		// Setup the form
@@ -2181,7 +2199,7 @@
 		<h2 class="hn"><span><?php printf(($forum_page['own_profile']) ? $lang_profile['Settings welcome'] : $lang_profile['Settings welcome user'], forum_htmlencode($user['username'])) ?></span></h2>
 	</div>
 	<div class="main-content main-frm">
-		<form class="frm-form" method="post" accept-charset="utf-8" action="<?php echo $forum_page['form_action']  ?>">
+		<form class="frm-form" method="post" accept-charset="utf-8" action="<?php echo $forum_page['form_action'] ?>">
 			<div class="hidden">
 				<?php echo implode("\n\t\t\t\t", $forum_page['hidden_fields'])."\n" ?>
 			</div>
@@ -2272,7 +2290,7 @@
 <?php ($hook = get_hook('pf_change_details_settings_pre_dst_checkbox')) ? eval($hook) : null; ?>
 				<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
 					<div class="sf-box checkbox">
-						<span class="fld-input"><input type="checkbox" id="fld<?php echo ++$forum_page['fld_count'] ?>" name="form[dst]" value="1" <?php if ($user['dst'] == 1) echo 'checked="checked" ' ?>/></span>
+						<span class="fld-input"><input type="checkbox" id="fld<?php echo ++$forum_page['fld_count'] ?>" name="form[dst]" value="1"<?php if ($user['dst'] == 1) echo ' checked="checked"' ?> /></span>
 						<label for="fld<?php echo $forum_page['fld_count'] ?>"><?php echo $lang_profile['DST label'] ?></label>
 					</div>
 				</div>
@@ -2473,7 +2491,7 @@
 <?php $forum_page['item_count'] = 0; ?>
 <?php ($hook = get_hook('pf_change_details_settings_email_fieldset_end')) ? eval($hook) : null; ?>
 			<div class="frm-buttons">
-				<span class="submit"><input type="submit" name="update" value="<?php echo $lang_profile['Update profile'] ?>" /></span>
+				<span class="submit primary"><input type="submit" name="update" value="<?php echo $lang_profile['Update profile'] ?>" /></span>
 			</div>
 		</form>
 	</div>
@@ -2500,7 +2518,7 @@
 		$forum_page['crumbs'] = array(
 			array($forum_config['o_board_title'], forum_link($forum_url['index'])),
 			array(sprintf($lang_profile['Users profile'], $user['username']), forum_link($forum_url['user'], $id)),
-			array($lang_profile['Section signature'], forum_link($forum_url['profile_signature'], $id))
+			$lang_profile['Section signature']
 		);
 
 		// Setup the form
@@ -2562,7 +2580,7 @@
 		}
 
 ?>
-		<form id="afocus" class="frm-form" method="post" accept-charset="utf-8" action="<?php echo $forum_page['form_action'] ?>">
+		<form id="afocus" class="frm-form frm-ctrl-submit" method="post" accept-charset="utf-8" action="<?php echo $forum_page['form_action'] ?>">
 			<div class="hidden">
 				<?php echo implode("\n\t\t\t\t", $forum_page['hidden_fields'])."\n" ?>
 			</div>
@@ -2588,7 +2606,7 @@
 			</fieldset>
 <?php ($hook = get_hook('pf_change_details_signature_fieldset_end')) ? eval($hook) : null; ?>
 			<div class="frm-buttons">
-				<span class="submit"><input type="submit" name="update" value="<?php echo $lang_profile['Update profile'] ?>" /></span>
+				<span class="submit primary"><input type="submit" name="update" value="<?php echo $lang_profile['Update profile'] ?>" /></span>
 			</div>
 		</form>
 	</div>
@@ -2612,7 +2630,7 @@
 		$forum_page['crumbs'] = array(
 			array($forum_config['o_board_title'], forum_link($forum_url['index'])),
 			array(sprintf($lang_profile['Users profile'], $user['username']), forum_link($forum_url['user'], $id)),
-			array($lang_profile['Section avatar'],forum_link($forum_url['profile_avatar'], $id))
+			$lang_profile['Section avatar']
 		);
 
 		// Setup the form
@@ -2691,8 +2709,8 @@
 				</ul>
 			</div>
 			<div id="req-msg" class="req-warn ct-box info-box">
-    			<p class="important"><?php echo $lang_profile['No upload warn'] ?></p>
-   			</div>
+				<p class="important"><?php echo $lang_profile['No upload warn'] ?></p>
+			</div>
 			<fieldset class="frm-group group<?php echo ++$forum_page['group_count'] ?>">
 				<legend class="group-legend"><strong><?php echo $lang_profile['Avatar'] ?></strong></legend>
 <?php ($hook = get_hook('pf_change_details_avatar_pre_cur_avatar_info')) ? eval($hook) : null; ?>
@@ -2716,7 +2734,7 @@
 			</fieldset>
 <?php ($hook = get_hook('pf_change_details_avatar_fieldset_end')) ? eval($hook) : null; ?>
 			<div class="frm-buttons">
-				<span class="submit"><input type="submit" name="update" value="<?php echo $lang_profile['Update profile'] ?>" /></span>
+				<span class="submit primary"><input type="submit" name="update" value="<?php echo $lang_profile['Update profile'] ?>" /></span>
 			</div>
 		</form>
 	</div>
@@ -2741,7 +2759,7 @@
 		$forum_page['crumbs'] = array(
 			array($forum_config['o_board_title'], forum_link($forum_url['index'])),
 			array(sprintf($lang_profile['Users profile'], $user['username']), forum_link($forum_url['user'], $id)),
-			array($lang_profile['Section admin'],forum_link($forum_url['profile_admin'], $id))
+			$lang_profile['Section admin']
 		);
 
 		// Setup form
@@ -2831,8 +2849,8 @@
 <?php ($hook = get_hook('pf_change_details_admin_pre_group_membership_submit')) ? eval($hook) : null; ?>
 			<div class="sf-set button-set set<?php echo ++$forum_page['item_count'] ?>">
 				<div class="sf-box text">
-	 				<span class="submit"><input type="submit" name="update_group_membership" value="<?php echo $lang_profile['Update groups'] ?>" /></span>
-	 			</div>
+					<span class="submit primary"><input type="submit" name="update_group_membership" value="<?php echo $lang_profile['Update groups'] ?>" /></span>
+				</div>
 			</div>
 <?php
 
@@ -2897,7 +2915,7 @@
 <?php ($hook = get_hook('pf_change_details_admin_mod_assignment_fieldset_end')) ? eval($hook) : null; ?>
 			<div class="mf-set button-set set<?php echo ++$forum_page['item_count'] ?>">
 				<div class="mf-box text">
-					<span class="submit"><input type="submit" name="update_forums" value="<?php echo $lang_profile['Update forums'] ?>" /></span>
+					<span class="submit primary"><input type="submit" name="update_forums" value="<?php echo $lang_profile['Update forums'] ?>" /></span>
 				</div>
 			</div>
 <?php
@@ -2908,7 +2926,7 @@
 ?>
 		</div>
 		<div class="frm-buttons">
-			<span class="submit"><?php echo $lang_profile['Instructions'] ?></span>
+			<span class="submit primary"><?php echo $lang_profile['Instructions'] ?></span>
 		</div>
 	</div>
 	</form>
diff -urN punbb-1.4.1/README punbb-1.4.2/README
--- punbb-1.4.1/README	2011-11-27 18:23:16.000000000 +0000
+++ punbb-1.4.2/README	2012-02-09 20:42:20.000000000 +0000
@@ -24,7 +24,7 @@
  2. Replace your old 1.2 directory with the contents of the archive's version 1.4.
  3. Run db_update.php from the forum admin directory (e.g. open http://example.com/punbb/admin/db_update.php in your browser). Follow the instructions.
 
- 	 Upgrade from 1.3
+	 Upgrade from 1.3
 	----------------------------------------------
 NOTE: Make a backup of your current forum directory before proceeding. Also, don't forget to make a backup of your forum database. Use the tool mysqldump for MySQL and pg_dump if you are using PostgreSQL. If you're using SQLite, just make a backup copy of the SQLite database file. You can also make database backups via most administration tools such as MySQL Administrator, phpMyAdmin and phpPgAdmin.
 
@@ -68,7 +68,7 @@
 
 	 Copyright and disclaimer
 	--------------------------
-This package and its contents are (C) 2002-2011 PunBB, all rights reserved.
+This package and its contents are (C) 2002-2012 PunBB, all rights reserved.
 Partially based on code (C) 2008-2009 FluxBB.org.
 
 PunBB is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
diff -urN punbb-1.4.1/README.md punbb-1.4.2/README.md
--- punbb-1.4.1/README.md	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/README.md	2012-02-09 20:42:20.000000000 +0000
@@ -35,7 +35,7 @@
  - [Reporting PunBB core SECURITY bugs (only!)](http://punbb.informer.com/bugreport.php)
 
 ## Copyright and disclaimer
-This package and its contents are (C) 2002-2011 PunBB, all rights reserved.
+This package and its contents are (C) 2002-2012 PunBB, all rights reserved.
 Partially based on code (C) 2008-2009 FluxBB.org.
 
 PunBB is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
diff -urN punbb-1.4.1/register.php punbb-1.4.2/register.php
--- punbb-1.4.1/register.php	2011-11-20 13:25:37.000000000 +0000
+++ punbb-1.4.2/register.php	2012-02-09 20:42:20.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Allows the creation of new user accounts.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -71,7 +71,7 @@
 		<h2 class="hn"><span><?php echo $lang_profile['Reg rules head'] ?></span></h2>
 	</div>
 	<div class="main-content main-frm">
-		<div class="ct-box user-box">
+		<div id="rules-content" class="ct-box user-box">
 			<?php echo $forum_config['o_rules_message'] ?>
 		</div>
 		<form class="frm-form" method="get" accept-charset="utf-8" action="<?php echo forum_link($forum_url['register']) ?>">
@@ -80,7 +80,7 @@
 <?php ($hook = get_hook('rg_rules_pre_agree_checkbox')) ? eval($hook) : null; ?>
 				<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
 					<div class="sf-box checkbox">
-						<span class="fld-input"><input type="checkbox" id="fld<?php echo ++$forum_page['fld_count'] ?>" name="req_agreement" value="1" /></span>
+						<span class="fld-input"><input type="checkbox" id="fld<?php echo ++$forum_page['fld_count'] ?>" name="req_agreement" value="1" required /></span>
 						<label for="fld<?php echo $forum_page['fld_count'] ?>"><span><?php echo $lang_profile['Agreement'] ?></span> <?php echo $lang_profile['Agreement label'] ?></label>
 					</div>
 				</div>
@@ -272,7 +272,19 @@
 
 			// Must the user verify the registration or do we log him/her in right now?
 			if ($forum_config['o_regs_verify'] == '1')
+			{
 				message(sprintf($lang_profile['Reg e-mail'], '<a href="mailto:'.forum_htmlencode($forum_config['o_admin_email']).'">'.forum_htmlencode($forum_config['o_admin_email']).'</a>'));
+			}
+			else
+			{
+				// Remove cache file with forum stats
+				if (!defined('FORUM_CACHE_FUNCTIONS_LOADED'))
+				{
+					require FORUM_ROOT.'include/cache.php';
+				}
+
+				clean_stats_cache();
+			}
 
 			$expire = time() + $forum_config['o_timeout_visit'];
 
@@ -295,8 +307,7 @@
 // Setup breadcrumbs
 $forum_page['crumbs'] = array(
 	array($forum_config['o_board_title'], forum_link($forum_url['index'])),
-	array(sprintf($lang_profile['Register at'], $forum_config['o_board_title']), forum_link($forum_url['register'])),
-
+	sprintf($lang_profile['Register at'], $forum_config['o_board_title'])
 );
 
 // Load JS for timezone detection
@@ -350,9 +361,9 @@
 
 ?>
 		<div id="req-msg" class="req-warn ct-box error-box">
-			<p class="important"><?php echo $lang_common['Required warn']; ?></p>
+			<p class="important"><?php echo $lang_common['Required warn'] ?></p>
 		</div>
-		<form class="frm-form" id="afocus" method="post" accept-charset="utf-8" action="<?php echo $forum_page['form_action'] ?>" autocomplete="off">
+		<form class="frm-form frm-suggest-username" id="afocus" method="post" accept-charset="utf-8" action="<?php echo $forum_page['form_action'] ?>" autocomplete="off">
 			<div class="hidden">
 				<input type="hidden" name="form_sent" value="1" />
 				<input type="hidden" name="csrf_token" value="<?php echo generate_form_token($forum_page['form_action']) ?>" />
@@ -361,35 +372,38 @@
 			</div>
 <?php ($hook = get_hook('rg_register_pre_group')) ? eval($hook) : null; ?>
 			<div class="frm-group group<?php echo ++$forum_page['group_count'] ?>">
-<?php ($hook = get_hook('rg_register_pre_username')) ? eval($hook) : null; ?>
+<?php ($hook = get_hook('rg_register_pre_email')) ? eval($hook) : null; ?>
 				<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
 					<div class="sf-box text required">
+						<label for="fld<?php echo ++$forum_page['fld_count'] ?>"><span><?php echo $lang_profile['E-mail'] ?></span> <small><?php echo $lang_profile['E-mail help'] ?></small></label><br />
+						<span class="fld-input"><input type="email" data-suggest-role="email" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_email1" value="<?php echo(isset($_POST['req_email1']) ? forum_htmlencode($_POST['req_email1']) : '') ?>" size="35" maxlength="80" required spellcheck="false" /></span>
+					</div>
+				</div>
+<?php ($hook = get_hook('rg_register_pre_username')) ? eval($hook) : null; ?>
+				<div class="sf-set set<?php echo ++$forum_page['item_count']; if ($forum_config['o_regs_verify'] == '0') echo ' prepend-top'; ?>">
+					<div class="sf-box text required">
 						<label for="fld<?php echo ++$forum_page['fld_count'] ?>"><span><?php echo $lang_profile['Username'] ?></span> <small><?php echo $lang_profile['Username help'] ?></small></label><br />
-						<span class="fld-input"><input type="text" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_username" value="<?php echo(isset($_POST['req_username']) ? forum_htmlencode($_POST['req_username']) : '') ?>" size="35" maxlength="25" required /></span>
+						<span class="fld-input"><input type="text" data-suggest-role="username" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_username" value="<?php echo(isset($_POST['req_username']) ? forum_htmlencode($_POST['req_username']) : '') ?>" size="35" maxlength="25" required spellcheck="false" /></span>
 					</div>
 				</div>
 <?php ($hook = get_hook('rg_register_pre_password')) ? eval($hook) : null; ?>
-<?php if ($forum_config['o_regs_verify'] == '0'): ?>				<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
+<?php if ($forum_config['o_regs_verify'] == '0'): ?>
+				<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
 					<div class="sf-box text required">
 						<label for="fld<?php echo ++$forum_page['fld_count'] ?>"><span><?php echo $lang_profile['Password'] ?></span> <small><?php echo $lang_profile['Password help'] ?></small></label><br />
-						<span class="fld-input"><input type="<?php echo($forum_config['o_mask_passwords'] == '1' ? 'password' : 'text') ?>" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_password1" size="35" value="<?php echo(isset($_POST['req_password1']) ? forum_htmlencode($_POST['req_password1']) : ''); ?>" required autocomplete="off" /></span>
+						<span class="fld-input"><input type="<?php echo($forum_config['o_mask_passwords'] == '1' ? 'password' : 'text') ?>" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_password1" size="35" value="<?php if (isset($_POST['req_password1'])) echo forum_htmlencode($_POST['req_password1']); ?>" required autocomplete="off" /></span>
 					</div>
 				</div>
-<?php ($hook = get_hook('rg_register_pre_confirm_password')) ? eval($hook) : null; ?>
-<?php if ($forum_config['o_mask_passwords'] == '1'): ?>
+	<?php ($hook = get_hook('rg_register_pre_confirm_password')) ? eval($hook) : null; ?>
+	<?php if ($forum_config['o_mask_passwords'] == '1'): ?>
 				<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
 					<div class="sf-box text required">
 						<label for="fld<?php echo ++$forum_page['fld_count'] ?>"><span><?php echo $lang_profile['Confirm password'] ?></span> <small><?php echo $lang_profile['Confirm password help'] ?></small></label><br />
-						<span class="fld-input"><input type="password" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_password2" size="35" value="<?php echo(isset($_POST['req_password2']) ? forum_htmlencode($_POST['req_password2']) : ''); ?>" required autocomplete="off" /></span>
+						<span class="fld-input"><input type="password" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_password2" size="35" value="<?php if (isset($_POST['req_password2'])) echo forum_htmlencode($_POST['req_password2']); ?>" required autocomplete="off" /></span>
 					</div>
 				</div>
+	<?php endif; ?>
 <?php endif; ?>
-<?php endif; ($hook = get_hook('rg_register_pre_email')) ? eval($hook) : null; ?>				<div class="sf-set set<?php echo ++$forum_page['item_count']; if ($forum_config['o_regs_verify'] == '0') echo ' prepend-top'; ?>">
-					<div class="sf-box text required">
-						<label for="fld<?php echo ++$forum_page['fld_count'] ?>"><span><?php echo $lang_profile['E-mail'] ?></span> <small><?php echo $lang_profile['E-mail help'] ?></small></label><br />
-						<span class="fld-input"><input type="email" id="fld<?php echo $forum_page['fld_count'] ?>" name="req_email1" value="<?php echo(isset($_POST['req_email1']) ? forum_htmlencode($_POST['req_email1']) : '') ?>" size="35" maxlength="80" required /></span>
-					</div>
-				</div>
 <?php ($hook = get_hook('rg_register_pre_email_confirm')) ? eval($hook) : null;
 
 		$languages = array();
@@ -438,7 +452,7 @@
 			</div>
 <?php ($hook = get_hook('rg_register_group_end')) ? eval($hook) : null; ?>
 			<div class="frm-buttons">
-				<span class="submit"><input type="submit" name="register" value="<?php echo $lang_profile['Register'] ?>" /></span>
+				<span class="submit primary"><input type="submit" name="register" value="<?php echo $lang_profile['Register'] ?>" /></span>
 			</div>
 		</form>
 	</div>
diff -urN punbb-1.4.1/rewrite.php punbb-1.4.2/rewrite.php
--- punbb-1.4.1/rewrite.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/rewrite.php	2012-02-09 20:42:20.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Rewrites SEF URLs to their actual files.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -32,7 +32,7 @@
 // We determine the path to the script, since we need to separate the path from the data to be rewritten
 $path_to_script = str_replace('\\', '/', dirname($_SERVER['SCRIPT_NAME']));
 if (substr($path_to_script, -1) != '/')
-	$path_to_script  = $path_to_script.'/';
+	$path_to_script = $path_to_script.'/';
 
 // We create our own request URI with the path removed and only the parts to rewrite included
 $request_uri = substr(urldecode($_SERVER['REQUEST_URI']), strlen($path_to_script));
@@ -84,7 +84,7 @@
 	// Allow an extension to override the "Bad request" message with a custom 404 page
 	($hook = get_hook('re_page_not_found')) ? eval($hook) : null;
 
-	error('Page Not found (Error 404):<br/>The requested page <em>'.forum_htmlencode($request_uri).'</em> could not be found.');
+	error('Page Not found (Error 404):<br />The requested page <em>'.forum_htmlencode($request_uri).'</em> could not be found.');
 }
 
 // We change $_SERVER['PHP_SELF'] so that it reflects the file we're actually loading
diff -urN punbb-1.4.1/search.php punbb-1.4.2/search.php
--- punbb-1.4.1/search.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/search.php	2012-02-09 20:42:20.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Allows users to search the forum based on various criteria.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -51,8 +51,8 @@
 	// If it's a regular search (keywords and/or author)
 	if ($action == 'search')
 	{
-		$keywords = (isset($_GET['keywords'])) ? forum_trim($_GET['keywords']) : null;
-		$author = (isset($_GET['author'])) ? forum_trim($_GET['author']) : null;
+		$keywords = (isset($_GET['keywords']) && is_string($_GET['keywords'])) ? forum_trim($_GET['keywords']) : null;
+		$author = (isset($_GET['author']) && is_string($_GET['author'])) ? forum_trim($_GET['author']) : null;
 		$sort_dir = (isset($_GET['sort_dir'])) ? (($_GET['sort_dir'] == 'DESC') ? 'DESC' : 'ASC') : 'DESC';
 		$show_as = (isset($_GET['show_as'])) ? $_GET['show_as'] : 'posts';
 		$sort_by = (isset($_GET['sort_by'])) ? intval($_GET['sort_by']) : null;
@@ -567,7 +567,7 @@
 // Setup breadcrumbs
 $forum_page['crumbs'] = array(
 	array($forum_config['o_board_title'], forum_link($forum_url['index'])),
-	array($lang_common['Search'], forum_link($forum_url['search']))
+	$lang_common['Search']
 );
 
 $advanced_search = isset($_GET['advanced']) ? true : false;
@@ -620,7 +620,7 @@
 				<div class="sf-set set<?php echo ++$forum_page['item_count'] ?>">
 					<div class="sf-box text">
 						<label for="fld<?php echo ++$forum_page['fld_count'] ?>"><span><?php echo $lang_search['Keyword search'] ?></span></label><br />
-						<span class="fld-input"><input type="text" id="fld<?php echo $forum_page['fld_count'] ?>" name="keywords" size="40" maxlength="100" <?php echo ($advanced_search) ? '' : 'required'  ?> /></span>
+						<span class="fld-input"><input type="text" id="fld<?php echo $forum_page['fld_count'] ?>" name="keywords" size="40" maxlength="100" <?php echo ($advanced_search) ? '' : 'required' ?> /></span>
 					</div>
 				</div>
 <?php ($hook = get_hook('se_pre_author')) ? eval($hook) : null; ?>
@@ -694,7 +694,7 @@
 			$cur_category = $cur_forum['cid'];
 		}
 
-		echo "\t\t\t\t\t\t\t\t".'<div class="checklist-item"><span class="fld-input"><input type="checkbox" id="fld'.(++$forum_page['fld_count']).'"  name="forum[]" value="'.$cur_forum['fid'].'" /></span> <label for="fld'.$forum_page['fld_count'].'">'.forum_htmlencode($cur_forum['forum_name']).'</label></div>'."\n";
+		echo "\t\t\t\t\t\t\t\t".'<div class="checklist-item"><span class="fld-input"><input type="checkbox" id="fld'.(++$forum_page['fld_count']).'" name="forum[]" value="'.$cur_forum['fid'].'" /></span> <label for="fld'.$forum_page['fld_count'].'">'.forum_htmlencode($cur_forum['forum_name']).'</label></div>'."\n";
 	}
 
 	echo "\t\t\t\t\t\t\t".'</fieldset>'."\n";
@@ -760,7 +760,7 @@
 			</fieldset>
 <?php endif; ($hook = get_hook('se_results_fieldset_end')) ? eval($hook) : null; ?>
 			<div class="frm-buttons">
-				<span class="submit"><input type="submit" name="search" value="<?php echo $lang_search['Submit search'] ?>" /></span>
+				<span class="submit primary"><input type="submit" name="search" value="<?php echo $lang_search['Submit search'] ?>" /></span>
 			</div>
 		</form>
 	</div>
Binary files punbb-1.4.1/style/Oxygen/min/feed-icon.png and punbb-1.4.2/style/Oxygen/min/feed-icon.png differ
diff -urN punbb-1.4.1/style/Oxygen/min/Oxygen.min.css punbb-1.4.2/style/Oxygen/min/Oxygen.min.css
--- punbb-1.4.1/style/Oxygen/min/Oxygen.min.css	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/style/Oxygen/min/Oxygen.min.css	1970-01-01 00:00:00.000000000 +0000
@@ -1,8 +0,0 @@
-html,body,div,p,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,legend,blockquote,table,th,td,input,textarea,button,select{margin:0;padding:0;text-align:left}fieldset,img,cite{border:0}.visual-hidden{visibility:hidden}br,hr,.hr,.hidden{display:none}.border-less{border:none!important}.small-font{font-size:.917em}.list-clean{list-style-type:none}.prepend-top{margin-top:1em!important}.nowrap{white-space:nowrap}html{height:99%;overflow-y:scroll}body{font-size:100%}.brd-page{font:75%/1.5em Verdana,Helvetica,Arial,sans-serif}h1,h2,h3,h4,h5,h6{font-size:1em;font-weight:normal}samp,code,pre,option,optgroup,input,select,textarea,td,th{font-size:1em;font-family:Verdana,Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal}samp,code,pre{font-family:monospace,sans-serif}.brd-page:after,.gen-content:after,.ct-box:after,#brd-index .item-head:after,#brd-index .main-item:after,#brd-index ul.item-info:after,.frm-group:after,.mf-set:after,.sf-set:after,.mf-box:after,.sf-box:after,.mf-item:after,.txt-set:after,.txt-box:after,.frm-form label:after,fieldset:after,span.fld-input:after,.posthead:after,.postbody:after,.postfoot .post-options:after{content:"\0020";display:block;font-size:0;height:0;line-height:.0;overflow:hidden;visibility:hidden;clear:both}.clearfix:before,.clearfix:after{content:"\0020";display:block;height:0;overflow:hidden}.clearfix:after{clear:both}.clearfix{zoom:1}#brd-stats .hn,#qjump label,.post-byline span,.posthead .post-link span,.admin .main-subhead,.main-item .item-info li span.label,.main-item .item-info li label,.main-item .you-posted,.main-item .item-num,.group-legend,.group-legend span,.sf-set legend,.sf-set legend span,.main-pagehead .page-info,p.item-select label,.mf-extra .mf-field label,.mf-extra .mf-field .aslabel,.item-subject .item-nav span,.post-options a span,.main-title,.main-head .hn small,.entry-title,.menu-page .main-head{font-size:0;left:-999em;text-indent:-999em;position:absolute;line-height:0;visibility:hidden}.brd{padding:1.3em 2em;margin:0 auto;max-width:1100px;min-width:700px;width:90%}#brd-redirect,#brd-maint,#brd-util{margin:50px auto 12px auto;width:60%}.brd-page{float:left;width:100%;position:relative}.main-content,.gen-content{border-style:solid;border-width:1px}.gen-content{padding:0 1.5em}#brd-about,#brd-stats{margin-top:1em}.main-content,#brd-visit,#brd-qpost,#brd-announcement{margin-bottom:1em}#brd-announcement{padding:.5em 1.5em;margin-top:1em}#brd-announcement br{display:inline}.main-options{border-top:0;margin:-1em 0 1em 0}p,.hn{padding:.35em 0}ul,ol{padding:.35em 0 .35em 2em}ul.spaced{padding:.25em 0 .25em 2em}.spaced li{padding:.25em 0}th{font-size:1.084em;padding:.462em 1.417em;border-bottom-style:solid;border-bottom-width:1px}.main-head,.main-foot{border-style:solid;border-width:1px;padding:0 1.417em}.main-head .hn,.main-foot .hn{padding-right:10em}h2.main-subhead{border-style:solid;border-width:1px;padding:.462em 10em .426em 1.417em}.column-title{border-style:solid;border-width:1px;position:relative;margin-bottom:-1px}.main-subhead{border-style:solid;border-width:1px;border-bottom:0}.main-subhead .hn{padding:.462em 1.417em;position:relative}.main-foot{margin-top:-1em}#brd-announcement h1,.main-extensions .ct-legend,.main-hotfixes .ct-legend{border-bottom-style:dashed;border-bottom-width:1px;font-size:1.1em;font-weight:bold}#brd-announcement h1{margin-bottom:.5em}.main-pagehead .hn{padding:.5em 0}.content-head{margin:.5em 1.417em 0}.content-head .hn{border-style:none none double none;border-width:3px;padding:.462em 0}.options>span{padding:0 0 0 .3em;margin:0 0 0 .25em}.options .js_link{padding:0;margin:0 0 0 .55em}.options>span.first-item{border-left:0;padding-left:0;margin-left:0}.extension .options,.hotfix .options{border-top-style:dashed;border-top-width:1px}.ct-box{border-style:solid;border-width:1px;-moz-border-radius:.35em;-webkit-border-radius:.35em;-khtml-border-radius:.35em;border-radius:.35em;margin:1.417em;padding:.5em 1em;position:relative}.ct-box li{padding:0;margin:0 0 .7em 0}.ct-set{border-style:solid;border-width:1px;margin:1.417em;padding:0 0 0 17em;position:relative}.ct-group{border-style:solid;border-width:1px;margin:1.417em}.frm-group .ct-set{border-style:dashed none none none;margin:0}.ct-group .ct-set{border-style:dashed none none none;margin:0 1em;padding:0 0 0 16em}.ct-group .group-item1{border:0}.ct-group .set1,.frm-group .set1{border-top:0}.ct-group .ct-box,.frm-group .ct-box{border-style:none;margin:0}.ct-group .ct-set .ct-box,.ct-set .ct-box,.frm-group .ct-set .ct-box{border-style:none;margin:0}.ct-group .set1{border-top:0}.ct-set .ct-legend{float:left;margin-left:-17em;width:16em;position:relative;text-align:right;font-weight:bold}.ct-set ul{padding-left:0;list-style:none}.ct-box div{padding:.35em 0}.ct-box p.options{float:none}.ct-box .info-list{padding-bottom:0}.user-ident{padding-left:0;list-style:none}.user-ident .username a,.user-ident .username strong{font-size:1.5em;font-weight:normal}
-.user-ident .username a,.user-ident .username a:link,.user-ident .username a:visited{text-decoration:none}.user-ident .username a:hover,.user-ident .username a:active,.user-ident .username a:focus{text-decoration:underline}.user-ident .usertitle{font-weight:bold}.user-ident .useravatar{padding:.25em 0}.user-ident .useravatar img{display:block}.main-message{padding:.5em 1.417em}.main-message p span{display:block;padding-top:.5em}#brd-maint .main-message{padding:0}.main-menu,.admin-menu{border:0;padding:.4em 0 .2em .75em}.main-menu ul,.admin-menu ul{list-style-type:none;float:left;padding:0}.main-menu li,.admin-menu li{float:left;display:inline}.main-menu a,.admin-menu a{float:left;position:relative;padding:.2em .75em .4em .75em}.main-menu .active a,.admin-menu .active a{font-weight:bold}.main-menu li.first-item,.admin-menu li.first-item{border-left:0}.admin-submenu{border-style:solid;border-width:0 1px}.admin-submenu ul{padding:.5em 0;list-style:none}.admin-submenu li{display:inline;margin-right:.75em}.admin-submenu .active a{font-weight:bold}#brd-head{padding-bottom:.75em;padding-top:1em;border-radius:.4em .4em 0 0}#brd-title{padding-bottom:0}#brd-title a,#brd-title strong{font-size:1.5em;text-decoration:none;font-weight:normal}#brd-desc{padding-top:0;padding-bottom:0}#brd-navlinks ul{margin:0;padding:.4em 0;float:left}#brd-navlinks li{display:inline;margin-right:1em}#brd-navlinks li a{text-decoration:none}#brd-admod{float:right;text-align:right}#brd-admod span{margin-left:.75em}#brd-access{text-align:right;padding:0;height:0;margin:0;position:absolute;background:transparent}#brd-access a,#brd-access a:link,#brd-access a:visited{height:2em;line-height:2em;position:absolute;left:-999em;margin:1px;width:12em}#brd-access a:hover,#brd-access a:active,#brd-access a:focus{text-indent:0;background:#000;position:static;float:right}#brd-visit #welcome{float:left}#brd-visit #visit-links{text-align:right;float:none}#brd-pagepost-end{border-top:0}#brd-pagepost-top{border-bottom:0}#brd-admin-bans #brd-pagepost-end{margin-top:-1em}.paging{float:left}.posting{text-align:right;float:right}.paging{white-space:nowrap}.paging a,.paging strong,.paging span{padding:0 1em;border-left-style:solid;border-left-width:1px;float:left;white-space:nowrap}.paging .first-item,.paging span.pages{border-left:0;padding-left:0}.posting .newpost{font-size:1.084em;font-weight:bold}.crumbs .crumblast span{font-weight:normal}.crumbs span,.crumbs a{white-space:nowrap}.crumbs{margin:.5em 0;padding:0 1.417em;font-size:1.084em}#brd-crumbs-top .crumblast{font-size:1.15em}#brd-stats ul{list-style:none;padding-left:0}#brd-stats ul li.st-users{float:left;clear:both;white-space:nowrap}#brd-stats ul li.st-activity{text-align:right;display:block;white-space:nowrap}#brd-stats li strong{font-weight:bold}#brd-online{padding-top:.5em;padding-bottom:.5em;border-top:0}#brd-online .hn,#brd-online p{padding-bottom:0;padding-top:0}#brd-online .hn{float:left;margin-right:.5em}#qjump{float:left;padding:.5em 0}#qjump div,#qjump label{padding:0;border:0}#copyright{text-align:right;margin:0}#querytime{text-align:right;font-size:.917em;padding:0}#extensions-used{border-bottom:1px dotted}p.options{border-top:0;float:right}.main-modoptions .options{text-align:center}a.feed{padding-left:22px;background:url(feed-icon.png) center left no-repeat}.content-options,.ct-options{float:right;margin-top:-2.6em;padding:.5em 1.417em;position:relative}.item-summary{height:2.5em;padding:0;position:relative;font-size:1em}.item-summary span{width:100%;position:absolute;left:-999em;text-indent:-999em;display:block}.item-summary strong{position:absolute;left:999em;text-indent:0;padding:.5em 0;white-space:nowrap;font-weight:normal}.item-summary strong:first-letter {text-transform:uppercase}.item-summary .subject-title{padding-left:1.417em}.item-summary .info-topics,.item-summary .info-replies{margin-left:100%;text-align:center;width:7em;left:965em}.item-summary .info-forum{margin-left:100%;text-align:center;width:20em;left:952em}.item-summary .info-posts,.item-summary .info-views{margin-left:100%;text-align:center;width:7em;left:972em}.item-summary .info-lastpost{margin-left:100%;left:980em}p.forum-noview .info-replies{left:972em}.main-content .main-item{border-top-style:solid;border-top-width:1px;overflow:hidden;position:relative;line-height:1.4em}.main-content .main-first-item{border-top:0}.main-content .main-item ul{float:right;position:relative;padding:0;list-style:none}.main-content .main-item p,.main-content .main-item .hn{padding:0}.hn .item-status{font-weight:normal}.hn .item-status em{font-style:normal}.main-item .item-subject,.main-content .main-item li{float:left;border-left-style:solid;border-left-width:1px;margin:0 -2px -9.7em 0;position:relative;padding-top:.6em;padding-bottom:10.4em}.main-item .item-subject{overflow:hidden;width:100%}li.info-topics,li.info-posts,li.info-views,li.info-replies{width:7em;text-align:center}li.info-forum{width:20em;text-align:center}li.info-lastpost{width:20em}
-li.info-lastpost cite{overflow:hidden;width:18em}.main-item li strong{font-weight:normal}.main-content .main-item{padding-right:35em;padding-left:3.75em}.main-content .main-item .hn{position:relative}.main-content .main-item ul{width:34em;right:-35em;margin-left:-34em}.forum-noview .main-item{padding-right:28em}.forum-noview .main-item ul{width:27em;right:-28em;margin-left:-27em}.forum-forums .main-item{padding-right:48em}.forum-forums .main-item ul{width:47em;right:-48em;margin-left:-47em}.item-subject span.modlist{display:block}#brd-index .main-item .hn span{font-size:1.084em;font-weight:bold}#brd-index .main-item .hn small{font-size:1em}.item-status{font-weight:bold}.main-content .main-item cite{font-style:normal}.item-nav,.item-nav a,.item-nav span{white-space:nowrap;font-style:normal}.item-subject .hn,.item-subject p{margin:0 0 0 1.5em}li.info-lastpost cite,li.info-lastpost span,li.info-forum a{display:block;padding:0 1em;font-style:normal;font-weight:normal}li.info-lastpost strong{padding:0 0 0 1em;font-style:normal;font-weight:normal}.main-item li.info-select{position:absolute;right:0;top:0;padding:.3em;border-style:none none solid solid;border-width:1px}.main-content .main-item .icon{border-style:solid;border-width:.5833em;height:0;width:0;float:left;margin-top:.667em;margin-left:-2.417em}.main-content .main-item .hn .posted-mark{position:absolute;font-size:2em;width:1em;left:-0.5em;top:0}.frm-group{border-top-style:dashed;border-top-width:1px;margin:1.417em;padding:1.3em 0 0}.group1{border-top:0;padding-top:0}.sf-box,.mf-box,.txt-box{margin:1.417em;padding:.5em 0;position:relative}.sf-set,.mf-set,.txt-set{margin:1.417em;padding:0 0 0 17em;position:relative}.sf-set .sf-box,.mf-set .mf-box,.txt-set .txt-box{margin:0}.frm-group .sf-set,.frm-group .mf-set,.frm-group .txt-set{margin:0}.text input,.select select{font-size:1.084em}optgroup{font-weight:bold}.frm-buttons{margin:.75em 1.417em .8em 1.417em;position:relative;border-top-style:solid;border-top-width:1px;padding:1.1em 0 .3em 18em}.frm-buttons .submit{margin-right:.75em}.frm-buttons .primary{margin-right:2em}.submit input,.cancel input{overflow:visible;padding-left:.5em;padding-right:.5em;font-size:1.084em}.button-set .submit{padding-left:1em}button{width:auto;overflow:visible}label,input[type="button"],input[type="submit"],button,select{cursor:pointer}input[type="submit"],input[type="button"],input[type="reset"],button{display:inline-block;vertical-align:baseline;text-align:center;text-decoration:none;padding:.5em .65em;-moz-border-radius:.25em;-webkit-border-radius:.25em;-khtml-border-radius:.25em;border-radius:.25em;border-style:solid;border-width:1px;-webkit-appearance:button;line-height:normal}input[type="submit"]::-moz-focus-inner,input[type="button"]::-moz-focus-inner,input[type="file"]::-moz-focus-inner,input[type="reset"]::-moz-focus-inner,button::-moz-focus-inner{border:0;padding:0}input[type="submit"]:active,input[type="button"]:active,input[type="reset"]:active,button:active{position:relative;top:1px}input[type="submit"][disabled]:active,input[type="button"][disabled]:active,input[type="reset"][disabled]:active,button[disabled]:active{position:relative;top:0}.js_link{border-bottom-style:dashed;border-bottom-width:1px}.sf-box label,.sf-box .aslabel{float:left;padding:0}.sf-set .checkbox label{padding:2px 0 2px 2.7em}.sf-set .text label span,.sf-set .select label span,.sf-set .aslabel span{float:left;margin-left:-17em;display:block;position:relative;padding:2px 0 2px 1em;width:16em;text-align:right}.sf-set .checkbox label span{float:left;margin-left:-18em;display:block;position:relative;padding:0 0 0 2em;width:16em;left:-3em;text-align:right;font-weight:bold}.sf-set .text label small,.sf-set .select label small{display:block;text-align:left;position:relative;margin:2em 1em 0 1em;padding-top:.25em;font-size:.917em}.sf-set .fld-input{position:absolute;top:0;left:0;display:block;padding:.5em 1em}.sf-set .checkbox input{margin:.2em 0 .2em -0.2em}.sf-set .text input:not([title]){height:100%}.sf-set .sf-short input{width:4em}.sf-set .sf-short label small{font-size:1em;padding:2px 0;margin:0 1em 0 7em}input[type="radio"]{vertical-align:middle;bottom:1px}input[type="checkbox"]{vertical-align:middle;bottom:1px}table input[type="checkbox"]{vertical-align:baseline}.mf-box .mf-item{position:relative;top:-0.166em;padding:.3em 0}.mf-set legend{position:absolute;height:0;background:transparent}.mf-set legend span{position:absolute;left:-17em;width:16em;padding:.5em 1em;margin:1px 0 2px 0;overflow:hidden;display:block;text-align:right;font-weight:bold}
-.mf-set legend span em{display:block;white-space:normal;font-style:normal;font-weight:normal;font-size:.917em}.mf-item .fld-input{position:absolute;top:.25em;left:0;display:block;padding:0 1em}.mf-item input{margin:.1em 0 .1em -0.25em}.mf-item label{padding:1px 0 1px 2.7em;float:left}.mf-set .mf-yesno .mf-item{width:11em;float:left}.mf-set .mf-field{float:left;padding:0 1em 0 1em;border-left:1px solid #ccc}.mf-set .mf-field1{border-left:none}.mf-set .mf-field label,.mf-set .mf-field .aslabel{position:absolute;top:-2em;display:block}.mf-set .mf-cell .fld-input{position:static;padding:0 0 0 1em;border-left:1px solid #ccc}.frm-hdgroup{padding-top:2em}.sf-set .sf-box .sf-forum{width:25em}.mf-set .mf-box .forum-field{width:25em}.checklist{min-height:6em;max-height:9em;max-width:30em;overflow:auto;border-style:solid;border-width:1px;position:relative;padding:.25em .5em;margin:0 1em}.checklist fieldset{height:auto}.checklist legend,.checklist legend span{font-weight:bold;position:static;padding:0;height:auto;text-align:left}.checklist legend span{width:auto;max-width:25em}.checklist-item{position:relative;height:auto}.checklist-item label{display:block;padding:0 0 0 2.25em;float:none;height:100%}.checklist-item .fld-input{position:absolute;left:0;top:0;padding:0;margin:0}.checklist-item input{margin:0}.txt-box label{float:left}.txt-set label span{float:left;margin-left:-17em;display:block;position:relative;padding:2px 1em;width:16em;text-align:right}.txt-set label small{display:block;text-align:left;position:relative;margin:0 1em 0 -1px;padding:2px 1.25em;font-size:.917em;z-index:100}.txt-set .txt-input{position:relative;width:100%}.txt-set .fld-input{display:block;padding:0 0 0 1em}.txt-set textarea{width:95%;resize:vertical}input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="search"],input[type="number"],textarea{border-width:1px;border-style:solid;padding:.25em}#quick-search{padding:.1em .2em}.req-warn{display:none}#req-msg p em,.required label span em{font-style:normal;font-weight:normal}.required label span em{float:left;font-size:.917em;line-height:1.2em;width:100%;position:relative}.req-error{display:block}.required label span{font-weight:bold}.post{border-style:solid;border-width:1px;position:relative;margin:1.417em;margin-top:-1.417em}.firstpost,.singlepost{margin-top:1.417em}.main-topic .lastpost{border-bottom:0}.main-topic .post{border-style:solid none;margin:0}.main-topic .firstpost{border-top:0}.posthead{margin-left:18em;border-style:none none none solid;border-width:1px}.posthead .hn{padding-right:1.5em;padding-left:1em;border-style:none none dashed none;border-width:1px}.posthead .post-byline a,.posthead .post-byline strong{font-size:1.167em;font-weight:bold;text-decoration:none;font-style:normal}.posthead .post-byline{float:left;width:15.5em;padding:.5em 1em .5em 1.5em;margin-left:-19em;margin-top:-0.5em;position:relative;left:-1px;overflow:hidden}.posthead .post-num{float:right}#brd-modtopic .posthead .hn{padding-right:2.7em}.post-title{padding:0 1.5em .5em 1em;margin-top:-1px;position:relative}.post-title span{display:block;width:100%;overflow:hidden}.post-title a{font-size:1em;text-decoration:none;font-weight:bold}.post-title small,.post-title small a{font-size:1em;font-weight:normal;white-space:nowrap}.posthead p.item-select{position:absolute;top:0;right:.75em;height:2.5em}.postbody{margin-left:18em;position:relative;border-left-style:solid;border-left-width:1px;padding:.5em 1.5em 0 1em;clear:both}.postfoot{padding-left:18em;border-top-style:none;border-top-width:1px;position:relative}.postfoot .post-options{border-left-style:solid;border-left-width:1px}.postbody .post-author{float:left;width:15.5em;margin-left:-19em;left:-1px;position:relative;padding:0 1em .5em 1.5em;overflow:hidden;margin-top:-1em}.postbody .post-author ul{margin:0;padding:0 0 .5em 0;list-style:none}.author-ident .useravatar img{display:block;padding:.5em 0}.author-ident .username{display:none}.author-ident .usertitle{font-weight:bold;line-height:normal}.author-ident .userstatus{padding:.75em 0 .25em 0;margin:0;line-height:.75em;width:100%}.author-ident .userstatus span{font-size:.917em;display:block;border-left-style:solid;border-left-width:.7em;text-indent:.5em}.author-info li span strong{font-weight:normal}.online .author-ident .userstatus span{font-weight:bold}.postfoot .post-contacts{float:left;margin-left:-18em;width:15.5em;padding:.5em 1em .5em 1.5em;position:relative;left:-1px}.postfoot .post-actions{padding:.5em 1.5em .5em 1em;text-align:right;display:block;float:right}.postfoot .post-actions>span{margin-left:.75em}.postfoot .post-contacts>span{margin-right:.75em}.entry-content{padding-bottom:1em;overflow:hidden;width:100%;min-height:8em;font-size:1.084em}#brd-help .entry-content{min-height:4em}.entry-content ol{padding-left:2.5em;list-style-type:decimal}
-.entry-content ol p,.entry-content ul p{padding:0}.entry-content ol.alpha{list-style-type:upper-alpha}.entry-content h5{font-weight:bold;font-size:1.084em;padding:.5em 0}.entry-content img{vertical-align:text-top;max-width:100%}.entry-content .quotebox,.entry-content .codebox{border-style:solid;border-width:1px;margin:.75em 1em;padding:1em .75em}.entry-content .codebox{font-size:.97em}.entry-content blockquote{overflow:hidden;width:100%}.entry-content .quotebox cite{display:block;font-style:normal;font-weight:bold}.entry-content pre{margin:0;max-height:35em;min-height:2em;overflow:auto;padding:0 2% .1em 0;width:98%}.entry-content span.bbu{text-decoration:underline}.entry-content br,.sig-demo br,.user-box br,.main-message br{display:inline}.sig-content{padding-top:2em;font-size:.917em}span.sig-line{display:block;width:200px;border-top-style:solid;border-top-width:1px;padding-bottom:.5em}table{width:100%;table-layout:fixed;empty-cells:show;border-spacing:0;line-height:1.3333em;border-collapse:collapse}td{overflow:hidden;vertical-align:middle}table caption{display:none}#brd-userlist table .tc0{width:30%}#brd-userlist table .tc1{width:20%;text-align:left}#brd-userlist table .tc2{width:10%;text-align:center}#brd-debug table{border:0;font-size:.95em}#brd-debug .tcl{white-space:nowrap;width:10%}#brd-debug .tcr{white-space:normal;width:90%}#brd-admin-uresults table .tc0,#brd-admin-iresults table .tc0{width:45%}#brd-admin-uresults table .tc1,#brd-admin-iresults table .tc1,#brd-admin-iresults table .tc2{width:20%}#brd-admin-uresults table .tc2,#brd-admin-uresults table .tc4{width:10%;text-align:center}#brd-admin-uresults .tc3{width:15%}#brd-admin-uresults td.tc0 span,#brd-admin-uresults td.tc3 span{display:block;white-space:nowrap}#brd-admin-iresults table .tc0{width:25%}#brd-admin-iresults table .tc1{width:25%}#brd-admin-iresults table .tc2{width:20%}#brd-admin-iresults .tc3{width:30%}.main-content th{font-size:1.084em;padding:.462em 1.417em;font-weight:normal}td{padding:.5em 1.417em;border-width:1px;border-style:solid none none solid}td.tc0{border-left-style:none;border-left-width:0}th{padding:.5em 1.3em;border-style:none}td.actions,th.actions{text-align:right}td.actions span{display:block}.report{margin-left:4em}.report h3 span{display:block;font-style:normal}.report h3 cite{font-style:normal;font-size:1.084em;font-weight:bold}.report h3 strong{position:absolute;left:-3.1em;width:1.5em;text-align:right;font-size:1.167em}.report p strong{display:block;font-weight:normal}.report h4{border-bottom-style:dashed;border-bottom-width:1px}#brd-admin-reports .frm-buttons{margin-left:4em;margin-top:0}#brd-admin-reports .select-all{float:right}.report .item-select{position:absolute;top:0;right:.75em;height:2.5em}.help-box samp{display:block;margin-left:1.5em}.help-box h5 samp{margin-left:1.417em}.help-box code{font-family:courier;font-size:1.084em}.help-box .entry-content{padding:0}.help-box .hn{padding-bottom:.5em;border-bottom-style:dashed;border-bottom-width:1px;margin-bottom:.5em;color:#294f6e}#brd-messages{text-align:center;position:fixed;top:0;z-index:999;padding:0;left:0;right:0}#brd-messages span{text-align:center;padding:.35em 1.3em;margin:0 1em;font:87%/1.5em Arial,sans-serif;font-weight:bold;line-height:2em;border-width:1px;border-style:solid}.ie6 .brd-page,.ie6 .main,.ie6 #brd-index .main-subhead,.ie6 .main-content .main-item,.ie6 .main-content .main-item ul,.ie6 .gen-content,.ie6 .main-content,.ie6 .ct-box,.ie6 .frm-group,.ie6 .mf-set,.ie6 .sf-set,.ie6 .mf-box,.ie6 .sf-box,.ie6 .mf-item,.ie6 .txt-set,.ie6 .txt-box,.ie6 .frm-form label,.ie6 fieldset,.ie6 span.fld-input,.ie6 .main-subhead .hn,.ie6 .post,.ie6 .posthead,.ie6 .postbody,.ie6 .post-entry,.ie6 .postfoot .post-options{zoom:1}.ie6 .ct-box ol,.ie6 .ct-box ol li{zoom:normal}.ie6 .postfoot .post-contacts{position:absolute}.ie6 #brd-wrap fieldset{padding-top:1px;position:relative}.ie6 fieldset legend{margin-left:-7px}.ie6 #brd-wrap .checklist{height:9em;width:30em;overflow:auto}.ie6 .sf-set .checkbox label span{padding-right:0;padding-left:5em}.ie6 #info-censored-intro,.ie6 #info-ranks-intro{margin-bottom:3em}.ie6 .important strong{margin-right:1ex}.ie6 #brd-stats .st-users{margin-bottom:-1ex}.ie6 .txt-box label span{position:absolute}.ie6 #brd-index .main-head{position:relative}.ie6 input{vertical-align:text-bottom}.ie6 #extensions-used{clear:left}.oldie textarea{overflow:auto}.ie7 .brd-page,.ie7 .main,.ie7 #brd-index .main-subhead,.ie7 #brd-index .forum-item,.ie7 .gen-content,.ie7 .main-content,.ie7 .ct-box,.ie7 .frm-group,.ie7 .mf-set,.ie7 .sf-set,.ie7 .mf-box,.ie7 .sf-box,.ie7 .mf-item,.ie7 .txt-set,.ie7 .txt-box,.ie7 .frm-group label,.ie7 fieldset,.ie7 span.fld-input,.ie7 .main-subhead .hn,.ie7 .post,.ie7 .posthead,.ie7 .postbody,.ie7 .post-entry,.ie7 .postfoot .post-options,.ie7 #brd-stats ul{max-height:100%;zoom:1}.ie7 #brd-wrap fieldset{padding-top:1px;position:relative}.ie7 fieldset legend{margin-left:-7px}.ie7 .entry-content .codebox pre{min-height:3em}
-.ie7 #info-censored-intro,.ie7 #info-ranks-intro{margin-bottom:3em}.ie7 .main-forum .main-item .item-starter{margin-left:1ex}.ie7 #brd-admin-settings-setup #fld19,.ie7 #brd-post textarea#fld1,.ie7 #brd-post textarea#fld2,.ie7 #brd-viewtopic textarea#fld1,.ie7 #brd-postedit #fld2{margin-top:-19px}.ie7 .item-starter{position:relative;left:-0.5em}.ie7 input[type="checkbox"]{vertical-align:baseline}body{background:#fff;color:#222}a:focus{outline:0}a:link,a:visited,.js_link{color:#00579c;text-decoration:none}a:hover,a:active,a:focus{color:#cd0021;text-decoration:underline}.js_link{cursor:pointer;border-color:#00579c;-moz-user-select:none;-webkit-user-select:none;user-select:none}.js_link:hover{color:#cd0021;border-color:#cd0021}.entry-content a:visited{color:#909}.entry-content a:visited:hover{color:#cd0021}.sig-content a,.sig-content a:visited{color:#999;text-decoration:underline}.sig-content a:hover,.sig-content a:active,.sig-content a:focus,.sig-content a:visited:hover{color:#333}.gen-content,.main-content{background:#fbfbfb;border-color:#d3dae1;border-bottom-color:#cbd1d8}.main-pagepost{background:#fff;border-color:#dde4eb}#brd-crumbs-top .crumblast a,#brd-crumbs-top .crumblast a:hover{color:#111;text-decoration:none}.main-item,.main-item li,.main-item div,td{border-color:#dde4eb}.main-content .main-item .item-nav{color:#888}.main-content .sticky{background:#f2f4fa}.main-content .main-item .hn .item-status em.sticky,.main-content .main-item .hn .item-status em.closed{color:#314b60;font-weight:bold}.main-content .main-item .hn .item-status em.moved{color:#666}.post div,h3.post-ident,h4.post-title,.posthead h3,.userstatus span,.sig-line{border-color:#dde4eb}.post-num{color:#999}.post{border-color:#dde4eb;border-top-color:#fff;border-bottom-color:#ccc;background:#edf1f5}#topic-review .firstpost,.singlepost{border-top-color:#dde4eb;border-bottom-color:#dde4eb}.posthead,.postbody,.post-options{background:#f9f9f9}.posthead .hn{background:#f1f1f1}.post-title small{color:#999}.sig-content{color:#999}.sig-demo{color:#333}.sig-demo a,.sig-demo a:visited{color:#333;text-decoration:underline}.online .userstatus span{border-color:#3f9439}.ct-box,.ct-set,.ct-group,.frm-group{border-color:#dbe0e4}.admin-page .ct-box{background:#feffe6}.admin-page .ct-set .ct-box,.report{background:#f4f9fd}.admin-page .warn-set .warn-box{background:#feffe6}.main-frm .ct-group,#brd-announcement{background:#f4f9fd}.main-content .info-box{background:#ffffe1}.main-extensions .extension,.main-hotfixes .hotfix{background:#f4f9fd}.main-extensions .disabled,.main-hotfixes .disabled{background:#ffffe1}.warn-group,.warn-set,.warn-box,.error-box,#admin-alerts{background:#feffe6;border-color:#f4ebce}.warn-group,.warn-set,.warn-box,.error-box{border-color:#e6d190}.info-list li,.error-list li{color:#5d5636}.info-list li span,.error-list li span{color:#5d5636}ul li strong{color:#222}.user-box{background:#f4f9fd}.ct-box .hn{border-color:#dbe0e4;color:#333}.error-box .hn{color:#222}.help-box{background:#f4f4f4}.help-box .hn{color:#294f6e}.frm-buttons,.extension .options,.hotfix .options{border-color:#e3e3e3}.checklist{background:#fff;border-color:#ccc}label,.aslabel,.mf-set legend,.ct-legend,.ct-legend span,.ct-legend cite,.ct-legend strong{color:#333}.paging span,.paging a,.paging strong{border-color:#dedfdf}.required label em,#req-msg em,.warn strong,.important strong{color:#b42000}.sf-set .text label small,.sf-set .select label small,.txt-set .textarea label small{color:#999}.entry-content .quotebox,.entry-content .codebox{background:#fff;border-color:#ddd}#brd-announcement .userbox{background:#f4f9fd none repeat scroll 0 0}.main-content .main-item .hn .posted-mark{color:#99C}.lastedit em{font-size:.95em;font-style:normal;color:#999}.user-ident .username strong{color:#222}#brd-navlinks{background:#0066b9;border-color:#0066b9;color:#eee}#brd-navlinks a:link,#brd-navlinks a:visited{color:#eee}#brd-navlinks a:hover,#brd-navlinks a:active,#brd-navlinks a:focus{color:#fff;text-decoration:underline}.main-options,.main-options span{background:#f1f1f1}.main-menu,.admin-menu{background:#0066b9}.admin-submenu{background:#e4e4ec;border-color:#d3dae1}.main-menu a:link,.main-menu a:visited,.admin-menu a:link,.admin-menu a:visited{color:#ddd;text-decoration:none}.main-menu a:hover,.main-menu a:active,.main-menu a:focus,.admin-menu a:hover,.admin-menu a:active,.admin-menu a:focus{text-decoration:underline;color:#fff}.main-menu .active a:hover,.main-menu .active a:active,.main-menu .active a:focus,.main-menu .active a:visited,.admin-menu .active a:hover,.admin-menu .active a:active,.admin-menu .active a:focus,.admin-menu .active a:visited{text-decoration:none}.main-menu .active a{color:#fff}.admin-menu .active a{color:#eef}#brd-admod #alert a{color:yellow}#brd-head{background:#f5f5f5;color:#222}#brd-head a,#brd-head a:link,#brd-head a:visited{color:#222}.main-head,.main-foot{background:#0066b9;color:#ddd;border-color:#0066b9}#brd-announcement h1{border-color:#bbb}
-.main-subhead{border-color:#d3dae1 #D3DAE1 #cbd1d8 #D3DAE1;background:#f4f4f4}.column-title{border-color:#f4f4f4 #F4F4F4 #cbd1d8 #F4F4F4;background:#f4f4f4}.group-head{background:#edf1f5;border-color:#dbe0e4}.content-head .hn{border-color:#dbe0e4;color:#666}.main-head a:link,.main-head a:visited,.main-foot .options a:link,.main-foot .options a:visited,.main-head .js_link,.main-foot .options .js_link{color:#ddd}.main-head .js_link,.main-foot .options .js_link{border-color:#ccc}.main-head a:hover,.main-head a:active,.main-head a:focus,.main-head .js_link:hover,.main-foot .options a:hover,.main-foot .options a:active,.main-foot .options a:focus,.main-foot .options .js_link:hover{color:#fff}.main-head .js_link:hover,.main-foot .options .js_link:hover{border-color:#fff}th{background:#f4f4f4}.main-frm .ct-group td{background:#fbfbfb}#extensions-used{border-bottom-color:#999}.main-content .main-item .icon{border-color:#edf1f5 #DDE0E4 #c6cbd3 #BABFC6}.main-content .redirect .icon{border-color:#f4f4f4 #f4f4f4 #f4f4f4 #f4f4f4}.main-content .sticky .icon{border-color:#d7e5f3 #C3CFDc #9fb3c7 #90A2B4}.main-content .closed .icon{border-color:#acacac #979797 #898989 #7A7A7A}.main-content .sticky.closed .icon{border-color:#d7e5f3 #C3CFDc #898989 #7A7A7A}.main-content .new .icon{border-color:#0080d7 #0065C0 #0058b3 #0072CA}.checklist-item label{background:#fff}.checklist-item label:hover{background:#edf1f5}input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="number"],input[type="search"],textarea{border-color:#d3dae1}input[type="text"]:active,input[type="text"]:focus,input[type="password"]:active,input[type="password"]:focus,input[type="email"]:active,input[type="email"]:focus,input[type="url"]:active,input[type="url"]:focus,input[type="search"]:active,input[type="search"]:focus,input[type="number"]:active,input[type="number"]:focus,textarea:active,textarea:focus{border-color:#c8d3dc #D3DAE1 #d3dae1 #C8D3DC;box-shadow:0 1px 2px rgba(0,0,0,0.1) inset;background:#fffff3;background:-moz-linear-gradient(top,#fffee8,#fff);background:-o-linear-gradient(top,#fffee8,#fff);background:-webkit-gradient(linear,0 0,0 100%,from(#fffee8),to(#fff));background:-webkit-linear-gradient(top,#fffee8,#fff);background:-ms-linear-gradient(top,#fffee8,#fff);background:linear-gradient(top,#fffee8,#fff)}input[type="submit"],input[type="button"],input[type="reset"],button{background:#f6f6f6;background:-moz-linear-gradient(top,#fff,#eee);background:-o-linear-gradient(top,#fff,#eee);background:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#eee));background:-webkit-linear-gradient(top,#fff,#eee);background:-ms-linear-gradient(top,#fff,#eee);background:linear-gradient(top,#fff,#eee);border-color:#ccc;color:#404040;text-shadow:0 1px 1px #ddd}input[type="submit"]:hover,input[type="submit"]:focus,input[type="reset"]:hover,input[type="reset"]:focus,input[type="button"]:hover,input[type="button"]:focus,button:hover,button:focus{background:#f3f3f3;background:-moz-linear-gradient(top,#fff,#ebebeb);background:-o-linear-gradient(top,#fff,#ebebeb);background:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#ebebeb));background:-webkit-linear-gradient(top,#fff,#ebebeb);background:-ms-linear-gradient(top,#fff,#ebebeb);background:linear-gradient(top,#fff,#ebebeb);border-color:#84bce4;color:#111;-moz-box-shadow:0 1px 2px rgba(0,0,0,.1);-webkit-box-shadow:0 1px 2px rgba(0,0,0,.1);box-shadow:0 1px 2px rgba(0,0,0,.1)}input[type="submit"][disabled],input[type="button"][disabled],input[type="reset"][disabled],button[disabled]{border-color:#ccc;color:#999}input[type="submit"][disabled]:hover,input[type="submit"][disabled]:focus,input[type="reset"][disabled]:hover,input[type="reset"][disabled]:focus,input[type="button"][disabled]:hover,input[type="button"][disabled]:focus,button[disabled]:hover,button[disabled]:focus{color:#999}#querytime{color:#999}.quiet{color:#999}.loud{color:#000}#brd-debug th{background:#fff;border:0;border-bottom:2px solid #dde4eb;color:#111}
-#brd-debug td{background:#fff;border:0;border-bottom:solid 1px #eee;color:#666}#brd-messages span{color:#333;-webkit-border-bottom-right-radius:.3em;-webkit-border-bottom-left-radius:.3em;-moz-border-radius-bottomright:.3em;-moz-border-radius-bottomleft:.3em;border-bottom-right-radius:.3em;border-bottom-left-radius:.3em;-moz-box-shadow:0 2px 3px rgba(0,0,0,.2);-webkit-box-shadow:0 2px 3px rgba(0,0,0,.2);box-shadow:0 2px 3px rgba(0,0,0,.2)}#brd-messages .message_error{border-color:#ffe475;background:#ffbdac}#brd-messages .message_warning{border-color:#ffe475;background:#ffd0ac}#brd-messages .message_info{border-color:#ffe475;background:#ffc;background:-moz-linear-gradient(center top,#fffbea,#fef7cb);background:-o-linear-gradient(top,#fffbea,#fef7cb);background:-webkit-gradient(linear,0 0,0 100%,from(#fffbea),to(#fef7cb));background:-webkit-linear-gradient(top,#fffbea,#fef7cb);background:-ms-linear-gradient(top,#fffbea,#fef7cb);background:linear-gradient(top,#fffbea,#fef7cb)}
\ No newline at end of file
diff -urN punbb-1.4.1/style/Oxygen/Oxygen_cs.css punbb-1.4.2/style/Oxygen/Oxygen_cs.css
--- punbb-1.4.1/style/Oxygen/Oxygen_cs.css	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/style/Oxygen/Oxygen_cs.css	1970-01-01 00:00:00.000000000 +0000
@@ -1,679 +0,0 @@
-/* General colour scheme
-----------------------------------------------------------------*/
-
-body {
-	background: #fff;
-	color: #222;
-}
-
-a:focus {
-	outline: 0;
-}
-
-a:link,
-a:visited,
-.js_link {
-	color: #00579C;
-	text-decoration: none;
-}
-
-a:hover,
-a:active,
-a:focus {
-	color: #CD0021;
-	text-decoration: underline;
-}
-
-.js_link {
-	cursor: pointer;
-	border-color: #00579C;
-	-moz-user-select: none;
-	-webkit-user-select: none;
-	user-select: none;
-}
-
-.js_link:hover {
-	color: #CD0021;
-	border-color: #CD0021;
-}
-
-.entry-content a:visited {
-	color: #990099;
-}
-
-.entry-content a:visited:hover {
-	color: #CD0021;
-}
-
-.sig-content a,
-.sig-content a:visited {
-	color: #999;
-	text-decoration: underline;
-}
-
-.sig-content a:hover,
-.sig-content a:active,
-.sig-content a:focus,
-.sig-content a:visited:hover {
-	color: #333;
-}
-
-.gen-content,
-.main-content {
-	background: #fbfbfb;
-	border-color: #D3DAE1;
-	border-bottom-color: #CBD1D8;
-}
-
-.main-pagepost {
-	background: #fff;
-	border-color: #DDE4EB;
-}
-
-#brd-crumbs-top .crumblast a,
-#brd-crumbs-top .crumblast a:hover {
-	color: #111;
-	text-decoration: none;
-}
-
-.main-item,
-.main-item li,
-.main-item div,
-td {
-	border-color: #DDE4EB;
-}
-
-.main-content .main-item .item-nav {
-	color: #888;
-}
-
-.main-content .sticky {
-	background: #F2F4FA;
-}
-
-.main-content .main-item .hn .item-status em.sticky,
-.main-content .main-item .hn .item-status em.closed {
-	color: #314B60;
-	font-weight: bold;
-}
-
-.main-content .main-item .hn .item-status em.moved {
-	color: #666;
-}
-
-.post div,
-h3.post-ident,
-h4.post-title,
-.posthead h3,
-.userstatus span,
-.sig-line {
-	border-color: #DDE4EB;
-}
-
-.post-num {
-	color: #999;
-}
-
-.post {
-	border-color: #DDE4EB;
-	border-top-color: #fff;
-	border-bottom-color: #ccc;
-	background: #EDF1F5;
-}
-
-#topic-review .firstpost,
-.singlepost {
-	border-top-color: #DDE4EB;
-	border-bottom-color: #DDE4EB;
-}
-
-.posthead,
-.postbody,
-.post-options {
-	background: #f9f9f9;
-}
-
-.posthead .hn {
-	background: #F1F1F1;
-}
-
-.post-title small {
-	color: #999;
-}
-
-.sig-content {
-	color: #999;
-}
-
-.sig-demo {
-	color: #333;
-}
-
-.sig-demo a,
-.sig-demo a:visited {
-	color: #333;
-	text-decoration: underline;
-}
-
-.online .userstatus span {
-	border-color: #3F9439;
-}
-
-.ct-box,
-.ct-set,
-.ct-group,
-.frm-group {
-	border-color: #DBE0E4;
-}
-
-.admin-page .ct-box {
-	background: #FEFFE6;
-}
-
-.admin-page .ct-set .ct-box,
-.report {
-	background: #F4F9FD;
-}
-
-.admin-page .warn-set .warn-box {
-	background: #FEFFE6;
-}
-
-.main-frm .ct-group,
-#brd-announcement {
-	background: #F4F9FD;
-}
-
-.main-content .info-box {
-	background: #FFFFE1;
-}
-
-.main-extensions .extension,
-.main-hotfixes .hotfix {
-	background: #F4F9FD;
-}
-
-.main-extensions .disabled,
-.main-hotfixes .disabled {
-	background: #FFFFE1;
-}
-
-.warn-group,
-.warn-set,
-.warn-box,
-.error-box,
-#admin-alerts {
-	background: #FEFFE6;
-	border-color: #F4EBCE;
-}
-
-.warn-group,
-.warn-set,
-.warn-box,
-.error-box {
-	border-color: #E6D190;
-}
-
-.info-list li,
-.error-list li {
-	color: #5D5636;
-}
-
-.info-list li span,
-.error-list li span {
-	color: #5D5636;
-}
-
-ul li strong {
-	color: #222;
-}
-
-.user-box {
-	background: #F4F9FD;
-}
-
-.ct-box .hn {
-	border-color: #DBE0E4;
-	color: #333;
-}
-
-.error-box .hn {
-	color: #222;
-}
-
-.help-box {
-	background: #f4f4f4;
-}
-
-.help-box .hn {
-	color: #294F6E
-}
-
-.frm-buttons,
-.extension .options,
-.hotfix .options {
-	border-color: #E3E3E3;
-}
-
-.checklist {
-	background: #fff;
-	border-color: #ccc;
-}
-
-label,
-.aslabel,
-.mf-set legend,
-.ct-legend,
-.ct-legend span,
-.ct-legend cite,
-.ct-legend strong {
-	color: #333;
-}
-
-.paging span,
-.paging a,
-.paging strong {
-	border-color: #dedfdf;
-}
-
-
-.required label em,
-#req-msg em,
-.warn strong,
-.important strong {
-	color: #b42000;
-}
-
-.sf-set .text label small,
-.sf-set .select label small,
-.txt-set .textarea label small {
-	color: #999;
-}
-
-.entry-content .quotebox,
-.entry-content .codebox {
-	background: #fff;
-	border-color: #ddd;
-}
-
-#brd-announcement .userbox {
-	background: #F4F9FD none repeat scroll 0 0;
-}
-
-.main-content .main-item .hn .posted-mark {
-	color: #99C;
-}
-
-.lastedit em {
-	font-size: .95em;
-	font-style: normal;
-	color: #999;
-}
-
-.user-ident .username strong {
-	color: #222;
-}
-
-/* Menus
-----------------------------------------------------------------*/
-
-#brd-navlinks {
-	background: #0066B9;
-	border-color: #0066B9;
-	color: #eee;
-}
-
-#brd-navlinks a:link,
-#brd-navlinks a:visited {
-	color: #eee;
-}
-
-#brd-navlinks a:hover,
-#brd-navlinks a:active,
-#brd-navlinks a:focus {
-	color: #fff;
-	text-decoration: underline;
-}
-
-.main-options,
-.main-options span {
-	background: #F1F1F1;
-}
-
-.main-menu,
-.admin-menu {
-	background: #0066B9;
-}
-
-.admin-submenu {
-	background: #E4E4EC;
-	border-color: #D3DAE1;
-}
-
-.main-menu a:link,
-.main-menu a:visited,
-.admin-menu a:link,
-.admin-menu a:visited {
-	color: #ddd;
-	text-decoration: none;
-}
-
-.main-menu a:hover,
-.main-menu a:active,
-.main-menu a:focus,
-.admin-menu a:hover,
-.admin-menu a:active,
-.admin-menu a:focus {
-	text-decoration: underline;
-	color: #fff;
-}
-
-.main-menu .active a:hover,
-.main-menu .active a:active,
-.main-menu .active a:focus,
-.main-menu .active a:visited,
-.admin-menu .active a:hover,
-.admin-menu .active a:active,
-.admin-menu .active a:focus,
-.admin-menu .active a:visited {
-	text-decoration: none;
-}
-
-.main-menu .active a {
-	color: #fff;
-}
-
-.admin-menu .active a {
-	color: #eef;
-}
-
-#brd-admod #alert a {
-	color: yellow;
-}
-
-/* Logo and Headings
-----------------------------------------------------------------*/
-
-#brd-head {
-	background: #f5f5f5;
-	color: #222;
-}
-
-#brd-head a,
-#brd-head a:link,
-#brd-head a:visited {
-	color: #222;
-}
-
-.main-head,
-.main-foot {
-	background: #0066B9;
-	color: #ddd;
-	border-color: #0066B9;
-}
-
-#brd-announcement h1 {
-	border-color: #BBBBBB;
-}
-
-.main-subhead {
-	border-color: #D3DAE1 #D3DAE1 #CBD1D8 #D3DAE1;
-	background: #F4F4F4;
-}
-
-.column-title {
-	border-color: #F4F4F4 #F4F4F4 #CBD1D8 #F4F4F4;
-	background: #F4F4F4;
-}
-
-.group-head {
-	background: #EDF1F5;
-	border-color: #DBE0E4;
-}
-
-.content-head .hn {
-	border-color: #DBE0E4;
-	color: #666;
-}
-
-.main-head a:link,
-.main-head a:visited,
-.main-foot .options a:link,
-.main-foot .options a:visited,
-.main-head .js_link,
-.main-foot .options .js_link {
-	color: #ddd;
-}
-
-.main-head .js_link,
-.main-foot .options .js_link {
-	border-color: #ccc;
-}
-
-.main-head a:hover,
-.main-head a:active,
-.main-head a:focus,
-.main-head .js_link:hover,
-.main-foot .options a:hover,
-.main-foot .options a:active,
-.main-foot .options a:focus,
-.main-foot .options .js_link:hover {
-	color: #fff;
-}
-
-.main-head .js_link:hover,
-.main-foot .options .js_link:hover {
-	border-color: #fff;
-}
-
-th {
-	background: #F4F4F4;
-}
-
-.main-frm .ct-group td {
-	background: #FBFBFB;
-}
-
-#extensions-used {
-	border-bottom-color: #999;
-}
-
-
-/* Status indicators
-----------------------------------------------------------------*/
-
-.main-content .main-item .icon {
-	border-color: #EDF1F5 #DDE0E4 #C6CBD3 #BABFC6;
-}
-
-.main-content .redirect .icon {
-	border-color: #f4f4f4 #f4f4f4 #f4f4f4 #f4f4f4;
-}
-
-.main-content .sticky .icon {
-	border-color: #D7E5F3 #C3CFDC #9FB3C7 #90A2B4;
-}
-
-.main-content .closed .icon {
-	border-color: #ACACAC #979797 #898989 #7A7A7A;
-}
-
-.main-content .sticky.closed .icon {
-	border-color: #D7E5F3 #C3CFDC #898989 #7A7A7A;
-}
-
-.main-content .new .icon {
-	border-color: #0080D7 #0065C0 #0058B3 #0072CA;
-}
-
-
-/* Multi Checkbox Widget
--------------------------------------------------------------*/
-
-.checklist-item label {
-	background: #fff;
-}
-
-.checklist-item label:hover {
-	background: #EDF1F5;
-}
-
-
-input[type="text"],
-input[type="password"],
-input[type="email"],
-input[type="url"],
-input[type="number"],
-input[type="search"],
-textarea {
-	border-color: #D3DAE1;
-}
-
-input[type="text"]:active,
-input[type="text"]:focus,
-input[type="password"]:active,
-input[type="password"]:focus,
-input[type="email"]:active,
-input[type="email"]:focus,
-input[type="url"]:active,
-input[type="url"]:focus,
-input[type="search"]:active,
-input[type="search"]:focus,
-input[type="number"]:active,
-input[type="number"]:focus,
-textarea:active,
-textarea:focus {
-	border-color: #C8D3DC #D3DAE1 #D3DAE1 #C8D3DC;
-	box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1) inset;
-	background: #FFFFF3;
-	background: -moz-linear-gradient(top, #fffee8, #fff);
-	background: -o-linear-gradient(top, #fffee8, #fff);
-	background: -webkit-gradient(linear, 0 0, 0 100%, from(#fffee8), to(#fff));
-	background: -webkit-linear-gradient(top, #fffee8, #fff);
-	background: -ms-linear-gradient(top, #fffee8, #fff);
-	background: linear-gradient(top, #fffee8, #fff);
-}
-
-
-input[type="submit"],
-input[type="button"],
-input[type="reset"],
-button {
-	background: #f6f6f6;
-	background: -moz-linear-gradient(top, #fff, #eee);
-	background: -o-linear-gradient(top, #fff, #eee);
-	background: -webkit-gradient(linear, 0 0, 0 100%, from(#fff), to(#eee));
-	background: -webkit-linear-gradient(top, #fff, #eee);
-	background: -ms-linear-gradient(top, #fff, #eee);
-	background: linear-gradient(top, #fff, #eee);
-	border-color: #CCCCCC;
-	color: #404040;
-	text-shadow: 0 1px 1px #ddd;
-}
-
-input[type="submit"]:hover,
-input[type="submit"]:focus,
-input[type="reset"]:hover,
-input[type="reset"]:focus,
-input[type="button"]:hover,
-input[type="button"]:focus,
-button:hover,
-button:focus {
-	background: #f3f3f3;
-	background: -moz-linear-gradient(top, #fff, #ebebeb);
-	background: -o-linear-gradient(top, #fff, #ebebeb);
-	background: -webkit-gradient(linear, 0 0, 0 100%, from(#fff), to(#ebebeb));
-	background: -webkit-linear-gradient(top, #fff, #ebebeb);
-	background: -ms-linear-gradient(top, #fff, #ebebeb);
-	background: linear-gradient(top, #fff, #ebebeb);
-	border-color: #84BCE4;
-	color: #111;
-	-moz-box-shadow: 0 1px 2px rgba(0,0,0, .1);
-	-webkit-box-shadow: 0 1px 2px rgba(0,0,0, .1);
-	box-shadow: 0 1px 2px rgba(0,0,0, .1);
-}
-
-input[type="submit"][disabled],
-input[type="button"][disabled],
-input[type="reset"][disabled],
-button[disabled] {
-	border-color: #CCCCCC;
-	color: #999;
-}
-
-input[type="submit"][disabled]:hover,
-input[type="submit"][disabled]:focus,
-input[type="reset"][disabled]:hover,
-input[type="reset"][disabled]:focus,
-input[type="button"][disabled]:hover,
-input[type="button"][disabled]:focus,
-button[disabled]:hover,
-button[disabled]:focus {
-	color: #999;
-}
-
-#querytime {
-	color: #999;
-}
-
-/* Misc classes
--------------------------------------------------------------*/
-.quiet {
-	color: #999;
-}
-
-.loud {
-	color: #000;
-}
-
-#brd-debug th {
-	background: #fff;
-	border: none;
-	border-bottom: 2px solid #DDE4EB;
-	color: #111;
-}
-
-#brd-debug td {
-	background: #fff;
-	border: none;
-	border-bottom: solid 1px #eee;
-	color: #666;
-}
-
-/* Flash Messages
--------------------------------------------------------------*/
-
-#brd-messages span {
-	color: #333;
-	-webkit-border-bottom-right-radius: .3em;
-	-webkit-border-bottom-left-radius: .3em;
-	-moz-border-radius-bottomright: .3em;
-	-moz-border-radius-bottomleft: .3em;
-	border-bottom-right-radius: .3em;
-	border-bottom-left-radius: .3em;
-	-moz-box-shadow: 0 2px 3px rgba(0,0,0, .2);
-	-webkit-box-shadow: 0 2px 3px rgba(0,0,0, .2);
-	box-shadow: 0 2px 3px rgba(0,0,0, .2);
-}
-
-#brd-messages .message_error {
-	border-color:#ffe475;
-	background: #ffbdac;
-}
-
-#brd-messages .message_warning {
-	border-color:#ffe475;
-	background: #ffd0ac;
-}
-
-#brd-messages .message_info {
-	border-color:#ffe475;
-	background: #ffffcc;
-	background: -moz-linear-gradient(center top , #fffbea, #fef7cb);
-	background: -o-linear-gradient(top, #fffbea, #fef7cb);
-	background: -webkit-gradient(linear, 0 0, 0 100%, from(#fffbea), to(#fef7cb));
-	background: -webkit-linear-gradient(top, #fffbea, #fef7cb);
-	background: -ms-linear-gradient(top, #fffbea, #fef7cb);
-	background: linear-gradient(top, #fffbea, #fef7cb);
-}
-
diff -urN punbb-1.4.1/style/Oxygen/Oxygen.css punbb-1.4.2/style/Oxygen/Oxygen.css
--- punbb-1.4.1/style/Oxygen/Oxygen.css	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/style/Oxygen/Oxygen.css	1970-01-01 00:00:00.000000000 +0000
@@ -1,2351 +0,0 @@
-/*************************************************************
-A - SETUP
-**************************************************************/
-
-/* Start from scratch
--------------------------------------------------------------*/
-
-html,
-body, /* remove this line if necessary for site integration */
-div,
-p,
-dl,
-dt,
-dd,
-ul,
-ol,
-li,
-h1,
-h2,
-h3,
-h4,
-h5,
-h6,
-pre,
-form,
-fieldset,
-legend,
-blockquote,
-table,
-th,
-td,
-input,
-textarea,
-button,
-select {
-	margin:0;
-	padding:0;
-	text-align: left;
-}
-
-fieldset,
-img,
-cite {
-	border: 0;
-}
-
-.visual-hidden {
-	visibility: hidden;
-}
-
-br,
-hr,
-.hr,
-.hidden {
-	display: none;
-}
-
-.border-less {
-	border: none !important;
-}
-
-.small-font {
-	font-size: .917em;
-}
-
-.list-clean {
-	list-style-type: none;
-}
-
-.prepend-top {
-	margin-top: 1em !important;
-}
-
-.nowrap {
-	white-space: nowrap;
-}
-
-/* Text Setup (Equalise everything before styling)
--------------------------------------------------------------*/
-html {
-	height: 99%;
-	overflow-y: scroll;
-}
-
-body {
-	font-size: 100%;
-}
-
-.brd-page {
-	font: 75%/1.5em Verdana, Helvetica, Arial, sans-serif;
-}
-
-h1,
-h2,
-h3,
-h4,
-h5,
-h6 {
-	font-size: 1em;
-	font-weight: normal;
-}
-
-samp,
-code,
-pre,
-option,
-optgroup,
-input,
-select,
-textarea,
-td,
-th {
-	font-size: 1em;
-	font-family: Verdana,Helvetica,Arial,sans-serif;
-	font-style: normal;
-	font-weight: normal;
-}
-
-/* Normalize monospace sizing:
-   en.wikipedia.org/wiki/MediaWiki_talk:Common.css/Archive_11#Teletype_style_fix_for_Chrome */
-samp,
-code,
-pre {
-	font-family: monospace, sans-serif;
-}
-
-/* Float Clearing
--------------------------------------------------------------*/
-
-.brd-page:after,
-.gen-content:after,
-.ct-box:after,
-#brd-index .item-head:after,
-#brd-index .main-item:after,
-#brd-index ul.item-info:after,
-.frm-group:after,
-.mf-set:after,
-.sf-set:after,
-.mf-box:after,
-.sf-box:after,
-.mf-item:after,
-.txt-set:after,
-.txt-box:after,
-.frm-form label:after,
-fieldset:after,
-span.fld-input:after,
-.posthead:after,
-.postbody:after,
-.postfoot .post-options:after {
-	content: "\0020";
-	display: block;
-	font-size: 0;
-	height: 0;
-	line-height: 0.0;
-	overflow:hidden;
-	visibility: hidden;
-	clear: both;
-}
-
-.clearfix:before,
-.clearfix:after {
-	content: "\0020";
-	display: block;
-	height: 0;
-	overflow: hidden;
-}
-
-.clearfix:after {
-	clear: both;
-}
-
-/* Fix clearfix: blueprintcss.lighthouseapp.com/projects/15318/tickets/5-extra-margin-padding-bottom-of-page */
-.clearfix {
-	zoom: 1;
-}
-
-
-/* Hidden items
--------------------------------------------------------------*/
-
-#brd-stats .hn,
-#qjump label,
-.post-byline span,
-.posthead .post-link span,
-.admin .main-subhead,
-.main-item .item-info li span.label,
-.main-item .item-info li label,
-.main-item .you-posted,
-.main-item .item-num,
-.group-legend,
-.group-legend span,
-.sf-set legend,
-.sf-set legend span,
-.main-pagehead .page-info,
-p.item-select label,
-.mf-extra .mf-field label,
-.mf-extra .mf-field .aslabel,
-.item-subject .item-nav span,
-.post-options a span,
-.main-title,
-.main-head .hn small,
-.entry-title,
-.menu-page .main-head {
-	font-size: 0;
-	left: -999em;
-	text-indent: -999em;
-	position:absolute;
-	line-height: 0;
-	visibility: hidden;
-}
-
-
-/*************************************************************
-B - GLOBAL STYLES
-**************************************************************/
-
-/* General Layout
--------------------------------------------------------------*/
-
-.brd {
-	padding: 1.3em 2em;
-	margin: 0 auto;
-	max-width: 1100px;
-	min-width: 700px;
-	width: 90%;
-}
-
-#brd-redirect,
-#brd-maint,
-#brd-util {
-	margin: 50px auto 12px auto;
-	width: 60%;
-}
-
-/* Confines clearing behaviour within forum wrapper */
-.brd-page {
-	float: left;
-	width: 100%;
-	position: relative;
-}
-
-.main-content,
-.gen-content {
-	border-style: solid;
-	border-width: 1px;
-}
-
-.gen-content {
-	padding: 0 1.5em;
-}
-
-#brd-about,
-#brd-stats {
-	margin-top: 1em;
-}
-
-.main-content,
-#brd-visit,
-#brd-qpost,
-#brd-announcement {
-	margin-bottom: 1em;
-}
-
-#brd-announcement {
-	padding: 0.5em 1.5em;
-	margin-top: 1em;
-}
-
-#brd-announcement br {
-	display: inline;
-}
-
-.main-options {
-	border-top: none;
-	margin: -1em 0 1em 0;
-}
-
-/* Content Text (Default spacing for paragraphs and lists)
--------------------------------------------------------------*/
-
-p,
-.hn {
-	padding: 0.35em 0;
-}
-
-ul,
-ol {
-	padding: 0.35em 0 0.35em 2em;
-}
-
-
-ul.spaced {
-	padding: 0.25em 0 0.25em 2em;
-}
-
-.spaced li {
-	padding: 0.25em 0;
-}
-
-/* Headings
--------------------------------------------------------------*/
-
-th {
-	font-size: 1.084em;
-	padding: 0.462em 1.417em;
-	border-bottom-style: solid;
-	border-bottom-width: 1px;
-}
-
-.main-head,
-.main-foot {
-	border-style: solid;
-	border-width: 1px;
-	padding: 0 1.417em;
-}
-
-.main-head .hn,
-.main-foot .hn {
-	padding-right: 10em;
-}
-
-h2.main-subhead {
-	border-style: solid;
-	border-width: 1px;
-	padding: 0.462em 10em 0.426em 1.417em;
-}
-
-.column-title {
-	border-style: solid;
-	border-width: 1px;
-	position: relative;
-	margin-bottom: -1px;
-}
-
-.main-subhead {
-	border-style: solid;
-	border-width: 1px;
-	border-bottom: none;
-}
-
-.main-subhead .hn {
-	padding: 0.462em 1.417em;
-	position: relative;
-}
-
-.main-foot {
-	margin-top: -1em;
-}
-
-#brd-announcement h1,
-.main-extensions .ct-legend,
-.main-hotfixes .ct-legend {
-	border-bottom-style: dashed;
-	border-bottom-width: 1px;
-	font-size: 1.1em;
-	font-weight: bold;
-}
-
-#brd-announcement h1 {
-	margin-bottom: 0.5em;
-}
-
-.main-pagehead .hn {
-	padding: 0.5em 0;
-}
-
-.content-head {
-	margin: 0.5em 1.417em 0;
-}
-
-.content-head .hn {
-	border-style: none none double none;
-	border-width: 3px;
-	padding: 0.462em 0;
-}
-
-
-/*************************************************************
-C - COMMON CONTENT TYPES (RE-USABLE FORMATS)
-**************************************************************/
-
-/* Option lists
--------------------------------------------------------------*/
-
-.options > span {
-	padding: 0 0 0 0.3em;
-	margin: 0 0 0 0.25em;
-}
-
-.options .js_link {
-	padding: 0;
-	margin: 0 0 0 0.55em;
-}
-
-
-.options > span.first-item {
-	border-left: 0;
-	padding-left: 0;
-	margin-left: 0;
-}
-
-.extension .options,
-.hotfix .options {
-	border-top-style: dashed;
-	border-top-width: 1px;
-}
-
-/* Content Containers
--------------------------------------------------------------*/
-
-.ct-box {
-	border-style: solid;
-	border-width: 1px;
-	-moz-border-radius: .35em;
-	-webkit-border-radius: .35em;
-	-khtml-border-radius: .35em;
-	border-radius: .35em;
-	margin: 1.417em;
-	padding: 0.5em 1em;
-	position: relative;
-}
-
-.ct-box li {
-	padding: 0;
-	margin: 0 0 0.7em 0;
-}
-
-.ct-set {
-	border-style: solid;
-	border-width: 1px;
-	margin: 1.417em;
-	padding: 0 0 0 17em;
-	position: relative;
-}
-
-.ct-group {
-	border-style: solid;
-	border-width: 1px;
-	margin: 1.417em;
-}
-
-.frm-group .ct-set {
-	border-style: dashed none none none;
-	margin: 0;
-}
-
-.ct-group .ct-set {
-	border-style: dashed none none none;
-	margin: 0 1em;
-	padding: 0 0 0 16em;
-}
-
-.ct-group .group-item1 {
-	border: none;
-}
-
-.ct-group .set1,
-.frm-group .set1 {
-	border-top: none;
-}
-
-.ct-group .ct-box,
-.frm-group .ct-box {
-	border-style: none;
-	margin: 0;
-}
-
-.ct-group .ct-set .ct-box,
-.ct-set .ct-box,
-.frm-group .ct-set .ct-box {
-	border-style: none;
-	margin: 0;
-}
-
-.ct-group .set1 {
-	border-top: 0;
-}
-
-.ct-set .ct-legend {
-	float: left;
-	margin-left: -17em;
-	width: 16em;
-	position: relative;
-	text-align: right;
-	font-weight: bold;
-}
-
-.ct-set ul {
-	padding-left: 0;
-	list-style: none;
-}
-
-.ct-box div {
-	padding: 0.35em 0;
-}
-
-.ct-box p.options {
-	float: none;
-}
-
-.ct-box .info-list {
-	padding-bottom: 0;
-}
-
- /* User Identity
--------------------------------------------------------------*/
-
-.user-ident {
-	padding-left: 0;
-	list-style: none;
-}
-
-.user-ident .username a,
-.user-ident .username strong {
-	font-size: 1.5em;
-	font-weight: normal;
-}
-
-.user-ident .username a,
-.user-ident .username a:link,
-.user-ident .username a:visited {
-	text-decoration: none;
-}
-
-.user-ident .username a:hover,
-.user-ident .username a:active,
-.user-ident .username a:focus {
-	text-decoration: underline;
-}
-
-.user-ident .usertitle {
-	font-weight: bold;
-}
-
-.user-ident .useravatar {
-	padding: 0.25em 0;
-}
-
-.user-ident .useravatar img {
-	display: block;
-}
-
- /* Message Boxes
--------------------------------------------------------------*/
-
-.main-message {
-	padding: 0.5em 1.417em;
-}
-
-.main-message p span {
-	display: block;
-	padding-top: 0.5em;
-}
-
-#brd-maint .main-message {
-	padding: 0;
-}
-
-/* Section Menus (By Default - Profile and Admin)
--------------------------------------------------------------*/
-
-.main-menu,
-.admin-menu {
-	border: 0;
-	padding: 0.4em 0 0.2em 0.75em;
-}
-
-.main-menu ul,
-.admin-menu ul {
-	list-style-type: none;
-	float: left;
-	padding: 0;
-}
-
-.main-menu li,
-.admin-menu li {
-	float: left;
-	display: inline;
-}
-
-.main-menu a,
-.admin-menu a {
-	float: left;
-	position: relative;
-	padding: 0.2em 0.75em 0.4em 0.75em;
-}
-
-.main-menu .active a,
-.admin-menu .active a {
-	font-weight: bold;
-}
-
-.main-menu li.first-item,
-.admin-menu li.first-item {
-	border-left: 0;
-}
-
-.admin-submenu {
-	border-style: solid;
-	border-width: 0 1px;
-}
-
-.admin-submenu ul {
-	padding: 0.5em 0;
-	list-style: none;
-}
-
-.admin-submenu li {
-	display: inline;
-	margin-right: 0.75em;
-}
-
-.admin-submenu .active a {
-	font-weight: bold;
-}
-
-
-/*************************************************************
-D - COMMON INTERFACE ELEMENTS
-**************************************************************/
-
-/* Logo and Tagline
--------------------------------------------------------------*/
-
-#brd-head {
-	padding-bottom: 0.75em;
-	padding-top: 1em;
-	border-radius: .4em .4em 0 0;
-}
-
-#brd-title {
-	padding-bottom: 0;
-}
-
-#brd-title a,
-#brd-title strong {
-	font-size: 1.5em;
-	text-decoration: none;
-	font-weight: normal;
-}
-
-#brd-desc {
-	padding-top: 0;
-	padding-bottom: 0;
-}
-
-/* Primary navigation
--------------------------------------------------------------*/
-
-#brd-navlinks ul {
-	margin: 0;
-	padding: 0.4em 0;
-	float: left;
-}
-
-#brd-navlinks li {
-	display: inline;
-	margin-right: 1em;
-}
-
-#brd-navlinks li a {
-	text-decoration: none;
-}
-
-#brd-admod {
-	float: right;
-	text-align: right;
-}
-
-#brd-admod span {
-	margin-left: 0.75em;
-}
-
-#brd-access {
-	text-align: right;
-	padding: 0;
-	height: 0;
-	margin: 0;
-	position: absolute;
-	background: transparent;
-}
-
-#brd-access a,
-#brd-access a:link,
-#brd-access a:visited {
-	height: 2em;
-	line-height: 2em;
-	position: absolute;
-	left: -999em;
-	margin: 1px;
-	width: 12em;
-}
-
-#brd-access a:hover,
-#brd-access a:active,
-#brd-access a:focus {
-	text-indent: 0;
-	background: #000;
-	position: static;
-	float: right;
-}
-
-
-/* Welcome box
--------------------------------------------------------------*/
-
-#brd-visit #welcome {
-	float: left;
-}
-
-#brd-visit #visit-links {
-	text-align: right;
-	float: none;
-}
-
-/* Paging and posting
--------------------------------------------------------------*/
-
-#brd-pagepost-end {
-	border-top: none;
-}
-
-#brd-pagepost-top {
-	border-bottom: none;
-}
-
-#brd-admin-bans #brd-pagepost-end {
-	margin-top: -1em;
-}
-
-.paging {
-	float: left;
-}
-
-.posting {
-	text-align: right;
-	float: right;
-}
-
-.paging {
-	white-space:nowrap;
-}
-
-.paging a,
-.paging strong,
-.paging span {
-	padding: 0 1em;
-	border-left-style: solid;
-	border-left-width: 1px;
-	float: left;
-	white-space:nowrap;
-}
-
-.paging .first-item,
-.paging span.pages {
-	border-left: 0;
-	padding-left: 0;
-}
-
-.posting .newpost {
-	font-size: 1.084em;
-	font-weight: bold;
-}
-
-/* Breadcrumbs
--------------------------------------------------------------*/
-
-.crumbs .crumblast span {
-	font-weight: normal;
-}
-
-.crumbs span,
-.crumbs a {
-	white-space: nowrap;
-}
-
-.crumbs {
-	margin: 0.5em 0;
-	padding: 0 1.417em;
-	font-size: 1.084em;
-}
-
-#brd-crumbs-top .crumblast {
-	font-size: 1.15em;
-}
-
-
-/* Statistics
--------------------------------------------------------------*/
-
-#brd-stats ul {
-	list-style: none;
-	padding-left: 0;
-}
-
-#brd-stats ul li.st-users {
-	float: left;
-	clear: both;
-	white-space: nowrap;
-}
-
-#brd-stats ul li.st-activity {
-	text-align: right;
-	display: block;
-	white-space: nowrap;
-}
-
-
-#brd-stats li strong {
-	font-weight: bold;
-}
-
-#brd-online {
-	padding-top: 0.5em;
-	padding-bottom: 0.5em;
-	border-top: 0;
-}
-
-#brd-online .hn,
-#brd-online p {
-	padding-bottom: 0;
-	padding-top: 0;
-}
-
-#brd-online .hn {
-	float: left;
-	margin-right: 0.5em;
-}
-
-/* Footer
--------------------------------------------------------------*/
-
-#qjump {
-	float: left;
-	padding: 0.5em 0;
-}
-
-#qjump div,
-#qjump label {
-	padding: 0;
-	border: none;
-}
-
-#copyright {
-	text-align: right;
-	margin: 0;
-}
-
-#querytime {
-	text-align: right;
-	font-size: 0.917em;
-	padding: 0;
-}
-
-#extensions-used {
-	border-bottom: 1px dotted;
-}
-
-/* Main and Content Options
--------------------------------------------------------------*/
-
-p.options {
-	border-top: none;
-	float: right;
-}
-
-.main-modoptions .options {
-	text-align: center;
-}
-
-a.feed {
-	padding-left: 22px;
-	background: url(feed-icon.png) center left no-repeat;
-}
-
-.content-options,
-.ct-options {
-	float: right;
-	margin-top: -2.6em;
-	padding: 0.5em 1.417em;
-	position: relative;
-}
-
-/*************************************************************
-E - INDEX, FORUMS, SEARCH RESULTS, MODERATE FORUMS
-**************************************************************/
-
-/* Header setup generally
--------------------------------------------------------------*/
-
-.item-summary {
-	height: 2.5em;
-	padding: 0;
-	position: relative;
-	font-size: 1em;
-}
-
-.item-summary span {
-	width: 100%;
-	position: absolute;
-	left: -999em;
-	text-indent: -999em;
-	display: block;
-}
-
-.item-summary strong {
-	position: absolute;
-	left: 999em;
-	text-indent: 0;
-	padding: 0.5em 0;
-	white-space: nowrap;
-	font-weight: normal;
-}
-
-.item-summary strong:first-letter {
-	text-transform: uppercase;
-}
-
-.item-summary .subject-title {
-	padding-left: 1.417em;
-}
-
-.item-summary .info-topics,
-.item-summary .info-replies {
-	margin-left: 100%;
-	text-align: center;
-	width: 7em;
-	left: 965em;
-}
-
-.item-summary .info-forum {
-	margin-left: 100%;
-	text-align: center;
-	width: 20em;
-	left: 952em;
-}
-
-.item-summary .info-posts,
-.item-summary .info-views {
-	margin-left: 100%;
-	text-align: center;
-	width: 7em;
-	left: 972em;
-}
-
-.item-summary .info-lastpost {
-	margin-left: 100%;
-	left: 980em;
-}
-
-p.forum-noview .info-replies {
-	left: 972em;
-}
-
-/* Content setup generally
--------------------------------------------------------------*/
-
-.main-content .main-item {
-	border-top-style: solid;
-	border-top-width: 1px;
-	overflow: hidden;
-	position: relative;
-	line-height: 1.4em;
-}
-
-.main-content .main-first-item {
-	border-top: none;
-}
-
-.main-content .main-item ul {
-	float: right;
-	position: relative;
-	padding: 0;
-	list-style: none;
-}
-
-.main-content .main-item p,
-.main-content .main-item .hn {
-	padding: 0;
-}
-
-.hn .item-status {
-	font-weight: normal;
-}
-
-.hn .item-status em {
-	font-style: normal;
-}
-
-.main-item .item-subject,
-.main-content .main-item li {
-	float: left;
-	border-left-style: solid;
-	border-left-width: 1px;
-	margin: 0 -2px -9.7em 0;
-	position: relative;
-	padding-top: 0.6em;
-	padding-bottom: 10.4em;
-}
-
-.main-item .item-subject {
-	overflow: hidden;
-	width: 100%;
-}
-
-li.info-topics,
-li.info-posts,
-li.info-views,
-li.info-replies {
-	width: 7em;
-	text-align: center;
-}
-
-li.info-forum {
-	width: 20em;
-	text-align: center;
-}
-
-li.info-lastpost {
-	width: 20em;
-}
-
-li.info-lastpost cite {
-	overflow: hidden;
-	width: 18em;
-}
-
-.main-item li strong {
-	font-weight: normal;
-}
-
-
-/* Setup for Index and Forums
--------------------------------------------------------------*/
-
-.main-content .main-item {
-	padding-right: 35em;
-	padding-left: 3.75em;
-}
-
-.main-content .main-item .hn {
-	position: relative;
-}
-
-.main-content .main-item ul {
-	width: 34em;
-	right: -35em;
-	margin-left: -34em;
-}
-
-.forum-noview .main-item {
-	padding-right: 28em;
-}
-
-.forum-noview .main-item ul {
-	width: 27em;
-	right: -28em;
-	margin-left: -27em;
-}
-
-.forum-forums .main-item {
-	padding-right: 48em;
-}
-
-.forum-forums .main-item ul {
-	width: 47em;
-	right: -48em;
-	margin-left: -47em;
-}
-
-.item-subject span.modlist {
-	display: block;
-}
-
-#brd-index .main-item .hn span {
-	font-size: 1.084em;
-	font-weight: bold;
-}
-
-#brd-index .main-item .hn small {
-	font-size: 1em;
-}
-
-.item-status {
-	font-weight: bold;
-}
-
-.main-content .main-item cite {
-	font-style: normal;
-}
-
-.item-nav,
-.item-nav a,
-.item-nav span  {
-	white-space: nowrap;
-	font-style: normal;
-}
-
-.item-subject .hn,
-.item-subject p {
-	margin: 0 0 0 1.5em;
-}
-
-li.info-lastpost cite,
-li.info-lastpost span,
-li.info-forum a {
-	display: block;
-	padding: 0 1em;
-	font-style: normal;
-	font-weight: normal;
-}
-
-li.info-lastpost strong {
-	padding: 0 0 0 1em;
-	font-style: normal;
-	font-weight: normal;
-}
-
-.main-item li.info-select {
-	position: absolute;
-	right: 0;
-	top: 0;
-	padding: 0.3em;
-	border-style: none none solid solid;
-	border-width: 1px;
-}
-
-.main-content .main-item .icon {
-	border-style: solid;
-	border-width: 0.5833em;
-	height: 0;
-	width: 0;
-	float: left;
-	margin-top: 0.667em;
-	margin-left: -2.417em;
-}
-
-.main-content .main-item .hn .posted-mark {
-	position: absolute;
-	font-size: 2em;
-	width: 1em;
-	left: -0.5em;
-	top: 0;
-}
-
-/*************************************************************
-F - MAIN CONTENT - FORMS
-**************************************************************/
-
-/* Generally
--------------------------------------------------------------*/
-
-.frm-group {
-	border-top-style: dashed;
-	border-top-width: 1px;
-	margin: 1.417em;
-	padding: 1.3em 0 0;
-}
-
-.group1 {
-	border-top: none;
-	padding-top: 0;
-}
-
-.sf-box,
-.mf-box,
-.txt-box {
-	margin: 1.417em;
-	padding: 0.5em 0;		/* CHECK 0.3 - 0.5 */
-	position: relative;
-}
-
-.sf-set,
-.mf-set,
-.txt-set {
-	margin: 1.417em;
-	padding: 0 0 0 17em;
-	position: relative;
-}
-
-.sf-set .sf-box,
-.mf-set .mf-box,
-.txt-set .txt-box {
-	margin: 0;
-}
-
-.frm-group .sf-set,
-.frm-group .mf-set,
-.frm-group .txt-set {
-	margin: 0;
-}
-
-.text input,
-.select select {
-	font-size: 1.084em;
-}
-
-optgroup {
-	font-weight: bold;
-}
-
-.frm-buttons {
-	margin: 0.75em 1.417em .8em 1.417em;
-	position: relative;
-	border-top-style: solid;
-	border-top-width: 1px;
-	padding: 1.1em 0 0.3em 18em;
-}
-
-.frm-buttons .submit {
-	margin-right: 0.75em;
-}
-
-.frm-buttons .primary {
-	margin-right: 2em;
-}
-
-.submit input,
-.cancel input {
-	overflow: visible;
-	padding-left: 0.5em;
-	padding-right: 0.5em;
-	font-size: 1.084em;
-}
-
-.button-set .submit {
-	padding-left: 1em;
-}
-
-/* make buttons play nice in IE:
-   www.viget.com/inspire/styling-the-button-element-in-internet-explorer/ */
-button {
-	width: auto;
-	overflow: visible;
-}
-
-label,
-input[type="button"],
-input[type="submit"],
-button,
-select {
-	cursor: pointer;
-}
-
-input[type="submit"],
-input[type="button"],
-input[type="reset"],
-button {
-	display: inline-block;
-	vertical-align: baseline;
-	text-align: center;
-	text-decoration: none;
-	padding: .5em .65em;
-	-moz-border-radius: .25em;
-	-webkit-border-radius: .25em;
-	-khtml-border-radius: .25em;
-	border-radius: .25em;
-	border-style: solid;
-	border-width: 1px;
-	-webkit-appearance: button;
-	line-height: normal;
-}
-
-input[type="submit"]::-moz-focus-inner,
-input[type="button"]::-moz-focus-inner,
-input[type="file"]::-moz-focus-inner,
-input[type="reset"]::-moz-focus-inner,
-button::-moz-focus-inner {
-	border: none;
-	padding: 0;
-}
-
-input[type="submit"]:active,
-input[type="button"]:active,
-input[type="reset"]:active,
-button:active {
-	position: relative;
-	top: 1px;
-}
-
-input[type="submit"][disabled]:active,
-input[type="button"][disabled]:active,
-input[type="reset"][disabled]:active,
-button[disabled]:active {
-	position: relative;
-	top: 0;
-}
-
-.js_link {
-	border-bottom-style: dashed;
-	border-bottom-width: 1px;
-}
-/* Single Field Items (Text, Select, Checkbox)
--------------------------------------------------------------*/
-
-.sf-box label,
-.sf-box .aslabel {
-	float: left;
-	padding: 0;
-}
-
-.sf-set .checkbox label {
-	padding: 2px 0 2px 2.7em;
-}
-
-.sf-set .text label span,
-.sf-set .select label span,
-.sf-set .aslabel span {
-	float: left;
-	margin-left: -17em;
-	display: block;
-	position: relative;
-	padding: 2px 0 2px 1em;
-	width: 16em;
-	text-align:right;
-}
-
-.sf-set .checkbox label span {
-	float: left;
-	margin-left: -18em;
-	display: block;
-	position: relative;
-	padding: 0 0 0 2em;
-	width: 16em;
-	left: -3em;
-	text-align:right;
-	font-weight:bold;
-}
-
-.sf-set .text label small,
-.sf-set .select label small {
-	display: block;
-	text-align: left;
-	position: relative;
-	margin: 2em 1em 0 1em;
-	padding-top: .25em;
-	font-size: 0.917em;
-}
-
-.sf-set .fld-input {
-	position: absolute;
-	top: 0;
-	left: 0;
-	display: block;
-	padding: 0.5em 1em;
-}
-
-
-.sf-set .checkbox input {
-	margin: .2em 0 .2em -0.2em;
-}
-
- /* Fixes alignment issue in Safari */
-.sf-set .text input:not([title]) {
-	height: 100%;
-}
-
-.sf-set .sf-short input {
-	width: 4em;
-}
-
-.sf-set .sf-short label small {
-	font-size: 1em;
-	padding: 2px 0;
-	margin: 0 1em 0 7em;
-}
-
-input[type="radio"] {
-	vertical-align: middle;
-    bottom: 1px;
-}
-
-
-input[type="checkbox"] {
-	vertical-align: middle;
-    bottom: 1px;
-}
-
-table input[type="checkbox"] {
-	vertical-align: baseline;
-}
-
-
-/* Multi-Field Items (Radio/Checkbox Groups)
--------------------------------------------------------------*/
-
-.mf-box .mf-item {
-	position: relative;
-	top: -0.166em;
-	padding: .3em 0;
-}
-
-.mf-set legend {
-	position: absolute;
-	height: 0;
-	background: transparent;
-}
-
-.mf-set legend span {
-	position: absolute;
-	left: -17em;
-	width: 16em;
-	padding: 0.5em 1em;
-	margin: 1px 0 2px 0;
-	overflow: hidden;
-	display: block;
-	text-align: right;
-	font-weight: bold;
-}
-
-.mf-set legend span em {
-	display: block;
-	white-space: normal;
-	font-style: normal;
-	font-weight:normal;
-	font-size: 0.917em;
-}
-
-.mf-item .fld-input {
-	position: absolute;
-	top: 0.25em;
-	left: 0;
-	display: block;
-	padding: 0 1em;
-}
-
-.mf-item input {
-	margin: .1em 0 .1em -0.25em;
-}
-
-.mf-item label {
-	padding: 1px 0 1px 2.7em;
-	float: left;
-}
-
-.mf-set .mf-yesno .mf-item {
-	width: 11em;
-	float: left;
-}
-
-.mf-set .mf-field {
-	float: left;
-	padding: 0 1em 0 1em;
-	border-left: 1px solid #ccc;
-}
-
-.mf-set .mf-field1 {
-	border-left: none;
-}
-
-.mf-set .mf-field label,
-.mf-set .mf-field .aslabel {
-	position: absolute;
-	top: -2em;
-	display: block;
-}
-
-.mf-set .mf-cell .fld-input {
-	position: static;
-	padding: 0 0 0 1em;
-	border-left: 1px solid #ccc;
-}
-
-.frm-hdgroup {
-	padding-top: 2em;
-}
-
-.sf-set .sf-box .sf-forum {
-	width: 25em;
-}
-
-.mf-set .mf-box .forum-field {
-	width: 25em;
-}
-
-/* Multi Checkbox Widget
--------------------------------------------------------------*/
-
-.checklist {
-	min-height: 6em;
-	max-height: 9em;
-	max-width: 30em;
-	overflow: auto;
-	border-style: solid;
-	border-width: 1px;
-	position: relative;
-	padding: 0.25em 0.5em;
-	margin: 0 1em;
-}
-
-.checklist fieldset {
-	height: auto;
-}
-
-.checklist legend,
-.checklist legend span {
-	font-weight: bold;
-	position: static;
-	padding: 0;
-	height: auto;
-	text-align:left;
-}
-
-.checklist legend span {
-	width: auto;
-	max-width: 25em;
-}
-
-
-.checklist-item {
-	position: relative;
-	height: auto;
-}
-
-.checklist-item label {
-	display: block;
-	padding: 0 0 0 2.25em;
-	float: none;
-	height: 100%;
-}
-
-.checklist-item .fld-input {
-	position: absolute;
-	left: 0;
-	top: 0;
-	padding: 0;
-	margin: 0;
-}
-
-.checklist-item input {
-	margin: 0;
-}
-
-
-/* Single Field Textareas and Long Inputs (Flexi Width)
--------------------------------------------------------------*/
-
-.txt-box label {
-	float: left;
-}
-
-.txt-set label span {
-	float: left;
-	margin-left: -17em;
-	display: block;
-	position: relative;
-	padding: 2px 1em;
-	width: 16em;
-	text-align:right;
-}
-
-.txt-set label small {
-	display: block;
-	text-align: left;
-	position: relative;
-	margin: 0 1em 0 -1px;
-	padding: 2px 1.25em;
-	font-size: 0.917em;
-	z-index: 100;
-}
-
-.txt-set .txt-input {
-	position: relative;
-	width: 100%;
-}
-
-.txt-set .fld-input {
-	display: block;
-	padding: 0 0 0 1em;
-}
-
-.txt-set textarea {
-	width: 95%;
-	resize: vertical;
-}
-
-input[type="text"],
-input[type="password"],
-input[type="email"],
-input[type="url"],
-input[type="search"],
-input[type="number"],
-textarea {
-	border-width: 1px;
-	border-style: solid;
-	padding: .25em;
-}
-
-#quick-search {
-	padding: .1em .2em;
-}
-
-/* Error handling
--------------------------------------------------------------*/
-
-.req-warn {
-	display: none;
-}
-
-#req-msg p em,
-.required label span em {
-	font-style: normal;
-	font-weight: normal;
-}
-
-.required label span em {
-	float: left;
-	font-size: 0.917em;
-	line-height: 1.2em;
-	width: 100%;
-	position: relative;
-}
-
-.req-error {
-	display: block;
-}
-
-.required label span  {
-	font-weight: bold;
-}
-
-/*************************************************************
-G - MAIN CONTENT - TOPICS AND PARSED CONTENT
-**************************************************************/
-
-/* Structure
--------------------------------------------------------------*/
-
-.post {
-	border-style: solid;
-	border-width: 1px;
-	position: relative;
-	margin: 1.417em;
-	margin-top: -1.417em;
-}
-
-.firstpost,
-.singlepost {
-	margin-top: 1.417em;
-}
-
-.main-topic .lastpost {
-	border-bottom: 0;
-}
-
-.main-topic .post {
-	border-style: solid none;
-	margin: 0;
-}
-
-.main-topic .firstpost {
-	border-top: none;
-}
-
-.posthead {
-	margin-left: 18em;
-	border-style: none none none solid;
-	border-width: 1px;
-}
-
-.posthead .hn {
-	padding-right: 1.5em;
-	padding-left: 1em;
-	border-style: none none dashed none;
-	border-width: 1px;
-}
-
-.posthead .post-byline a,
-.posthead .post-byline strong {
-	font-size: 1.167em;
-	font-weight: bold;
-	text-decoration: none;
-	font-style: normal;
-}
-
-.posthead .post-byline {
-	float: left;
-	width: 15.5em;
-	padding: 0.5em 1em 0.5em 1.5em;
-	margin-left: -19em;
-	margin-top: -0.5em;
-	position: relative;
-	left: -1px;
-	overflow: hidden;
-}
-
-.posthead .post-num {
-	float: right;
-}
-
-#brd-modtopic .posthead .hn {
-	padding-right: 2.7em;
-}
-
-.post-title {
-	padding: 0 1.5em 0.5em 1em;
-	margin-top: -1px;
-	position: relative;
-}
-
-.post-title span {
-	display: block;
-	width: 100%;
-	overflow: hidden
-}
-
-.post-title a {
-	font-size: 1em;
-	text-decoration: none;
-	font-weight: bold;
-}
-
-.post-title small,
-.post-title small a {
-	font-size: 1em;
-	font-weight: normal;
-	white-space: nowrap;
-}
-
-.posthead p.item-select {
-	position: absolute;
-	top: 0;
-	right: 0.75em;
-	height: 2.5em;
-}
-
-.postbody {
-	margin-left: 18em;
-	position: relative;
-	border-left-style: solid;
-	border-left-width: 1px;
-	padding: 0.5em 1.5em 0 1em;
-	clear: both;
-}
-
-.postfoot {
-	padding-left: 18em;
-	border-top-style: none;
-	border-top-width: 1px;
-	position: relative;
-}
-
-.postfoot .post-options {
-	border-left-style: solid;
-	border-left-width: 1px;
-}
-
-.postbody .post-author {
-	float: left;
-	width: 15.5em;
-	margin-left: -19em;
-	left: -1px;
-	position: relative;
-	padding: 0 1em 0.5em 1.5em;
-	overflow: hidden;
-	margin-top: -1em;
-}
-
-.postbody .post-author ul {
-	margin: 0;
-	padding: 0 0 0.5em 0;
-	list-style: none;
-}
-
-.author-ident .useravatar img {
-	display: block;
-	padding: 0.5em 0;
-}
-
-.author-ident .username {
-	display: none;
-}
-
-.author-ident .usertitle {
-	font-weight: bold;
-	line-height: normal;
-}
-
-.author-ident .userstatus {
-	padding: 0.75em 0 0.25em 0;
-	margin: 0;
-	line-height: 0.75em;
-	width: 100%;
-}
-
-.author-ident .userstatus span {
-	font-size: 0.917em;
-	display: block;
-	border-left-style: solid;
-	border-left-width: 0.7em;
-	text-indent: 0.5em;
-}
-
-.author-info li span strong {
-	font-weight: normal;
-}
-
-.online .author-ident .userstatus span {
-	font-weight: bold;
-}
-
-.postfoot .post-contacts {
-	float: left;
-	margin-left: -18em;
-	width: 15.5em;
-	padding: 0.5em 1em 0.5em 1.5em;
-	position: relative;
-	left: -1px;
-}
-
-.postfoot .post-actions {
-	padding: 0.5em 1.5em 0.5em 1em;
-	text-align: right;
-	display: block;
-	float: right;
-}
-
-.postfoot .post-actions > span {
-	margin-left: 0.75em;
-}
-
-.postfoot .post-contacts > span {
-	margin-right: 0.75em;
-}
-
-/* Content
--------------------------------------------------------------*/
-
-.entry-content {
-	padding-bottom: 1em;
-	overflow: hidden;
-	width: 100%;
-	min-height: 8em;
-	font-size: 1.084em;
-}
-
-#brd-help .entry-content {
-	min-height: 4em;
-}
-
-.entry-content ol {
-	padding-left: 2.5em;
-	list-style-type: decimal;
-}
-
-.entry-content ol p,
-.entry-content ul p {
-	padding: 0;
-}
-
-.entry-content ol.alpha {
-	list-style-type: upper-alpha;
-}
-
-.entry-content h5 {
-	font-weight: bold;
-	font-size: 1.084em;
-	padding: 0.5em 0;
-}
-
-.entry-content img {
-	vertical-align: text-top;
-	max-width: 100%;
-}
-
-.entry-content .quotebox,
-.entry-content .codebox {
-	border-style: solid;
-	border-width: 1px;
-	margin: 0.75em 1em;
-	padding: 1em 0.75em;
-}
-
-.entry-content .codebox {
-	font-size: .97em;
-}
-
-.entry-content blockquote {
-	overflow: hidden;
-	width: 100%;
-}
-
-.entry-content .quotebox cite {
-	display: block;
-	font-style: normal;
-	font-weight: bold;
-}
-
-.entry-content pre {
-	margin: 0;
-	max-height: 35em;
-	min-height: 2em;
-	overflow: auto;
-	padding: 0 2% 0.1em 0;
-	width: 98%;
-}
-
-.entry-content span.bbu {
-	text-decoration: underline;
-}
-
-.entry-content br,
-.sig-demo br,
-.user-box br,
-.main-message br {
-	display: inline;
-}
-
-.sig-content {
-	padding-top: 2em;
-	font-size: .917em;
-}
-
-span.sig-line {
-	display: block;
-	width: 200px;
-	border-top-style: solid;
-	border-top-width: 1px;
-	padding-bottom: 0.5em;
-}
-
-
-/*************************************************************
-H - MAIN TABLES
-**************************************************************/
-
-/* Table Cells Widths and Alignment
--------------------------------------------------------------*/
-
-table {
-	width: 100%;
-	table-layout: fixed;
-	empty-cells: show;
-	border-spacing: 0;
-	line-height: 1.3333em;
-	border-collapse: collapse;
-}
-
-td {
-	overflow: hidden;
-	vertical-align: middle;
-}
-
-table caption {
-	display: none;
-}
-
-#brd-userlist table .tc0 {
-	width: 30%
-}
-
-#brd-userlist table .tc1 {
-	width: 20%;
-	text-align: left;
-}
-
-#brd-userlist table .tc2 {
-	width: 10%;
-	text-align: center;
-}
-
-#brd-debug table {
-	border: none;
-	font-size: .95em;
-}
-
-#brd-debug .tcl {
-	white-space: nowrap;
-	width: 10%;
-}
-
-#brd-debug .tcr {
-	white-space: normal;
-	width: 90%;
-}
-
-#brd-admin-uresults table .tc0,
-#brd-admin-iresults table .tc0 {
-	width: 45%;
-	}
-
-#brd-admin-uresults table .tc1,
-#brd-admin-iresults table .tc1,
-#brd-admin-iresults table .tc2 {
-	width: 20%;
-	}
-
-#brd-admin-uresults table .tc2,
-#brd-admin-uresults table .tc4 {
-	width: 10%;
-	text-align: center;
-	}
-
-#brd-admin-uresults .tc3 {
-	width: 15%;
-	}
-
-#brd-admin-uresults td.tc0 span,
-#brd-admin-uresults td.tc3 span {
-	display: block;
-	white-space: nowrap;
-	}
-
-#brd-admin-iresults table .tc0 {
-	width: 25%;
-	}
-
-#brd-admin-iresults table .tc1 {
-	width: 25%;
-	}
-
-#brd-admin-iresults table .tc2 {
-	width: 20%;
-	}
-
-#brd-admin-iresults .tc3 {
-	width: 30%;
-	}
-
-
-/* Table Cell Styling
--------------------------------------------------------------*/
-
-.main-content th {
-	font-size: 1.084em;
-	padding: 0.462em 1.417em;
-	font-weight: normal;
-}
-
-td {
-	padding: 0.5em 1.417em;
-	border-width: 1px;
-	border-style: solid none none solid;
-}
-
-td.tc0 {
-	border-left-style: none;
-	border-left-width: 0
-}
-
-th {
-	padding: 0.5em 1.3em;
-	border-style: none;
-}
-
-td.actions,
-th.actions {
-	text-align: right;
-}
-
-td.actions span {
-	display: block;
-}
-
-
-/*************************************************************
-H - MAIN CONTENT - ODDMENTS
-**************************************************************/
-
-/* Reports
--------------------------------------------------------------*/
-
-.report {
-	margin-left: 4em;
-}
-
-.report h3 span {
-	display: block;
-	font-style: normal;
-}
-
-.report h3 cite {
-	font-style: normal;
-	font-size: 1.084em;
-	font-weight: bold;
-}
-
-.report h3 strong {
-	position: absolute;
-	left: -3.1em;
-	width: 1.5em;
-	text-align: right;
-	font-size: 1.167em;
-}
-
-.report p strong {
-	display: block;
-	font-weight: normal;
-}
-
-.report h4 {
-	border-bottom-style: dashed;
-	border-bottom-width: 1px;
-}
-
-#brd-admin-reports .frm-buttons {
-	margin-left: 4em;
-	margin-top: 0;
-}
-
-#brd-admin-reports .select-all {
-	float: right;
-}
-
-.report .item-select {
-	position: absolute;
-	top: 0;
-	right: 0.75em;
-	height: 2.5em;
-}
-
-/* Help File
--------------------------------------------------------------*/
-
-.help-box samp {
-	display: block;
-	margin-left: 1.5em;
-}
-
-.help-box h5 samp {
-	margin-left: 1.417em;
-}
-
-.help-box code {
-	font-family: courier;
-	font-size: 1.084em;
-}
-
-.help-box .entry-content {
-	padding: 0;
-}
-
-.help-box .hn {
-	padding-bottom: 0.5em;
-	border-bottom-style: dashed;
-	border-bottom-width: 1px;
-	margin-bottom: 0.5em;
-	color: #294F6E
-}
-
-/* Flash Messages
--------------------------------------------------------------*/
-
-#brd-messages {
-	text-align: center;
-	position: fixed;
-	top: 0;
-	z-index: 999;
-	padding: 0;
-	left: 0;
-	right: 0;
-}
-
-#brd-messages span {
-	text-align: center;
-	padding: .35em 1.3em;
-	margin: 0 1em;
-	font: 87%/1.5em Arial, sans-serif;
-	font-weight: bold;
-	line-height: 2em;
-	border-width: 1px;
-	border-style: solid;
-}
-
-
-/*************************************************************
-IE6 - FIXES
-**************************************************************/
-
-/* Float Clearing and Has Layout Fixes
--------------------------------------------------------------*/
-
-.ie6 .brd-page,
-.ie6 .main,
-.ie6 #brd-index .main-subhead,
-.ie6 .main-content .main-item,
-.ie6 .main-content .main-item ul,
-.ie6 .gen-content,
-.ie6 .main-content,
-.ie6 .ct-box,
-.ie6 .frm-group,
-.ie6 .mf-set,
-.ie6 .sf-set,
-.ie6 .mf-box,
-.ie6 .sf-box,
-.ie6 .mf-item,
-.ie6 .txt-set,
-.ie6 .txt-box,
-.ie6 .frm-form label,
-.ie6 fieldset,
-.ie6 span.fld-input,
-.ie6 .main-subhead .hn,
-.ie6 .post,
-.ie6 .posthead,
-.ie6 .postbody,
-.ie6 .post-entry,
-.ie6 .postfoot .post-options {
-	zoom: 1;
-}
-
-.ie6 .ct-box ol,
-.ie6 .ct-box ol li {
-	zoom: normal;
-}
-
-.ie6 .postfoot .post-contacts {
-	position: absolute;
-}
-
-/* Forms
--------------------------------------------------------------*/
-
-.ie6 #brd-wrap fieldset {
-	padding-top: 1px;
-	position: relative;
-}
-
-.ie6 fieldset legend {
-	margin-left: -7px;
-}
-
-.ie6 #brd-wrap .checklist {
-	height: 9em;
-	width: 30em;
-	overflow: auto;
-}
-
-.ie6 .sf-set .checkbox label span {
-	padding-right: 0;
-	padding-left: 5em;
-}
-
-.ie6 #info-censored-intro,
-.ie6 #info-ranks-intro {
-	margin-bottom: 3em;
-}
-
-.ie6 .important strong {
-	margin-right: 1ex;
-}
-
-.ie6 #brd-stats .st-users {
-	margin-bottom: -1ex;
-}
-
-/* Fixes for the forms in post.php and edit.php. */
-.ie6 .txt-box label span {
-	position: absolute;
-}
-
-/* Fix for index.php: no backgroud for the first main-head. */
-.ie6 #brd-index .main-head {
-	position: relative;
-}
-
-.ie6 input {
-	vertical-align: text-bottom;
-}
-
-/* Footer
--------------------------------------------------------------*/
-
-.ie6 #extensions-used {
-	clear: left;
-}
-
-/* Remove scrollbar from empty textarea */
-.oldie textarea {
-	overflow: auto;
-}
-
-
-/*************************************************************
-IE7 - FIXES
-**************************************************************/
-
-/* Float Clearing and Has Layout Fixes
--------------------------------------------------------------*/
-
-.ie7 .brd-page,
-.ie7 .main,
-.ie7 #brd-index .main-subhead,
-.ie7 #brd-index .forum-item,
-.ie7 .gen-content,
-.ie7 .main-content,
-.ie7 .ct-box,
-.ie7 .frm-group,
-.ie7 .mf-set,
-.ie7 .sf-set,
-.ie7 .mf-box,
-.ie7 .sf-box,
-.ie7 .mf-item,
-.ie7 .txt-set,
-.ie7 .txt-box,
-.ie7 .frm-group label,
-.ie7 fieldset,
-.ie7 span.fld-input,
-.ie7 .main-subhead .hn,
-.ie7 .post,
-.ie7 .posthead,
-.ie7 .postbody,
-.ie7 .post-entry,
-.ie7 .postfoot .post-options,
-.ie7 #brd-stats ul {
-	max-height: 100%;
-	zoom: 1;
-}
-
-/* Forms
--------------------------------------------------------------*/
-
-.ie7 #brd-wrap fieldset {
-	padding-top: 1px;
-	position: relative;
-}
-
-.ie7 fieldset legend {
-	margin-left: -7px;
-}
-
-.ie7 .entry-content .codebox pre {
-	min-height: 3em
-}
-
-.ie7 #info-censored-intro,
-.ie7 #info-ranks-intro {
-	margin-bottom: 3em;
-}
-
-.ie7 .main-forum .main-item .item-starter {
-	margin-left: 1ex;
-}
-
-.ie7 #brd-admin-settings-setup #fld19,
-.ie7 #brd-post textarea#fld1,
-.ie7 #brd-post textarea#fld2,
-.ie7 #brd-viewtopic textarea#fld1,
-.ie7 #brd-postedit #fld2 {
-	margin-top: -19px;
-}
-
-.ie7 .item-starter {
-	position: relative;
-	left: -0.5em;
-}
-
-.ie7 input[type="checkbox"] {
-	vertical-align: baseline;
-}
-
-
diff -urN punbb-1.4.1/style/Oxygen/Oxygen.min.css punbb-1.4.2/style/Oxygen/Oxygen.min.css
--- punbb-1.4.1/style/Oxygen/Oxygen.min.css	1970-01-01 00:00:00.000000000 +0000
+++ punbb-1.4.2/style/Oxygen/Oxygen.min.css	2012-02-09 20:42:20.000000000 +0000
@@ -0,0 +1,9 @@
+html,body,div,p,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,legend,blockquote,table,th,td,input,textarea,button,select{margin:0;padding:0;text-align:left}fieldset,img,cite{border:0}.visual-hidden{visibility:hidden}br,hr,.hr,.hidden{display:none}.border-less{border:none!important}.small-font{font-size:.917em}.list-clean{list-style-type:none}.prepend-top{margin-top:1em!important}.nowrap{white-space:nowrap}html{height:99%;overflow-y:scroll}body{font-size:100%}.brd-page{font:75%/1.5em Verdana,Helvetica,Arial,sans-serif}h1,h2,h3,h4,h5,h6{font-size:1em;font-weight:normal}samp,code,pre,option,optgroup,input,select,textarea,td,th{font-size:1em;font-family:Verdana,Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal}samp,code,pre{font-family:monospace,sans-serif;white-space:pre-wrap;word-wrap:break-word}.brd-page:after,.gen-content:after,.ct-box:after,#brd-index .item-head:after,#brd-index .main-item:after,#brd-index ul.item-info:after,.frm-group:after,.mf-set:after,.sf-set:after,.mf-box:after,.sf-box:after,.mf-item:after,.txt-set:after,.txt-box:after,.frm-form label:after,fieldset:after,span.fld-input:after,.posthead:after,.postbody:after,.postfoot .post-options:after{content:"\0020";display:block;font-size:0;height:0;line-height:.0;overflow:hidden;visibility:hidden;clear:both}.clearfix:before,.clearfix:after{content:"\0020";display:block;height:0;overflow:hidden}.clearfix:after{clear:both}.clearfix{zoom:1}#brd-stats .hn,#qjump label,.post-byline span,.posthead .post-link span,.admin .main-subhead,.main-item .item-info li span.label,.main-item .item-info li label,.main-item .you-posted,.main-item .item-num,.group-legend,.group-legend span,.sf-set legend,.sf-set legend span,.main-pagehead .page-info,p.item-select label,.mf-extra .mf-field label,.mf-extra .mf-field .aslabel,.item-subject .item-nav span,.post-options a span,.main-title,.main-head .hn small,.entry-title,.menu-page .main-head{font-size:0;left:-999em;text-indent:-999em;position:absolute;line-height:0;visibility:hidden}.brd{padding:1em 2em;margin:0 auto;max-width:1100px;min-width:700px;width:90%}#brd-redirect,#brd-maint,#brd-util{margin:50px auto 12px auto;width:60%}.brd-page{float:left;width:100%;position:relative}.main-content,.gen-content{border-style:solid;border-width:1px}.gen-content{padding:0 1.5em}#brd-about,#brd-stats{margin-top:1em}.main-content,#brd-visit,#brd-qpost,#brd-announcement{margin-bottom:1em}#brd-announcement{padding:.5em 1.5em;margin-top:1em}#brd-announcement br{display:inline}.main-options{border-top:0;margin:-1em 0 1em 0}#rules-content{padding:1.5em}#rules-content h1{font-size:1.3em;line-height:1em;margin-bottom:.7em}#rules-content h2{font-size:1.2em;font-weight:bold;margin-bottom:.3em}#rules-content h3{font-size:1.1em;font-weight:bold}#rules-content h4,#rules-content h5{font-size:1;font-weight:bold}#rules-content p{margin:0 0 .65em}p,.hn{padding:.35em 0}ul,ol{padding:.35em 0 .35em 2em}ul.spaced{padding:.25em 0 .25em 2em}.spaced li{padding:.25em 0}th{font-size:1.084em;padding:.462em 1.417em;border-bottom-style:solid;border-bottom-width:1px}.main-head,.main-foot{border-style:solid;border-width:1px;padding:0 1.417em}.main-head .hn,.main-foot .hn{padding-right:10em}h2.main-subhead{border-style:solid;border-width:1px;padding:.462em 10em .426em 1.417em}.column-title{border-style:solid;border-width:1px;position:relative;margin-bottom:-1px}.main-subhead{border-style:solid;border-width:1px;border-bottom:0}.main-subhead .hn{padding:.462em 1.417em;position:relative}.main-foot{margin-top:-1em}#brd-announcement h1,.main-extensions .ct-legend,.main-hotfixes .ct-legend{border-bottom-style:dashed;border-bottom-width:1px;font-size:1.1em;font-weight:bold}#brd-announcement h1{margin-bottom:.5em}.main-pagehead .hn{padding:.5em 0}.content-head{margin:.5em 1.417em 0}.content-head .hn{border-style:none none double none;border-width:3px;padding:.462em 0}.options>span{padding:0 0 0 .3em;margin:0 0 0 .25em}.options .js_link{padding:0;margin:0 0 0 .55em}.options>span.first-item{border-left:0;padding-left:0;margin-left:0}.extension .options,.hotfix .options{border-top-style:dashed;border-top-width:1px}.extension h3>em{font-style:normal}.extension .data-list{list-style-type:none;padding-left:0}.ct-box{border-style:solid;border-width:1px;-moz-border-radius:.35em;-webkit-border-radius:.35em;-khtml-border-radius:.35em;border-radius:.35em;margin:1.417em;padding:.5em 1em;position:relative}.ct-box li{padding:0;margin:0 0 .7em 0}.ct-set{border-style:solid;border-width:1px;margin:1.417em;padding:0 0 0 17em;position:relative}.ct-group{border-style:solid;border-width:1px;margin:1.417em}.frm-group .ct-set{border-style:dashed none none none;margin:0}.ct-group .ct-set{border-style:dashed none none none;margin:0 1em;padding:0 0 0 16em}.ct-group .group-item1{border:0}.ct-group .set1,.frm-group .set1{border-top:0}.ct-group .ct-box,.frm-group .ct-box{border-style:none;margin:0}.ct-group .ct-set .ct-box,.ct-set .ct-box,.frm-group .ct-set .ct-box{border-style:none;margin:0}
+.ct-group .set1{border-top:0}.ct-set .ct-legend{float:left;margin-left:-17em;width:16em;position:relative;text-align:right;font-weight:bold}.ct-set ul{padding-left:0;list-style:none}.ct-box div{padding:.35em 0}.ct-box p.options{float:none}.ct-box .info-list{padding-bottom:0}.user-ident{padding-left:0;list-style:none}.user-ident .username a,.user-ident .username strong{font-size:1.5em;font-weight:normal}.user-ident .username a,.user-ident .username a:link,.user-ident .username a:visited{text-decoration:none}.user-ident .username a:hover,.user-ident .username a:active,.user-ident .username a:focus{text-decoration:underline}.user-ident .usertitle{font-weight:bold}.user-ident .useravatar{padding:.25em 0}.user-ident .useravatar img{display:block}.main-message{padding:.5em 1.417em}.main-message p span{display:block;padding-top:.5em}#brd-maint .main-message{padding:0}#brd-navlinks,.main-menu,.admin-menu{padding:0 .75em}.main-menu,.admin-menu{border:0}#brd-navlinks ul,.main-menu ul,.admin-menu ul{list-style-type:none;float:left;padding:0}#brd-navlinks li,.main-menu li,.admin-menu li{float:left;display:inline}#brd-navlinks a,.main-menu a,.admin-menu a{float:left;position:relative;padding:.55em .7em}#brd-navlinks a{padding:.43em .7em}#brd-navlinks li.first-item,.main-menu li.first-item,.admin-menu li.first-item{border-left:0}.admin-submenu{border-style:solid;border-width:0 1px}.admin-submenu ul{padding:.5em 0;list-style:none}.admin-submenu li{display:inline;margin-right:.75em}.admin-submenu .active a{font-weight:bold}#brd-head{padding-bottom:.75em;padding-top:1em;border-radius:.4em .4em 0 0}#brd-title{padding-bottom:0}#brd-title a,#brd-title strong{font-size:1.5em;text-decoration:none;font-weight:normal}#brd-desc{padding-top:0;padding-bottom:0}#brd-navlinks ul{margin:0;float:left}#brd-navlinks li{display:inline}#brd-navlinks li a{text-decoration:none}ul#brd-admod{float:right;text-align:right}#brd-access{text-align:right;padding:0;height:0;margin:0;position:absolute;background:transparent}#brd-access a,#brd-access a:link,#brd-access a:visited{height:2em;line-height:2em;position:absolute;left:-999em;margin:1px;width:12em}#brd-access a:hover,#brd-access a:active,#brd-access a:focus{text-indent:0;background:#000;position:static;float:right}#brd-visit #welcome{float:left}#brd-visit #visit-links{text-align:right;float:none}#brd-pagepost-end{border-top:0}#brd-pagepost-top{border-bottom:0}#brd-admin-bans #brd-pagepost-end{margin-top:-1em}.paging{float:left}.posting{text-align:right;float:right}.paging{white-space:nowrap}.paging a,.paging strong,.paging span{padding:0 1em;border-left-style:solid;border-left-width:1px;float:left;white-space:nowrap}.paging .first-item,.paging span.pages{border-left:0;padding-left:0}.posting .newpost{font-size:1.084em;font-weight:bold}.crumbs .crumblast span{font-weight:normal}.crumbs span,.crumbs a{white-space:nowrap}.crumbs{margin:.5em 0;padding:0 1.417em;font-size:1.084em}#brd-crumbs-top .crumblast{font-size:1.15em}#brd-stats ul{list-style:none;padding-left:0}#brd-stats ul li.st-users{float:left;clear:both;white-space:nowrap}#brd-stats ul li.st-activity{text-align:right;display:block;white-space:nowrap}#brd-stats li strong{font-weight:bold}#brd-online{padding-top:.5em;padding-bottom:.5em;border-top:0}#brd-online .hn,#brd-online p{padding-bottom:0;padding-top:0}#brd-online .hn{float:left;margin-right:.5em}#qjump{float:left;padding:.5em 0}#qjump div,#qjump label{padding:0;border:0}#copyright{text-align:right;margin:0}#querytime{text-align:right;font-size:.917em;padding:0}#extensions-used{border-bottom:1px dotted}p.options{border-top:0;float:right}.main-modoptions .options{text-align:center}a.feed{padding-left:22px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAAK/INwWK6QAAAVZQTFRFzF0V2XIp2l4q3GEr3W4v3mUs3m8v3nAw33Ew4Got4HVF4XQw4Xgx4nA24nYx424u43kx43ky5Hsy5HxH5XQu5Xwy5X0y5nQv5n8z5otg53gv54Ez6Hkx6II06IM06IU16IlV6X456YU16Yg26n0x6oc16olJ638y64k17IEy7Io27JZj7oUz7oU07pFM7ppk7quJ7rKV741B751k8Ik08Ys18beX8o018pNC8qNm86Rn9JE29KZn9Kxz9LKA9L2Y9ZI39alo9b+Z9cCY9pQ39ptE95c496FQ961p98OZ99S++Jk5+J5E+K9p+LR1+L+O+Zo5+Z1B+Z9F+aVS+cib+de/+pw5+qJG+qxe+rNq+r6D+sOP+s6n+tOz+506+6lS+69e+7l3++bY/MKE/Nm1/OPN/dq1/d/B/eXN/fHm/ubO/uza/vHm/vLm/vfy/vjy//nz////L/lnWgAAAAJ0Uk5TEI9BVkHYAAAA50lEQVQY0yXOu07DMBSA4XNxnDtE4bYBFYxMMPAaPCoPg5gqBgRDSVtok1McO3awxPj904+ApSJFzIqZxrcZ8brXRcIZq5wK7Z65Cu1Vy/TvbBiV0vU9QPjcYfRGmIsjtkDJ8ZkO0bLnukL73f1WKoNOxPQxNI9taUTr9Gdr7IE4S6g6v21MDwtvZYoD9nU1YWOXhhpxnpTK58OX4Kl5gTtnvOKcFjyu00SvPOf7mZhOijTZvsOFLKGZAsW/GQbpoHZrwBDw5iET2RibTR9K70yC+GTjjxVn7BTmckDAS3bOT977ENjOfw1gcm/NBi+EAAAAAElFTkSuQmCC) center left no-repeat}.content-options,.ct-options{float:right;margin-top:-2.6em;padding:.5em 1.417em;position:relative}.item-summary{height:2.5em;padding:0;position:relative;font-size:1em}.item-summary span{width:100%;position:absolute;left:-999em;text-indent:-999em;display:block}.item-summary strong{position:absolute;left:999em;text-indent:0;padding:.5em 0;white-space:nowrap;font-weight:normal}
+.item-summary strong:first-letter {text-transform:uppercase}.item-summary .subject-title{padding-left:1.417em}.item-summary .info-topics,.item-summary .info-replies{margin-left:100%;text-align:center;width:7em;left:965em}.item-summary .info-forum{margin-left:100%;text-align:center;width:20em;left:952em}.item-summary .info-posts,.item-summary .info-views{margin-left:100%;text-align:center;width:7em;left:972em}.item-summary .info-lastpost{margin-left:100%;left:980em}p.forum-noview .info-replies{left:972em}.main-content .main-item{border-top-style:solid;border-top-width:1px;overflow:hidden;position:relative;line-height:1.4em}.main-content .main-first-item{border-top:0}.main-content .main-item ul{float:right;position:relative;padding:0;list-style:none}.main-content .main-item p,.main-content .main-item .hn{padding:0}.hn .item-status{font-weight:normal}.hn .item-status em{font-style:normal}.main-item .item-subject,.main-content .main-item li{float:left;border-left-style:solid;border-left-width:1px;margin:0 -2px -9.7em 0;position:relative;padding-top:.6em;padding-bottom:10.4em}.main-item .item-subject{overflow:hidden;width:100%}li.info-topics,li.info-posts,li.info-views,li.info-replies{width:7em;text-align:center}li.info-forum{width:20em;text-align:center}li.info-lastpost{width:20em}li.info-lastpost cite{overflow:hidden;width:18em}.main-item li strong{font-weight:normal}.main-content .main-item{padding-right:35em;padding-left:3.75em}.main-content .main-item .hn{position:relative}.main-content .main-item ul{width:34em;right:-35em;margin-left:-34em}.forum-noview .main-item{padding-right:28em}.forum-noview .main-item ul{width:27em;right:-28em;margin-left:-27em}.forum-forums .main-item{padding-right:48em}.forum-forums .main-item ul{width:47em;right:-48em;margin-left:-47em}.item-subject span.modlist{display:block}#brd-index .main-item .hn span{font-size:1.084em;font-weight:bold}#brd-index .main-item .hn small{font-size:1em}.item-status{font-weight:bold}.main-content .main-item cite{font-style:normal}.item-nav,.item-nav a,.item-nav span{white-space:nowrap;font-style:normal}.item-subject .hn,.item-subject p{margin:0 0 0 1.5em}li.info-lastpost cite,li.info-lastpost span,li.info-forum a{display:block;padding:0 1em;font-style:normal;font-weight:normal}li.info-lastpost strong{padding:0 0 0 1em;font-style:normal;font-weight:normal}.main-item li.info-select{position:absolute;right:0;top:0;padding:.3em;border-style:none none solid solid;border-width:1px}.main-content .main-item .icon{border-style:solid;border-width:.5833em;height:0;width:0;float:left;margin-top:.667em;margin-left:-2.417em}.main-content .main-item .hn .posted-mark{position:absolute;font-size:2em;width:1em;left:-0.5em;top:0}.frm-group{border-top-style:dashed;border-top-width:1px;margin:1.417em;padding:1.3em 0 0}.group1{border-top:0;padding-top:0}.sf-box,.mf-box,.txt-box{margin:1.417em;padding:.5em 0;position:relative}.sf-set,.mf-set,.txt-set{margin:1.417em;padding:0 0 0 17em;position:relative}.sf-set .sf-box,.mf-set .mf-box,.txt-set .txt-box{margin:0}.frm-group .sf-set,.frm-group .mf-set,.frm-group .txt-set{margin:0}.text input{font-size:1.084em}select{height:25px;*height:auto;line-height:25px;padding-left:3px}optgroup{font-weight:bold}.frm-buttons{margin:.75em 1.417em .8em 1.417em;position:relative;border-top-style:solid;border-top-width:1px;padding:1.1em 0 .3em 18em}.frm-buttons .submit{margin-right:.75em}.frm-buttons .primary{margin-right:2em}.submit input,.cancel input{overflow:visible;padding-left:.5em;padding-right:.5em;font-size:1.084em}.button-set .submit{padding-left:1em}button{width:auto;overflow:visible}label,input[type="button"],input[type="submit"],button,select{cursor:pointer}input[type="submit"],input[type="button"],input[type="reset"],button{display:inline-block;vertical-align:baseline;text-align:center;text-decoration:none;padding:.5em .6em;-moz-border-radius:2px;-webkit-border-radius:2px;-khtml-border-radius:2px;border-radius:2px;border-style:solid;border-width:1px;-webkit-appearance:button;line-height:normal}input[type="submit"]::-moz-focus-inner,input[type="button"]::-moz-focus-inner,input[type="file"]::-moz-focus-inner,input[type="reset"]::-moz-focus-inner,button::-moz-focus-inner{border:0;padding:0}input[type="submit"]:active,input[type="button"]:active,input[type="reset"]:active,button:active{position:relative;top:1px}input[type="submit"][disabled]:active,input[type="button"][disabled]:active,input[type="reset"][disabled]:active,button[disabled]:active{position:relative;top:0}.primary input[type="submit"],.primary input[type="button"],.primary input[type="reset"],.primary button{padding-left:1.2em;padding-right:1.2em}
+.js_link{border-bottom-style:dashed;border-bottom-width:1px}.sf-box label,.sf-box .aslabel{float:left;padding:0}.sf-set .checkbox label{padding:2px 0 2px 2.7em}.sf-set .text label span,.sf-set .select label span,.sf-set .aslabel span{float:left;margin-left:-17em;display:block;position:relative;padding:2px 0 2px 1em;width:16em;text-align:right}.sf-set .checkbox label span{float:left;margin-left:-18em;display:block;position:relative;padding:0 0 0 2em;width:16em;left:-3em;text-align:right;font-weight:bold}.sf-set .text label small,.sf-set .select label small{display:block;text-align:left;position:relative;margin:2em 1em 0 1em;padding-top:.25em;font-size:.917em}.sf-set .fld-input{position:absolute;top:0;left:0;display:block;padding:.5em 1em}.sf-set .checkbox input{margin:.2em 0 .2em -.1em}.sf-set .text input:not([title]){height:100%}.sf-set .sf-short input{width:4em}.sf-set .sf-short label small{font-size:1em;padding:2px 0;margin:0 1em 0 7em}input[type="radio"]{vertical-align:middle;bottom:1px}input[type="checkbox"]{vertical-align:middle;bottom:1px}table input[type="checkbox"]{vertical-align:baseline}.mf-box .mf-item{position:relative;top:-0.166em;padding:.3em 0}.mf-set legend{position:absolute;height:0;background:transparent}.mf-set legend span{position:absolute;left:-17em;width:16em;padding:.5em 1em;margin:1px 0 2px 0;overflow:hidden;display:block;text-align:right;font-weight:bold}.mf-set legend span em{display:block;white-space:normal;font-style:normal;font-weight:normal;font-size:.917em}.mf-item .fld-input{position:absolute;top:.25em;left:0;display:block;padding:0 1em}.mf-item input{margin:.1em 0 .1em -.1em}.mf-item label{padding:1px 0 1px 2.7em;float:left}.mf-set .mf-yesno .mf-item{width:11em;float:left}.mf-set .mf-field{float:left;padding:0 1em 0 1em;border-left:1px solid #ccc}.mf-set .mf-field1{border-left:none}.mf-set .mf-field label,.mf-set .mf-field .aslabel{position:absolute;top:-2em;display:block}.mf-set .mf-cell .fld-input{position:static;padding:0 0 0 1em;border-left:1px solid #ccc}.frm-hdgroup{padding-top:2em}.sf-set .sf-box .sf-forum{width:25em}.mf-set .mf-box .forum-field{width:25em}.checklist{min-height:6em;max-height:9em;max-width:30em;overflow:auto;border-style:solid;border-width:1px;position:relative;padding:.25em .5em;margin:0 1em}.checklist fieldset{height:auto}.checklist legend,.checklist legend span{font-weight:bold;position:static;padding:0;height:auto;text-align:left}.checklist legend span{width:auto;max-width:25em}.checklist-item{position:relative;height:auto}.checklist-item label{display:block;padding:0 0 0 2.25em;float:none;height:100%}.checklist-item .fld-input{position:absolute;left:0;top:0;padding:0;margin:0}.checklist-item input{margin:0}.txt-box label{float:left}.txt-set label span{float:left;margin-left:-17em;display:block;position:relative;padding:2px 1em;width:16em;text-align:right}.txt-set label small{display:block;text-align:left;position:relative;margin:0 1em 0 -1px;padding:2px 1.25em;font-size:.917em;z-index:100}.txt-set .txt-input{position:relative;width:100%}.txt-set .fld-input{display:block;padding:0 0 0 1em}.txt-set textarea{width:95%;resize:vertical}input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="search"],input[type="number"],textarea{border-width:1px;border-style:solid;padding:.25em}#quick-search{padding:.1em .2em}.req-warn{display:none}#req-msg p em,.required label span em{font-style:normal;font-weight:normal}.required label span em{float:left;font-size:.917em;line-height:1.2em;width:100%;position:relative}.req-error{display:block}.required label span{font-weight:bold}.post{border-style:solid;border-width:1px;position:relative;margin:1.417em;margin-top:-1.417em}.firstpost,.singlepost{margin-top:1.417em}.main-topic .lastpost{border-bottom:0}.main-topic .post{border-style:solid none;margin:0}.main-topic .firstpost{border-top:0}.posthead{margin-left:18em;border-style:none none none solid;border-width:1px}.posthead .hn{padding-right:1.5em;padding-left:1em;border-style:none none dashed none;border-width:1px}.posthead .post-byline a,.posthead .post-byline strong{font-size:1.167em;font-weight:bold;text-decoration:none;font-style:normal}.posthead .post-byline{float:left;width:15.5em;padding:.5em 1em .5em 1.5em;margin-left:-19em;margin-top:-0.5em;position:relative;left:-1px;overflow:hidden}.posthead .post-num{float:right}#brd-modtopic .posthead .hn{padding-right:2.7em}.post-title{padding:0 1.5em .5em 1em;margin-top:-1px;position:relative}.post-title span{display:block;width:100%;overflow:hidden}.post-title a{font-size:1em;text-decoration:none;font-weight:bold}.post-title small,.post-title small a{font-size:1em;font-weight:normal;white-space:nowrap}.posthead p.item-select{position:absolute;top:0;right:.75em;height:2.5em}
+.postbody{margin-left:18em;position:relative;border-left-style:solid;border-left-width:1px;padding:.5em 1.5em 0 1em;clear:both}.postfoot{padding-left:18em;border-top-style:none;border-top-width:1px;position:relative}.postfoot .post-options{border-left-style:solid;border-left-width:1px}.postbody .post-author{float:left;width:15.5em;margin-left:-19em;left:-1px;position:relative;padding:0 1em .5em 1.5em;overflow:hidden;margin-top:-1em}.postbody .post-author ul{margin:0;padding:0 0 .5em 0;list-style:none}.author-ident .useravatar img{display:block;padding:.5em 0}.author-ident .username{display:none}.author-ident .usertitle{font-weight:bold;line-height:normal}.author-ident .userstatus{padding:.75em 0 .25em 0;margin:0;line-height:.75em;width:100%}.author-ident .userstatus span{font-size:.917em;display:block;border-left-style:solid;border-left-width:.7em;text-indent:.5em}.author-info li span strong{font-weight:normal}.online .author-ident .userstatus span{font-weight:bold}.postfoot .post-contacts{float:left;margin-left:-18em;width:15.5em;padding:.5em 1em .5em 1.5em;position:relative;left:-1px}.postfoot .post-actions{padding:.5em 1.5em .5em 1em;text-align:right;display:block;float:right}.postfoot .post-actions>span{margin-left:.75em}.postfoot .post-contacts>span{margin-right:.75em}.entry-content{padding-bottom:2em;overflow:hidden;width:100%;min-height:7em}#brd-help .entry-content{min-height:4em}.entry-content ol{padding-left:2.5em;list-style-type:decimal}.entry-content ol p,.entry-content ul p{padding:0}.entry-content ol.alpha{list-style-type:upper-alpha}.entry-content h5{font-weight:normal;font-size:1.5em;line-height:1.5em}.entry-content img{vertical-align:text-top;max-width:100%}.entry-content .quotebox,.entry-content .codebox{border-style:solid;border-width:1px;margin:.75em 1em;padding:1em .75em}.entry-content .codebox{font-size:.97em}.entry-content blockquote{overflow:hidden;width:100%}.entry-content .quotebox cite{display:block;font-style:normal;font-weight:bold}.entry-content pre{margin:0;max-height:35em;min-height:2em;overflow:auto;padding:0 2% .1em 0;width:98%}.entry-content span.bbu{text-decoration:underline}.entry-content br,.sig-demo br,.user-box br,.main-message br{display:inline}.sig-content{padding-top:2em;font-size:.95em}.sig-content a,.sig-demo a{border-bottom:solid;border-width:1px}span.sig-line{display:block;width:200px;border-top-style:solid;border-top-width:1px;padding-bottom:.5em}table{width:100%;table-layout:fixed;empty-cells:show;border-spacing:0;line-height:1.3333em;border-collapse:collapse}td{overflow:hidden;vertical-align:middle}table caption{display:none}#brd-userlist table .tc0{width:30%}#brd-userlist table .tc1{width:20%;text-align:left}#brd-userlist table .tc2{width:10%;text-align:center}#brd-debug table{border:0;font-size:.95em}#brd-debug .tcl{white-space:nowrap;width:10%}#brd-debug .tcr{white-space:normal;width:90%}#brd-admin-uresults table .tc0,#brd-admin-iresults table .tc0{width:45%}#brd-admin-uresults table .tc1,#brd-admin-iresults table .tc1,#brd-admin-iresults table .tc2{width:20%}#brd-admin-uresults table .tc2,#brd-admin-uresults table .tc4{width:10%;text-align:center}#brd-admin-uresults .tc3{width:15%}#brd-admin-uresults td.tc0 span,#brd-admin-uresults td.tc3 span{display:block;white-space:nowrap}#brd-admin-iresults table .tc0{width:25%}#brd-admin-iresults table .tc1{width:25%}#brd-admin-iresults table .tc2{width:20%}#brd-admin-iresults .tc3{width:30%}.main-content th{font-size:1.084em;padding:.462em 1.417em;font-weight:normal}td{padding:.5em 1.417em;border-width:1px;border-style:solid none none solid}td.tc0{border-left-style:none;border-left-width:0}th{padding:.5em 1.3em;border-style:none}td.actions,th.actions{text-align:right}td.actions span{display:block}.report{margin-left:4em}.report h3 span{display:block;font-style:normal}.report h3 cite{font-style:normal;font-size:1.084em;font-weight:bold}.report h3 strong{position:absolute;left:-3.1em;width:1.5em;text-align:right;font-size:1.167em}.report p strong{display:block;font-weight:normal;margin-top:1em}.report h4{border-bottom-style:dashed;border-bottom-width:1px}#brd-admin-reports .frm-buttons{margin-left:4em;margin-top:0}#brd-admin-reports .select-all{float:right}.report .item-select{position:absolute;top:0;right:.75em;height:2.5em}.help-box samp{display:block;margin-left:1.5em}.help-box h5 samp{margin-left:1.417em}.help-box code{font-family:courier;font-size:1.084em}.help-box .entry-content{padding:0}.help-box .hn{padding-bottom:.5em;border-bottom-style:dashed;border-bottom-width:1px;margin-bottom:.5em;color:#294f6e}#brd-messages{text-align:center;position:fixed;top:0;z-index:999;padding:0;left:0;right:0}#brd-messages span{text-align:center;padding:.35em 1.3em;margin:0 1em;font:87%/1.5em Arial,sans-serif;font-weight:bold;line-height:2em;border-width:1px;border-style:solid}.ie6 a.feed,.ie7 a.feed{background:url(feed-icon.png) center left no-repeat}.ie6 .brd-page,.ie6 .main,.ie6 #brd-index .main-subhead,.ie6 .main-content .main-item,.ie6 .main-content .main-item ul,.ie6 .gen-content,.ie6 .main-content,.ie6 .ct-box,.ie6 .frm-group,.ie6 .mf-set,.ie6 .sf-set,.ie6 .mf-box,.ie6 .sf-box,.ie6 .mf-item,.ie6 .txt-set,.ie6 .txt-box,.ie6 .frm-form label,.ie6 fieldset,.ie6 span.fld-input,.ie6 .main-subhead .hn,.ie6 .post,.ie6 .posthead,.ie6 .postbody,.ie6 .post-entry,.ie6 .postfoot .post-options{zoom:1}
+.ie6 .ct-box ol,.ie6 .ct-box ol li{zoom:normal}.ie6 .postfoot .post-contacts{position:absolute}.ie6 #brd-wrap fieldset{padding-top:1px;position:relative}.ie6 fieldset legend{margin-left:-7px}.ie6 #brd-wrap .checklist{height:9em;width:30em;overflow:auto}.ie6 .sf-set .checkbox label span{padding-right:0;padding-left:5em}.ie6 #info-censored-intro,.ie6 #info-ranks-intro{margin-bottom:3em}.ie6 .important strong{margin-right:1ex}.ie6 #brd-stats .st-users{margin-bottom:-1ex}.ie6 .txt-box label span{position:absolute}.ie6 #brd-index .main-head{position:relative}.ie6 input{vertical-align:text-bottom}.ie6 #extensions-used{clear:left}.oldie textarea{overflow:auto}.ie7 .brd-page,.ie7 .main,.ie7 #brd-index .main-subhead,.ie7 #brd-index .forum-item,.ie7 .gen-content,.ie7 .main-content,.ie7 .ct-box,.ie7 .frm-group,.ie7 .mf-set,.ie7 .sf-set,.ie7 .mf-box,.ie7 .sf-box,.ie7 .mf-item,.ie7 .txt-set,.ie7 .txt-box,.ie7 .frm-group label,.ie7 fieldset,.ie7 span.fld-input,.ie7 .main-subhead .hn,.ie7 .post,.ie7 .posthead,.ie7 .postbody,.ie7 .post-entry,.ie7 .postfoot .post-options,.ie7 #brd-stats ul{max-height:100%;zoom:1}.ie7 #brd-wrap fieldset{padding-top:1px;position:relative}.ie7 fieldset legend{margin-left:-7px}.ie7 .entry-content .codebox pre{min-height:3em}.ie7 #info-censored-intro,.ie7 #info-ranks-intro{margin-bottom:3em}.ie7 .main-forum .main-item .item-starter{margin-left:1ex}.ie7 #brd-admin-settings-setup #fld19,.ie7 #brd-post textarea#fld1,.ie7 #brd-post textarea#fld2,.ie7 #brd-viewtopic textarea#fld1,.ie7 #brd-postedit #fld2{margin-top:-19px}.ie7 .item-starter{position:relative;left:-0.5em}.ie7 input[type="checkbox"]{vertical-align:baseline}body{background:#fff;color:#222}a:focus{outline:0}a:link,a:visited,.js_link{color:#00579c;text-decoration:none}a:hover,a:active,a:focus{color:#cd0021;text-decoration:underline}.js_link{cursor:pointer;border-color:#00579c;-moz-user-select:none;-webkit-user-select:none;user-select:none}.js_link:hover{color:#cd0021;border-color:#cd0021}.entry-content a:visited{color:#909}.entry-content a:visited:hover{color:#cd0021}.sig-content a,.sig-content a:visited{color:#999;border-color:#ddd}.sig-content a:hover,.sig-content a:active,.sig-content a:focus,.sig-content a:visited:hover{color:#333;border-color:#999;text-decoration:none}.entry-content h5{color:#d93315}.gen-content,.main-content{background:#fbfbfb;border-color:#d3dae1;border-bottom-color:#cbd1d8}.main-pagepost{background:#fff;border-color:#dde4eb}#brd-crumbs-top .crumblast a,#brd-crumbs-top .crumblast a:hover{color:#111;text-decoration:none}.main-item,.main-item li,.main-item div,td{border-color:#dde4eb}.main-content .main-item .item-nav{color:#888}.main-content .sticky{background:#f2f4fa}.main-content .main-item .hn .item-status em.sticky,.main-content .main-item .hn .item-status em.closed{color:#314b60;font-weight:bold}.main-content .main-item .hn .item-status em.moved{color:#666}.post div,h3.post-ident,h4.post-title,.posthead h3,.userstatus span,.sig-line{border-color:#dde4eb}.post-num,.post-edit{color:#999}.post{border-color:#dde4eb;border-top-color:#fff;border-bottom-color:#ccc;background:#edf1f5}#topic-review .firstpost,.singlepost{border-top-color:#dde4eb;border-bottom-color:#dde4eb}.posthead,.postbody,.post-options{background:#fafafa}.posthead .hn{background:#f1f1f1}.post-title small{color:#999}.sig-content{color:#999}.sig-demo{color:#333}.sig-demo a,.sig-demo a:visited{color:#333;text-decoration:none;border-color:#bbb}.online .userstatus span{border-color:#3f9439}.ct-box,.ct-set,.ct-group,.frm-group{border-color:#dbe0e4}.admin-page .ct-box{background:#feffe6}.admin-page .ct-set .ct-box,.report{background:#f4f9fd}.admin-page .warn-set .warn-box{background:#feffe6}.main-frm .ct-group,#brd-announcement{background:#f4f9fd}.main-content .info-box{background:#ffffe1}.main-extensions .extension,.main-hotfixes .hotfix{background:#f4f9fd}.main-extensions .disabled,.main-hotfixes .disabled{background:#ffffe1}.warn-group,.warn-set,.warn-box,.error-box,#admin-alerts{background:#feffe6;border-color:#f4ebce}.warn-group,.warn-set,.warn-box,.error-box{border-color:#e6d190}.info-list li,.error-list li{color:#5d5636}.info-list li span,.error-list li span{color:#5d5636}ul li strong{color:#222}.user-box{background:#f4f9fd}.ct-box .hn{border-color:#dbe0e4;color:#333}.error-box .hn{color:#222}.help-box{background:#f4f4f4}.help-box .hn{color:#294f6e}#rules-content{background:#fff}.frm-buttons,.extension .options,.hotfix .options,#rules-content{border-color:#e3e3e3}.checklist{background:#fff;border-color:#ccc}label,.aslabel,.mf-set legend,.ct-legend,.ct-legend span,.ct-legend cite,.ct-legend strong{color:#333}.paging span,.paging a,.paging strong{border-color:#dedfdf}.required label em,#req-msg em,.warn strong,.important strong{color:#b42000}.sf-set .text label small,.sf-set .select label small,.txt-set .textarea label small{color:#999}.entry-content .quotebox,.entry-content .codebox{background:#fff;border-color:#ddd}#brd-announcement .userbox{background:#f4f9fd none repeat scroll 0 0}
+.main-content .main-item .hn .posted-mark{color:#99C}.lastedit em{font-size:.95em;font-style:normal;color:#999}.user-ident .username strong{color:#222}#brd-navlinks{border-color:#376daa}#brd-navlinks a:link,#brd-navlinks a:visited{color:#eee;text-decoration:none}.main-options,.main-options span{background:#f1f1f1}#brd-navlinks,.main-menu,.admin-menu,.main-head,.main-foot{background-color:#0066b9;background-image:-moz-linear-gradient(bottom,#2a6ab8 0,#4795cc 100%);background-image:-ms-linear-gradient(bottom,#2a6ab8 0,#4795cc 100%);background-image:-o-linear-gradient(bottom,#2a6ab8 0,#4795cc 100%);background-image:-webkit-gradient(linear,0 100%,0 0,from(#2a6ab8),to(#4795cc));background-image:-webkit-linear-gradient(bottom,#2a6ab8 0,#4795cc 100%);background-image:linear-gradient(bottom,#2a6ab8 0,#4795cc 100%)}.admin-submenu{background:#e4e4ec;border-color:#d3dae1}#brd-navlinks a:link,#brd-navlinks a:visited,.main-menu a:link,.main-menu a:visited,.admin-menu a:link,.admin-menu a:visited{color:#eee;text-decoration:none;text-shadow:0 -1px 0 rgba(0,0,0,0.25)}#brd-navlinks a:hover,#brd-navlinks a:active,#brd-navlinks a:focus,.main-menu a:hover,.main-menu a:active,.main-menu a:focus,.admin-menu a:hover,.admin-menu a:active,.admin-menu a:focus{color:#fff}#brd-navlinks .isactive a,.main-menu .active a,.admin-menu .active a{color:#fff;background:#2a6ab8}#brd-admod #alert a{color:yellow;font-weight:bold}#brd-head{background:#f5f5f5;color:#222}#brd-head a,#brd-head a:link,#brd-head a:visited{color:#222}.main-head,.main-foot{color:#fff;border-color:#4a86c1;text-shadow:0 -1px 0 rgba(0,0,0,0.15)}#brd-announcement h1{border-color:#bbb}.main-subhead{border-color:#d3dae1 #D3DAE1 #cbd1d8 #D3DAE1;background:#f4f4f4}.column-title{border-color:#f4f4f4 #F4F4F4 #cbd1d8 #F4F4F4;background:#f4f4f4}.group-head{background:#edf1f5;border-color:#dbe0e4}.content-head .hn{border-color:#dbe0e4;color:#666}.main-head a:link,.main-head a:visited,.main-foot .options a:link,.main-foot .options a:visited,.main-head .js_link,.main-foot .options .js_link{color:#ddd}.main-head .js_link,.main-foot .options .js_link{border-color:#ccc}.main-head a:hover,.main-head a:active,.main-head a:focus,.main-head .js_link:hover,.main-foot .options a:hover,.main-foot .options a:active,.main-foot .options a:focus,.main-foot .options .js_link:hover{color:#fff}.main-head .js_link:hover,.main-foot .options .js_link:hover{border-color:#fff}th{background:#f4f4f4}.main-frm .ct-group td{background:#fbfbfb}#extensions-used{border-bottom-color:#999}.main-content .main-item .icon{border-color:#edf1f5 #DDE0E4 #c6cbd3 #BABFC6}.main-content .redirect .icon{border-color:#f4f4f4 #f4f4f4 #f4f4f4 #f4f4f4}.main-content .sticky .icon{border-color:#d7e5f3 #C3CFDc #9fb3c7 #90A2B4}.main-content .closed .icon{border-color:#acacac #979797 #898989 #7A7A7A}.main-content .sticky.closed .icon{border-color:#d7e5f3 #C3CFDc #898989 #7A7A7A}.main-content .new .icon{border-color:#0080d7 #0065C0 #0058b3 #0072CA}.checklist-item label{background:#fff}.checklist-item label:hover{background:#edf1f5}input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="number"],input[type="search"],textarea{border-color:#d3dae1}input[type="text"]:active,input[type="text"]:focus,input[type="password"]:active,input[type="password"]:focus,input[type="email"]:active,input[type="email"]:focus,input[type="url"]:active,input[type="url"]:focus,input[type="search"]:active,input[type="search"]:focus,input[type="number"]:active,input[type="number"]:focus,textarea:active,textarea:focus{border-color:#c8d3dc #D3DAE1 #d3dae1 #C8D3DC;box-shadow:0 1px 2px rgba(0,0,0,0.1) inset;background:#fffff3;background-image:-moz-linear-gradient(top,#fffee8,#fff);background-image:-ms-linear-gradient(top,#fffee8,#fff);background-image:-o-linear-gradient(top,#fffee8,#fff);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fffee8),to(#fff));background-image:-webkit-linear-gradient(top,#fffee8,#fff);background-image:linear-gradient(top,#fffee8,#fff)}input[type="submit"],input[type="button"],input[type="reset"],button{color:#404040;border-color:#ccc;background:#f6f6f6;background-image:-moz-linear-gradient(top,#fff,#eee);background-image:-ms-linear-gradient(top,#fff,#eee);background-image:-o-linear-gradient(top,#fff,#eee);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#eee));background-image:-webkit-linear-gradient(top,#fff,#eee);background-image:linear-gradient(top,#fff,#eee);text-shadow:0 1px 1px #ddd}
+.primary input[type="submit"],.primary input[type="button"],.primary input[type="reset"],.primary button{color:#fafafa;background:#4897d9;border-color:#2575ae;text-shadow:0 -1px 1px rgba(0,0,0,0.4);box-shadow:0 1px 0 rgba(255,255,255,0.2) inset,0 1px 2px rgba(0,0,0,0.05);background-image:-moz-linear-gradient(top,#5cb7f7,#4897d9);background-image:-ms-linear-gradient(top,#5cb7f7,#4897d9);background-image:-o-linear-gradient(top,#5cb7f7,#4897d9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5cb7f7),to(#4897d9));background-image:-webkit-linear-gradient(top,#5cb7f7,#4897d9);background-image:linear-gradient(top,#5cb7f7,#4897d9)}.primary.caution input[type="submit"],.primary.caution input[type="button"],.primary.caution input[type="reset"],.primary.caution button{border-color:#c0372a;background:#d95548;background-image:-moz-linear-gradient(top,#f7655b,#d95548);background-image:-ms-linear-gradient(top,#f7655b,#d95548);background-image:-o-linear-gradient(top,#f7655b,#d95548);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f7655b),to(#d95548));background-image:-webkit-linear-gradient(top,#f7655b,#d95548);background-image:linear-gradient(top,#f7655b,#d95548)}input[type="submit"]:hover,input[type="submit"]:focus,input[type="reset"]:hover,input[type="reset"]:focus,input[type="button"]:hover,input[type="button"]:focus,button:hover,button:focus{color:#101010;background:#f3f3f3;background-image:-moz-linear-gradient(top,#fff,#ebebeb);background-image:-ms-linear-gradient(top,#fff,#ebebeb);background-image:-o-linear-gradient(top,#fff,#ebebeb);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#ebebeb));background-image:-webkit-linear-gradient(top,#fff,#ebebeb);background-image:linear-gradient(top,#fff,#ebebeb);border-color:#84bce4;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.1);box-shadow:0 1px 2px rgba(0,0,0,.1)}.primary input[type="submit"]:hover,.primary input[type="submit"]:focus,.primary input[type="reset"]:hover,.primary input[type="reset"]:focus,.primary input[type="button"]:hover,.primary input[type="button"]:focus,.primary button:hover,.primary button:focus{color:#fff;text-shadow:0 -1px 1px rgba(0,0,0,0.4);border-color:#2575ae;background:#2e8bd9;background-image:-moz-linear-gradient(top,#5cb7f7,#2e8bd9);background-image:-ms-linear-gradient(top,#5cb7f7,#2e8bd9);background-image:-o-linear-gradient(top,#5cb7f7,#2e8bd9);background-image:-webkit-gradient(linear,0 0,0 100%,from(#5cb7f7),to(#2e8bd9));background-image:-webkit-linear-gradient(top,#5cb7f7,#2e8bd9);background-image:linear-gradient(top,#5cb7f7,#2e8bd9);-webkit-box-shadow:0 1px 0 rgba(255,255,255,0.2) inset,0 1px 2px rgba(0,0,0,.2);box-shadow:0 1px 0 rgba(255,255,255,0.2) inset,0 1px 2px rgba(0,0,0,.2)}.primary.caution input[type="submit"]:hover,.primary.caution input[type="submit"]:focus,.primary.caution input[type="button"]:hover,.primary.caution input[type="button"]:focus,.primary.caution input[type="reset"]:hover,.primary.caution input[type="reset"]:focus,.primary.caution button:hover,.primary.caution button:focus{border-color:#c0372a;background:#d93d2e;background-image:-moz-linear-gradient(top,#f7655b,#d93d2e);background-image:-ms-linear-gradient(top,#f7655b,#d93d2e);background-image:-o-linear-gradient(top,#f7655b,#d93d2e);background-image:-webkit-gradient(linear,0 0,0 100%,from(#f7655b),to(#d93d2e));background-image:-webkit-linear-gradient(top,#f7655b,#d93d2e);background-image:linear-gradient(top,#f7655b,#d93d2e)}input[type="submit"][disabled],input[type="button"][disabled],input[type="reset"][disabled],button[disabled]{border-color:#ccc;color:#999}input[type="submit"][disabled]:hover,input[type="submit"][disabled]:focus,input[type="reset"][disabled]:hover,input[type="reset"][disabled]:focus,input[type="button"][disabled]:hover,input[type="button"][disabled]:focus,button[disabled]:hover,button[disabled]:focus{color:#999}#querytime{color:#999}.quiet{color:#999}.loud{color:#000}#brd-debug th{background:#fff;border:0;border-bottom:2px solid #dde4eb;color:#111}#brd-debug td{background:#fff;border:0;border-bottom:solid 1px #eee;color:#666}
+#brd-messages span{color:#333;-webkit-border-bottom-right-radius:.3em;-webkit-border-bottom-left-radius:.3em;-moz-border-radius-bottomright:.3em;-moz-border-radius-bottomleft:.3em;border-bottom-right-radius:.3em;border-bottom-left-radius:.3em;-moz-box-shadow:0 2px 3px rgba(0,0,0,.2);-webkit-box-shadow:0 2px 3px rgba(0,0,0,.2);box-shadow:0 2px 3px rgba(0,0,0,.2)}#brd-messages .message_error{border-color:#ffe475;background:#ffbdac}#brd-messages .message_warning{border-color:#ffe475;background:#ffd0ac}#brd-messages .message_info{border-color:#ffe475;background:#ffc;background:-moz-linear-gradient(center top,#fffbea,#fef7cb);background:-o-linear-gradient(top,#fffbea,#fef7cb);background:-webkit-gradient(linear,0 0,0 100%,from(#fffbea),to(#fef7cb));background:-webkit-linear-gradient(top,#fffbea,#fef7cb);background:-ms-linear-gradient(top,#fffbea,#fef7cb);background:linear-gradient(top,#fffbea,#fef7cb)}::-moz-selection{background:#fff2a8;color:#000;text-shadow:none}::selection{background:#fff2a8;color:#000;text-shadow:none}
\ No newline at end of file
diff -urN punbb-1.4.1/style/Oxygen/Oxygen.php punbb-1.4.2/style/Oxygen/Oxygen.php
--- punbb-1.4.1/style/Oxygen/Oxygen.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/style/Oxygen/Oxygen.php	2012-02-09 20:42:20.000000000 +0000
@@ -1,5 +1,5 @@
 <?php
 
-$forum_loader->add_css($base_url.'/style/Oxygen/min/Oxygen.min.css', array('type' => 'url', 'group' => FORUM_CSS_GROUP_SYSTEM, 'media' => 'screen'));
+$forum_loader->add_css($base_url.'/style/Oxygen/Oxygen.min.css', array('type' => 'url', 'group' => FORUM_CSS_GROUP_SYSTEM, 'media' => 'screen'));
 
 ?>
diff -urN punbb-1.4.1/userlist.php punbb-1.4.2/userlist.php
--- punbb-1.4.1/userlist.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/userlist.php	2012-02-09 20:42:20.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Provides a list of forum users that can be sorted based on various criteria.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -24,7 +24,14 @@
 
 // Miscellaneous setup
 $forum_page['show_post_count'] = ($forum_config['o_show_post_count'] == '1' || $forum_user['is_admmod']) ? true : false;
-$forum_page['username'] = (isset($_GET['username']) && $_GET['username'] != '-' && $forum_user['g_search_users'] == '1') ? $_GET['username'] : '';
+
+$forum_page['username'] = '';
+if (isset($_GET['username']) && is_string($_GET['username'])) {
+	if ($_GET['username'] != '-' && $forum_user['g_search_users'] == '1') {
+		$forum_page['username'] = $_GET['username'];
+	}
+}
+
 $forum_page['show_group'] = (!isset($_GET['show_group']) || intval($_GET['show_group']) < -1 && intval($_GET['show_group']) > 2) ? -1 : intval($_GET['show_group']);
 $forum_page['sort_by'] = (!isset($_GET['sort_by']) || $_GET['sort_by'] != 'username' && $_GET['sort_by'] != 'registered' && ($_GET['sort_by'] != 'num_posts' || !$forum_page['show_post_count'])) ? 'username' : $_GET['sort_by'];
 $forum_page['sort_dir'] = (!isset($_GET['sort_dir']) || strtoupper($_GET['sort_dir']) != 'ASC' && strtoupper($_GET['sort_dir']) != 'DESC') ? 'ASC' : strtoupper($_GET['sort_dir']);
@@ -63,7 +70,7 @@
 $forum_page['users_searched'] = (($forum_user['g_search_users'] == '1' && $forum_page['username'] != '') || $forum_page['show_group'] > -1);
 
 if ($forum_page['num_users'] > 0)
-	$forum_page['items_info'] = generate_items_info( (($forum_page['users_searched']) ? $lang_ul['Users found'] : $lang_ul['Users']), ($forum_page['start_from'] + 1), $forum_page['num_users']);
+	$forum_page['items_info'] = generate_items_info((($forum_page['users_searched']) ? $lang_ul['Users found'] : $lang_ul['Users']), ($forum_page['start_from'] + 1), $forum_page['num_users']);
 else
 	$forum_page['items_info'] = $lang_ul['Users'];
 
@@ -97,7 +104,7 @@
 // Setup breadcrumbs
 $forum_page['crumbs'] = array(
 	array($forum_config['o_board_title'], forum_link($forum_url['index'])),
-	array($lang_common['User list'], forum_link($forum_url['users']))
+	$lang_common['User list']
 );
 
 // Setup main heading
@@ -207,7 +214,7 @@
 			</fieldset>
 <?php ($hook = get_hook('ul_search_fieldset_end')) ? eval($hook) : null; ?>
 			<div class="frm-buttons">
-				<span class="submit"><input type="submit" name="search" value="<?php echo $lang_ul['Submit user search'] ?>" /></span>
+				<span class="submit primary"><input type="submit" name="search" value="<?php echo $lang_ul['Submit user search'] ?>" /></span>
 			</div>
 		</div>
 		</form>
@@ -287,7 +294,7 @@
 		($hook = get_hook('ul_results_row_pre_data_output')) ? eval($hook) : null;
 
 ?>
-				<tr class="<?php echo ($forum_page['item_count'] % 2 != 0) ? 'odd' : 'even' ?><?php echo ($forum_page['item_count'] == 1) ? ' row1' : '' ?>">
+				<tr class="<?php echo ($forum_page['item_count'] % 2 != 0) ? 'odd' : 'even' ?><?php if ($forum_page['item_count'] == 1) echo ' row1'; ?>">
 					<?php echo implode("\n\t\t\t\t\t\t", $forum_page['table_row'])."\n" ?>
 				</tr>
 <?php
diff -urN punbb-1.4.1/viewforum.php punbb-1.4.2/viewforum.php
--- punbb-1.4.1/viewforum.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/viewforum.php	2012-02-09 20:42:20.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Lists the topics in the specified forum.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -191,7 +191,7 @@
 // Setup breadcrumbs
 $forum_page['crumbs'] = array(
 	array($forum_config['o_board_title'], forum_link($forum_url['index'])),
-	array($cur_forum['forum_name'], forum_link($forum_url['forum'], array($id, sef_friendly($cur_forum['forum_name']))))
+	$cur_forum['forum_name']
 );
 
 // Setup main header
diff -urN punbb-1.4.1/viewtopic.php punbb-1.4.2/viewtopic.php
--- punbb-1.4.1/viewtopic.php	2011-10-31 18:51:50.000000000 +0000
+++ punbb-1.4.2/viewtopic.php	2012-02-09 20:42:20.000000000 +0000
@@ -2,7 +2,7 @@
 /**
  * Lists the posts in the specified topic.
  *
- * @copyright (C) 2008-2011 PunBB, partially based on code (C) 2008-2009 FluxBB.org
+ * @copyright (C) 2008-2012 PunBB, partially based on code (C) 2008-2009 FluxBB.org
  * @license http://www.gnu.org/licenses/gpl.html GPL version 2 or higher
  * @package PunBB
  */
@@ -175,7 +175,7 @@
 $forum_page['page'] = (!isset($_GET['p']) || !is_numeric($_GET['p']) || $_GET['p'] <= 1 || $_GET['p'] > $forum_page['num_pages']) ? 1 : $_GET['p'];
 $forum_page['start_from'] = $forum_user['disp_posts'] * ($forum_page['page'] - 1);
 $forum_page['finish_at'] = min(($forum_page['start_from'] + $forum_user['disp_posts']), ($cur_topic['num_replies'] + 1));
-$forum_page['items_info'] =  generate_items_info($lang_topic['Posts'], ($forum_page['start_from'] + 1), ($cur_topic['num_replies'] + 1));
+$forum_page['items_info'] = generate_items_info($lang_topic['Posts'], ($forum_page['start_from'] + 1), ($cur_topic['num_replies'] + 1));
 
 ($hook = get_hook('vt_modify_page_details')) ? eval($hook) : null;
 
@@ -237,7 +237,7 @@
 $forum_page['crumbs'] = array(
 	array($forum_config['o_board_title'], forum_link($forum_url['index'])),
 	array($cur_topic['forum_name'], forum_link($forum_url['forum'], array($cur_topic['forum_id'], sef_friendly($cur_topic['forum_name'])))),
-	array($cur_topic['subject'], forum_link($forum_url['topic'], array($id, sef_friendly($cur_topic['subject']))))
+	$cur_topic['subject']
 );
 
 // Setup main heading
@@ -348,6 +348,10 @@
 
 		$forum_page['post_ident']['link'] = '<span class="post-link"><a class="permalink" rel="bookmark" title="'.$lang_topic['Permalink post'].'" href="'.forum_link($forum_url['post'], $cur_post['id']).'">'.format_time($cur_post['posted']).'</a></span>';
 
+		if ($cur_post['edited'] != '')
+			$forum_page['post_ident']['edited'] = '<span class="post-edit">'.sprintf($lang_topic['Last edited'], forum_htmlencode($cur_post['edited_by']), format_time($cur_post['edited'])).'</span>';
+
+
 		($hook = get_hook('vt_row_pre_post_ident_merge')) ? eval($hook) : null;
 
 		if (isset($user_data_cache[$cur_post['poster_id']]['author_ident']))
@@ -521,9 +525,6 @@
 		// Perform the main parsing of the message (BBCode, smilies, censor words etc)
 		$forum_page['message']['message'] = parse_message($cur_post['message'], $cur_post['hide_smilies']);
 
-		if ($cur_post['edited'] != '')
-			$forum_page['message']['edited'] = '<p class="lastedit"><em>'.sprintf($lang_topic['Last edited'], forum_htmlencode($cur_post['edited_by']), format_time($cur_post['edited'])).'</em></p>';
-
 		// Do signature parsing/caching
 		if ($cur_post['signature'] != '' && $forum_user['show_sig'] != '0' && $forum_config['o_signatures'] == '1')
 		{
@@ -552,7 +553,7 @@
 			<div id="p<?php echo $cur_post['id'] ?>" class="posthead">
 				<h3 class="hn post-ident"><?php echo implode(' ', $forum_page['post_ident']) ?></h3>
 			</div>
-			<div class="postbody<?php echo ($cur_post['is_online'] == $cur_post['poster_id']) ? ' online' : '' ?>">
+			<div class="postbody<?php if ($cur_post['is_online'] == $cur_post['poster_id']) echo ' online'; ?>">
 				<div class="post-author">
 					<ul class="author-ident">
 						<?php echo implode("\n\t\t\t\t\t\t", $forum_page['author_ident'])."\n" ?>
