diff -ruN 0.14.5/chat/admin/admin1.php 0.15.0/chat/admin/admin1.php
--- 0.14.5/chat/admin/admin1.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/admin/admin1.php	2004-04-01 03:06:28.000000000 -0600
@@ -0,0 +1,357 @@
+<?php
+// This sheet is diplayed when the admin wants to modify perms for registered users
+// or remove the profiles of some of them
+
+// The admin has required an action to be done
+if (isset($FORM_SEND) && $FORM_SEND == 1)
+{
+	// A registred user have to be deleted or banished?
+	$DELETE_MODE = (stripslashes($submit_type) == A_SHEET1_6)? 1:0;
+	$BANISH_MODE = (stripslashes($submit_type) == A_SHEET1_9)? 1:0;
+
+	// Get the list of the users
+	$DbLink->query("SELECT username,perms FROM ".C_REG_TBL." WHERE perms != 'admin'");
+	$users = Array();
+	while (list($username, $perms) = $DbLink->next_record())
+	{
+		$users[] = $username;
+	}
+	$DbLink->clean_results();
+
+	for (reset($users); $username=current($users); next($users))
+	{
+		$usrHash = md5($username);
+		$VarName = "user_".$usrHash;
+		if (!isset($$VarName)) continue;
+		// Delete a profile after having sent a message to the user if he is connected
+		if ($DELETE_MODE)
+		{
+			$VarName = "selected_".$usrHash;
+			if (isset($$VarName))
+			{
+				$uuu = addslashes($username);
+				$DbLink->query("DELETE FROM ".C_REG_TBL." WHERE username='$uuu'");
+				$DbLink->query("SELECT room FROM ".C_USR_TBL." WHERE username='$uuu' LIMIT 1");
+				$in_room = ($DbLink->num_rows() != 0);
+				if ($in_room)
+				{
+					list($room) = $DbLink->next_record();
+					$DbLink->clean_results();
+					$DbLink->query("SELECT type FROM ".C_MSG_TBL." WHERE room='".addslashes($room)."' LIMIT 1");
+					list($type) = $DbLink->next_record();
+					$DbLink->clean_results();
+					$DbLink->query("UPDATE ".C_USR_TBL." SET status='u' WHERE username='$uuu'");
+					$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ('$type', '".addslashes($room)."', 'SYS delreg', '', ".time().", '$uuu', 'L_ADM_2')");
+				};
+				// Optimize the registered users table when a MySQL DB is used
+				$DbLink->optimize(C_REG_TBL);
+			};
+		}
+		// Banish an user
+		elseif ($BANISH_MODE)
+		{
+			$VarName = "selected_".$usrHash;
+			if (isset($$VarName))
+			{
+				$uuu = addslashes($username);
+				$DbLink->query("SELECT latin1,ip FROM ".C_REG_TBL." WHERE username='$uuu' LIMIT 1");
+				list($Latin1, $IP) = $DbLink->next_record();
+				$DbLink->clean_results();
+				$DbLink->query("SELECT count(*) FROM ".C_BAN_TBL." WHERE username='$uuu' LIMIT 1");
+				list($Nb) = $DbLink->next_record();
+				$DbLink->clean_results();
+				if ($Nb == "0")
+				{
+					$Until = time() + round(C_BANISH * 60 * 60 * 24);
+					if ($Until > 2147483647) $Until = "2147483647";
+					$DbLink->query("INSERT INTO ".C_BAN_TBL." VALUES ('$uuu','$Latin1','$IP','**ToDefine**','$Until')");
+				};
+				$Warning = A_SHEET1_10;
+			};
+		}
+		// Modify perms for a registered user and send him a message if he is connected
+		else
+		{
+			$VarName = "perms_".$usrHash; $ppp = $$VarName;
+			$VarName = "rooms_".$usrHash; $rrr = $$VarName;
+			$VarName = "old_perms_".$usrHash; $old_ppp = $$VarName;
+			$VarName = "old_rooms_".$usrHash; $old_rrr = $$VarName;
+			if ($ppp == $old_ppp && $rrr == $old_rrr) continue;
+			$uuu = addslashes($username);
+			$DbLink->query("UPDATE ".C_REG_TBL." SET perms='$ppp', rooms='$rrr' WHERE username='$uuu'");
+			$DbLink->query("SELECT room FROM ".C_USR_TBL." WHERE username='$uuu' LIMIT 1");
+			$in_room = ($DbLink->num_rows() != 0);
+			if ($in_room)
+			{
+				list($room) = $DbLink->next_record();
+				$DbLink->clean_results();
+
+				// Find the changes in moderated rooms list
+				if ($ppp != $old_ppp)
+				{
+					if ($ppp == 'user')
+						$diff_rooms = explode(",", $old_rrr);
+					else
+						$diff_rooms = explode(",", $rrr);
+				}
+				else
+				{
+					$old_rooms_Tab = explode(",",$old_rrr);
+					$new_rooms_Tab = explode(",",$rrr);
+					$diff_rooms_Tab = array();
+					for (reset($old_rooms_Tab); $room2Check=current($old_rooms_Tab); next($old_rooms_Tab))
+					{
+						if ($room2Check == "") continue;
+						if (!room_in($room2Check, $rrr)) $diff_rooms_Tab[] = $room2Check;
+					}
+					for (reset($new_rooms_Tab); $room2Check=current($new_rooms_Tab); next($new_rooms_Tab))
+					{
+						if ($room2Check == "") continue;
+						if (!room_in($room2Check, $old_rrr)) $diff_rooms_Tab[] = $room2Check;
+					}
+					unset($old_rooms_Tab);
+					unset($new_rooms_Tab);
+
+					if (count($diff_rooms_Tab) > 0)
+						$diff_rooms = str_replace(",,",",",ereg_replace("^,|,$","",implode(",",$diff_rooms_Tab)));
+					unset($diff_rooms_Tab);
+				}
+
+				// Send a message to the user if he chats into one of the 'diff' rooms
+				if (room_in(addslashes($room), $diff_rooms))
+				{
+					if ($ppp == 'moderator' && room_in(addslashes($room), $rrr))	// user becomes moderator for the room he chats into
+					{
+						$status = "m";
+						$message = "sprintf(L_MODERATOR, \"".addslashes(htmlspecialchars(stripslashes($uuu)))."\")";
+					}
+					else	// user becomes user for the room he chats into
+					{
+						$status = "r";
+						$message = "sprintf(L_ADM_1, \"".addslashes(htmlspecialchars(stripslashes($uuu)))."\")";
+					};
+					$DbLink->query("UPDATE ".C_USR_TBL." SET status='$status' WHERE username='$uuu'");
+					$DbLink->query("SELECT type FROM ".C_MSG_TBL." WHERE room='".addslashes($room)."' LIMIT 1");
+					list($type) = $DbLink->next_record();
+					$DbLink->clean_results();
+					$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ('$type', '".addslashes($room)."', 'SYS promote', '', ".time().", '', '$message')");
+				};
+			}
+			else
+			{
+				$DbLink->clean_results();
+			};
+		};
+	};
+};
+
+// Remove profiles of users that have not been chatting for a time > C_REG_DEL
+if (!isset($FORM_SEND) && C_REG_DEL != 0) $DbLink->query("DELETE FROM ".C_REG_TBL." WHERE reg_time < ".(time() - C_REG_DEL * 60 * 60 * 24)." AND perms != 'admin'");
+
+// Remove moderator status if no room is specified
+$DbLink->query("UPDATE ".C_REG_TBL." SET perms='user' WHERE perms='moderator' AND rooms=''");
+?>
+
+<SCRIPT TYPE="text/javascript" LANGUAGE="javascript">
+<!--
+// Ensure an user for who a room name is entered have moderator status
+function reset_perms(user)
+{
+	if (document.all) {
+		var1 = document.all["perms_" + user];
+		var2 = document.all["rooms_" + user];
+	} else if (document.forms['Form1'].elements) {
+		var1 = document.forms['Form1'].elements["perms_" + user];
+		var2 = document.forms['Form1'].elements["rooms_" + user];
+	} else {
+		return;
+	}
+	i = (var2.value == '' ? 0:1);
+	var1.options[i].selected = true;
+}
+// -->
+</SCRIPT>
+
+<P CLASS=title><?php echo(A_SHEET1_1); ?></P>
+
+<?php
+if (isset($Warning) && $Warning != "") echo("<P CLASS=\"success\">$Warning</SPAN></P><BR>\n");
+?>
+
+<TABLE BORDER=0 CELLPADDING=3 CLASS="table">
+
+<?php
+// Ensure at least one registered user exist (exept the administrator) before displaying the modify status
+$DbLink->query("SELECT COUNT(*) FROM ".C_REG_TBL." WHERE perms != 'admin' LIMIT 1");
+list($count_RegUsers) = $DbLink->next_record();
+$DbLink->clean_results();
+if ($count_RegUsers != 0)
+{
+?>
+<!-- Registered users form -->
+<TR>
+	<TD ALIGN=CENTER>
+		<FORM ACTION="<?php echo("$From?$URLQueryBody"); ?>" METHOD="POST" AUTOCOMPLETE="OFF" NAME="Form1">
+		<INPUT TYPE=hidden NAME="From" value="<?php echo($From); ?>">
+		<INPUT TYPE=hidden NAME="pmc_username" value="<?php echo(htmlspecialchars(stripslashes($pmc_username))); ?>">
+		<INPUT TYPE=hidden NAME="pmc_password" value="<?php echo($pmc_password); ?>">
+		<INPUT TYPE=hidden NAME="sortBy" value="<?php echo($sortBy); ?>">
+		<INPUT TYPE=hidden NAME="sortOrder" value="<?php echo($sortOrder); ?>">
+		<INPUT TYPE=hidden NAME="startReg" value="<?php echo($startReg); ?>">
+		<INPUT TYPE=hidden NAME="FORM_SEND" value="1">
+		<TABLE BORDER=0 CELLPADDING=5 CELLSPACING=1 WIDTH=100%>
+		<TR CLASS=tabtitle>
+			<TD VALIGN=CENTER ALIGN=CENTER>
+				&nbsp;
+			</TD>
+			<TD VALIGN=CENTER ALIGN="<?php echo($CellAlign); ?>">
+				<A HREF="<?php echo("$From?$URLQueryBody_SortLinks&sortBy=username"); if ($sortBy == "username") echo("&sortOrder=$New_sortOrder"); ?>"><?php echo(A_SHEET1_2); ?></A>
+			</TD>
+			<TD VALIGN=CENTER ALIGN=CENTER>
+				<A HREF="<?php echo("$From?$URLQueryBody_SortLinks&sortBy=reg_time"); if ($sortBy == "reg_time") echo("&sortOrder=$New_sortOrder"); ?>"><?php echo(A_SHEET1_11); ?></A>
+			</TD>
+			<TD VALIGN=CENTER ALIGN=CENTER>
+				<A HREF="<?php echo("$From?$URLQueryBody_SortLinks&sortBy=ip"); if ($sortBy == "ip") echo("&sortOrder=$New_sortOrder"); ?>"><?php echo(A_SHEET2_2); ?></A>
+			</TD>
+			<TD VALIGN=CENTER ALIGN=CENTER>
+				<A HREF="<?php echo("$From?$URLQueryBody_SortLinks&sortBy=perms"); if ($sortBy == "perms") echo("&sortOrder=$New_sortOrder"); ?>"><?php echo(A_SHEET1_3); ?></A>
+			</TD>
+			<TD VALIGN=CENTER ALIGN=CENTER CLASS=tabtitle>
+				<?echo(A_SHEET1_4)?> *
+			</TD>
+		</TR>
+
+		<?php
+		function special_char($str,$lang)
+		{
+			return ($lang ? htmlentities($str) : htmlspecialchars($str));
+		}
+
+		$lastPage_startReg = floor(($count_RegUsers - 1) / 10) * 10;
+		if ($startReg > $lastPage_startReg) $startReg = $lastPage_startReg;
+		if (C_DB_TYPE == "mysql") $limits = " LIMIT $startReg,10";
+		elseif (C_DB_TYPE == "pgsql") $limits = " LIMIT 10 OFFSET $startReg";
+		else $limits = "";
+
+		$DbLink->query("SELECT username,latin1,perms,rooms,reg_time,ip FROM ".C_REG_TBL." WHERE perms != 'admin' ORDER BY $sortBy $sortOrder".$limits);
+		while (list($username,$Latin1,$perms,$rooms,$lastTime,$IP) = $DbLink->next_record())
+		{
+			$usrHash = md5($username);
+			?>
+			<INPUT TYPE="hidden" NAME="user_<?echo($usrHash)?>" VALUE="1">
+			<TR>
+				<TD VALIGN=CENTER ALIGN=CENTER>
+					<INPUT type=checkbox name="selected_<?echo($usrHash)?>" value="1">
+				</TD>
+				<TD VALIGN=CENTER ALIGN="<?php echo($CellAlign); ?>">
+					<?echo(special_char($username,$Latin1));?>
+				</TD>
+				<TD VALIGN=CENTER ALIGN="<?php echo($CellAlign); ?>">
+					<?echo(date("M j, Y - h:i a",$lastTime + C_TMZ_OFFSET*60*60));?>
+				</TD>
+				<TD VALIGN=CENTER ALIGN=CENTER>
+					<?php echo($IP); ?>
+				</TD>
+				<TD VALIGN=CENTER ALIGN=CENTER>
+					<SELECT name="perms_<?echo($usrHash)?>">
+						<OPTION value="user"<?if($perms=="user") echo(" SELECTED")?>><?echo(A_USER)?></OPTION>
+						<OPTION value="moderator"<?if($perms=="moderator") echo(" SELECTED")?>><?echo(A_MODER)?></OPTION>
+					</SELECT>
+					<INPUT type="hidden" name="old_perms_<?echo($usrHash)?>" value="<?echo($perms)?>">
+				</TD>
+				<TD VALIGN=CENTER ALIGN=CENTER>
+					<INPUT type=text name="rooms_<?echo($usrHash)?>" value="<?echo(stripslashes(htmlspecialchars($rooms)))?>" SIZE="40" onChange="reset_perms('<?echo($usrHash)?>');">
+					<INPUT type="hidden" name="old_rooms_<?echo($usrHash)?>" value="<?echo(htmlspecialchars($rooms))?>">
+				</TD>
+			</TR>
+			<?
+		};
+		$DbLink->clean_results();
+		?>
+		<TR>
+			<TD VALIGN=CENTER ALIGN=CENTER COLSPAN=6>
+				<FONT size=-1>* <?echo(A_SHEET1_5)?></FONT>
+			</TD>
+		</TR>
+		<TR><TD>&nbsp;</TD></TR>
+		<TR>
+			<TD VALIGN=CENTER ALIGN=CENTER COLSPAN=5>
+				<INPUT TYPE="submit" NAME="submit_type" VALUE="<?php echo(A_SHEET1_6); ?>">
+				<BR><BR>
+				<INPUT TYPE="submit" NAME="submit_type" VALUE="<?php echo(A_SHEET1_9); ?>">
+			</TD>
+			<TD VALIGN=CENTER ALIGN=CENTER>
+				<INPUT TYPE="submit" NAME="submit_type" VALUE="<?php echo(A_SHEET1_7); ?>">
+			</TD>
+		</TR>
+		</TABLE>
+		</FORM>
+
+		<!-- Navigation cells at the footer -->
+		<TABLE BORDER=0 CELLPADDING=5 CELLSPACING=0 CLASS="tabletitle" WIDTH=100%>
+		<TR>
+			<TD ALIGN="<?php echo($CellAlign); ?>" VALIGN=CENTER WIDTH=70 HEIGHT=20 CLASS=tabtitle>
+			<?php
+			if ($startReg > 0)
+			{
+				$downReg = $startReg - 10;
+				if ($downReg < 0) $downReg = "0";
+				?>
+				&nbsp;<A HREF="<?php echo("$From?$URLQueryBody_MoveLinks&startReg=0"); ?>"><IMG SRC="images/admin/<?php echo($BeginGif); ?>" HEIGHT=20 WIDTH=21 BORDER=0></A>
+				&nbsp;&nbsp;&nbsp;<A HREF="<?php echo("$From?$URLQueryBody_MoveLinks&startReg=$downReg"); ?>"><IMG SRC="images/admin/<?php echo($DownGif); ?>" HEIGHT=20 WIDTH=20 BORDER=0></A>
+				<?php
+			}
+			else
+			{
+				echo("&nbsp");
+			};
+			?>
+			</TD>
+			<TD ALIGN=CENTER VALIGN=CENTER HEIGHT=20 CLASS=tabtitle>
+				<SPAN CLASS="small">
+				<?php
+				$PageNum = ceil(($startReg + 1) / 10);
+				$PagesCount = ceil($count_RegUsers / 10);
+				echo(sprintf(A_PAGE_CNT,$PageNum,$PagesCount)."&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;$count_RegUsers ".A_MENU_1);
+				?>
+				</SPAN>
+			</TD>
+			<TD ALIGN="<?php echo($CellAlign); ?>" VALIGN=CENTER WIDTH=70 HEIGHT=20 CLASS=tabtitle>
+			<?php
+			if ($startReg < $lastPage_startReg)
+			{
+				$upReg = $startReg + 10;
+				?>
+				&nbsp;<A HREF="<?php echo("$From?$URLQueryBody_MoveLinks&startReg=$upReg"); ?>"><IMG SRC="images/admin/<?php echo($UpGif); ?>" HEIGHT=20 WIDTH=20 BORDER=0></A>
+				&nbsp;&nbsp;&nbsp;<A HREF="<?php echo("$From?$URLQueryBody_MoveLinks&startReg=$lastPage_startReg"); ?>"><IMG SRC="images/admin/<?php echo($EndGif); ?>" HEIGHT=20 WIDTH=21 BORDER=0></A>
+				<?php
+			}
+			else
+			{
+				echo("&nbsp");
+			};
+			?>
+			</TD>
+		</TR>
+		</TABLE>
+	</TD>
+</TR>
+
+<?php
+}
+else
+{
+?>
+
+<TR>
+	<TD ALIGN=CENTER CLASS=error><?php echo(A_SHEET1_8); ?></TD>
+</TR>
+
+<?php
+};
+?>
+
+</TABLE>
+
+<?php
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/admin/admin1.php3 0.15.0/chat/admin/admin1.php3
--- 0.14.5/chat/admin/admin1.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/admin/admin1.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,357 +0,0 @@
-<?php
-// This sheet is diplayed when the admin wants to modify perms for registered users
-// or remove the profiles of some of them
-
-// The admin has required an action to be done
-if (isset($FORM_SEND) && $FORM_SEND == 1)
-{
-	// A registred user have to be deleted or banished?
-	$DELETE_MODE = (stripslashes($submit_type) == A_SHEET1_6)? 1:0;
-	$BANISH_MODE = (stripslashes($submit_type) == A_SHEET1_9)? 1:0;
-
-	// Get the list of the users
-	$DbLink->query("SELECT username,perms FROM ".C_REG_TBL." WHERE perms != 'admin'");
-	$users = Array();
-	while (list($username, $perms) = $DbLink->next_record())
-	{
-		$users[] = $username;
-	}
-	$DbLink->clean_results();
-
-	for (reset($users); $username=current($users); next($users))
-	{
-		$usrHash = md5($username);
-		$VarName = "user_".$usrHash;
-		if (!isset($$VarName)) continue;
-		// Delete a profile after having sent a message to the user if he is connected
-		if ($DELETE_MODE)
-		{
-			$VarName = "selected_".$usrHash;
-			if (isset($$VarName))
-			{
-				$uuu = addslashes($username);
-				$DbLink->query("DELETE FROM ".C_REG_TBL." WHERE username='$uuu'");
-				$DbLink->query("SELECT room FROM ".C_USR_TBL." WHERE username='$uuu' LIMIT 1");
-				$in_room = ($DbLink->num_rows() != 0);
-				if ($in_room)
-				{
-					list($room) = $DbLink->next_record();
-					$DbLink->clean_results();
-					$DbLink->query("SELECT type FROM ".C_MSG_TBL." WHERE room='".addslashes($room)."' LIMIT 1");
-					list($type) = $DbLink->next_record();
-					$DbLink->clean_results();
-					$DbLink->query("UPDATE ".C_USR_TBL." SET status='u' WHERE username='$uuu'");
-					$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ('$type', '".addslashes($room)."', 'SYS delreg', '', ".time().", '$uuu', 'L_ADM_2')");
-				};
-				// Optimize the registered users table when a MySQL DB is used
-				$DbLink->optimize(C_REG_TBL);
-			};
-		}
-		// Banish an user
-		elseif ($BANISH_MODE)
-		{
-			$VarName = "selected_".$usrHash;
-			if (isset($$VarName))
-			{
-				$uuu = addslashes($username);
-				$DbLink->query("SELECT latin1,ip FROM ".C_REG_TBL." WHERE username='$uuu' LIMIT 1");
-				list($Latin1, $IP) = $DbLink->next_record();
-				$DbLink->clean_results();
-				$DbLink->query("SELECT count(*) FROM ".C_BAN_TBL." WHERE username='$uuu' LIMIT 1");
-				list($Nb) = $DbLink->next_record();
-				$DbLink->clean_results();
-				if ($Nb == "0")
-				{
-					$Until = time() + round(C_BANISH * 60 * 60 * 24);
-					if ($Until > 2147483647) $Until = "2147483647";
-					$DbLink->query("INSERT INTO ".C_BAN_TBL." VALUES ('$uuu','$Latin1','$IP','**ToDefine**','$Until')");
-				};
-				$Warning = A_SHEET1_10;
-			};
-		}
-		// Modify perms for a registered user and send him a message if he is connected
-		else
-		{
-			$VarName = "perms_".$usrHash; $ppp = $$VarName;
-			$VarName = "rooms_".$usrHash; $rrr = $$VarName;
-			$VarName = "old_perms_".$usrHash; $old_ppp = $$VarName;
-			$VarName = "old_rooms_".$usrHash; $old_rrr = $$VarName;
-			if ($ppp == $old_ppp && $rrr == $old_rrr) continue;
-			$uuu = addslashes($username);
-			$DbLink->query("UPDATE ".C_REG_TBL." SET perms='$ppp', rooms='$rrr' WHERE username='$uuu'");
-			$DbLink->query("SELECT room FROM ".C_USR_TBL." WHERE username='$uuu' LIMIT 1");
-			$in_room = ($DbLink->num_rows() != 0);
-			if ($in_room)
-			{
-				list($room) = $DbLink->next_record();
-				$DbLink->clean_results();
-
-				// Find the changes in moderated rooms list
-				if ($ppp != $old_ppp)
-				{
-					if ($ppp == 'user')
-						$diff_rooms = explode(",", $old_rrr);
-					else
-						$diff_rooms = explode(",", $rrr);
-				}
-				else
-				{
-					$old_rooms_Tab = explode(",",$old_rrr);
-					$new_rooms_Tab = explode(",",$rrr);
-					$diff_rooms_Tab = array();
-					for (reset($old_rooms_Tab); $room2Check=current($old_rooms_Tab); next($old_rooms_Tab))
-					{
-						if ($room2Check == "") continue;
-						if (!room_in($room2Check, $rrr)) $diff_rooms_Tab[] = $room2Check;
-					}
-					for (reset($new_rooms_Tab); $room2Check=current($new_rooms_Tab); next($new_rooms_Tab))
-					{
-						if ($room2Check == "") continue;
-						if (!room_in($room2Check, $old_rrr)) $diff_rooms_Tab[] = $room2Check;
-					}
-					unset($old_rooms_Tab);
-					unset($new_rooms_Tab);
-
-					if (count($diff_rooms_Tab) > 0)
-						$diff_rooms = str_replace(",,",",",ereg_replace("^,|,$","",implode(",",$diff_rooms_Tab)));
-					unset($diff_rooms_Tab);
-				}
-
-				// Send a message to the user if he chats into one of the 'diff' rooms
-				if (room_in(addslashes($room), $diff_rooms))
-				{
-					if ($ppp == 'moderator' && room_in(addslashes($room), $rrr))	// user becomes moderator for the room he chats into
-					{
-						$status = "m";
-						$message = "sprintf(L_MODERATOR, \"".addslashes(htmlspecialchars(stripslashes($uuu)))."\")";
-					}
-					else	// user becomes user for the room he chats into
-					{
-						$status = "r";
-						$message = "sprintf(L_ADM_1, \"".addslashes(htmlspecialchars(stripslashes($uuu)))."\")";
-					};
-					$DbLink->query("UPDATE ".C_USR_TBL." SET status='$status' WHERE username='$uuu'");
-					$DbLink->query("SELECT type FROM ".C_MSG_TBL." WHERE room='".addslashes($room)."' LIMIT 1");
-					list($type) = $DbLink->next_record();
-					$DbLink->clean_results();
-					$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ('$type', '".addslashes($room)."', 'SYS promote', '', ".time().", '', '$message')");
-				};
-			}
-			else
-			{
-				$DbLink->clean_results();
-			};
-		};
-	};
-};
-
-// Remove profiles of users that have not been chatting for a time > C_REG_DEL
-if (!isset($FORM_SEND) && C_REG_DEL != 0) $DbLink->query("DELETE FROM ".C_REG_TBL." WHERE reg_time < ".(time() - C_REG_DEL * 60 * 60 * 24)." AND perms != 'admin'");
-
-// Remove moderator status if no room is specified
-$DbLink->query("UPDATE ".C_REG_TBL." SET perms='user' WHERE perms='moderator' AND rooms=''");
-?>
-
-<SCRIPT TYPE="text/javascript" LANGUAGE="javascript">
-<!--
-// Ensure an user for who a room name is entered have moderator status
-function reset_perms(user)
-{
-	if (document.all) {
-		var1 = document.all["perms_" + user];
-		var2 = document.all["rooms_" + user];
-	} else if (document.forms['Form1'].elements) {
-		var1 = document.forms['Form1'].elements["perms_" + user];
-		var2 = document.forms['Form1'].elements["rooms_" + user];
-	} else {
-		return;
-	}
-	i = (var2.value == '' ? 0:1);
-	var1.options[i].selected = true;
-}
-// -->
-</SCRIPT>
-
-<P CLASS=title><?php echo(A_SHEET1_1); ?></P>
-
-<?php
-if (isset($Warning) && $Warning != "") echo("<P CLASS=\"success\">$Warning</SPAN></P><BR>\n");
-?>
-
-<TABLE BORDER=0 CELLPADDING=3 CLASS="table">
-
-<?php
-// Ensure at least one registered user exist (exept the administrator) before displaying the modify status
-$DbLink->query("SELECT COUNT(*) FROM ".C_REG_TBL." WHERE perms != 'admin' LIMIT 1");
-list($count_RegUsers) = $DbLink->next_record();
-$DbLink->clean_results();
-if ($count_RegUsers != 0)
-{
-?>
-<!-- Registered users form -->
-<TR>
-	<TD ALIGN=CENTER>
-		<FORM ACTION="<?php echo("$From?$URLQueryBody"); ?>" METHOD="POST" AUTOCOMPLETE="OFF" NAME="Form1">
-		<INPUT TYPE=hidden NAME="From" value="<?php echo($From); ?>">
-		<INPUT TYPE=hidden NAME="user" value="<?php echo(htmlspecialchars(stripslashes($user))); ?>">
-		<INPUT TYPE=hidden NAME="pswd" value="<?php echo($pswd); ?>">
-		<INPUT TYPE=hidden NAME="sortBy" value="<?php echo($sortBy); ?>">
-		<INPUT TYPE=hidden NAME="sortOrder" value="<?php echo($sortOrder); ?>">
-		<INPUT TYPE=hidden NAME="startReg" value="<?php echo($startReg); ?>">
-		<INPUT TYPE=hidden NAME="FORM_SEND" value="1">
-		<TABLE BORDER=0 CELLPADDING=5 CELLSPACING=1 WIDTH=100%>
-		<TR CLASS=tabtitle>
-			<TD VALIGN=CENTER ALIGN=CENTER>
-				&nbsp;
-			</TD>
-			<TD VALIGN=CENTER ALIGN="<?php echo($CellAlign); ?>">
-				<A HREF="<?php echo("$From?$URLQueryBody_SortLinks&sortBy=username"); if ($sortBy == "username") echo("&sortOrder=$New_sortOrder"); ?>"><?php echo(A_SHEET1_2); ?></A>
-			</TD>
-			<TD VALIGN=CENTER ALIGN=CENTER>
-				<A HREF="<?php echo("$From?$URLQueryBody_SortLinks&sortBy=reg_time"); if ($sortBy == "reg_time") echo("&sortOrder=$New_sortOrder"); ?>"><?php echo(A_SHEET1_11); ?></A>
-			</TD>
-			<TD VALIGN=CENTER ALIGN=CENTER>
-				<A HREF="<?php echo("$From?$URLQueryBody_SortLinks&sortBy=ip"); if ($sortBy == "ip") echo("&sortOrder=$New_sortOrder"); ?>"><?php echo(A_SHEET2_2); ?></A>
-			</TD>
-			<TD VALIGN=CENTER ALIGN=CENTER>
-				<A HREF="<?php echo("$From?$URLQueryBody_SortLinks&sortBy=perms"); if ($sortBy == "perms") echo("&sortOrder=$New_sortOrder"); ?>"><?php echo(A_SHEET1_3); ?></A>
-			</TD>
-			<TD VALIGN=CENTER ALIGN=CENTER CLASS=tabtitle>
-				<?echo(A_SHEET1_4)?> *
-			</TD>
-		</TR>
-
-		<?php
-		function special_char($str,$lang)
-		{
-			return ($lang ? htmlentities($str) : htmlspecialchars($str));
-		}
-
-		$lastPage_startReg = floor(($count_RegUsers - 1) / 10) * 10;
-		if ($startReg > $lastPage_startReg) $startReg = $lastPage_startReg;
-		if (C_DB_TYPE == "mysql") $limits = " LIMIT $startReg,10";
-		elseif (C_DB_TYPE == "pgsql") $limits = " LIMIT 10 OFFSET $startReg";
-		else $limits = "";
-
-		$DbLink->query("SELECT username,latin1,perms,rooms,reg_time,ip FROM ".C_REG_TBL." WHERE perms != 'admin' ORDER BY $sortBy $sortOrder".$limits);
-		while (list($username,$Latin1,$perms,$rooms,$lastTime,$IP) = $DbLink->next_record())
-		{
-			$usrHash = md5($username);
-			?>
-			<INPUT TYPE="hidden" NAME="user_<?echo($usrHash)?>" VALUE="1">
-			<TR>
-				<TD VALIGN=CENTER ALIGN=CENTER>
-					<INPUT type=checkbox name="selected_<?echo($usrHash)?>" value="1">
-				</TD>
-				<TD VALIGN=CENTER ALIGN="<?php echo($CellAlign); ?>">
-					<?echo(special_char($username,$Latin1));?>
-				</TD>
-				<TD VALIGN=CENTER ALIGN="<?php echo($CellAlign); ?>">
-					<?echo(date("M j, Y - h:i a",$lastTime + C_TMZ_OFFSET*60*60));?>
-				</TD>
-				<TD VALIGN=CENTER ALIGN=CENTER>
-					<?php echo($IP); ?>
-				</TD>
-				<TD VALIGN=CENTER ALIGN=CENTER>
-					<SELECT name="perms_<?echo($usrHash)?>">
-						<OPTION value="user"<?if($perms=="user") echo(" SELECTED")?>><?echo(A_USER)?></OPTION>
-						<OPTION value="moderator"<?if($perms=="moderator") echo(" SELECTED")?>><?echo(A_MODER)?></OPTION>
-					</SELECT>
-					<INPUT type="hidden" name="old_perms_<?echo($usrHash)?>" value="<?echo($perms)?>">
-				</TD>
-				<TD VALIGN=CENTER ALIGN=CENTER>
-					<INPUT type=text name="rooms_<?echo($usrHash)?>" value="<?echo(stripslashes(htmlspecialchars($rooms)))?>" SIZE="40" onChange="reset_perms('<?echo($usrHash)?>');">
-					<INPUT type="hidden" name="old_rooms_<?echo($usrHash)?>" value="<?echo(htmlspecialchars($rooms))?>">
-				</TD>
-			</TR>
-			<?
-		};
-		$DbLink->clean_results();
-		?>
-		<TR>
-			<TD VALIGN=CENTER ALIGN=CENTER COLSPAN=6>
-				<FONT size=-1>* <?echo(A_SHEET1_5)?></FONT>
-			</TD>
-		</TR>
-		<TR><TD>&nbsp;</TD></TR>
-		<TR>
-			<TD VALIGN=CENTER ALIGN=CENTER COLSPAN=5>
-				<INPUT TYPE="submit" NAME="submit_type" VALUE="<?php echo(A_SHEET1_6); ?>">
-				<BR><BR>
-				<INPUT TYPE="submit" NAME="submit_type" VALUE="<?php echo(A_SHEET1_9); ?>">
-			</TD>
-			<TD VALIGN=CENTER ALIGN=CENTER>
-				<INPUT TYPE="submit" NAME="submit_type" VALUE="<?php echo(A_SHEET1_7); ?>">
-			</TD>
-		</TR>
-		</TABLE>
-		</FORM>
-
-		<!-- Navigation cells at the footer -->
-		<TABLE BORDER=0 CELLPADDING=5 CELLSPACING=0 CLASS="tabletitle" WIDTH=100%>
-		<TR>
-			<TD ALIGN="<?php echo($CellAlign); ?>" VALIGN=CENTER WIDTH=70 HEIGHT=20 CLASS=tabtitle>
-			<?php
-			if ($startReg > 0)
-			{
-				$downReg = $startReg - 10;
-				if ($downReg < 0) $downReg = "0";
-				?>
-				&nbsp;<A HREF="<?php echo("$From?$URLQueryBody_MoveLinks&startReg=0"); ?>"><IMG SRC="images/admin/<?php echo($BeginGif); ?>" HEIGHT=20 WIDTH=21 BORDER=0></A>
-				&nbsp;&nbsp;&nbsp;<A HREF="<?php echo("$From?$URLQueryBody_MoveLinks&startReg=$downReg"); ?>"><IMG SRC="images/admin/<?php echo($DownGif); ?>" HEIGHT=20 WIDTH=20 BORDER=0></A>
-				<?php
-			}
-			else
-			{
-				echo("&nbsp");
-			};
-			?>
-			</TD>
-			<TD ALIGN=CENTER VALIGN=CENTER HEIGHT=20 CLASS=tabtitle>
-				<SPAN CLASS="small">
-				<?php
-				$PageNum = ceil(($startReg + 1) / 10);
-				$PagesCount = ceil($count_RegUsers / 10);
-				echo(sprintf(A_PAGE_CNT,$PageNum,$PagesCount)."&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;$count_RegUsers ".A_MENU_1);
-				?>
-				</SPAN>
-			</TD>
-			<TD ALIGN="<?php echo($CellAlign); ?>" VALIGN=CENTER WIDTH=70 HEIGHT=20 CLASS=tabtitle>
-			<?php
-			if ($startReg < $lastPage_startReg)
-			{
-				$upReg = $startReg + 10;
-				?>
-				&nbsp;<A HREF="<?php echo("$From?$URLQueryBody_MoveLinks&startReg=$upReg"); ?>"><IMG SRC="images/admin/<?php echo($UpGif); ?>" HEIGHT=20 WIDTH=20 BORDER=0></A>
-				&nbsp;&nbsp;&nbsp;<A HREF="<?php echo("$From?$URLQueryBody_MoveLinks&startReg=$lastPage_startReg"); ?>"><IMG SRC="images/admin/<?php echo($EndGif); ?>" HEIGHT=20 WIDTH=21 BORDER=0></A>
-				<?php
-			}
-			else
-			{
-				echo("&nbsp");
-			};
-			?>
-			</TD>
-		</TR>
-		</TABLE>
-	</TD>
-</TR>
-
-<?php
-}
-else
-{
-?>
-
-<TR>
-	<TD ALIGN=CENTER CLASS=error><?php echo(A_SHEET1_8); ?></TD>
-</TR>
-
-<?php
-};
-?>
-
-</TABLE>
-
-<?php
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/admin/admin2.php 0.15.0/chat/admin/admin2.php
--- 0.14.5/chat/admin/admin2.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/admin/admin2.php	2004-04-01 03:06:28.000000000 -0600
@@ -0,0 +1,263 @@
+<?php
+// This sheet is diplayed when the admin wants to modify the list of banished users
+
+// The admin has required an action to be done
+if (isset($FORM_SEND) && $FORM_SEND == 2)
+{
+	// A registred user have to be deleted ?
+	$DELETE_MODE = (stripslashes($submit_type) == A_SHEET2_7)? 1:0;
+
+	// Get the list of the users
+	$DbLink->query("SELECT username FROM ".C_BAN_TBL);
+	$users = Array();
+	while (list($username) = $DbLink->next_record())
+	{
+		$ban_users[] = $username;
+	};
+	$DbLink->clean_results();
+
+	for (reset($ban_users); $username=current($ban_users); next($ban_users))
+	{
+		$usrHash = md5($username);
+		$VarName = "user_".$usrHash;
+		if (!isset($$VarName)) continue;
+		// Remove banishment
+		if ($DELETE_MODE)
+		{
+			$VarName = "delete_".$usrHash;
+			if (isset($$VarName))
+			{
+				$uuu = addslashes($username);
+				$DbLink->query("DELETE FROM ".C_BAN_TBL." WHERE username='$uuu'");
+				// Optimize the registered users table when a MySQL DB is used
+				$DbLink->optimize(C_BAN_TBL);
+			}
+		}
+		// Modify list of banished rooms for an user
+		else
+		{
+			$VarName = "rooms_".$usrHash; $rrr = $$VarName;
+			$VarName = "until_".$usrHash; $ttt = $$VarName;
+			$VarName = "old_rooms_".$usrHash; $old_rrr = $$VarName;
+			$VarName = "old_until_".$usrHash; $old_ttt = $$VarName;
+			if ($rrr == $old_rrr && $ttt == $old_ttt) continue;
+			$AddUntil = ($ttt == "forever" ? ", ban_until='2147483647'" : "");
+			$uuu = addslashes($username);
+			$DbLink->query("UPDATE ".C_BAN_TBL." SET rooms='$rrr'".$AddUntil." WHERE username='$uuu'");
+
+			// banish the user if he's currently chatting
+			if ($rrr == "*")
+			{
+				$DbLink->query("UPDATE ".C_USR_TBL." SET status='b' WHERE username='$uuu'");
+			}
+			else
+			{
+				$DbLink->query("SELECT room FROM ".C_USR_TBL." WHERE username='$uuu' LIMIT 1");
+				$in_room = ($DbLink->num_rows() != 0);
+				if ($in_room)
+				{
+					list($room) = $DbLink->next_record();
+					$DbLink->clean_results();
+					if (room_in(addslashes($room), $rrr)) $DbLink->query("UPDATE ".C_USR_TBL." SET status='b' WHERE username='$uuu'");
+				}
+				else
+				{
+					$DbLink->clean_results();
+				};
+			};
+		};
+	};
+};
+
+// Remove banishment of users when necessary (time for banishment expire or no room)
+$ToCheck = "rooms = ''";
+if (!isset($FORM_SEND)) $ToCheck = "ban_until < ".time()." OR ".$ToCheck;
+$DbLink->query("DELETE FROM ".C_BAN_TBL." WHERE ".$ToCheck);
+?>
+
+<P CLASS=title><?php echo(A_SHEET2_1); ?></P>
+
+<TABLE BORDER=0 CELLPADDING=3 CLASS=table>
+
+<?php
+// Ensure at least one banished user exist
+$DbLink->query("SELECT COUNT(*) FROM ".C_BAN_TBL." LIMIT 1");
+list($count_BanUsers) = $DbLink->next_record();
+$DbLink->clean_results();
+if ($count_BanUsers != 0)
+{
+?>
+<!-- Banished users form -->
+<TR>
+	<TD ALIGN=CENTER>
+		<FORM ACTION="<?php echo("$From?$URLQueryBody"); ?>" METHOD="POST" AUTOCOMPLETE="OFF" NAME="Form2">
+		<INPUT TYPE=hidden NAME="From" value="<?php echo($From); ?>">
+		<INPUT TYPE=hidden NAME="pmc_username" value="<?php echo(htmlspecialchars(stripslashes($pmc_username))); ?>">
+		<INPUT TYPE=hidden NAME="pmc_password" value="<?php echo($pmc_password); ?>">
+		<INPUT TYPE=hidden NAME="sortBy" value="<?php echo($sortBy); ?>">
+		<INPUT TYPE=hidden NAME="sortOrder" value="<?php echo($sortOrder); ?>">
+		<INPUT TYPE=hidden NAME="startReg" value="<?php echo($startReg); ?>">
+		<INPUT TYPE=hidden NAME="FORM_SEND" value="2">
+		<TABLE BORDER=0 CELLPADDING=5 CELLSPACING=1 WIDTH=100%>
+		<TR CLASS=tabtitle>
+			<TD VALIGN=CENTER ALIGN=CENTER>
+				&nbsp;
+			</TD>
+			<TD VALIGN=CENTER ALIGN="<?php echo($CellAlign); ?>">
+				<A HREF="<?php echo("$From?$URLQueryBody_SortLinks&sortBy=username"); if ($sortBy == "username") echo("&sortOrder=$New_sortOrder"); ?>"><?php echo(A_SHEET1_2); ?></A>
+			</TD>
+			<TD VALIGN=CENTER ALIGN=CENTER>
+				<A HREF="<?php echo("$From?$URLQueryBody_SortLinks&sortBy=ip"); if ($sortBy == "ip") echo("&sortOrder=$New_sortOrder"); ?>"><?php echo(A_SHEET2_2); ?></A>
+			</TD>
+			<TD VALIGN=CENTER ALIGN=CENTER CLASS=tabtitle>
+				<?echo(A_SHEET2_3)?> *
+			</TD>
+			<TD VALIGN=CENTER ALIGN=CENTER CLASS=tabtitle>
+				<?echo(A_SHEET2_4)?>
+			</TD>
+		</TR>
+
+		<?php
+		function special_char($str,$lang)
+		{
+			return ($lang ? htmlentities($str) : htmlspecialchars($str));
+		}
+
+		$lastPage_startReg = floor(($count_BanUsers - 1) / 10) * 10;
+		if ($startReg > $lastPage_startReg) $startReg = $lastPage_startReg;
+		if (C_DB_TYPE == "mysql") $limits = " LIMIT $startReg,10";
+		elseif (C_DB_TYPE == "pgsql") $limits = " LIMIT 10 OFFSET $startReg";
+		else $limits = "";
+
+		$DbLink->query("SELECT username,latin1,ip,rooms,ban_until FROM ".C_BAN_TBL." ORDER BY $sortBy $sortOrder".$limits);
+		while (list($username,$Latin1,$ip,$rooms,$until) = $DbLink->next_record())
+		{
+			$usrHash = md5($username);
+			?>
+			<INPUT TYPE="hidden" NAME="user_<?echo($usrHash)?>" VALUE="1">
+			<TR>
+				<TD VALIGN=CENTER ALIGN=CENTER>
+					<INPUT type=checkbox name="delete_<?echo($usrHash)?>" value="1">
+				</TD>
+				<TD VALIGN=CENTER ALIGN="<?php echo($CellAlign); ?>">
+					<?php echo(special_char($username,$Latin1)); ?>
+				</TD>
+				<TD VALIGN=CENTER ALIGN=CENTER>
+					<?php echo($ip); ?>
+				</TD>
+				<TD VALIGN=CENTER ALIGN=CENTER>
+					<INPUT type=text name="rooms_<?echo($usrHash)?>" value="<?echo(stripslashes(htmlspecialchars($rooms)))?>" SIZE="40">
+					<INPUT type="hidden" name="old_rooms_<?echo($usrHash)?>" value="<?echo(htmlspecialchars($rooms))?>">
+				</TD>
+				<TD VALIGN=CENTER ALIGN=CENTER>
+					<SELECT name="until_<?echo($usrHash)?>">
+						<?php
+						 // banished users for more than one year -> forever
+						$ForeverVal = time() + (60 * 60 * 24 * 365);
+						if ($until > $ForeverVal)	
+						{
+							?>
+							<OPTION value="forever" SELECTED><?php echo(A_SHEET2_5); ?></OPTION>
+							<?php
+						}
+						else
+						{
+							?>
+							<OPTION value="date" SELECTED><?php echo(date("M j, Y - h:i a",$until + C_TMZ_OFFSET*60*60)); ?></OPTION>
+							<OPTION value="forever"><?php echo(A_SHEET2_5); ?></OPTION>
+							<?php
+						};
+						?>
+					</SELECT>
+					<INPUT type="hidden" name="old_until_<?echo($usrHash)?>" value="<?echo($until > $ForeverVal ? "forever" : "date")?>">
+				</TD>
+			</TR>
+			<?
+		};
+		$DbLink->clean_results();
+		?>
+		<TR>
+			<TD VALIGN=CENTER ALIGN=CENTER COLSPAN=5>
+				<FONT size=-1>* <?echo(A_SHEET2_6)?></FONT>
+			</TD>
+		</TR>
+		<TR><TD>&nbsp;</TD></TR>
+		<TR>
+			<TD VALIGN=CENTER ALIGN=CENTER COLSPAN=4>
+				<INPUT TYPE="submit" NAME="submit_type" VALUE="<?php echo(A_SHEET2_7); ?>">
+			</TD>
+			<TD VALIGN=CENTER ALIGN=CENTER>
+				<INPUT TYPE="submit" NAME="submit_type" VALUE="<?php echo(A_SHEET1_7); ?>">
+			</TD>
+		</TR>
+		</TABLE>
+		</FORM>
+
+		<!-- Navigation cells at the footer -->
+		<TABLE BORDER=0 CELLPADDING=5 CELLSPACING=0 CLASS="tabletitle" WIDTH=100%>
+		<TR>
+			<TD ALIGN="<?php echo($CellAlign); ?>" VALIGN=CENTER WIDTH=70 HEIGHT=20 CLASS=tabtitle>
+			<?php
+			if ($startReg > 0)
+			{
+				$downReg = $startReg - 10;
+				if ($downReg < 0) $downReg = "0";
+				?>
+				&nbsp;<A HREF="<?php echo("$From?$URLQueryBody_MoveLinks&startReg=0"); ?>"><IMG SRC="images/admin/<?php echo($BeginGif); ?>" HEIGHT=20 WIDTH=21 BORDER=0></A>
+				&nbsp;&nbsp;&nbsp;<A HREF="<?php echo("$From?$URLQueryBody_MoveLinks&startReg=$downReg"); ?>"><IMG SRC="images/admin/<?php echo($DownGif); ?>" HEIGHT=20 WIDTH=20 BORDER=0></A>
+				<?php
+			}
+			else
+			{
+				echo("&nbsp");
+			};
+			?>
+			</TD>
+			<TD ALIGN=CENTER VALIGN=CENTER HEIGHT=20 CLASS=tabtitle>
+				<SPAN CLASS="small">
+				<?php
+				$PageNum = ceil(($startReg + 1) / 10);
+				$PagesCount = ceil($count_BanUsers / 10);
+				echo(sprintf(A_PAGE_CNT,$PageNum,$PagesCount)."&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;$count_BanUsers ".A_MENU_2);
+				?>
+				</SPAN>
+			</TD>
+			<TD ALIGN="<?php echo($CellAlign); ?>" VALIGN=CENTER WIDTH=70 HEIGHT=20 CLASS=tabtitle>
+			<?php
+			if ($startReg < $lastPage_startReg)
+			{
+				$upReg = $startReg + 10;
+				?>
+				&nbsp;<A HREF="<?php echo("$From?$URLQueryBody_MoveLinks&startReg=$upReg"); ?>"><IMG SRC="images/admin/<?php echo($UpGif); ?>" HEIGHT=20 WIDTH=20 BORDER=0></A>
+				&nbsp;&nbsp;&nbsp;<A HREF="<?php echo("$From?$URLQueryBody_MoveLinks&startReg=$lastPage_startReg"); ?>"><IMG SRC="images/admin/<?php echo($EndGif); ?>" HEIGHT=20 WIDTH=21 BORDER=0></A>
+				<?php
+			}
+			else
+			{
+				echo("&nbsp");
+			};
+			?>
+			</TD>
+		</TR>
+		</TABLE>
+	</TD>
+</TR>
+
+<?php
+}
+else
+{
+?>
+
+<TR>
+	<TD ALIGN=CENTER CLASS=error><?php echo(A_SHEET2_8); ?></TD>
+</TR>
+
+<?php
+};
+?>
+
+</TABLE>
+
+<?php
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/admin/admin2.php3 0.15.0/chat/admin/admin2.php3
--- 0.14.5/chat/admin/admin2.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/admin/admin2.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,263 +0,0 @@
-<?php
-// This sheet is diplayed when the admin wants to modify the list of banished users
-
-// The admin has required an action to be done
-if (isset($FORM_SEND) && $FORM_SEND == 2)
-{
-	// A registred user have to be deleted ?
-	$DELETE_MODE = (stripslashes($submit_type) == A_SHEET2_7)? 1:0;
-
-	// Get the list of the users
-	$DbLink->query("SELECT username FROM ".C_BAN_TBL);
-	$users = Array();
-	while (list($username) = $DbLink->next_record())
-	{
-		$ban_users[] = $username;
-	};
-	$DbLink->clean_results();
-
-	for (reset($ban_users); $username=current($ban_users); next($ban_users))
-	{
-		$usrHash = md5($username);
-		$VarName = "user_".$usrHash;
-		if (!isset($$VarName)) continue;
-		// Remove banishment
-		if ($DELETE_MODE)
-		{
-			$VarName = "delete_".$usrHash;
-			if (isset($$VarName))
-			{
-				$uuu = addslashes($username);
-				$DbLink->query("DELETE FROM ".C_BAN_TBL." WHERE username='$uuu'");
-				// Optimize the registered users table when a MySQL DB is used
-				$DbLink->optimize(C_BAN_TBL);
-			}
-		}
-		// Modify list of banished rooms for an user
-		else
-		{
-			$VarName = "rooms_".$usrHash; $rrr = $$VarName;
-			$VarName = "until_".$usrHash; $ttt = $$VarName;
-			$VarName = "old_rooms_".$usrHash; $old_rrr = $$VarName;
-			$VarName = "old_until_".$usrHash; $old_ttt = $$VarName;
-			if ($rrr == $old_rrr && $ttt == $old_ttt) continue;
-			$AddUntil = ($ttt == "forever" ? ", ban_until='2147483647'" : "");
-			$uuu = addslashes($username);
-			$DbLink->query("UPDATE ".C_BAN_TBL." SET rooms='$rrr'".$AddUntil." WHERE username='$uuu'");
-
-			// banish the user if he's currently chatting
-			if ($rrr == "*")
-			{
-				$DbLink->query("UPDATE ".C_USR_TBL." SET status='b' WHERE username='$uuu'");
-			}
-			else
-			{
-				$DbLink->query("SELECT room FROM ".C_USR_TBL." WHERE username='$uuu' LIMIT 1");
-				$in_room = ($DbLink->num_rows() != 0);
-				if ($in_room)
-				{
-					list($room) = $DbLink->next_record();
-					$DbLink->clean_results();
-					if (room_in(addslashes($room), $rrr)) $DbLink->query("UPDATE ".C_USR_TBL." SET status='b' WHERE username='$uuu'");
-				}
-				else
-				{
-					$DbLink->clean_results();
-				};
-			};
-		};
-	};
-};
-
-// Remove banishment of users when necessary (time for banishment expire or no room)
-$ToCheck = "rooms = ''";
-if (!isset($FORM_SEND)) $ToCheck = "ban_until < ".time()." OR ".$ToCheck;
-$DbLink->query("DELETE FROM ".C_BAN_TBL." WHERE ".$ToCheck);
-?>
-
-<P CLASS=title><?php echo(A_SHEET2_1); ?></P>
-
-<TABLE BORDER=0 CELLPADDING=3 CLASS=table>
-
-<?php
-// Ensure at least one banished user exist
-$DbLink->query("SELECT COUNT(*) FROM ".C_BAN_TBL." LIMIT 1");
-list($count_BanUsers) = $DbLink->next_record();
-$DbLink->clean_results();
-if ($count_BanUsers != 0)
-{
-?>
-<!-- Banished users form -->
-<TR>
-	<TD ALIGN=CENTER>
-		<FORM ACTION="<?php echo("$From?$URLQueryBody"); ?>" METHOD="POST" AUTOCOMPLETE="OFF" NAME="Form2">
-		<INPUT TYPE=hidden NAME="From" value="<?php echo($From); ?>">
-		<INPUT TYPE=hidden NAME="user" value="<?php echo(htmlspecialchars(stripslashes($user))); ?>">
-		<INPUT TYPE=hidden NAME="pswd" value="<?php echo($pswd); ?>">
-		<INPUT TYPE=hidden NAME="sortBy" value="<?php echo($sortBy); ?>">
-		<INPUT TYPE=hidden NAME="sortOrder" value="<?php echo($sortOrder); ?>">
-		<INPUT TYPE=hidden NAME="startReg" value="<?php echo($startReg); ?>">
-		<INPUT TYPE=hidden NAME="FORM_SEND" value="2">
-		<TABLE BORDER=0 CELLPADDING=5 CELLSPACING=1 WIDTH=100%>
-		<TR CLASS=tabtitle>
-			<TD VALIGN=CENTER ALIGN=CENTER>
-				&nbsp;
-			</TD>
-			<TD VALIGN=CENTER ALIGN="<?php echo($CellAlign); ?>">
-				<A HREF="<?php echo("$From?$URLQueryBody_SortLinks&sortBy=username"); if ($sortBy == "username") echo("&sortOrder=$New_sortOrder"); ?>"><?php echo(A_SHEET1_2); ?></A>
-			</TD>
-			<TD VALIGN=CENTER ALIGN=CENTER>
-				<A HREF="<?php echo("$From?$URLQueryBody_SortLinks&sortBy=ip"); if ($sortBy == "ip") echo("&sortOrder=$New_sortOrder"); ?>"><?php echo(A_SHEET2_2); ?></A>
-			</TD>
-			<TD VALIGN=CENTER ALIGN=CENTER CLASS=tabtitle>
-				<?echo(A_SHEET2_3)?> *
-			</TD>
-			<TD VALIGN=CENTER ALIGN=CENTER CLASS=tabtitle>
-				<?echo(A_SHEET2_4)?>
-			</TD>
-		</TR>
-
-		<?php
-		function special_char($str,$lang)
-		{
-			return ($lang ? htmlentities($str) : htmlspecialchars($str));
-		}
-
-		$lastPage_startReg = floor(($count_BanUsers - 1) / 10) * 10;
-		if ($startReg > $lastPage_startReg) $startReg = $lastPage_startReg;
-		if (C_DB_TYPE == "mysql") $limits = " LIMIT $startReg,10";
-		elseif (C_DB_TYPE == "pgsql") $limits = " LIMIT 10 OFFSET $startReg";
-		else $limits = "";
-
-		$DbLink->query("SELECT username,latin1,ip,rooms,ban_until FROM ".C_BAN_TBL." ORDER BY $sortBy $sortOrder".$limits);
-		while (list($username,$Latin1,$ip,$rooms,$until) = $DbLink->next_record())
-		{
-			$usrHash = md5($username);
-			?>
-			<INPUT TYPE="hidden" NAME="user_<?echo($usrHash)?>" VALUE="1">
-			<TR>
-				<TD VALIGN=CENTER ALIGN=CENTER>
-					<INPUT type=checkbox name="delete_<?echo($usrHash)?>" value="1">
-				</TD>
-				<TD VALIGN=CENTER ALIGN="<?php echo($CellAlign); ?>">
-					<?php echo(special_char($username,$Latin1)); ?>
-				</TD>
-				<TD VALIGN=CENTER ALIGN=CENTER>
-					<?php echo($ip); ?>
-				</TD>
-				<TD VALIGN=CENTER ALIGN=CENTER>
-					<INPUT type=text name="rooms_<?echo($usrHash)?>" value="<?echo(stripslashes(htmlspecialchars($rooms)))?>" SIZE="40">
-					<INPUT type="hidden" name="old_rooms_<?echo($usrHash)?>" value="<?echo(htmlspecialchars($rooms))?>">
-				</TD>
-				<TD VALIGN=CENTER ALIGN=CENTER>
-					<SELECT name="until_<?echo($usrHash)?>">
-						<?php
-						 // banished users for more than one year -> forever
-						$ForeverVal = time() + (60 * 60 * 24 * 365);
-						if ($until > $ForeverVal)	
-						{
-							?>
-							<OPTION value="forever" SELECTED><?php echo(A_SHEET2_5); ?></OPTION>
-							<?php
-						}
-						else
-						{
-							?>
-							<OPTION value="date" SELECTED><?php echo(date("M j, Y - h:i a",$until + C_TMZ_OFFSET*60*60)); ?></OPTION>
-							<OPTION value="forever"><?php echo(A_SHEET2_5); ?></OPTION>
-							<?php
-						};
-						?>
-					</SELECT>
-					<INPUT type="hidden" name="old_until_<?echo($usrHash)?>" value="<?echo($until > $ForeverVal ? "forever" : "date")?>">
-				</TD>
-			</TR>
-			<?
-		};
-		$DbLink->clean_results();
-		?>
-		<TR>
-			<TD VALIGN=CENTER ALIGN=CENTER COLSPAN=5>
-				<FONT size=-1>* <?echo(A_SHEET2_6)?></FONT>
-			</TD>
-		</TR>
-		<TR><TD>&nbsp;</TD></TR>
-		<TR>
-			<TD VALIGN=CENTER ALIGN=CENTER COLSPAN=4>
-				<INPUT TYPE="submit" NAME="submit_type" VALUE="<?php echo(A_SHEET2_7); ?>">
-			</TD>
-			<TD VALIGN=CENTER ALIGN=CENTER>
-				<INPUT TYPE="submit" NAME="submit_type" VALUE="<?php echo(A_SHEET1_7); ?>">
-			</TD>
-		</TR>
-		</TABLE>
-		</FORM>
-
-		<!-- Navigation cells at the footer -->
-		<TABLE BORDER=0 CELLPADDING=5 CELLSPACING=0 CLASS="tabletitle" WIDTH=100%>
-		<TR>
-			<TD ALIGN="<?php echo($CellAlign); ?>" VALIGN=CENTER WIDTH=70 HEIGHT=20 CLASS=tabtitle>
-			<?php
-			if ($startReg > 0)
-			{
-				$downReg = $startReg - 10;
-				if ($downReg < 0) $downReg = "0";
-				?>
-				&nbsp;<A HREF="<?php echo("$From?$URLQueryBody_MoveLinks&startReg=0"); ?>"><IMG SRC="images/admin/<?php echo($BeginGif); ?>" HEIGHT=20 WIDTH=21 BORDER=0></A>
-				&nbsp;&nbsp;&nbsp;<A HREF="<?php echo("$From?$URLQueryBody_MoveLinks&startReg=$downReg"); ?>"><IMG SRC="images/admin/<?php echo($DownGif); ?>" HEIGHT=20 WIDTH=20 BORDER=0></A>
-				<?php
-			}
-			else
-			{
-				echo("&nbsp");
-			};
-			?>
-			</TD>
-			<TD ALIGN=CENTER VALIGN=CENTER HEIGHT=20 CLASS=tabtitle>
-				<SPAN CLASS="small">
-				<?php
-				$PageNum = ceil(($startReg + 1) / 10);
-				$PagesCount = ceil($count_BanUsers / 10);
-				echo(sprintf(A_PAGE_CNT,$PageNum,$PagesCount)."&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;$count_BanUsers ".A_MENU_2);
-				?>
-				</SPAN>
-			</TD>
-			<TD ALIGN="<?php echo($CellAlign); ?>" VALIGN=CENTER WIDTH=70 HEIGHT=20 CLASS=tabtitle>
-			<?php
-			if ($startReg < $lastPage_startReg)
-			{
-				$upReg = $startReg + 10;
-				?>
-				&nbsp;<A HREF="<?php echo("$From?$URLQueryBody_MoveLinks&startReg=$upReg"); ?>"><IMG SRC="images/admin/<?php echo($UpGif); ?>" HEIGHT=20 WIDTH=20 BORDER=0></A>
-				&nbsp;&nbsp;&nbsp;<A HREF="<?php echo("$From?$URLQueryBody_MoveLinks&startReg=$lastPage_startReg"); ?>"><IMG SRC="images/admin/<?php echo($EndGif); ?>" HEIGHT=20 WIDTH=21 BORDER=0></A>
-				<?php
-			}
-			else
-			{
-				echo("&nbsp");
-			};
-			?>
-			</TD>
-		</TR>
-		</TABLE>
-	</TD>
-</TR>
-
-<?php
-}
-else
-{
-?>
-
-<TR>
-	<TD ALIGN=CENTER CLASS=error><?php echo(A_SHEET2_8); ?></TD>
-</TR>
-
-<?php
-};
-?>
-
-</TABLE>
-
-<?php
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/admin/admin3.php 0.15.0/chat/admin/admin3.php
--- 0.14.5/chat/admin/admin3.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/admin/admin3.php	2004-04-01 03:06:28.000000000 -0600
@@ -0,0 +1,124 @@
+<?php
+// This sheet is diplayed when the admin wants to clean some rooms
+
+if (isset($FORM_SEND) && $FORM_SEND == 3)
+{
+	for (reset($DelRooms); $room=current($DelRooms); next($DelRooms))
+	{
+		// Kicks users that are in the room
+		$DbLink->query("UPDATE ".C_USR_TBL." SET status='d' WHERE room='$room'");
+		$DbLink->query("SELECT COUNT(*) FROM ".C_USR_TBL." WHERE room='$room'");
+		list($anybody) = $DbLink->next_record();
+		$DbLink->clean_results();
+		$i = time() + 20;	// let the time to users to be 'kicked' (max=20 sec)
+		while ($anybody != 0 && time() < $i)
+		{
+			$DbLink->query("SELECT COUNT(*) FROM ".C_USR_TBL." WHERE room='$room'");
+			list($anybody) = $DbLink->next_record();
+			$DbLink->clean_results();
+			sleep(2);
+		}
+		// Remove permissions for that room when it's not a default one (define in config.lib.php)
+		if (!room_in(stripslashes($room), $DefaultChatRooms))
+		{
+			$UpdLink = new DB;
+			$DbLink->query("SELECT username,rooms FROM ".C_REG_TBL." WHERE perms='moderator'");
+			while (list($mod_un,$mod_rooms) = $DbLink->next_record())
+			{
+				$changed = false;
+				$roomTab = explode(",",$mod_rooms);
+				for ($i = 0; $i < count($roomTab); $i++)
+				{
+					if (strcasecmp(stripslashes($room), $roomTab[$i]) == 0)
+					{
+						$roomTab[$i] = "";
+						$changed = true;
+						break;
+					};
+				};
+				if ($changed)
+				{
+					$mod_rooms = str_replace(",,",",",ereg_replace("^,|,$","",implode(",",$roomTab)));
+					$UpdLink->query("UPDATE ".C_REG_TBL." SET rooms='".addslashes($mod_rooms)."' WHERE username='".addslashes($mod_un)."'");
+				};
+				unset($roomTab);
+			};
+			$DbLink->clean_results();
+		};
+		// Clean the room;
+		$DbLink->query("DELETE FROM ".C_USR_TBL." WHERE room='$room'");
+		$DbLink->query("DELETE FROM ".C_MSG_TBL." WHERE room='$room'");
+	};
+	// Optimize the messages table when a MySQL DB is used
+	$DbLink->optimize(C_MSG_TBL);
+};
+?>
+
+<P CLASS=title><?php echo(A_SHEET3_1); ?></P>
+
+<TABLE BORDER=0 CELLPADDING=3 CLASS=table>
+
+<?php
+// Ensure at least one room can be cleaned before displaying the form to do this
+$DbLink->query("SELECT COUNT(*) FROM ".C_MSG_TBL." LIMIT 1");
+list($count_Rooms) = $DbLink->next_record();
+$DbLink->clean_results();
+if ($count_Rooms != 0)
+{
+?>
+
+<!-- Form to clean rooms -->
+<TR>
+	<TD ALIGN=CENTER>
+		<FORM ACTION="<?php echo("$From?$URLQueryBody"); ?>" METHOD="POST" AUTOCOMPLETE="OFF" NAME="Form2">
+		<INPUT TYPE=hidden NAME="From" value="<?php echo($From); ?>">
+		<INPUT TYPE=hidden NAME="pmc_username" value="<?php echo(htmlspecialchars(stripslashes($pmc_username))); ?>">
+		<INPUT TYPE=hidden NAME="pmc_password" value="<?php echo($pmc_password); ?>">
+		<INPUT TYPE=hidden NAME="FORM_SEND" value="3">
+		<TABLE BORDER=0 WIDTH=100%>
+		<TR>
+			<TD VALIGN=CENTER ALIGN=CENTER>
+				<FONT size=-1><?php echo(A_SHEET3_2); ?></FONT>
+			</TD>
+		</TR>
+		<TR>
+			<TD ALIGN=CENTER>
+				<SELECT NAME="DelRooms[]" MULTIPLE SIZE=6>
+				<?php
+				$DbLink->query("SELECT DISTINCT room FROM ".C_MSG_TBL);
+				while (list($room) = $DbLink->next_record())
+				{
+					echo("<OPTION VALUE=\"".htmlspecialchars($room)."\"");
+					echo(">".$room."</OPTION>");
+				}
+				$DbLink->clean_results();
+				?>
+				</SELECT>
+			</TD>
+		</TR>
+		</TABLE>
+		<P>
+		<INPUT TYPE="submit" NAME="submit_type" VALUE="<?php echo(A_SHEET3_3); ?>">
+		</P>
+		</FORM>
+	</TD>
+</TR>
+
+<?php
+}
+else
+{
+?>
+
+<TR>
+	<TD ALIGN=CENTER CLASS=error><?php echo(A_SHEET3_4); ?></TD>
+</TR>
+
+<?php
+};
+?>
+
+</TABLE>
+
+<?php
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/admin/admin3.php3 0.15.0/chat/admin/admin3.php3
--- 0.14.5/chat/admin/admin3.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/admin/admin3.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,124 +0,0 @@
-<?php
-// This sheet is diplayed when the admin wants to clean some rooms
-
-if (isset($FORM_SEND) && $FORM_SEND == 3)
-{
-	for (reset($DelRooms); $room=current($DelRooms); next($DelRooms))
-	{
-		// Kicks users that are in the room
-		$DbLink->query("UPDATE ".C_USR_TBL." SET status='d' WHERE room='$room'");
-		$DbLink->query("SELECT COUNT(*) FROM ".C_USR_TBL." WHERE room='$room'");
-		list($anybody) = $DbLink->next_record();
-		$DbLink->clean_results();
-		$i = time() + 20;	// let the time to users to be 'kicked' (max=20 sec)
-		while ($anybody != 0 && time() < $i)
-		{
-			$DbLink->query("SELECT COUNT(*) FROM ".C_USR_TBL." WHERE room='$room'");
-			list($anybody) = $DbLink->next_record();
-			$DbLink->clean_results();
-			sleep(2);
-		}
-		// Remove permissions for that room when it's not a default one (define in config.lib.php3)
-		if (!room_in(stripslashes($room), $DefaultChatRooms))
-		{
-			$UpdLink = new DB;
-			$DbLink->query("SELECT username,rooms FROM ".C_REG_TBL." WHERE perms='moderator'");
-			while (list($mod_un,$mod_rooms) = $DbLink->next_record())
-			{
-				$changed = false;
-				$roomTab = explode(",",$mod_rooms);
-				for ($i = 0; $i < count($roomTab); $i++)
-				{
-					if (strcasecmp(stripslashes($room), $roomTab[$i]) == 0)
-					{
-						$roomTab[$i] = "";
-						$changed = true;
-						break;
-					};
-				};
-				if ($changed)
-				{
-					$mod_rooms = str_replace(",,",",",ereg_replace("^,|,$","",implode(",",$roomTab)));
-					$UpdLink->query("UPDATE ".C_REG_TBL." SET rooms='".addslashes($mod_rooms)."' WHERE username='".addslashes($mod_un)."'");
-				};
-				unset($roomTab);
-			};
-			$DbLink->clean_results();
-		};
-		// Clean the room;
-		$DbLink->query("DELETE FROM ".C_USR_TBL." WHERE room='$room'");
-		$DbLink->query("DELETE FROM ".C_MSG_TBL." WHERE room='$room'");
-	};
-	// Optimize the messages table when a MySQL DB is used
-	$DbLink->optimize(C_MSG_TBL);
-};
-?>
-
-<P CLASS=title><?php echo(A_SHEET3_1); ?></P>
-
-<TABLE BORDER=0 CELLPADDING=3 CLASS=table>
-
-<?php
-// Ensure at least one room can be cleaned before displaying the form to do this
-$DbLink->query("SELECT COUNT(*) FROM ".C_MSG_TBL." LIMIT 1");
-list($count_Rooms) = $DbLink->next_record();
-$DbLink->clean_results();
-if ($count_Rooms != 0)
-{
-?>
-
-<!-- Form to clean rooms -->
-<TR>
-	<TD ALIGN=CENTER>
-		<FORM ACTION="<?php echo("$From?$URLQueryBody"); ?>" METHOD="POST" AUTOCOMPLETE="OFF" NAME="Form2">
-		<INPUT TYPE=hidden NAME="From" value="<?php echo($From); ?>">
-		<INPUT TYPE=hidden NAME="user" value="<?php echo(htmlspecialchars(stripslashes($user))); ?>">
-		<INPUT TYPE=hidden NAME="pswd" value="<?php echo($pswd); ?>">
-		<INPUT TYPE=hidden NAME="FORM_SEND" value="3">
-		<TABLE BORDER=0 WIDTH=100%>
-		<TR>
-			<TD VALIGN=CENTER ALIGN=CENTER>
-				<FONT size=-1><?php echo(A_SHEET3_2); ?></FONT>
-			</TD>
-		</TR>
-		<TR>
-			<TD ALIGN=CENTER>
-				<SELECT NAME="DelRooms[]" MULTIPLE SIZE=6>
-				<?php
-				$DbLink->query("SELECT DISTINCT room FROM ".C_MSG_TBL);
-				while (list($room) = $DbLink->next_record())
-				{
-					echo("<OPTION VALUE=\"".htmlspecialchars($room)."\"");
-					echo(">".$room."</OPTION>");
-				}
-				$DbLink->clean_results();
-				?>
-				</SELECT>
-			</TD>
-		</TR>
-		</TABLE>
-		<P>
-		<INPUT TYPE="submit" NAME="submit_type" VALUE="<?php echo(A_SHEET3_3); ?>">
-		</P>
-		</FORM>
-	</TD>
-</TR>
-
-<?php
-}
-else
-{
-?>
-
-<TR>
-	<TD ALIGN=CENTER CLASS=error><?php echo(A_SHEET3_4); ?></TD>
-</TR>
-
-<?php
-};
-?>
-
-</TABLE>
-
-<?php
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/admin/admin4.php 0.15.0/chat/admin/admin4.php
--- 0.14.5/chat/admin/admin4.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/admin/admin4.php	2004-04-01 03:06:28.000000000 -0600
@@ -0,0 +1,148 @@
+<?php
+// This sheet is diplayed when the admin wants to send an e-mail to registered users
+// Credit for it goes to Christian Hacker <c.hacker@dreamer-chat.de>
+
+// The admin has required an action to be done
+if (isset($FORM_SEND) && $FORM_SEND == 4)
+{
+	// Sending the mails when at least an user has been selected and subject and message
+	// have been filled
+	if (count($SendTo) > 0 && trim($subject) != "" && trim($message) != "")
+	{
+		include('./admin/mail4admin.lib.php');
+		for (reset($SendTo); $mailTo=current($SendTo); next($SendTo))
+		{
+			$Send = send_email($mailTo,$subject,$message);
+			if (!$Send) break;
+		};
+		$Message = ($Send ? A_SHEET4_7 : A_SHEET4_8);
+		$MsgStyle = ($Send ? "success" : "error");
+	}
+	else
+	{
+		$Message = A_SHEET4_9;
+		$MsgStyle = "error";
+	};
+};
+?>
+
+<P CLASS=title><?php echo(A_SHEET4_1); ?></P>
+
+<?php
+if (isset($Message) && $Message != "") echo("<P CLASS=\"$MsgStyle\">$Message</P><BR>\n");
+?>
+
+<TABLE CLASS=table>
+
+<?php
+// Display an error message if the administrator doesn't complete required variables in 'mail4admin.lib.php'
+if (isset($ReqVar) && $ReqVar == "1")
+{
+	?>
+	<TR>
+		<TD ALIGN=CENTER CLASS=error><?php echo(A_SHEET4_0); ?></TD>
+	</TR>
+
+	<?php
+}
+else
+{
+
+	// Ensure at least one registered user exist (exept the administrator) before displaying the mail form
+	$DbLink->query("SELECT COUNT(*) FROM ".C_REG_TBL." WHERE perms != 'admin' LIMIT 1");
+	list($count_RegUsers) = $DbLink->next_record();
+	$DbLink->clean_results();
+	if ($count_RegUsers != 0)
+	{
+	?>
+	<!-- Mail form -->
+	<TR>
+		<TD ALIGN=CENTER>
+			<FORM ACTION="<?php echo("$From?$URLQueryBody"); ?>" METHOD="POST" AUTOCOMPLETE="OFF" NAME="MailForm">
+			<INPUT TYPE=hidden NAME="From" value="<?php echo($From); ?>">
+			<INPUT TYPE=hidden NAME="pmc_username" value="<?php echo(htmlspecialchars(stripslashes($pmc_username))); ?>">
+			<INPUT TYPE=hidden NAME="pmc_password" value="<?php echo($pmc_password); ?>">
+			<INPUT TYPE=hidden NAME="FORM_SEND" value="4">
+			<TABLE BORDER=0 CELLSPACING=5 WIDTH=100%>
+			<TR>
+
+				<!-- Addressees list -->
+				<TD VALIGN=TOP>
+				<TABLE BORDER=0 WIDTH=100%>
+				<TR>
+					<TD ALIGN=CENTER><?php echo(A_SHEET4_2); ?></TD>
+				</TR>
+				<TR>
+					<TD ALIGN=CENTER>
+						<SELECT NAME="SendTo[]" MULTIPLE SIZE=15>
+						<?php
+						$DbLink->query("SELECT username,email FROM ".C_REG_TBL." WHERE perms != 'admin' ORDER BY username");
+						while (list($U,$EMail) = $DbLink->next_record())
+						{
+							echo("<OPTION VALUE=\"$EMail\">".$U."</OPTION>");
+						}
+						$DbLink->clean_results();
+						?>
+						</SELECT>
+					</TD>
+				</TR>
+				<TR><TD>&nbsp;</TD></TR>
+				<TR>
+					<TD ALIGN=CENTER>
+						<INPUT TYPE=button VALUE="<?php echo(A_SHEET4_3); ?>" onClick="for (var i = 0; i < document.forms['MailForm'].elements['SendTo[]'].options.length; i++) {document.forms['MailForm'].elements['SendTo[]'].options[i].selected=true;}">
+					</TD>
+				</TR>
+				</TABLE>
+				</TD>
+
+				<TD>&nbsp;</TD>
+
+				<!-- Subject and message -->
+				<TD>
+				<TABLE BORDER=0 WIDTH=100%>
+				<TR>
+					<TD VALIGN=CENTER ALIGN="<?php echo($CellAlign); ?>"><?php echo(A_SHEET4_4); ?></TD>
+					<TD VALIGN=CENTER ALIGN="<?php echo($CellAlign); ?>">
+						<INPUT TYPE="text" NAME="subject" SIZE="30" VALUE="<?php echo("[".APP_NAME."] "); ?>">
+					</TD>
+				</TR>
+				<TR>
+					<TD VALIGN=TOP ALIGN="<?php echo($CellAlign); ?>"><?php echo(A_SHEET4_5); ?></TD>
+					<TD VALIGN=CENTER ALIGN=CENTER>
+						<TEXTAREA NAME="message" WRAP="on" COLS="70" ROWS="14"></TEXTAREA>
+					</TD>
+				</TR>
+				<TR><TD>&nbsp;</TD></TR>
+				<TR>
+					<TD>&nbsp;</TD>
+					<TD VALIGN=CENTER ALIGN="<?php echo($InvCellAlign); ?>">
+						<INPUT TYPE="submit" NAME="submit_type" VALUE="<?php echo(A_SHEET4_6); ?>">
+					</TD>
+				</TR>
+				</TABLE>
+				</TD>
+			</TR>
+			</TABLE>
+			</FORM>
+		</TD>
+	</TR>
+
+	<?php
+	}
+	else
+	{
+	?>
+
+	<TR>
+		<TD ALIGN=CENTER CLASS=error><?php echo(A_SHEET1_8); ?></TD>
+	</TR>
+
+	<?php
+	};
+};
+?>
+
+</TABLE>
+
+<?php
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/admin/admin4.php3 0.15.0/chat/admin/admin4.php3
--- 0.14.5/chat/admin/admin4.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/admin/admin4.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,148 +0,0 @@
-<?php
-// This sheet is diplayed when the admin wants to send an e-mail to registered users
-// Credit for it goes to Christian Hacker <c.hacker@dreamer-chat.de>
-
-// The admin has required an action to be done
-if (isset($FORM_SEND) && $FORM_SEND == 4)
-{
-	// Sending the mails when at least an user has been selected and subject and message
-	// have been filled
-	if (count($SendTo) > 0 && trim($subject) != "" && trim($message) != "")
-	{
-		include('./admin/mail4admin.lib.php3');
-		for (reset($SendTo); $mailTo=current($SendTo); next($SendTo))
-		{
-			$Send = send_email($mailTo,$subject,$message);
-			if (!$Send) break;
-		};
-		$Message = ($Send ? A_SHEET4_7 : A_SHEET4_8);
-		$MsgStyle = ($Send ? "success" : "error");
-	}
-	else
-	{
-		$Message = A_SHEET4_9;
-		$MsgStyle = "error";
-	};
-};
-?>
-
-<P CLASS=title><?php echo(A_SHEET4_1); ?></P>
-
-<?php
-if (isset($Message) && $Message != "") echo("<P CLASS=\"$MsgStyle\">$Message</P><BR>\n");
-?>
-
-<TABLE CLASS=table>
-
-<?php
-// Display an error message if the administrator doesn't complete required variables in 'mail4admin.lib.php3'
-if (isset($ReqVar) && $ReqVar == "1")
-{
-	?>
-	<TR>
-		<TD ALIGN=CENTER CLASS=error><?php echo(A_SHEET4_0); ?></TD>
-	</TR>
-
-	<?php
-}
-else
-{
-
-	// Ensure at least one registered user exist (exept the administrator) before displaying the mail form
-	$DbLink->query("SELECT COUNT(*) FROM ".C_REG_TBL." WHERE perms != 'admin' LIMIT 1");
-	list($count_RegUsers) = $DbLink->next_record();
-	$DbLink->clean_results();
-	if ($count_RegUsers != 0)
-	{
-	?>
-	<!-- Mail form -->
-	<TR>
-		<TD ALIGN=CENTER>
-			<FORM ACTION="<?php echo("$From?$URLQueryBody"); ?>" METHOD="POST" AUTOCOMPLETE="OFF" NAME="MailForm">
-			<INPUT TYPE=hidden NAME="From" value="<?php echo($From); ?>">
-			<INPUT TYPE=hidden NAME="user" value="<?php echo(htmlspecialchars(stripslashes($user))); ?>">
-			<INPUT TYPE=hidden NAME="pswd" value="<?php echo($pswd); ?>">
-			<INPUT TYPE=hidden NAME="FORM_SEND" value="4">
-			<TABLE BORDER=0 CELLSPACING=5 WIDTH=100%>
-			<TR>
-
-				<!-- Addressees list -->
-				<TD VALIGN=TOP>
-				<TABLE BORDER=0 WIDTH=100%>
-				<TR>
-					<TD ALIGN=CENTER><?php echo(A_SHEET4_2); ?></TD>
-				</TR>
-				<TR>
-					<TD ALIGN=CENTER>
-						<SELECT NAME="SendTo[]" MULTIPLE SIZE=15>
-						<?php
-						$DbLink->query("SELECT username,email FROM ".C_REG_TBL." WHERE perms != 'admin' ORDER BY username");
-						while (list($U,$EMail) = $DbLink->next_record())
-						{
-							echo("<OPTION VALUE=\"$EMail\">".$U."</OPTION>");
-						}
-						$DbLink->clean_results();
-						?>
-						</SELECT>
-					</TD>
-				</TR>
-				<TR><TD>&nbsp;</TD></TR>
-				<TR>
-					<TD ALIGN=CENTER>
-						<INPUT TYPE=button VALUE="<?php echo(A_SHEET4_3); ?>" onClick="for (var i = 0; i < document.forms['MailForm'].elements['SendTo[]'].options.length; i++) {document.forms['MailForm'].elements['SendTo[]'].options[i].selected=true;}">
-					</TD>
-				</TR>
-				</TABLE>
-				</TD>
-
-				<TD>&nbsp;</TD>
-
-				<!-- Subject and message -->
-				<TD>
-				<TABLE BORDER=0 WIDTH=100%>
-				<TR>
-					<TD VALIGN=CENTER ALIGN="<?php echo($CellAlign); ?>"><?php echo(A_SHEET4_4); ?></TD>
-					<TD VALIGN=CENTER ALIGN="<?php echo($CellAlign); ?>">
-						<INPUT TYPE="text" NAME="subject" SIZE="30" VALUE="<?php echo("[".APP_NAME."] "); ?>">
-					</TD>
-				</TR>
-				<TR>
-					<TD VALIGN=TOP ALIGN="<?php echo($CellAlign); ?>"><?php echo(A_SHEET4_5); ?></TD>
-					<TD VALIGN=CENTER ALIGN=CENTER>
-						<TEXTAREA NAME="message" WRAP="on" COLS="70" ROWS="14"></TEXTAREA>
-					</TD>
-				</TR>
-				<TR><TD>&nbsp;</TD></TR>
-				<TR>
-					<TD>&nbsp;</TD>
-					<TD VALIGN=CENTER ALIGN="<?php echo($InvCellAlign); ?>">
-						<INPUT TYPE="submit" NAME="submit_type" VALUE="<?php echo(A_SHEET4_6); ?>">
-					</TD>
-				</TR>
-				</TABLE>
-				</TD>
-			</TR>
-			</TABLE>
-			</FORM>
-		</TD>
-	</TR>
-
-	<?php
-	}
-	else
-	{
-	?>
-
-	<TR>
-		<TD ALIGN=CENTER CLASS=error><?php echo(A_SHEET1_8); ?></TD>
-	</TR>
-
-	<?php
-	};
-};
-?>
-
-</TABLE>
-
-<?php
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/admin/adminBody.php 0.15.0/chat/admin/adminBody.php
--- 0.14.5/chat/admin/adminBody.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/admin/adminBody.php	2004-04-01 03:06:28.000000000 -0600
@@ -0,0 +1,103 @@
+<?php
+// Ensure a moderator have such a status for the current room
+function room_in($what, $in)
+{
+	$rooms = (is_array($in) ? $in : explode(",",$in));
+	for (reset($rooms); $room_name=current($rooms); next($rooms))
+	{
+		if (strcasecmp($what, $room_name) == 0) return true;
+	};
+	return false;
+};
+
+
+$DbLink = new DB;
+
+// Optimize MySQL table when the script run for the first time
+if (isset($First))
+{
+	$DbLink->optimize(C_MSG_TBL);
+	$DbLink->optimize(C_USR_TBL);
+	$DbLink->optimize(C_REG_TBL);
+	$DbLink->optimize(C_BAN_TBL);
+};
+
+if ($sheet < 3)
+{
+	// Inverse sort order
+	if (!isset($sortBy)) $sortBy = "username";
+	if (!isset($sortOrder)) $sortOrder = "ASC";
+	$New_sortOrder = ($sortOrder == "ASC") ? "DESC" : "ASC";
+
+	// Define the lower bound to be displayed for registered users table
+	if (!isset($startReg)) $startReg = "0";
+};
+
+// Remove some var from the url query
+$URLQueryBody = "What=Body&L=$L&sheet=$sheet";
+if ($sheet < 3)
+{
+	$URLQueryBody_Links = "From=$From&".$URLQueryBody."&pmc_username=".urlencode($pmc_username)."&pmc_password=$pmc_password";
+	$URLQueryBody_SortLinks = $URLQueryBody_Links."&startReg=$startReg";
+	$URLQueryBody_MoveLinks = $URLQueryBody_Links."&sortBy=$sortBy&sortOrder=$sortOrder";
+};
+
+// Horizontal alignement for cells topic and gifs names
+
+if ($Charset == "windows-1256")	// Arabic
+{
+	$CellAlign		= "RIGHT";
+	$InvCellAlign	= "LEFT";
+	$BeginGif		= "end.gif";
+	$DownGif		= "up.gif";
+	$EndGif		= "begin.gif";
+	$UpGif		= "down.gif";
+}
+else
+{
+	$CellAlign		= "LEFT";
+	$InvCellAlign	= "RIGHT";
+	$BeginGif		= "begin.gif";
+	$DownGif		= "down.gif";
+	$EndGif		= "end.gif";
+	$UpGif		= "up.gif";
+};	
+?>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML dir="<?php echo(($Charset == "windows-1256") ? "RTL" : "LTR"); ?>">
+
+<HEAD>
+<TITLE><?php echo(APP_NAME); ?></TITLE>
+<LINK REL="stylesheet" HREF="config/admin.css.php?<?php echo("Charset=${Charset}&medium=${FontSize}&FontName=".urlencode($FontName)); ?>" TYPE="text/css">
+<?php
+if ($sheet < 3)
+{
+	?>
+	<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript1.2">
+	<!--
+	if (document.layers)
+	{
+		window.parent.sortBy = "<?php echo((isset($sortBy) && $sortBy != "") ? "&sortBy=$sortBy" : ""); ?>";
+		window.parent.sortOrder = "<?php echo((isset($sortOrder) && $sortOrder != "") ? "&sortOrder=$sortOrder" : ""); ?>";
+		window.parent.startReg = "<?php echo((isset($startReg) && $startReg != "") ? "&startReg=$startReg" : ""); ?>";
+	};
+	// -->
+	</SCRIPT>
+	<?php
+};
+?>
+</HEAD>
+
+<BODY>
+<CENTER>
+<?php
+require("./admin/admin${sheet}.php");
+?>
+</CENTER>
+</BODY>
+
+</HTML>
+<?php
+$DbLink->close();
+exit();
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/admin/adminBody.php3 0.15.0/chat/admin/adminBody.php3
--- 0.14.5/chat/admin/adminBody.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/admin/adminBody.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,103 +0,0 @@
-<?php
-// Ensure a moderator have such a status for the current room
-function room_in($what, $in)
-{
-	$rooms = (is_array($in) ? $in : explode(",",$in));
-	for (reset($rooms); $room_name=current($rooms); next($rooms))
-	{
-		if (strcasecmp($what, $room_name) == 0) return true;
-	};
-	return false;
-};
-
-
-$DbLink = new DB;
-
-// Optimize MySQL table when the script run for the first time
-if (isset($First))
-{
-	$DbLink->optimize(C_MSG_TBL);
-	$DbLink->optimize(C_USR_TBL);
-	$DbLink->optimize(C_REG_TBL);
-	$DbLink->optimize(C_BAN_TBL);
-};
-
-if ($sheet < 3)
-{
-	// Inverse sort order
-	if (!isset($sortBy)) $sortBy = "username";
-	if (!isset($sortOrder)) $sortOrder = "ASC";
-	$New_sortOrder = ($sortOrder == "ASC") ? "DESC" : "ASC";
-
-	// Define the lower bound to be displayed for registered users table
-	if (!isset($startReg)) $startReg = "0";
-};
-
-// Remove some var from the url query
-$URLQueryBody = "What=Body&L=$L&sheet=$sheet";
-if ($sheet < 3)
-{
-	$URLQueryBody_Links = "From=$From&".$URLQueryBody."&user=".urlencode($user)."&pswd=$pswd";
-	$URLQueryBody_SortLinks = $URLQueryBody_Links."&startReg=$startReg";
-	$URLQueryBody_MoveLinks = $URLQueryBody_Links."&sortBy=$sortBy&sortOrder=$sortOrder";
-};
-
-// Horizontal alignement for cells topic and gifs names
-
-if ($Charset == "windows-1256")	// Arabic
-{
-	$CellAlign		= "RIGHT";
-	$InvCellAlign	= "LEFT";
-	$BeginGif		= "end.gif";
-	$DownGif		= "up.gif";
-	$EndGif		= "begin.gif";
-	$UpGif		= "down.gif";
-}
-else
-{
-	$CellAlign		= "LEFT";
-	$InvCellAlign	= "RIGHT";
-	$BeginGif		= "begin.gif";
-	$DownGif		= "down.gif";
-	$EndGif		= "end.gif";
-	$UpGif		= "up.gif";
-};	
-?>
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<HTML dir="<?php echo(($Charset == "windows-1256") ? "RTL" : "LTR"); ?>">
-
-<HEAD>
-<TITLE><?php echo(APP_NAME); ?></TITLE>
-<LINK REL="stylesheet" HREF="config/admin.css.php3?<?php echo("Charset=${Charset}&medium=${FontSize}&FontName=${FontName}"); ?>" TYPE="text/css">
-<?php
-if ($sheet < 3)
-{
-	?>
-	<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript1.2">
-	<!--
-	if (document.layers)
-	{
-		window.parent.sortBy = "<?php echo((isset($sortBy) && $sortBy != "") ? "&sortBy=$sortBy" : ""); ?>";
-		window.parent.sortOrder = "<?php echo((isset($sortOrder) && $sortOrder != "") ? "&sortOrder=$sortOrder" : ""); ?>";
-		window.parent.startReg = "<?php echo((isset($startReg) && $startReg != "") ? "&startReg=$startReg" : ""); ?>";
-	};
-	// -->
-	</SCRIPT>
-	<?php
-};
-?>
-</HEAD>
-
-<BODY>
-<CENTER>
-<?php
-require("./admin/admin${sheet}.php3");
-?>
-</CENTER>
-</BODY>
-
-</HTML>
-<?php
-$DbLink->close();
-exit();
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/admin/adminTop.php 0.15.0/chat/admin/adminTop.php
--- 0.14.5/chat/admin/adminTop.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/admin/adminTop.php	2004-04-01 03:06:28.000000000 -0600
@@ -0,0 +1,58 @@
+<?php
+// Remove some var from the url query
+$URLQueryTop = "L=$L&pmc_username=".urlencode($pmc_username)."&pmc_password=$pmc_password";
+?>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML dir="<?php echo(($Charset == "windows-1256") ? "RTL" : "LTR"); ?>">
+
+<HEAD>
+<TITLE> </TITLE>
+<LINK REL="stylesheet" HREF="config/admin.css.php?<?php echo("Charset=${Charset}&medium=${FontSize}&FontName=".urlencode($FontName)); ?>" TYPE="text/css">
+</HEAD>
+
+<BODY>
+<TABLE ALIGN=RIGHT BORDER=0 CELLPADDING=3 CELLSPACING=0 CLASS="menu">
+<TR>
+	<TD ALIGN=LEFT VALIGN=bottom NOWRAP CLASS="menuTitle">
+		<IMG SRC="images/selColor.gif" WIDTH=5><?php echo(sprintf(A_MENU_0,APP_NAME)."\n"); ?>
+	</TD>
+	<TD ALIGN=LEFT VALIGN=bottom WIDTH=1500 CLASS="menuTitle">
+		<IMG SRC="images/selColor.gif" WIDTH=5>
+	</TD>
+	<TD ALIGN=CENTER NOWRAP CLASS="thumbIndex">
+		&nbsp;<A HREF="<?php echo("$From?$URLQueryTop&sheet=1"); ?>" TARGET="_parent"<?php if ($sheet == "1") echo(" CLASS=\"selected\""); ?>><?php echo(A_MENU_1); ?></A>&nbsp;
+	</TD>
+	<TD WIDTH=1><IMG SRC="images/selColor.gif" WIDTH=1></TD>
+	<TD ALIGN=CENTER NOWRAP CLASS="thumbIndex">
+		&nbsp;<A HREF="<?php echo("$From?$URLQueryTop&sheet=2"); ?>" TARGET="_parent"<?php if ($sheet == "2") echo(" CLASS=\"selected\""); ?>><?php echo(A_MENU_2); ?></A>&nbsp;
+	</TD>
+	<TD WIDTH=1><IMG SRC="images/selColor.gif" WIDTH=1></TD>
+	<TD ALIGN=CENTER NOWRAP CLASS="thumbIndex">
+		&nbsp;<A HREF="<?php echo("$From?$URLQueryTop&sheet=3"); ?>" TARGET="_parent"<?php if ($sheet == "3") echo(" CLASS=\"selected\""); ?>><?php echo(A_MENU_3); ?></A>&nbsp;
+	</TD>
+	<?php
+	include('./admin/mail4admin.lib.php');
+	if ($MailFunctionOn)
+	{
+		$ReqVar = ($Completed ? "" : "&ReqVar=1");
+		?>
+		<TD WIDTH=1><IMG SRC="images/selColor.gif" WIDTH=1></TD>
+		<TD ALIGN=CENTER NOWRAP CLASS="thumbIndex">
+			&nbsp;<A HREF="<?php echo("$From?$URLQueryTop&sheet=4".$ReqVar); ?>" TARGET="_parent"<?php if ($sheet == "4") echo(" CLASS=\"selected\""); ?>><?php echo(A_MENU_4); ?></A>&nbsp;
+		</TD>
+		<?php
+	};
+	?>
+	<TD WIDTH=2>
+		<IMG SRC="images/selColor.gif" WIDTH=2>
+	</TD>
+</TR>
+</TABLE>
+</P>
+
+</BODY>
+</HTML>
+<?php
+exit();
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/admin/adminTop.php3 0.15.0/chat/admin/adminTop.php3
--- 0.14.5/chat/admin/adminTop.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/admin/adminTop.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,58 +0,0 @@
-<?php
-// Remove some var from the url query
-$URLQueryTop = "L=$L&user=".urlencode($user)."&pswd=$pswd";
-?>
-
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<HTML dir="<?php echo(($Charset == "windows-1256") ? "RTL" : "LTR"); ?>">
-
-<HEAD>
-<TITLE> </TITLE>
-<LINK REL="stylesheet" HREF="config/admin.css.php3?<?php echo("Charset=${Charset}&medium=${FontSize}&FontName=${FontName}"); ?>" TYPE="text/css">
-</HEAD>
-
-<BODY>
-<TABLE ALIGN=RIGHT BORDER=0 CELLPADDING=3 CELLSPACING=0 CLASS="menu">
-<TR>
-	<TD ALIGN=LEFT VALIGN=bottom NOWRAP CLASS="menuTitle">
-		<IMG SRC="images/selColor.gif" WIDTH=5><?php echo(sprintf(A_MENU_0,APP_NAME)."\n"); ?>
-	</TD>
-	<TD ALIGN=LEFT VALIGN=bottom WIDTH=1500 CLASS="menuTitle">
-		<IMG SRC="images/selColor.gif" WIDTH=5>
-	</TD>
-	<TD ALIGN=CENTER NOWRAP CLASS="thumbIndex">
-		&nbsp;<A HREF="<?php echo("$From?$URLQueryTop&sheet=1"); ?>" TARGET="_parent"<?php if ($sheet == "1") echo(" CLASS=\"selected\""); ?>><?php echo(A_MENU_1); ?></A>&nbsp;
-	</TD>
-	<TD WIDTH=1><IMG SRC="images/selColor.gif" WIDTH=1></TD>
-	<TD ALIGN=CENTER NOWRAP CLASS="thumbIndex">
-		&nbsp;<A HREF="<?php echo("$From?$URLQueryTop&sheet=2"); ?>" TARGET="_parent"<?php if ($sheet == "2") echo(" CLASS=\"selected\""); ?>><?php echo(A_MENU_2); ?></A>&nbsp;
-	</TD>
-	<TD WIDTH=1><IMG SRC="images/selColor.gif" WIDTH=1></TD>
-	<TD ALIGN=CENTER NOWRAP CLASS="thumbIndex">
-		&nbsp;<A HREF="<?php echo("$From?$URLQueryTop&sheet=3"); ?>" TARGET="_parent"<?php if ($sheet == "3") echo(" CLASS=\"selected\""); ?>><?php echo(A_MENU_3); ?></A>&nbsp;
-	</TD>
-	<?php
-	include('./admin/mail4admin.lib.php3');
-	if ($MailFunctionOn)
-	{
-		$ReqVar = ($Completed ? "" : "&ReqVar=1");
-		?>
-		<TD WIDTH=1><IMG SRC="images/selColor.gif" WIDTH=1></TD>
-		<TD ALIGN=CENTER NOWRAP CLASS="thumbIndex">
-			&nbsp;<A HREF="<?php echo("$From?$URLQueryTop&sheet=4".$ReqVar); ?>" TARGET="_parent"<?php if ($sheet == "4") echo(" CLASS=\"selected\""); ?>><?php echo(A_MENU_4); ?></A>&nbsp;
-		</TD>
-		<?php
-	};
-	?>
-	<TD WIDTH=2>
-		<IMG SRC="images/selColor.gif" WIDTH=2>
-	</TD>
-</TR>
-</TABLE>
-</P>
-
-</BODY>
-</HTML>
-<?php
-exit();
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/admin/mail4admin.lib.php 0.15.0/chat/admin/mail4admin.lib.php
--- 0.14.5/chat/admin/mail4admin.lib.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/admin/mail4admin.lib.php	2004-04-01 03:06:28.000000000 -0600
@@ -0,0 +1,82 @@
+<?php
+// This library is used by the administration script. It allows to send emails to
+// the registered users.
+// Note that the php mail function must be enabled to run this functionality. If
+// an other function has been developed by your ISP to send PHP mail, just modify
+// the send_email function to make in runable.
+
+
+// -- SETTINGS BELLOW MUST BE COMPLETED --
+
+$Sender_Name = 'your true name';	// May also be the name of your site 
+$Sender_email = 'your e-mail';	// For the reply address
+$Completed = '0';				// Sets this to '1'
+
+
+// -- CORE FUNCTIONS - DO NOT MODIFY --
+
+$MailFunctionOn = (function_exists("mail") && @mail('','',''));
+
+if ($MailFunctionOn)
+{
+	function quote_printable($str,$WithCharset) 
+	{
+		$str = str_replace("%","=",rawurlencode($str));
+		return "=?${WithCharset}?Q?${str}?=";
+	};
+
+	// Credits for this function goes to fwancho <fwancho@whc.net>
+	// It can be found at the URL: http://www.zend.com/codex.php?id=307&single=1
+	function rfcDate()
+	{
+		// Translated from imap-4.7c/src/osdep/unix/env_unix.c
+		// env-unix.c is Copyright 2000 by the University of Washington
+		// localtime() not available in php...
+
+		$tn = time(0);
+		$zone = gmdate("H", $tn) * 60 + gmdate("i", $tn);
+		$julian = gmdate("z", $tn);
+		$t = getdate($tn);
+		$zone = $t["hours"] * 60 + $t["minutes"] - $zone;
+
+		// julian can be one of:
+		//  36x  local time is December 31, UTC is January 1, offset -24 hours
+		//    1  local time is 1 day ahead of UTC, offset +24 hours
+		//    0  local time is same day as UTC, no offset
+		//   -1  local time is 1 day behind UTC, offset -24 hours
+		// -36x  local time is January 1, UTC is December 31, offset +24 hours
+		if ($julian = $t["yday"] - $julian)
+		{
+			$zone += (($julian < 0) == (abs($julian) == 1)) ? -24*60 : 24*60;
+		};
+
+		$zone_sign = ($zone > 0 ? "+" : "-");
+
+		return date('D, d M Y H:i:s ', $tn).$zone_sign.sprintf("%02d%02d", abs($zone)/60, abs($zone)%60)." (".strftime("%Z").")"; 
+	}
+
+	$Sender_Name = quote_printable($Sender_Name,$Charset);
+	$mail_date = rfcDate();
+
+	function send_email($To,$Subject,$Body)
+	{
+		global $Charset;
+		global $Sender_Name, $Sender_email;
+		global $mail_date;
+
+		$Subject = quote_printable($Subject,$Charset);
+
+		$Headers = "From: ${Sender_Name} <${Sender_email}> \r\n";
+		$Headers .= "X-Sender: <${Sender_email}> \r\n";
+		$Headers .= "X-Mailer: PHP/".phpversion()." \r\n";
+		$Headers .= "Return-Path: <${Sender_email}> \r\n";
+		$Headers .= "Date: ${mail_date} \r\n";
+		$Headers .= "Mime-Version: 1.0 \r\n";
+		$Headers .= "Content-Type: text/plain; charset=${Charset} \r\n";
+		$Headers .= "Content-Transfer-Encoding: 8bit \r\n";
+
+		return @mail($To, $Subject, stripslashes($Body), $Headers);
+	};
+
+};
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/admin/mail4admin.lib.php3 0.15.0/chat/admin/mail4admin.lib.php3
--- 0.14.5/chat/admin/mail4admin.lib.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/admin/mail4admin.lib.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,82 +0,0 @@
-<?php
-// This library is used by the administration script. It allows to send emails to
-// the registered users.
-// Note that the php mail function must be enabled to run this functionality. If
-// an other function has been developed by your ISP to send PHP mail, just modify
-// the send_email function to make in runable.
-
-
-// -- SETTINGS BELLOW MUST BE COMPLETED --
-
-$Sender_Name = 'your true name';	// May also be the name of your site 
-$Sender_email = 'your e-mail';	// For the reply address
-$Completed = '0';				// Sets this to '1'
-
-
-// -- CORE FUNCTIONS - DO NOT MODIFY --
-
-$MailFunctionOn = (function_exists("mail") && @mail('','',''));
-
-if ($MailFunctionOn)
-{
-	function quote_printable($str,$WithCharset) 
-	{
-		$str = str_replace("%","=",rawurlencode($str));
-		return "=?${WithCharset}?Q?${str}?=";
-	};
-
-	// Credits for this function goes to fwancho <fwancho@whc.net>
-	// It can be found at the URL: http://www.zend.com/codex.php?id=307&single=1
-	function rfcDate()
-	{
-		// Translated from imap-4.7c/src/osdep/unix/env_unix.c
-		// env-unix.c is Copyright 2000 by the University of Washington
-		// localtime() not available in PHP3...
-
-		$tn = time(0);
-		$zone = gmdate("H", $tn) * 60 + gmdate("i", $tn);
-		$julian = gmdate("z", $tn);
-		$t = getdate($tn);
-		$zone = $t["hours"] * 60 + $t["minutes"] - $zone;
-
-		// julian can be one of:
-		//  36x  local time is December 31, UTC is January 1, offset -24 hours
-		//    1  local time is 1 day ahead of UTC, offset +24 hours
-		//    0  local time is same day as UTC, no offset
-		//   -1  local time is 1 day behind UTC, offset -24 hours
-		// -36x  local time is January 1, UTC is December 31, offset +24 hours
-		if ($julian = $t["yday"] - $julian)
-		{
-			$zone += (($julian < 0) == (abs($julian) == 1)) ? -24*60 : 24*60;
-		};
-
-		$zone_sign = ($zone > 0 ? "+" : "-");
-
-		return date('D, d M Y H:i:s ', $tn).$zone_sign.sprintf("%02d%02d", abs($zone)/60, abs($zone)%60)." (".strftime("%Z").")"; 
-	}
-
-	$Sender_Name = quote_printable($Sender_Name,$Charset);
-	$mail_date = rfcDate();
-
-	function send_email($To,$Subject,$Body)
-	{
-		global $Charset;
-		global $Sender_Name, $Sender_email;
-		global $mail_date;
-
-		$Subject = quote_printable($Subject,$Charset);
-
-		$Headers = "From: ${Sender_Name} <${Sender_email}> \r\n";
-		$Headers .= "X-Sender: <${Sender_email}> \r\n";
-		$Headers .= "X-Mailer: PHP/".phpversion()." \r\n";
-		$Headers .= "Return-Path: <${Sender_email}> \r\n";
-		$Headers .= "Date: ${mail_date} \r\n";
-		$Headers .= "Mime-Version: 1.0 \r\n";
-		$Headers .= "Content-Type: text/plain; charset=${Charset} \r\n";
-		$Headers .= "Content-Transfer-Encoding: 8bit \r\n";
-
-		return @mail($To, $Subject, stripslashes($Body), $Headers);
-	};
-
-};
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/admin.php 0.15.0/chat/admin.php
--- 0.14.5/chat/admin.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/admin.php	2004-04-01 03:06:23.000000000 -0600
@@ -0,0 +1,120 @@
+<?php
+// Get the names and values for vars sent to the admin script
+if (isset($HTTP_GET_VARS))
+{
+	while(list($name,$value) = each($HTTP_GET_VARS))
+	{
+		$$name = $value;
+	};
+};
+
+// Get the names and values for post vars
+if (isset($HTTP_POST_VARS))
+{
+	while(list($name,$value) = each($HTTP_POST_VARS))
+	{
+		$$name = $value;
+	};
+};
+
+// Fix a security hole
+if (isset($L) && !is_dir('./localization/'.$L)) exit();
+	
+// avoid server configuration for magic quotes
+set_magic_quotes_runtime(0);
+
+// Var used in the login.lib.php script required below
+$MUST_BE_ADMIN = true;
+
+require("./config/config.lib.php");
+require("./lib/release.lib.php");
+require("./lib/database/".C_DB_TYPE.".lib.php");
+
+// Check for administration language file
+if (!isset($What) || $What == "")
+{ 
+	if (!isset($L)) include("./localization/languages.lib.php");
+	include("./localization/${L}/localized.chat.php");
+	if (!file_exists("./localization/${L}/localized.admin.php"))
+	{
+		unset($L);
+		$Charset_Sav = $Charset;
+		$FontName_Sav = (isset($FontName) ? $FontName : "");
+		$FontSize_Sav = $FontSize;
+		include("./localization/admin.lib.php");
+	};
+};
+require("./localization/${L}/localized.admin.php");
+if (isset($Charset_Sav))
+{
+	$Charset = $Charset_Sav; unset($Charset_Sav);
+	$FontName = $FontName_Sav; unset($FontName_Sav);
+	$FontSize = $FontSize_Sav; unset($FontSize_Sav);
+};
+
+// Login stuff
+require("./lib/login.lib.php");
+
+// Special cache instructions for IE5+
+$CachePlus	= "";
+if (ereg("MSIE [56789]", (isset($HTTP_USER_AGENT)) ? $HTTP_USER_AGENT : getenv("HTTP_USER_AGENT"))) $CachePlus = ", pre-check=0, post-check=0, max-age=0";
+// Do not cache this page
+$now		= gmdate('D, d M Y H:i:s') . ' GMT';
+header("Expires: $now");
+header("Last-Modified: $now");
+header("Cache-Control: no-cache, must-revalidate".$CachePlus);
+header("Pragma: no-cache");
+
+// Define charset
+header("Content-Type: text/html; charset=${Charset}");
+
+// ** Load the frame when the $what var indicate one
+if (isset($What) && $What != "") include("./admin/admin".$What.".php");
+
+
+// ** Define url query **
+
+// Get the name of the current script;
+if (!isset($PHP_SELF)) $PHP_SELF = $HTTP_SERVER_VARS["PHP_SELF"];
+$From = basename($PHP_SELF);
+
+// Define the sheet to open
+if (!isset($sheet)) $sheet = "1";
+$ToOpen = "admin".$sheet.".php";
+
+// Set username of the admin to a convenient format
+$pmc_username = urlencode(htmlspecialchars(stripslashes($pmc_username)));
+
+// Define URL queries to be sent to frames
+$URLQueryTop = "From=$From&What=Top&L=$L&pmc_username=$pmc_username&pmc_password=$PWD_Hash&sheet=$sheet";
+$Add2Body = (isset($First) ? "" : "&First=1");
+$Add2Body .= (isset($sortBy) ? "&sortBy=$sortBy" : "&sortBy=username").(isset($sortOrder) ? "&sortOrder=$sortOrder" : "&sortOrder=ASC");
+$Add2Body .= (isset($startReg) ? "&startReg=$startReg" : "");
+$Add2Body .= (isset($ReqVar) ? "&ReqVar=$ReqVar" : "");
+$URLQueryBody = "From=$From&What=Body&L=$L&pmc_username=$pmc_username&pmc_password=$PWD_Hash&sheet=$sheet".$Add2Body;
+?>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML dir="<?php echo(($Charset == "windows-1256") ? "RTL" : "LTR"); ?>">
+
+<HEAD>
+<TITLE><?php echo(APP_NAME); ?></TITLE>
+<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript1.2">
+<!--
+// Define the URL for the fix for NN4+ resize bug
+if (document.layers)
+{
+	var NNResize_URL = "<?php echo("$From?L=$L&pmc_username=".urlencode($pmc_username)."&pmc_password=$PWD_Hash&sheet=$sheet"); ?>";
+	var sortBy = "<?php echo(isset($sortBy) ? "&sortBy=$sortBy" : ""); ?>";
+	var sortOrder = "<?php echo(isset($sortOrder) ? "&sortOrder=$sortOrder" : ""); ?>";
+	var startReg = "<?php echo((isset($startReg) && $startReg != "") ? "&startReg=$startReg" : ""); ?>";
+};
+// -->
+</SCRIPT>
+</HEAD>
+
+<FRAMESET ROWS="50,*" FRAMEBORDER="0" BORDER="0" FRAMESPACING="0" OnResize="if (document.layers) document.location = NNResize_URL + sortBy + sortOrder">
+	<FRAME SRC="<?php echo("$From?$URLQueryTop"); ?>" NAME="adminTop" FRAMEBORDER="0" BORDER="0" FRAMESPACING="0" MARGINWIDTH="3" MARGINHEIGHT="3" SCROLLING="NO">
+	<FRAME SRC="<?php echo("$From?$URLQueryBody"); ?>" NAME="adminBody" FRAMEBORDER="0" BORDER="0" FRAMESPACING="0" MARGINWIDTH=0 MARGINHEIGHT=0 NORESIZE>
+</FRAMESET>
+
+</HTML>
\ No newline at end of file
diff -ruN 0.14.5/chat/admin.php3 0.15.0/chat/admin.php3
--- 0.14.5/chat/admin.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/admin.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,122 +0,0 @@
-<?php
-// Get the names and values for vars sent to the admin script
-if (isset($HTTP_GET_VARS))
-{
-	while(list($name,$value) = each($HTTP_GET_VARS))
-	{
-		$$name = $value;
-	};
-};
-
-// Get the names and values for post vars
-if (isset($HTTP_POST_VARS))
-{
-	while(list($name,$value) = each($HTTP_POST_VARS))
-	{
-		$$name = $value;
-	};
-};
-
-// Fix a security hole
-if (isset($L) && !is_dir('./localization/'.$L)) exit();
-	
-// avoid server configuration for magic quotes
-set_magic_quotes_runtime(0);
-
-// Var used in the login.lib.php3 script required bellow
-$MUST_BE_ADMIN = true;
-if (isset($user)) $AUTH_USERNAME = $user;
-if (isset($pswd)) $AUTH_PASSWORD = $pswd;
-
-require("./config/config.lib.php3");
-require("./lib/release.lib.php3");
-require("./lib/database/".C_DB_TYPE.".lib.php3");
-
-// Check for administration language file
-if (!isset($What) || $What == "")
-{ 
-	if (!isset($L)) include("./localization/languages.lib.php3");
-	include("./localization/${L}/localized.chat.php3");
-	if (!file_exists("./localization/${L}/localized.admin.php3"))
-	{
-		unset($L);
-		$Charset_Sav = $Charset;
-		$FontName_Sav = (isset($FontName) ? $FontName : "");
-		$FontSize_Sav = $FontSize;
-		include("./localization/admin.lib.php3");
-	};
-};
-require("./localization/${L}/localized.admin.php3");
-if (isset($Charset_Sav))
-{
-	$Charset = $Charset_Sav; unset($Charset_Sav);
-	$FontName = $FontName_Sav; unset($FontName_Sav);
-	$FontSize = $FontSize_Sav; unset($FontSize_Sav);
-};
-
-// Login stuff
-require("./lib/login.lib.php3");
-
-// Special cache instructions for IE5+
-$CachePlus	= "";
-if (ereg("MSIE [56789]", (isset($HTTP_USER_AGENT)) ? $HTTP_USER_AGENT : getenv("HTTP_USER_AGENT"))) $CachePlus = ", pre-check=0, post-check=0, max-age=0";
-// Do not cache this page
-$now		= gmdate('D, d M Y H:i:s') . ' GMT';
-header("Expires: $now");
-header("Last-Modified: $now");
-header("Cache-Control: no-cache, must-revalidate".$CachePlus);
-header("Pragma: no-cache");
-
-// Define charset
-header("Content-Type: text/html; charset=${Charset}");
-
-// ** Load the frame when the $what var indicate one
-if (isset($What) && $What != "") include("./admin/admin".$What.".php3");
-
-
-// ** Define url query **
-
-// Get the name of the current script;
-if (!isset($PHP_SELF)) $PHP_SELF = $HTTP_SERVER_VARS["PHP_SELF"];
-$From = basename($PHP_SELF);
-
-// Define the sheet to open
-if (!isset($sheet)) $sheet = "1";
-$ToOpen = "admin".$sheet.".php3";
-
-// Set username of the admin to a convenient format
-$AUTH_USERNAME = urlencode(htmlspecialchars(stripslashes($AUTH_USERNAME)));
-
-// Define URL queries to be sent to frames
-$URLQueryTop = "From=$From&What=Top&L=$L&user=$AUTH_USERNAME&pswd=$PWD_Hash&sheet=$sheet";
-$Add2Body = (isset($First) ? "" : "&First=1");
-$Add2Body .= (isset($sortBy) ? "&sortBy=$sortBy" : "&sortBy=username").(isset($sortOrder) ? "&sortOrder=$sortOrder" : "&sortOrder=ASC");
-$Add2Body .= (isset($startReg) ? "&startReg=$startReg" : "");
-$Add2Body .= (isset($ReqVar) ? "&ReqVar=$ReqVar" : "");
-$URLQueryBody = "From=$From&What=Body&L=$L&user=$AUTH_USERNAME&pswd=$PWD_Hash&sheet=$sheet".$Add2Body;
-?>
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<HTML dir="<?php echo(($Charset == "windows-1256") ? "RTL" : "LTR"); ?>">
-
-<HEAD>
-<TITLE><?php echo(APP_NAME); ?></TITLE>
-<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript1.2">
-<!--
-// Define the URL for the fix for NN4+ resize bug
-if (document.layers)
-{
-	var NNResize_URL = "<?php echo("$From?L=$L&user=".urlencode($AUTH_USERNAME)."&pswd=$PWD_Hash&sheet=$sheet"); ?>";
-	var sortBy = "<?php echo(isset($sortBy) ? "&sortBy=$sortBy" : ""); ?>";
-	var sortOrder = "<?php echo(isset($sortOrder) ? "&sortOrder=$sortOrder" : ""); ?>";
-	var startReg = "<?php echo((isset($startReg) && $startReg != "") ? "&startReg=$startReg" : ""); ?>";
-};
-// -->
-</SCRIPT>
-</HEAD>
-
-<FRAMESET ROWS="50,*" FRAMEBORDER="0" BORDER="0" FRAMESPACING="0" OnResize="if (document.layers) document.location = NNResize_URL + sortBy + sortOrder">
-	<FRAME SRC="<?php echo("$From?$URLQueryTop"); ?>" NAME="adminTop" FRAMEBORDER="0" BORDER="0" FRAMESPACING="0" MARGINWIDTH="3" MARGINHEIGHT="3" SCROLLING="NO">
-	<FRAME SRC="<?php echo("$From?$URLQueryBody"); ?>" NAME="adminBody" FRAMEBORDER="0" BORDER="0" FRAMESPACING="0" MARGINWIDTH=0 MARGINHEIGHT=0 NORESIZE>
-</FRAMESET>
-
-</HTML>
\ No newline at end of file
diff -ruN 0.14.5/chat/blank.php 0.15.0/chat/blank.php
--- 0.14.5/chat/blank.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/blank.php	2004-04-01 03:06:23.000000000 -0600
@@ -0,0 +1,18 @@
+<?php
+if (isset($HTTP_GET_VARS["L"])) $L = $HTTP_GET_VARS["L"];
+
+// Fix a security hole
+if (isset($L) && !is_dir('./localization/'.$L)) exit();
+
+require("./localization/".$L."/localized.chat.php");
+header("Content-Type: text/html; charset=${Charset}");
+?>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML dir="<?php echo(($Charset == "windows-1256") ? "RTL" : "LTR"); ?>">
+<HEAD>
+	<TITLE>Blank title</TITLE>
+<HEAD>
+<BODY>
+	<!-- Not a blank document ;) -->
+</BODY>
+</HTML>
\ No newline at end of file
diff -ruN 0.14.5/chat/blank.php3 0.15.0/chat/blank.php3
--- 0.14.5/chat/blank.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/blank.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,18 +0,0 @@
-<?php
-if (isset($HTTP_GET_VARS["L"])) $L = $HTTP_GET_VARS["L"];
-
-// Fix a security hole
-if (isset($L) && !is_dir('./localization/'.$L)) exit();
-
-require("./localization/".$L."/localized.chat.php3");
-header("Content-Type: text/html; charset=${Charset}");
-?>
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<HTML dir="<?php echo(($Charset == "windows-1256") ? "RTL" : "LTR"); ?>">
-<HEAD>
-	<TITLE>Blank title</TITLE>
-<HEAD>
-<BODY>
-	<!-- Not a blank document ;) -->
-</BODY>
-</HTML>
\ No newline at end of file
diff -ruN 0.14.5/chat/config/admin.css.php 0.15.0/chat/config/admin.css.php
--- 0.14.5/chat/config/admin.css.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/config/admin.css.php	2004-04-01 03:06:28.000000000 -0600
@@ -0,0 +1,160 @@
+<?php
+// Get the names and values for vars sent by the script that called this one
+if (isset($HTTP_GET_VARS))
+{
+	while(list($name,$value) = each($HTTP_GET_VARS))
+	{
+		$$name = $value;
+	};
+};
+
+if (isset($Charset))
+{
+	if (isset($FontName) && $FontName != "")
+	{
+		?>
+		* {font-family: <?php echo($FontName); ?>, sans-serif;}
+		<?php
+	}
+	elseif ($Charset == "iso-8859-1" || $Charset == "iso-8859-2")
+	{
+		?>
+		* {font-family: helvetica, arial, geneva, sans-serif;}
+		<?php
+	};
+};
+
+if (!isset($medium) || $medium == "") $medium = 10;
+$large = round(1.4 * $medium);
+$small = round(0.8 * $medium);
+?>
+
+BODY
+{
+	margin: 5px;
+	background-color: #666699;
+	color: #000000;
+	font-size: <?php echo($medium); ?>pt;
+	font-weight: 400;
+	text-indent: 0;
+}
+
+TABLE, TR, TD, TH
+{
+	color: #000000;
+	font-size: <?php echo($medium); ?>pt;
+	font-weight: 400;
+}
+
+TH, B
+{
+	font-weight: 800;
+}
+
+.menu
+{
+	font-size: <?php echo($medium); ?>pt;
+	font-weight: 600;
+	background-color: #666699;
+	color: #FFFFFF;
+	border-bottom: 1pt solid #FFFFFF;
+};
+
+.menuTitle
+{
+	font-size: <?php echo($medium); ?>pt;
+	font-weight: 600;
+	background-color: #666699;
+	color: #CCCCFF;
+};
+
+A
+{
+	text-decoration: underline;
+	color: #FFFFFF;
+	font-weight: 600;
+};
+
+A:hover, A:active
+{
+	color: #FF9900;
+	text-decoration: none;
+};
+
+.thumbIndex
+{
+	font-size: <?php echo($small); ?>pt;
+	font-weight: 600;
+	background-color: #9999CC;
+	color: #FFFFFF;
+	border-top: 1pt solid #FFFFFF; 
+	border-left: 1pt solid #FFFFFF; 
+	border-right: 1pt solid #FFFFFF; 
+};
+
+.thumbIndex A
+{
+	text-decoration: none;
+	color: #FFFFFF;
+	font-weight: 600;
+}
+
+.thumbIndex A.selected
+{
+	text-decoration: none;
+	color: #CCCCFF;
+	font-weight: 600;
+}
+
+.thumbIndex A:hover, .thumbIndex A:active
+{
+	text-decoration: none;
+	background: #666699;
+	color: #FF9933;
+}
+
+INPUT, SELECT, TEXTAREA
+{
+	background: #EEEEFF;
+}
+
+.title
+{
+	color: #CCCCFF;
+	font-size: <?php echo($large); ?>pt;
+	font-weight: 800;
+}
+
+.table
+{
+	background-color: #CCCCFF;
+	color: #000000;
+	font-size: <?php echo($medium); ?>pt;
+	font-weight: 400;
+}
+
+.tabtitle
+{
+	background-color: #666699;
+	color: #FFFFFF;
+	font-size: <?php echo($medium); ?>pt;
+	font-weight: 800;
+}
+
+.error
+{
+	font-weight: 800;
+	color: #FF0000;
+}
+
+.success
+{
+	font-weight: 800;
+	color: #CCCCFF;
+}
+
+.small
+{
+	color: #FFFFFF;
+	font-size: <?php echo($small); ?>pt;
+}
\ No newline at end of file
diff -ruN 0.14.5/chat/config/admin.css.php3 0.15.0/chat/config/admin.css.php3
--- 0.14.5/chat/config/admin.css.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/config/admin.css.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,160 +0,0 @@
-<?php
-// Get the names and values for vars sent by the script that called this one
-if (isset($HTTP_GET_VARS))
-{
-	while(list($name,$value) = each($HTTP_GET_VARS))
-	{
-		$$name = $value;
-	};
-};
-
-if (isset($Charset))
-{
-	if (isset($FontName) && $FontName != "")
-	{
-		?>
-		* {font-family: <?php echo($FontName); ?>, sans-serif;}
-		<?php
-	}
-	elseif ($Charset == "iso-8859-1")
-	{
-		?>
-		* {font-family: helvetica, arial, geneva, sans-serif;}
-		<?php
-	};
-};
-
-if (!isset($medium) || $medium == "") $medium = 10;
-$large = round(1.4 * $medium);
-$small = round(0.8 * $medium);
-?>
-
-BODY
-{
-	margin: 5px;
-	background-color: #666699;
-	color: #000000;
-	font-size: <?php echo($medium); ?>pt;
-	font-weight: 400;
-	text-indent: 0;
-}
-
-TABLE, TR, TD, TH
-{
-	color: #000000;
-	font-size: <?php echo($medium); ?>pt;
-	font-weight: 400;
-}
-
-TH, B
-{
-	font-weight: 800;
-}
-
-.menu
-{
-	font-size: <?php echo($medium); ?>pt;
-	font-weight: 600;
-	background-color: #666699;
-	color: #FFFFFF;
-	border-bottom: 1pt solid #FFFFFF;
-};
-
-.menuTitle
-{
-	font-size: <?php echo($medium); ?>pt;
-	font-weight: 600;
-	background-color: #666699;
-	color: #CCCCFF;
-};
-
-A
-{
-	text-decoration: underline;
-	color: #FFFFFF;
-	font-weight: 600;
-};
-
-A:hover, A:active
-{
-	color: #FF9900;
-	text-decoration: none;
-};
-
-.thumbIndex
-{
-	font-size: <?php echo($small); ?>pt;
-	font-weight: 600;
-	background-color: #9999CC;
-	color: #FFFFFF;
-	border-top: 1pt solid #FFFFFF; 
-	border-left: 1pt solid #FFFFFF; 
-	border-right: 1pt solid #FFFFFF; 
-};
-
-.thumbIndex A
-{
-	text-decoration: none;
-	color: #FFFFFF;
-	font-weight: 600;
-}
-
-.thumbIndex A.selected
-{
-	text-decoration: none;
-	color: #CCCCFF;
-	font-weight: 600;
-}
-
-.thumbIndex A:hover, .thumbIndex A:active
-{
-	text-decoration: none;
-	background: #666699;
-	color: #FF9933;
-}
-
-INPUT, SELECT, TEXTAREA
-{
-	background: #EEEEFF;
-}
-
-.title
-{
-	color: #CCCCFF;
-	font-size: <?php echo($large); ?>pt;
-	font-weight: 800;
-}
-
-.table
-{
-	background-color: #CCCCFF;
-	color: #000000;
-	font-size: <?php echo($medium); ?>pt;
-	font-weight: 400;
-}
-
-.tabtitle
-{
-	background-color: #666699;
-	color: #FFFFFF;
-	font-size: <?php echo($medium); ?>pt;
-	font-weight: 800;
-}
-
-.error
-{
-	font-weight: 800;
-	color: #FF0000;
-}
-
-.success
-{
-	font-weight: 800;
-	color: #CCCCFF;
-}
-
-.small
-{
-	color: #FFFFFF;
-	font-size: <?php echo($small); ?>pt;
-}
\ No newline at end of file
diff -ruN 0.14.5/chat/config/config.lib.php 0.15.0/chat/config/config.lib.php
--- 0.14.5/chat/config/config.lib.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/config/config.lib.php	2008-01-16 09:49:47.000000000 -0600
@@ -0,0 +1,76 @@
+<?php
+
+// BEWARE: '," and \ characters must be slashed in the settings bellow
+
+
+// ------ THESE SETTINGS MUST BE COMPLETED ------ 
+
+// Database settings
+define("C_DB_TYPE", 'mysql');					// SQL server type ("mysql", "pgsql" or "odbc")
+define("C_DB_HOST", '[% mysql.mychat.sqlhost %]');				// Hostname of your MySQL server
+define("C_DB_NAME", '[% mychat %]');					// Logical database name on that server
+define("C_DB_USER", '[% mysql_user %]');				// Database user
+define("C_DB_PASS", '[% mysql_pass %]');				// Database user's password
+define("C_MSG_TBL", '[% table_prefix %]_c_messages');				// Name of the table where messages are stored
+define("C_USR_TBL", '[% table_prefix %]_c_users');					// Name of the table where user names are stored
+define("C_REG_TBL", '[% table_prefix %]_c_reg_users'); 			// Name of the table where registered users are stored
+define("C_BAN_TBL", '[% table_prefix %]_c_ban_users'); 			// Name of the table where banished users are stored
+
+// Cleaning settings for messages and usernames
+define("C_MSG_DEL", '96');						// Messages are deleted when there are 'xx' hours old
+define("C_USR_DEL", '4');						// Usernames are deleted when its last use is 'xx' minutes old
+												//	the second setting must be greater than the maximum time
+												//	authorized between messages list refresh
+define("C_REG_DEL", '0');						// Registered profiles are deleted when its last use is 'xx' days old
+												//	'xx' should be 0 for never 
+
+
+// ------ THESE SETTINGS ALLOW TO FINE TUNE phpMyChat ------
+
+// Proposed (default) rooms and reserved names for private rooms
+$DefaultChatRooms = array('Default', 'MyRoom1', 'MyRoom2');
+$DefaultPrivateRooms = array('Priv1', 'Priv2');
+
+// Language settings
+define("C_LANGUAGE", 'english');				// Default language
+define("C_MULTI_LANG", '1');					// Allow multi-languages/charset ? : 0 = no, 1 = yes
+
+// Registration of users
+define("C_REQUIRE_REGISTER", '0');				// Require registration ? : 0 = no, 1 = yes
+define("C_EMAIL_PASWD", '0');					// Generate a password and send it to the user by e-mail ? 0 = no, 1 = yes
+												// To enable this functionaly you also have to complete the settings in
+												//   the 'chat/lib/mail_validation.lib.php3' script
+
+// Security and restrictions
+define("C_SHOW_ADMIN", '0');					// Show link for admin resources at startup screen ? 0 = no, 1 = yes
+define("C_SHOW_DEL_PROF", '1');					// Show link that allows users to delete their own profile ? 0 = no, 1 = yes
+define("C_VERSION", '2');						// Available rooms : users can access...
+												//	0 : only the first room within the public default ones
+												//	1 : all the public default rooms but not create a room
+												//	2 : all the rooms and create new ones
+define("C_BANISH", '0');						// Enable the banishment feature and define the delay for banishment
+												//  0 = disabled, any positive number = number of banishment day(s)
+												//  if you want all moderators (and not only yourself) to banish users
+												//  forever, set C_BANISH to 2000000 (six zero)
+define("C_NO_SWEAR", '0');						// Check for swear words defined in chat/lib/swearing.lib.php3 file ?
+												//  0 = no, 1 = yes
+define("C_SAVE", '*');							// Max number of message that an user may export with the /save command
+												//	Special values: 0 = none (disable the command), * = no limit
+
+// Messages enhancements
+define("C_USE_SMILIES", '1');					// Use graphical smilies ? : 0 = no, 1 = yes
+define("C_HTML_TAGS_KEEP", 'simple');			// Keep HTML tags in messages ?
+												//	"simple"	: keep bold, italic and underline tags
+												//	"none"		: keep none
+define("C_HTML_TAGS_SHOW", '1');				// Show discarded HTML tags ? : 0 = no, 1 = yes
+
+// Default display settings
+define("C_TMZ_OFFSET", '0');					// Timezone offset in hour between the server time and your country
+define("C_MSG_ORDER", '0');						// Default order : 0 = last on top, 1 = last on bottom
+define("C_MSG_NB", '20');						// Default number of messages to display
+define("C_MSG_REFRESH", '10');					// Default timeout between each update
+define("C_SHOW_TIMESTAMP", '1');				// Show Timsestamp before messages ? : 0 = no, 1 = yes
+define("C_NOTIFY", '1');						// Show nofications of user entrance/exit as default. ? : 0 = no, 1 = yes
+define("C_WELCOME", '1');						// Display a welcome message (defined inside 'chat/lib/welcome.lib.php3')
+												//  at user entrance
+?>
diff -ruN 0.14.5/chat/config/config.lib.php3 0.15.0/chat/config/config.lib.php3
--- 0.14.5/chat/config/config.lib.php3	2005-11-30 16:17:08.000000000 -0600
+++ 0.15.0/chat/config/config.lib.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,76 +0,0 @@
-<?php
-
-// BEWARE: '," and \ characters must be slashed in the settings bellow
-
-
-// ------ THESE SETTINGS MUST BE COMPLETED ------ 
-
-// Database settings
-define("C_DB_TYPE", 'mysql');					// SQL server type ("mysql", "pgsql" or "odbc")
-define("C_DB_HOST", '[% mysql.mychat.sqlhost %]');				// Hostname of your MySQL server
-define("C_DB_NAME", '[% mychat %]');					// Logical database name on that server
-define("C_DB_USER", '[% mysql_user %]');				// Database user
-define("C_DB_PASS", '[% mysql_pass %]');				// Database user's password
-define("C_MSG_TBL", '[% table_prefix %]_c_messages');				// Name of the table where messages are stored
-define("C_USR_TBL", '[% table_prefix %]_c_users');					// Name of the table where user names are stored
-define("C_REG_TBL", '[% table_prefix %]_c_reg_users'); 			// Name of the table where registered users are stored
-define("C_BAN_TBL", '[% table_prefix %]_c_ban_users'); 			// Name of the table where banished users are stored
-
-// Cleaning settings for messages and usernames
-define("C_MSG_DEL", '96');						// Messages are deleted when there are 'xx' hours old
-define("C_USR_DEL", '4');						// Usernames are deleted when its last use is 'xx' minutes old
-												//	the second setting must be greater than the maximum time
-												//	authorized between messages list refresh
-define("C_REG_DEL", '0');						// Registered profiles are deleted when its last use is 'xx' days old
-												//	'xx' should be 0 for never 
-
-
-// ------ THESE SETTINGS ALLOW TO FINE TUNE phpMyChat ------
-
-// Proposed (default) rooms and reserved names for private rooms
-$DefaultChatRooms = array('Default', 'MyRoom1', 'MyRoom2');
-$DefaultPrivateRooms = array('Priv1', 'Priv2');
-
-// Language settings
-define("C_LANGUAGE", 'english');				// Default language
-define("C_MULTI_LANG", '1');					// Allow multi-languages/charset ? : 0 = no, 1 = yes
-
-// Registration of users
-define("C_REQUIRE_REGISTER", '0');				// Require registration ? : 0 = no, 1 = yes
-define("C_EMAIL_PASWD", '0');					// Generate a password and send it to the user by e-mail ? 0 = no, 1 = yes
-												// To enable this functionaly you also have to complete the settings in
-												//   the 'chat/lib/mail_validation.lib.php3' script
-
-// Security and restrictions
-define("C_SHOW_ADMIN", '0');					// Show link for admin resources at startup screen ? 0 = no, 1 = yes
-define("C_SHOW_DEL_PROF", '1');					// Show link that allows users to delete their own profile ? 0 = no, 1 = yes
-define("C_VERSION", '2');						// Available rooms : users can access...
-												//	0 : only the first room within the public default ones
-												//	1 : all the public default rooms but not create a room
-												//	2 : all the rooms and create new ones
-define("C_BANISH", '0');						// Enable the banishment feature and define the delay for banishment
-												//  0 = disabled, any positive number = number of banishment day(s)
-												//  if you want all moderators (and not only yourself) to banish users
-												//  forever, set C_BANISH to 2000000 (six zero)
-define("C_NO_SWEAR", '0');						// Check for swear words defined in chat/lib/swearing.lib.php3 file ?
-												//  0 = no, 1 = yes
-define("C_SAVE", '*');							// Max number of message that an user may export with the /save command
-												//	Special values: 0 = none (disable the command), * = no limit
-
-// Messages enhancements
-define("C_USE_SMILIES", '1');					// Use graphical smilies ? : 0 = no, 1 = yes
-define("C_HTML_TAGS_KEEP", 'simple');			// Keep HTML tags in messages ?
-												//	"simple"	: keep bold, italic and underline tags
-												//	"none"		: keep none
-define("C_HTML_TAGS_SHOW", '1');				// Show discarded HTML tags ? : 0 = no, 1 = yes
-
-// Default display settings
-define("C_TMZ_OFFSET", '0');					// Timezone offset in hour between the server time and your country
-define("C_MSG_ORDER", '0');						// Default order : 0 = last on top, 1 = last on bottom
-define("C_MSG_NB", '20');						// Default number of messages to display
-define("C_MSG_REFRESH", '10');					// Default timeout between each update
-define("C_SHOW_TIMESTAMP", '1');				// Show Timsestamp before messages ? : 0 = no, 1 = yes
-define("C_NOTIFY", '1');						// Show nofications of user entrance/exit as default. ? : 0 = no, 1 = yes
-define("C_WELCOME", '1');						// Display a welcome message (defined inside 'chat/lib/welcome.lib.php3')
-												//  at user entrance
-?>
Binary files 0.14.5/chat/config/.config.lib.php3.swp and 0.15.0/chat/config/.config.lib.php3.swp differ
diff -ruN 0.14.5/chat/config/.htaccess 0.15.0/chat/config/.htaccess
--- 0.14.5/chat/config/.htaccess	2005-11-30 16:09:41.000000000 -0600
+++ 0.15.0/chat/config/.htaccess	1969-12-31 18:00:00.000000000 -0600
@@ -1,4 +0,0 @@
-<files config.lib.php3>
-   Order Deny,Allow
-   Deny From All
-</files>
diff -ruN 0.14.5/chat/config/start_page.css.php 0.15.0/chat/config/start_page.css.php
--- 0.14.5/chat/config/start_page.css.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/config/start_page.css.php	2004-04-01 03:06:28.000000000 -0600
@@ -0,0 +1,180 @@
+<?php
+// Get the names and values for vars sent by the script that called this one
+if (isset($HTTP_GET_VARS))
+{
+	while(list($name,$value) = each($HTTP_GET_VARS))
+	{
+		$$name = $value;
+	};
+};
+
+if (isset($Charset))
+{
+	if (isset($FontName) && $FontName != "")
+	{
+		$FontFace = "font-family: \"${FontName}, sans-serif\";";
+		$SpecialFont = "1";
+	}
+	elseif ($Charset == "iso-8859-1" || $Charset == "iso-8859-2")
+	{
+		$FontFace = "font-family: helvetica, arial, geneva, sans-serif;";
+	};
+};
+
+if (!isset($medium) || $medium == "") $medium = 10;
+$large = round(1.4 * $medium);
+$small = round(0.8 * $medium);
+?>
+
+.ChatBody
+{
+	<?php if (isset($FontFace)) echo($FontFace); ?>
+	background-color: #666699;
+	color: #FFFFFF;
+	font-size: <?php echo($medium); ?>pt;
+	font-weight: 400;
+	margin: 5px;
+	text-indent: 0;
+}
+
+.ChatTable
+{
+	<?php if (isset($FontFace)) echo($FontFace); ?>
+	background-color: #CCCCFF;
+	color: #000000;
+	font-size: <?php echo($medium); ?>pt;
+	font-weight: 400;
+}
+
+.ChatTabTitle
+{
+	<?php if (isset($FontFace)) echo($FontFace); ?>
+	background-color: #666699;
+	color: #FFFFFF;
+	font-size: <?php echo($medium); ?>pt;
+	font-weight: 800;
+}
+
+TR.ChatCell, TD.ChatCell, TH.ChatCell
+{
+	<?php if (isset($FontFace)) echo($FontFace); ?>
+	color: #000000;
+	font-size: <?php echo($medium); ?>pt;
+	font-weight: 400;
+}
+
+TH.ChatCell
+{
+	<?php if (isset($FontFace)) echo($FontFace); ?>
+	font-weight: 800;
+}
+
+<?php
+if (isset($SpecialFont))
+{
+	?>
+	A.ChatFonts
+	{
+		<?php if (isset($FontFace)) echo($FontFace); ?>
+		text-decoration: underline;
+		color: #FF0000;
+		font-weight: 600;
+	}
+
+	A.ChatFonts:hover, A.ChatFonts:active
+	{
+		<?php if (isset($FontFace)) echo($FontFace); ?>
+		color: #FF0000;
+		text-decoration: none;
+	}
+	<?php
+};
+?>
+
+A.ChatLink
+{
+	<?php if (isset($FontFace)) echo($FontFace); ?>
+	text-decoration: underline;
+	color: #FFFFFF;
+	font-weight: 600;
+}
+
+A.ChatLink:hover, A.ChatLink:active
+{
+	<?php if (isset($FontFace)) echo($FontFace); ?>
+	color: #FF9900;
+	text-decoration: none;
+}
+
+A.ChatReg
+{
+	<?php if (isset($FontFace)) echo($FontFace); ?>
+	text-decoration: underline;
+	color: #0000C0;
+	font-weight: 800;
+}
+
+A.ChatReg:hover,A.ChatReg:active
+{
+	<?php if (isset($FontFace)) echo($FontFace); ?>
+	color: #0000C0;
+	text-decoration: none;
+}
+
+INPUT.ChatBox, SELECT.ChatBox, TEXTAREA.ChatBox
+{
+	<?php if (isset($FontFace)) echo($FontFace); ?>
+	background: #EEEEFF;
+}
+
+.ChatTitle
+{
+	<?php if (isset($FontFace)) echo($FontFace); ?>
+	color: #CCCCFF;
+	font-size: <?php echo($large); ?>pt;
+	font-weight: 800;
+}
+
+.ChatError
+{
+	<?php if (isset($FontFace)) echo($FontFace); ?>
+	font-size: <?php echo($medium); ?>pt;
+	font-weight: 800;
+	color: #FF0000;
+}
+
+.ChatCopy
+{
+	font-family: helvetica, arial, geneva, sans-serif;
+	unicode-bidi: embed;
+	color: #CCCCFF;
+	font-size: 8pt;
+}
+
+A.ChatCopy, A.ChatCopy:active
+{
+	font-family: helvetica, arial, geneva, sans-serif;
+	color: #FFFFFF;
+}
+
+.ChatP1
+{
+	<?php if (isset($FontFace)) echo($FontFace); ?>
+	font-size: <?php echo($medium); ?>pt;
+	color: #FFFFFF;
+}
+
+.ChatP2
+{
+	<?php if (isset($FontFace)) echo($FontFace); ?>
+	font-size: <?php echo($medium); ?>pt;
+	color: #000000;
+}
+
+.ChatFlags
+{
+	<?php if (isset($FontFace)) echo($FontFace); ?>
+	color: #000000;
+	font-size: 10pt;
+	font-weight: 400;
+}
\ No newline at end of file
diff -ruN 0.14.5/chat/config/start_page.css.php3 0.15.0/chat/config/start_page.css.php3
--- 0.14.5/chat/config/start_page.css.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/config/start_page.css.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,180 +0,0 @@
-<?php
-// Get the names and values for vars sent by the script that called this one
-if (isset($HTTP_GET_VARS))
-{
-	while(list($name,$value) = each($HTTP_GET_VARS))
-	{
-		$$name = $value;
-	};
-};
-
-if (isset($Charset))
-{
-	if (isset($FontName) && $FontName != "")
-	{
-		$FontFace = "font-family: \"${FontName}, sans-serif\";";
-		$SpecialFont = "1";
-	}
-	elseif ($Charset == "iso-8859-1")
-	{
-		$FontFace = "font-family: helvetica, arial, geneva, sans-serif;";
-	};
-};
-
-if (!isset($medium) || $medium == "") $medium = 10;
-$large = round(1.4 * $medium);
-$small = round(0.8 * $medium);
-?>
-
-.ChatBody
-{
-	<?php if (isset($FontFace)) echo($FontFace); ?>
-	background-color: #666699;
-	color: #FFFFFF;
-	font-size: <?php echo($medium); ?>pt;
-	font-weight: 400;
-	margin: 5px;
-	text-indent: 0;
-}
-
-.ChatTable
-{
-	<?php if (isset($FontFace)) echo($FontFace); ?>
-	background-color: #CCCCFF;
-	color: #000000;
-	font-size: <?php echo($medium); ?>pt;
-	font-weight: 400;
-}
-
-.ChatTabTitle
-{
-	<?php if (isset($FontFace)) echo($FontFace); ?>
-	background-color: #666699;
-	color: #FFFFFF;
-	font-size: <?php echo($medium); ?>pt;
-	font-weight: 800;
-}
-
-TR.ChatCell, TD.ChatCell, TH.ChatCell
-{
-	<?php if (isset($FontFace)) echo($FontFace); ?>
-	color: #000000;
-	font-size: <?php echo($medium); ?>pt;
-	font-weight: 400;
-}
-
-TH.ChatCell
-{
-	<?php if (isset($FontFace)) echo($FontFace); ?>
-	font-weight: 800;
-}
-
-<?php
-if (isset($SpecialFont))
-{
-	?>
-	A.ChatFonts
-	{
-		<?php if (isset($FontFace)) echo($FontFace); ?>
-		text-decoration: underline;
-		color: #FF0000;
-		font-weight: 600;
-	}
-
-	A.ChatFonts:hover, A.ChatFonts:active
-	{
-		<?php if (isset($FontFace)) echo($FontFace); ?>
-		color: #FF0000;
-		text-decoration: none;
-	}
-	<?php
-};
-?>
-
-A.ChatLink
-{
-	<?php if (isset($FontFace)) echo($FontFace); ?>
-	text-decoration: underline;
-	color: #FFFFFF;
-	font-weight: 600;
-}
-
-A.ChatLink:hover, A.ChatLink:active
-{
-	<?php if (isset($FontFace)) echo($FontFace); ?>
-	color: #FF9900;
-	text-decoration: none;
-}
-
-A.ChatReg
-{
-	<?php if (isset($FontFace)) echo($FontFace); ?>
-	text-decoration: underline;
-	color: #0000C0;
-	font-weight: 800;
-}
-
-A.ChatReg:hover,A.ChatReg:active
-{
-	<?php if (isset($FontFace)) echo($FontFace); ?>
-	color: #0000C0;
-	text-decoration: none;
-}
-
-INPUT.ChatBox, SELECT.ChatBox, TEXTAREA.ChatBox
-{
-	<?php if (isset($FontFace)) echo($FontFace); ?>
-	background: #EEEEFF;
-}
-
-.ChatTitle
-{
-	<?php if (isset($FontFace)) echo($FontFace); ?>
-	color: #CCCCFF;
-	font-size: <?php echo($large); ?>pt;
-	font-weight: 800;
-}
-
-.ChatError
-{
-	<?php if (isset($FontFace)) echo($FontFace); ?>
-	font-size: <?php echo($medium); ?>pt;
-	font-weight: 800;
-	color: #FF0000;
-}
-
-.ChatCopy
-{
-	font-family: helvetica, arial, geneva, sans-serif;
-	unicode-bidi: embed;
-	color: #CCCCFF;
-	font-size: 8pt;
-}
-
-A.ChatCopy, A.ChatCopy:active
-{
-	font-family: helvetica, arial, geneva, sans-serif;
-	color: #FFFFFF;
-}
-
-.ChatP1
-{
-	<?php if (isset($FontFace)) echo($FontFace); ?>
-	font-size: <?php echo($medium); ?>pt;
-	color: #FFFFFF;
-}
-
-.ChatP2
-{
-	<?php if (isset($FontFace)) echo($FontFace); ?>
-	font-size: <?php echo($medium); ?>pt;
-	color: #000000;
-}
-
-.ChatFlags
-{
-	<?php if (isset($FontFace)) echo($FontFace); ?>
-	color: #000000;
-	font-size: 10pt;
-	font-weight: 400;
-}
\ No newline at end of file
diff -ruN 0.14.5/chat/config/style.css.php 0.15.0/chat/config/style.css.php
--- 0.14.5/chat/config/style.css.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/config/style.css.php	2004-04-01 03:06:28.000000000 -0600
@@ -0,0 +1,168 @@
+<?php
+// Get the names and values for vars sent by the script that called this one
+if (isset($HTTP_GET_VARS))
+{
+	while(list($name,$value) = each($HTTP_GET_VARS))
+	{
+		$$name = $value;
+	};
+};
+
+if (isset($Charset))
+{
+	if (isset($FontName) && $FontName != "")
+	{
+		?>
+		* {font-family: <?php echo($FontName); ?>, sans-serif;}
+		<?php
+	}
+	elseif ($Charset == "iso-8859-1" || $Charset == "iso-8859-2")
+	{
+		?>
+		* {font-family: helvetica, arial, geneva, sans-serif;}
+		<?php
+	};
+};
+
+if (!isset($medium) || $medium == "") $medium = 10;
+$large = round(1.4 * $medium);
+$small = round(0.8 * $medium);
+?>
+
+BODY
+{
+	background-color: #666699;
+	color: #FFFFFF;
+	font-size: <?php echo($medium); ?>pt;
+	font-weight: 400;
+	margin: 5px;
+	text-indent: 0;
+}
+
+BODY.frame
+{
+	background-color: #666699;
+	color: #CCCCFF;
+	font-size: <?php echo($medium); ?>pt;
+	font-weight: 400;
+	margin: 5px;
+	text-indent: 0;
+}
+
+BODY.mainframe
+{
+	background-color: #CCCCFF;
+	color: #000000;
+	font-size: <?php echo($medium); ?>pt;
+	font-weight: 400;
+	margin: 5px;
+}
+
+TABLE, TR, TD, TH
+{
+	color: #000000;
+	font-size: <?php echo($medium); ?>pt;
+	font-weight: 400;
+}
+
+TD.whois, .whois
+{
+	color: #CCCCFF;
+	font-size: <?php echo($medium); ?>pt;
+	font-weight: 600;
+}
+
+TH, B
+{
+	font-weight: 800;
+}
+
+A
+{
+	text-decoration: underline;
+	color: #FFFFFF;
+	font-weight: 600;
+}
+
+A:hover, A:active
+{
+	color: #FF9900;
+	text-decoration: none;
+}
+
+A.user, A.user:active
+{
+	text-decoration: none;
+	color: #CCCCFF;
+	font-weight: 400;
+}
+
+INPUT, SELECT, TEXTAREA
+{
+	background: #EEEEFF;
+}
+
+A.sender, A.sender:active
+{
+	text-decoration: none;
+	color: #000000;
+	font-weight: 600;
+}
+
+.msg
+{
+	margin-top: 0px;
+	margin-bottom: 2px;
+	margin-left: <?php echo($Charset == "windows-1256" ? "5" : "55"); ?>px;
+	margin-right: <?php echo($Charset == "windows-1256" ? "55" : "5"); ?>px;
+	text-indent: -50px;
+}
+
+.title
+{
+	color: #CCCCFF;
+	font-size: <?php echo($large); ?>pt;
+	font-weight: 800;
+}
+
+.table
+{
+	background-color: #CCCCFF;
+	color: #000000;
+	font-size: <?php echo($medium); ?>pt;
+	font-weight: 400;
+}
+
+.tabtitle
+{
+	background-color: #666699;
+	color: #FFFFFF;
+	font-size: <?php echo($medium); ?>pt;
+	font-weight: 800;
+}
+
+.error
+{
+	font-weight: 800;
+	color: #FF0000;
+}
+
+.small
+{
+	color: #FFFFFF;
+	font-size: <?php echo($small); ?>pt;
+}
+
+.time
+{
+	unicode-bidi: embed;
+	color: #000000;
+	font-size: 8pt;
+}
+
+.notify
+{
+	color: #666699;
+	font-size: <?php echo($medium); ?>pt;
+	font-weight: 600;
+}
\ No newline at end of file
diff -ruN 0.14.5/chat/config/style.css.php3 0.15.0/chat/config/style.css.php3
--- 0.14.5/chat/config/style.css.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/config/style.css.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,168 +0,0 @@
-<?php
-// Get the names and values for vars sent by the script that called this one
-if (isset($HTTP_GET_VARS))
-{
-	while(list($name,$value) = each($HTTP_GET_VARS))
-	{
-		$$name = $value;
-	};
-};
-
-if (isset($Charset))
-{
-	if (isset($FontName) && $FontName != "")
-	{
-		?>
-		* {font-family: <?php echo($FontName); ?>, sans-serif;}
-		<?php
-	}
-	elseif ($Charset == "iso-8859-1")
-	{
-		?>
-		* {font-family: helvetica, arial, geneva, sans-serif;}
-		<?php
-	};
-};
-
-if (!isset($medium) || $medium == "") $medium = 10;
-$large = round(1.4 * $medium);
-$small = round(0.8 * $medium);
-?>
-
-BODY
-{
-	background-color: #666699;
-	color: #FFFFFF;
-	font-size: <?php echo($medium); ?>pt;
-	font-weight: 400;
-	margin: 5px;
-	text-indent: 0;
-}
-
-BODY.frame
-{
-	background-color: #666699;
-	color: #CCCCFF;
-	font-size: <?php echo($medium); ?>pt;
-	font-weight: 400;
-	margin: 5px;
-	text-indent: 0;
-}
-
-BODY.mainframe
-{
-	background-color: #CCCCFF;
-	color: #000000;
-	font-size: <?php echo($medium); ?>pt;
-	font-weight: 400;
-	margin: 5px;
-}
-
-TABLE, TR, TD, TH
-{
-	color: #000000;
-	font-size: <?php echo($medium); ?>pt;
-	font-weight: 400;
-}
-
-TD.whois, .whois
-{
-	color: #CCCCFF;
-	font-size: <?php echo($medium); ?>pt;
-	font-weight: 600;
-}
-
-TH, B
-{
-	font-weight: 800;
-}
-
-A
-{
-	text-decoration: underline;
-	color: #FFFFFF;
-	font-weight: 600;
-}
-
-A:hover, A:active
-{
-	color: #FF9900;
-	text-decoration: none;
-}
-
-A.user, A.user:active
-{
-	text-decoration: none;
-	color: #CCCCFF;
-	font-weight: 400;
-}
-
-INPUT, SELECT, TEXTAREA
-{
-	background: #EEEEFF;
-}
-
-A.sender, A.sender:active
-{
-	text-decoration: none;
-	color: #000000;
-	font-weight: 600;
-}
-
-.msg
-{
-	margin-top: 0px;
-	margin-bottom: 2px;
-	margin-left: <?php echo($Charset == "windows-1256" ? "5" : "55"); ?>px;
-	margin-right: <?php echo($Charset == "windows-1256" ? "55" : "5"); ?>px;
-	text-indent: -50px;
-}
-
-.title
-{
-	color: #CCCCFF;
-	font-size: <?php echo($large); ?>pt;
-	font-weight: 800;
-}
-
-.table
-{
-	background-color: #CCCCFF;
-	color: #000000;
-	font-size: <?php echo($medium); ?>pt;
-	font-weight: 400;
-}
-
-.tabtitle
-{
-	background-color: #666699;
-	color: #FFFFFF;
-	font-size: <?php echo($medium); ?>pt;
-	font-weight: 800;
-}
-
-.error
-{
-	font-weight: 800;
-	color: #FF0000;
-}
-
-.small
-{
-	color: #FFFFFF;
-	font-size: <?php echo($small); ?>pt;
-}
-
-.time
-{
-	unicode-bidi: embed;
-	color: #000000;
-	font-size: 8pt;
-}
-
-.notify
-{
-	color: #666699;
-	font-size: <?php echo($medium); ?>pt;
-	font-weight: 600;
-}
\ No newline at end of file
diff -ruN 0.14.5/chat/deluser.php 0.15.0/chat/deluser.php
--- 0.14.5/chat/deluser.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/deluser.php	2004-04-01 03:06:23.000000000 -0600
@@ -0,0 +1,113 @@
+<?
+// Get the names and values for vars sent to this script
+if (isset($HTTP_GET_VARS))
+{
+	while(list($name,$value) = each($HTTP_GET_VARS))
+	{
+		$$name = $value;
+	};
+};
+
+// Get the names and values for vars posted from the form bellow
+if (isset($HTTP_POST_VARS))
+{
+	while(list($name,$value) = each($HTTP_POST_VARS))
+	{
+		$$name = $value;
+	};
+};
+
+// Fix a security hole
+if (isset($L) && !is_dir('./localization/'.$L)) exit();
+	
+require("./config/config.lib.php");
+require("./localization/languages.lib.php");
+require("./localization/".$L."/localized.chat.php");
+require("./lib/release.lib.php");
+require("./lib/database/".C_DB_TYPE.".lib.php");
+require("./lib/login.lib.php");
+
+// Special cache instructions for IE5+
+$CachePlus	= "";
+if (ereg("MSIE [56789]", (isset($HTTP_USER_AGENT)) ? $HTTP_USER_AGENT : getenv("HTTP_USER_AGENT"))) $CachePlus = ", pre-check=0, post-check=0, max-age=0";
+$now		= gmdate('D, d M Y H:i:s') . ' GMT';
+
+header("Expires: $now");
+header("Last-Modified: $now");
+header("Cache-Control: no-cache, must-revalidate".$CachePlus);
+header("Pragma: no-cache");
+header("Content-Type: text/html; charset={$Charset}");
+
+// avoid server configuration for magic quotes
+set_magic_quotes_runtime(0);
+
+if ($perms == "admin") $Msg = L_ERR_USR_12;
+
+if (isset($FORM_SEND) && stripslashes($submit_type) == L_REG_20)
+{
+	$DbLink = new DB;
+	$DbLink->query("DELETE FROM ".C_REG_TBL." WHERE username='$pmc_username'");
+	$Msg = L_REG_21;
+	$DbLink->close();
+};
+
+// For translations with an explicit charset (not the 'x-user-defined' one)
+if (!isset($FontName)) $FontName = "";
+?>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML dir="<?php echo(($Charset == "windows-1256") ? "RTL" : "LTR"); ?>">
+
+<HEAD>
+<TITLE><?php echo(APP_NAME); ?></TITLE>
+<LINK REL="stylesheet" HREF="config/style.css.php?<?php echo("Charset=${Charset}&medium=${FontSize}&FontName=".urlencode($FontName)); ?>" TYPE="text/css">
+</HEAD>
+
+<BODY>
+<CENTER>
+<BR>
+<FORM ACTION="deluser.php" METHOD="POST" AUTOCOMPLETE="OFF" NAME="DelUsrForm">
+<INPUT type="hidden" name="FORM_SEND" value="1">
+<INPUT type="hidden" name="pmc_username" value="<?echo(htmlspecialchars(stripslashes($pmc_username)))?>">
+<INPUT type="hidden" name="pmc_password" value="<?echo(htmlspecialchars(stripslashes($pmc_password)))?>">
+<?php
+if(isset($Error))
+{
+	echo("<P><SPAN CLASS=\"error\">$Error</SPAN></P>");
+}
+?>
+<INPUT TYPE="hidden" NAME="L" VALUE="<?php echo($L); ?>">
+<TABLE BORDER=0 CELLPADDING=3 CLASS="table">
+<TR>
+	<TD ALIGN="CENTER">
+		<TABLE BORDER=0>
+		<TR>
+			<TH CLASS="tabtitle"><?php echo(L_REG_13); ?></TH>
+		</TR>
+		<TR>
+			<TD VALIGN="TOP" ALIGN="CENTER">
+				<?php echo(isset($Msg)? $Msg:L_REG_19); ?>
+			</TD>
+		</TR>
+		</TABLE>
+		<?if (!isset($Msg)) {?>
+		<P>
+		<TABLE border=0>
+		<TR>
+			<TD><INPUT TYPE="submit" NAME="submit_type" VALUE="<?php echo(L_REG_20); ?>"></TD>
+			<TD><INPUT TYPE="submit" NAME="submit_type" VALUE="<?php echo(L_REG_22); ?>" onClick="self.close(); return false;"></TD>
+		</TR>
+		</TABLE>
+		<?} else {?>
+		<P>
+		<INPUT TYPE="submit" NAME="submit_type" VALUE="<?php echo(L_REG_25); ?>" onClick="self.close(); return false;">
+		<?}?>
+	</TD>
+</TR>
+</TABLE>
+</CENTER>
+</BODY>
+
+</HTML>
+<?php
+
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/deluser.php3 0.15.0/chat/deluser.php3
--- 0.14.5/chat/deluser.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/deluser.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,113 +0,0 @@
-<?
-// Get the names and values for vars sent to this script
-if (isset($HTTP_GET_VARS))
-{
-	while(list($name,$value) = each($HTTP_GET_VARS))
-	{
-		$$name = $value;
-	};
-};
-
-// Get the names and values for vars posted from the form bellow
-if (isset($HTTP_POST_VARS))
-{
-	while(list($name,$value) = each($HTTP_POST_VARS))
-	{
-		$$name = $value;
-	};
-};
-
-// Fix a security hole
-if (isset($L) && !is_dir('./localization/'.$L)) exit();
-	
-require("./config/config.lib.php3");
-require("./localization/languages.lib.php3");
-require("./localization/".$L."/localized.chat.php3");
-require("./lib/release.lib.php3");
-require("./lib/database/".C_DB_TYPE.".lib.php3");
-require("./lib/login.lib.php3");
-
-// Special cache instructions for IE5+
-$CachePlus	= "";
-if (ereg("MSIE [56789]", (isset($HTTP_USER_AGENT)) ? $HTTP_USER_AGENT : getenv("HTTP_USER_AGENT"))) $CachePlus = ", pre-check=0, post-check=0, max-age=0";
-$now		= gmdate('D, d M Y H:i:s') . ' GMT';
-
-header("Expires: $now");
-header("Last-Modified: $now");
-header("Cache-Control: no-cache, must-revalidate".$CachePlus);
-header("Pragma: no-cache");
-header("Content-Type: text/html; charset={$Charset}");
-
-// avoid server configuration for magic quotes
-set_magic_quotes_runtime(0);
-
-if ($perms == "admin") $Msg = L_ERR_USR_12;
-
-if (isset($FORM_SEND) && stripslashes($submit_type) == L_REG_20)
-{
-	$DbLink = new DB;
-	$DbLink->query("DELETE FROM ".C_REG_TBL." WHERE username='$AUTH_USERNAME'");
-	$Msg = L_REG_21;
-	$DbLink->close();
-};
-
-// For translations with an explicit charset (not the 'x-user-defined' one)
-if (!isset($FontName)) $FontName = "";
-?>
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<HTML dir="<?php echo(($Charset == "windows-1256") ? "RTL" : "LTR"); ?>">
-
-<HEAD>
-<TITLE><?php echo(APP_NAME); ?></TITLE>
-<LINK REL="stylesheet" HREF="config/style.css.php3?<?php echo("Charset=${Charset}&medium=${FontSize}&FontName=${FontName}"); ?>" TYPE="text/css">
-</HEAD>
-
-<BODY>
-<CENTER>
-<BR>
-<FORM ACTION="deluser.php3" METHOD="POST" AUTOCOMPLETE="OFF" NAME="DelUsrForm">
-<INPUT type="hidden" name="FORM_SEND" value="1">
-<INPUT type="hidden" name="AUTH_USERNAME" value="<?echo(htmlspecialchars(stripslashes($AUTH_USERNAME)))?>">
-<INPUT type="hidden" name="AUTH_PASSWORD" value="<?echo(htmlspecialchars(stripslashes($AUTH_PASSWORD)))?>">
-<?php
-if(isset($Error))
-{
-	echo("<P><SPAN CLASS=\"error\">$Error</SPAN></P>");
-}
-?>
-<INPUT TYPE="hidden" NAME="L" VALUE="<?php echo($L); ?>">
-<TABLE BORDER=0 CELLPADDING=3 CLASS="table">
-<TR>
-	<TD ALIGN="CENTER">
-		<TABLE BORDER=0>
-		<TR>
-			<TH CLASS="tabtitle"><?php echo(L_REG_13); ?></TH>
-		</TR>
-		<TR>
-			<TD VALIGN="TOP" ALIGN="CENTER">
-				<?php echo(isset($Msg)? $Msg:L_REG_19); ?>
-			</TD>
-		</TR>
-		</TABLE>
-		<?if (!isset($Msg)) {?>
-		<P>
-		<TABLE border=0>
-		<TR>
-			<TD><INPUT TYPE="submit" NAME="submit_type" VALUE="<?php echo(L_REG_20); ?>"></TD>
-			<TD><INPUT TYPE="submit" NAME="submit_type" VALUE="<?php echo(L_REG_22); ?>" onClick="self.close(); return false;"></TD>
-		</TR>
-		</TABLE>
-		<?} else {?>
-		<P>
-		<INPUT TYPE="submit" NAME="submit_type" VALUE="<?php echo(L_REG_25); ?>" onClick="self.close(); return false;">
-		<?}?>
-	</TD>
-</TR>
-</TABLE>
-</CENTER>
-</BODY>
-
-</HTML>
-<?php
-
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/edituser.php 0.15.0/chat/edituser.php
--- 0.14.5/chat/edituser.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/edituser.php	2004-04-01 03:06:23.000000000 -0600
@@ -0,0 +1,282 @@
+<?php
+// Get the names and values for vars sent to this script
+if (isset($HTTP_GET_VARS))
+{
+	while(list($name,$value) = each($HTTP_GET_VARS))
+	{
+		$$name = $value;
+	};
+};
+
+// Get the names and values for vars posted from the form bellow
+if (isset($HTTP_POST_VARS))
+{
+	while(list($name,$value) = each($HTTP_POST_VARS))
+	{
+		$$name = $value;
+	};
+};
+
+// Fix a security hole
+if (isset($L) && !is_dir('./localization/'.$L)) exit();
+	
+require("./config/config.lib.php");
+require("./localization/languages.lib.php");
+require("./localization/".$L."/localized.chat.php");
+require("./lib/release.lib.php");
+require("./lib/database/".C_DB_TYPE.".lib.php");
+require("./lib/login.lib.php");
+
+// Special cache instructions for IE5+
+$CachePlus	= "";
+if (ereg("MSIE [56789]", (isset($HTTP_USER_AGENT)) ? $HTTP_USER_AGENT : getenv("HTTP_USER_AGENT"))) $CachePlus = ", pre-check=0, post-check=0, max-age=0";
+$now		= gmdate('D, d M Y H:i:s') . ' GMT';
+
+header("Expires: $now");
+header("Last-Modified: $now");
+header("Cache-Control: no-cache, must-revalidate".$CachePlus);
+header("Pragma: no-cache");
+header("Content-Type: text/html; charset=${Charset}");
+
+// avoid server configuration for magic quotes
+set_magic_quotes_runtime(0);
+
+$DbLink = new DB;
+
+// Check for valid entries if the form have been sent
+if (isset($FORM_SEND) && stripslashes($submit_type) == L_REG_16)
+{
+	if (C_NO_SWEAR == 1) include("./lib/swearing.lib.php");
+	if (trim($U) == "")
+	{
+		$Error = L_ERR_USR_5;
+	}
+	else if (ereg("[\, ]", stripslashes($U)))
+	{
+		$Error = L_ERR_USR_16;
+	}
+	else if(C_NO_SWEAR == 1 && checkwords($U, true))
+	{
+		$Error = L_ERR_USR_18;
+	}
+	else if ($prev_PASSWORD == "")
+	{
+		$Error = L_ERR_USR_6;
+	}
+	else if (trim($FIRSTNAME) == "" || trim($LASTNAME) == "")
+	{
+		$Error = L_ERR_USR_15;
+	}
+	else if (trim($EMAIL) == "")
+	{
+		$Error = L_ERR_USR_7;
+	}
+	else if (!eregi("^([0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-wyz][a-z](fo|g|l|m|mes|o|op|pa|ro|seum|t|u|v|z)?)$", $EMAIL))
+	{
+		$Error = L_ERR_USR_8;
+	}
+	else if ($U != $pmc_username)
+	{
+		$DbLink->query("SELECT count(*) FROM ".C_REG_TBL." WHERE username='$U'");
+		list($rows) = $DbLink->next_record();
+		$DbLink->clean_results();
+		if ($rows != 0) $Error = L_ERR_USR_9;
+	}
+
+	if (!isset($Error))
+	{
+		$Latin1 = ($Charset == "iso-8859-1");
+		$PWD_Hash = md5(stripslashes($prev_PASSWORD));
+		if (!isset($GENDER)) $GENDER = "";
+		$showemail = (isset($SHOWEMAIL) && $SHOWEMAIL)? 1:0;
+		include("./lib/get_IP.lib.php");		// Set the $IP var
+		$DbLink->query("UPDATE ".C_REG_TBL." SET username='$U', latin1='$Latin1', password='$PWD_Hash', firstname='$FIRSTNAME', lastname='$LASTNAME', country='$COUNTRY', website='$WEBSITE', email='$EMAIL', showemail=$showemail, reg_time=".time().", ip='$IP', gender='$GENDER' WHERE username='$pmc_username'");
+		if ($pmc_username != $U) $pmc_username = $U;
+		if ($pmc_password != $prev_PASSWORD) $pmc_password = $prev_PASSWORD;
+		$Message = L_REG_17;
+	}
+}
+// Else initialize var that will be displayed in the form
+else
+{
+	$U = $pmc_username;
+	$prev_PASSWORD = $pmc_password;
+	$DbLink->query("SELECT firstname,lastname,country,website,email,showemail,gender FROM ".C_REG_TBL." WHERE username='$U' LIMIT 1");
+	if ($DbLink->num_rows() != 0)
+	{
+		list($FIRSTNAME, $LASTNAME, $COUNTRY, $WEBSITE, $EMAIL, $SHOWEMAIL, $GENDER) = $DbLink->next_record();
+	}
+	$DbLink->clean_results();
+}
+
+$DbLink->close();
+
+// Modifications have been done ?
+$done = (isset($Message) && $Message == L_REG_17);
+
+// For translations with an explicit charset (not the 'x-user-defined' one)
+if (!isset($FontName)) $FontName = "";
+?>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML dir="<?php echo(($Charset == "windows-1256") ? "RTL" : "LTR"); ?>">
+
+<HEAD>
+<TITLE><?php echo(APP_NAME); ?></TITLE>
+<LINK REL="stylesheet" HREF="config/style.css.php?<?php echo("Charset=${Charset}&medium=${FontSize}&FontName=".urlencode($FontName)); ?>" TYPE="text/css">
+<SCRIPT TYPE="text/javascript" LANGUAGE="javascript1.1">
+<!--
+// Put the focus to the message box if the window has been called with the profile command
+function put_focus()
+{
+	if (window.opener.window.document.title == "Hidden Input frame")
+		targetFrame = window.opener.window.parent.frames['input'].window;
+	else
+		targetFrame = window.opener.window;
+
+	with (targetFrame)
+	{
+		focus();
+		if (document.forms['MsgForm'] && document.forms['MsgForm'].elements['M'])
+			document.forms['MsgForm'].elements['M'].focus();
+	};
+}
+// -->
+</SCRIPT>
+</HEAD>
+
+<BODY>
+<CENTER>
+<BR>
+<FORM ACTION="edituser.php" METHOD="POST" AUTOCOMPLETE="OFF" NAME="EditUsrForm">
+<INPUT type="hidden" name="FORM_SEND" value="1">
+<INPUT type="hidden" name="pmc_username" value="<?php echo(htmlspecialchars(stripslashes($pmc_username))); ?>">
+<INPUT type="hidden" name="pmc_password" value="<?php echo(htmlspecialchars(stripslashes($pmc_password))); ?>">
+<P></P>
+<?php
+if(isset($Error))
+{
+	echo("<P><SPAN CLASS=\"error\">$Error</SPAN></P>");
+}
+?>
+<INPUT TYPE="hidden" NAME="L" VALUE="<?php echo($L); ?>">
+<TABLE BORDER=0 CELLPADDING=3 CLASS="table">
+<TR>
+	<TD ALIGN="CENTER">
+		<TABLE BORDER=0>
+		<TR>
+			<TH COLSPAN=2 CLASS="tabtitle"><?php echo($done ? $Message : L_REG_34); ?></TH>
+		</TR>
+		<TR>
+			<TH COLSPAN=2><?php if (!$done) echo(L_REG_37); ?></TH>
+		</TR>
+		<TR><TD>&nbsp;</TD></TR>
+		<TR>
+			<TD ALIGN="RIGHT" VALIGN="TOP" NOWRAP><?php echo(L_SET_2); ?> :</TD>
+			<TD VALIGN="TOP">
+				<!-- Nick can not be modified via the profile command -->
+				<INPUT TYPE="text" NAME="U" SIZE=11 MAXLENGTH=10 VALUE="<?php echo(htmlspecialchars(stripslashes($U))); ?>"<?php if ($done) echo(" READONLY"); if (isset($LIMIT) && $LIMIT) echo(" DISABLED"); ?>>
+				<?php
+				if (isset($LIMIT) && $LIMIT)
+				{
+					?>
+					<INPUT TYPE="hidden" NAME="U" VALUE="<?php echo(htmlspecialchars(stripslashes($U))); ?>">
+					<?php
+				};
+				if (!$done)
+				{
+					?>
+					<SPAN CLASS="error">*</SPAN>
+					<?php
+				};
+				?>
+			</TD>
+		</TR>
+		<TR>
+			<TD ALIGN="RIGHT" VALIGN="TOP" NOWRAP><?php echo(L_REG_7); ?> :</TD>
+			<TD VALIGN="TOP">
+				<!-- Password can not be modified via the profile command -->
+				<INPUT TYPE="password" NAME="prev_PASSWORD" SIZE=11 MAXLENGTH=16 VALUE="<?php echo(htmlspecialchars(stripslashes($prev_PASSWORD))); ?>"<?php if ($done) echo(" READONLY"); if (isset($LIMIT) && $LIMIT) echo(" DISABLED"); ?>>
+				<?php
+				if (isset($LIMIT) && $LIMIT)
+				{
+					?>
+					<INPUT TYPE="hidden" NAME="prev_PASSWORD" VALUE="<?php echo(htmlspecialchars(stripslashes($prev_PASSWORD))); ?>">
+					<?php
+				};
+				if (!$done)
+				{
+					?>
+					<SPAN CLASS="error">*</SPAN>
+					<?php
+				};
+				?>
+			</TD>
+		</TR>
+		<TR>
+			<TD ALIGN="RIGHT" VALIGN="TOP" NOWRAP><?php echo(L_REG_30); ?> :</TD>
+			<TD VALIGN="TOP">
+				<INPUT TYPE="text" NAME="FIRSTNAME" SIZE=11 MAXLENGTH=64 VALUE="<?php echo(htmlspecialchars(stripslashes($FIRSTNAME))); ?>"<?php if ($done) echo(" READONLY"); ?>>
+				<?php if (!$done) { ?><SPAN CLASS="error">*</SPAN><?php }; ?>
+			</TD>
+		</TR>
+		<TR>
+			<TD ALIGN="RIGHT" VALIGN="TOP" NOWRAP><?php echo(L_REG_31); ?> :</TD>
+			<TD VALIGN="TOP">
+				<INPUT TYPE="text" NAME="LASTNAME" SIZE=11 MAXLENGTH=64 VALUE="<?php echo(htmlspecialchars(stripslashes($LASTNAME))); ?>"<?php if ($done) echo(" READONLY"); ?>>
+				<?php if (!$done) { ?><SPAN CLASS="error">*</SPAN><?php }; ?>
+			</TD>
+		</TR>
+		<TR>
+			<TD ALIGN="RIGHT" VALIGN="TOP" NOWRAP><?php echo(L_REG_45); ?> :</TD>
+			<TD VALIGN="TOP">
+				<INPUT TYPE="radio" NAME="GENDER" VALUE="1" <?php if (isset($GENDER) && $GENDER == "1") echo("CHECKED"); if ($done) echo(" READONLY"); ?>>&nbsp;<?php echo(L_REG_46); ?><BR>
+				<INPUT TYPE="radio" NAME="GENDER" VALUE="2" <?php if (isset($GENDER) && $GENDER == "2") echo("CHECKED"); if ($done) echo(" READONLY"); ?>>&nbsp;<?php echo(L_REG_47); ?>
+			</TD>
+		</TR>
+		<TR>
+			<TD ALIGN="RIGHT" VALIGN="TOP" NOWRAP><?php echo(L_REG_36); ?> :</TD>
+			<TD VALIGN="TOP">
+				<INPUT TYPE="text" NAME="COUNTRY" SIZE=11 MAXLENGTH=64 VALUE="<?php echo(htmlspecialchars(stripslashes($COUNTRY))); ?>"<?php if ($done) echo(" READONLY"); ?>>
+			</TD>
+		</TR>
+		<TR>
+			<TD ALIGN="RIGHT" VALIGN="TOP" NOWRAP><?php echo(L_REG_32); ?> :</TD>
+			<TD VALIGN="TOP">
+				<INPUT TYPE="text" NAME="WEBSITE" SIZE=11 MAXLENGTH=64 VALUE="<?php echo(htmlspecialchars(stripslashes($WEBSITE))); ?>"<?php if ($done) echo(" READONLY"); ?>>
+			</TD>
+		</TR>
+		<TR>
+			<TD ALIGN="RIGHT" VALIGN="TOP" NOWRAP><?php echo(L_REG_8); ?> :</TD>
+			<TD VALIGN="TOP">
+				<INPUT TYPE="text" NAME="EMAIL" SIZE=11 MAXLENGTH=64 VALUE="<?php echo(htmlspecialchars(stripslashes($EMAIL))); ?>"<?php if ($done) echo(" READONLY"); ?>>
+				<?php if (!$done) { ?><SPAN CLASS="error">*</SPAN><?php }; ?>
+			</TD>
+		</TR>
+		<TR>
+			<TD COLSPAN=2 ALIGN="center">
+				<INPUT type="checkbox" name="SHOWEMAIL" value="1" <?php if(isset($SHOWEMAIL) && $SHOWEMAIL) echo("checked"); ?><?php if ($done) echo(" READONLY"); ?>>
+				&nbsp;<?php echo(L_REG_33); ?>
+			</TD>
+		</TR>
+		</TABLE>
+		<P>
+		<?php
+		if (!$done)
+		{
+			?>
+			<INPUT TYPE="submit" NAME="submit_type" VALUE="<?php echo(L_REG_16); ?>">
+			<?php
+		}
+		?>
+		<INPUT TYPE="submit" NAME="submit_type" VALUE="<?php echo(L_REG_25); ?>" onClick="if (window.opener && !window.opener.closed) put_focus(); self.close(); return false;">
+	</TD>
+</TR>
+</TABLE>
+</FORM>
+</CENTER>
+</BODY>
+
+</HTML>
+<?php
+
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/edituser.php3 0.15.0/chat/edituser.php3
--- 0.14.5/chat/edituser.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/edituser.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,282 +0,0 @@
-<?php
-// Get the names and values for vars sent to this script
-if (isset($HTTP_GET_VARS))
-{
-	while(list($name,$value) = each($HTTP_GET_VARS))
-	{
-		$$name = $value;
-	};
-};
-
-// Get the names and values for vars posted from the form bellow
-if (isset($HTTP_POST_VARS))
-{
-	while(list($name,$value) = each($HTTP_POST_VARS))
-	{
-		$$name = $value;
-	};
-};
-
-// Fix a security hole
-if (isset($L) && !is_dir('./localization/'.$L)) exit();
-	
-require("./config/config.lib.php3");
-require("./localization/languages.lib.php3");
-require("./localization/".$L."/localized.chat.php3");
-require("./lib/release.lib.php3");
-require("./lib/database/".C_DB_TYPE.".lib.php3");
-require("./lib/login.lib.php3");
-
-// Special cache instructions for IE5+
-$CachePlus	= "";
-if (ereg("MSIE [56789]", (isset($HTTP_USER_AGENT)) ? $HTTP_USER_AGENT : getenv("HTTP_USER_AGENT"))) $CachePlus = ", pre-check=0, post-check=0, max-age=0";
-$now		= gmdate('D, d M Y H:i:s') . ' GMT';
-
-header("Expires: $now");
-header("Last-Modified: $now");
-header("Cache-Control: no-cache, must-revalidate".$CachePlus);
-header("Pragma: no-cache");
-header("Content-Type: text/html; charset=${Charset}");
-
-// avoid server configuration for magic quotes
-set_magic_quotes_runtime(0);
-
-$DbLink = new DB;
-
-// Check for valid entries if the form have been sent
-if (isset($FORM_SEND) && stripslashes($submit_type) == L_REG_16)
-{
-	if (C_NO_SWEAR == 1) include("./lib/swearing.lib.php3");
-	if (trim($U) == "")
-	{
-		$Error = L_ERR_USR_5;
-	}
-	else if (ereg("[\, ]", stripslashes($U)))
-	{
-		$Error = L_ERR_USR_16;
-	}
-	else if(C_NO_SWEAR == 1 && checkwords($U, true))
-	{
-		$Error = L_ERR_USR_18;
-	}
-	else if ($PASSWORD == "")
-	{
-		$Error = L_ERR_USR_6;
-	}
-	else if (trim($FIRSTNAME) == "" || trim($LASTNAME) == "")
-	{
-		$Error = L_ERR_USR_15;
-	}
-	else if (trim($EMAIL) == "")
-	{
-		$Error = L_ERR_USR_7;
-	}
-	else if (!eregi("^([0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-wyz][a-z](fo|g|l|m|mes|o|op|pa|ro|seum|t|u|v|z)?)$", $EMAIL))
-	{
-		$Error = L_ERR_USR_8;
-	}
-	else if ($U != $AUTH_USERNAME)
-	{
-		$DbLink->query("SELECT count(*) FROM ".C_REG_TBL." WHERE username='$U'");
-		list($rows) = $DbLink->next_record();
-		$DbLink->clean_results();
-		if ($rows != 0) $Error = L_ERR_USR_9;
-	}
-
-	if (!isset($Error))
-	{
-		$Latin1 = ($Charset == "iso-8859-1");
-		$PWD_Hash = md5(stripslashes($PASSWORD));
-		if (!isset($GENDER)) $GENDER = "";
-		$showemail = (isset($SHOWEMAIL) && $SHOWEMAIL)? 1:0;
-		include("./lib/get_IP.lib.php3");		// Set the $IP var
-		$DbLink->query("UPDATE ".C_REG_TBL." SET username='$U', latin1='$Latin1', password='$PWD_Hash', firstname='$FIRSTNAME', lastname='$LASTNAME', country='$COUNTRY', website='$WEBSITE', email='$EMAIL', showemail=$showemail, reg_time=".time().", ip='$IP', gender='$GENDER' WHERE username='$AUTH_USERNAME'");
-		if ($AUTH_USERNAME != $U) $AUTH_USERNAME = $U;
-		if ($AUTH_PASSWORD != $PASSWORD) $AUTH_PASSWORD = $PASSWORD;
-		$Message = L_REG_17;
-	}
-}
-// Else initialize var that will be displayed in the form
-else
-{
-	$U = $AUTH_USERNAME;
-	$PASSWORD = $AUTH_PASSWORD;
-	$DbLink->query("SELECT firstname,lastname,country,website,email,showemail,gender FROM ".C_REG_TBL." WHERE username='$U' LIMIT 1");
-	if ($DbLink->num_rows() != 0)
-	{
-		list($FIRSTNAME, $LASTNAME, $COUNTRY, $WEBSITE, $EMAIL, $SHOWEMAIL, $GENDER) = $DbLink->next_record();
-	}
-	$DbLink->clean_results();
-}
-
-$DbLink->close();
-
-// Modifications have been done ?
-$done = (isset($Message) && $Message == L_REG_17);
-
-// For translations with an explicit charset (not the 'x-user-defined' one)
-if (!isset($FontName)) $FontName = "";
-?>
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<HTML dir="<?php echo(($Charset == "windows-1256") ? "RTL" : "LTR"); ?>">
-
-<HEAD>
-<TITLE><?php echo(APP_NAME); ?></TITLE>
-<LINK REL="stylesheet" HREF="config/style.css.php3?<?php echo("Charset=${Charset}&medium=${FontSize}&FontName=${FontName}"); ?>" TYPE="text/css">
-<SCRIPT TYPE="text/javascript" LANGUAGE="javascript1.1">
-<!--
-// Put the focus to the message box if the window has been called with the profile command
-function put_focus()
-{
-	if (window.opener.window.document.title == "Hidden Input frame")
-		targetFrame = window.opener.window.parent.frames['input'].window;
-	else
-		targetFrame = window.opener.window;
-
-	with (targetFrame)
-	{
-		focus();
-		if (document.forms['MsgForm'] && document.forms['MsgForm'].elements['M'])
-			document.forms['MsgForm'].elements['M'].focus();
-	};
-}
-// -->
-</SCRIPT>
-</HEAD>
-
-<BODY>
-<CENTER>
-<BR>
-<FORM ACTION="edituser.php3" METHOD="POST" AUTOCOMPLETE="OFF" NAME="EditUsrForm">
-<INPUT type="hidden" name="FORM_SEND" value="1">
-<INPUT type="hidden" name="AUTH_USERNAME" value="<?php echo(htmlspecialchars(stripslashes($AUTH_USERNAME))); ?>">
-<INPUT type="hidden" name="AUTH_PASSWORD" value="<?php echo(htmlspecialchars(stripslashes($AUTH_PASSWORD))); ?>">
-<P></P>
-<?php
-if(isset($Error))
-{
-	echo("<P><SPAN CLASS=\"error\">$Error</SPAN></P>");
-}
-?>
-<INPUT TYPE="hidden" NAME="L" VALUE="<?php echo($L); ?>">
-<TABLE BORDER=0 CELLPADDING=3 CLASS="table">
-<TR>
-	<TD ALIGN="CENTER">
-		<TABLE BORDER=0>
-		<TR>
-			<TH COLSPAN=2 CLASS="tabtitle"><?php echo($done ? $Message : L_REG_34); ?></TH>
-		</TR>
-		<TR>
-			<TH COLSPAN=2><?php if (!$done) echo(L_REG_37); ?></TH>
-		</TR>
-		<TR><TD>&nbsp;</TD></TR>
-		<TR>
-			<TD ALIGN="RIGHT" VALIGN="TOP" NOWRAP><?php echo(L_SET_2); ?> :</TD>
-			<TD VALIGN="TOP">
-				<!-- Nick can not be modified via the profile command -->
-				<INPUT TYPE="text" NAME="U" SIZE=11 MAXLENGTH=10 VALUE="<?php echo(htmlspecialchars(stripslashes($U))); ?>"<?php if ($done) echo(" READONLY"); if (isset($LIMIT) && $LIMIT) echo(" DISABLED"); ?>>
-				<?php
-				if (isset($LIMIT) && $LIMIT)
-				{
-					?>
-					<INPUT TYPE="hidden" NAME="U" VALUE="<?php echo(htmlspecialchars(stripslashes($U))); ?>">
-					<?php
-				};
-				if (!$done)
-				{
-					?>
-					<SPAN CLASS="error">*</SPAN>
-					<?php
-				};
-				?>
-			</TD>
-		</TR>
-		<TR>
-			<TD ALIGN="RIGHT" VALIGN="TOP" NOWRAP><?php echo(L_REG_7); ?> :</TD>
-			<TD VALIGN="TOP">
-				<!-- Password can not be modified via the profile command -->
-				<INPUT TYPE="password" NAME="PASSWORD" SIZE=11 MAXLENGTH=16 VALUE="<?php echo(htmlspecialchars(stripslashes($PASSWORD))); ?>"<?php if ($done) echo(" READONLY"); if (isset($LIMIT) && $LIMIT) echo(" DISABLED"); ?>>
-				<?php
-				if (isset($LIMIT) && $LIMIT)
-				{
-					?>
-					<INPUT TYPE="hidden" NAME="PASSWORD" VALUE="<?php echo(htmlspecialchars(stripslashes($PASSWORD))); ?>">
-					<?php
-				};
-				if (!$done)
-				{
-					?>
-					<SPAN CLASS="error">*</SPAN>
-					<?php
-				};
-				?>
-			</TD>
-		</TR>
-		<TR>
-			<TD ALIGN="RIGHT" VALIGN="TOP" NOWRAP><?php echo(L_REG_30); ?> :</TD>
-			<TD VALIGN="TOP">
-				<INPUT TYPE="text" NAME="FIRSTNAME" SIZE=11 MAXLENGTH=64 VALUE="<?php echo(htmlspecialchars(stripslashes($FIRSTNAME))); ?>"<?php if ($done) echo(" READONLY"); ?>>
-				<?php if (!$done) { ?><SPAN CLASS="error">*</SPAN><?php }; ?>
-			</TD>
-		</TR>
-		<TR>
-			<TD ALIGN="RIGHT" VALIGN="TOP" NOWRAP><?php echo(L_REG_31); ?> :</TD>
-			<TD VALIGN="TOP">
-				<INPUT TYPE="text" NAME="LASTNAME" SIZE=11 MAXLENGTH=64 VALUE="<?php echo(htmlspecialchars(stripslashes($LASTNAME))); ?>"<?php if ($done) echo(" READONLY"); ?>>
-				<?php if (!$done) { ?><SPAN CLASS="error">*</SPAN><?php }; ?>
-			</TD>
-		</TR>
-		<TR>
-			<TD ALIGN="RIGHT" VALIGN="TOP" NOWRAP><?php echo(L_REG_45); ?> :</TD>
-			<TD VALIGN="TOP">
-				<INPUT TYPE="radio" NAME="GENDER" VALUE="1" <?php if (isset($GENDER) && $GENDER == "1") echo("CHECKED"); if ($done) echo(" READONLY"); ?>>&nbsp;<?php echo(L_REG_46); ?><BR>
-				<INPUT TYPE="radio" NAME="GENDER" VALUE="2" <?php if (isset($GENDER) && $GENDER == "2") echo("CHECKED"); if ($done) echo(" READONLY"); ?>>&nbsp;<?php echo(L_REG_47); ?>
-			</TD>
-		</TR>
-		<TR>
-			<TD ALIGN="RIGHT" VALIGN="TOP" NOWRAP><?php echo(L_REG_36); ?> :</TD>
-			<TD VALIGN="TOP">
-				<INPUT TYPE="text" NAME="COUNTRY" SIZE=11 MAXLENGTH=64 VALUE="<?php echo(htmlspecialchars(stripslashes($COUNTRY))); ?>"<?php if ($done) echo(" READONLY"); ?>>
-			</TD>
-		</TR>
-		<TR>
-			<TD ALIGN="RIGHT" VALIGN="TOP" NOWRAP><?php echo(L_REG_32); ?> :</TD>
-			<TD VALIGN="TOP">
-				<INPUT TYPE="text" NAME="WEBSITE" SIZE=11 MAXLENGTH=64 VALUE="<?php echo(htmlspecialchars(stripslashes($WEBSITE))); ?>"<?php if ($done) echo(" READONLY"); ?>>
-			</TD>
-		</TR>
-		<TR>
-			<TD ALIGN="RIGHT" VALIGN="TOP" NOWRAP><?php echo(L_REG_8); ?> :</TD>
-			<TD VALIGN="TOP">
-				<INPUT TYPE="text" NAME="EMAIL" SIZE=11 MAXLENGTH=64 VALUE="<?php echo(htmlspecialchars(stripslashes($EMAIL))); ?>"<?php if ($done) echo(" READONLY"); ?>>
-				<?php if (!$done) { ?><SPAN CLASS="error">*</SPAN><?php }; ?>
-			</TD>
-		</TR>
-		<TR>
-			<TD COLSPAN=2 ALIGN="center">
-				<INPUT type="checkbox" name="SHOWEMAIL" value="1" <?php if(isset($SHOWEMAIL) && $SHOWEMAIL) echo("checked"); ?><?php if ($done) echo(" READONLY"); ?>>
-				&nbsp;<?php echo(L_REG_33); ?>
-			</TD>
-		</TR>
-		</TABLE>
-		<P>
-		<?php
-		if (!$done)
-		{
-			?>
-			<INPUT TYPE="submit" NAME="submit_type" VALUE="<?php echo(L_REG_16); ?>">
-			<?php
-		}
-		?>
-		<INPUT TYPE="submit" NAME="submit_type" VALUE="<?php echo(L_REG_25); ?>" onClick="if (window.opener && !window.opener.closed) put_focus(); self.close(); return false;">
-	</TD>
-</TR>
-</TABLE>
-</FORM>
-</CENTER>
-</BODY>
-
-</HTML>
-<?php
-
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/exit.php 0.15.0/chat/exit.php
--- 0.14.5/chat/exit.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/exit.php	2004-04-01 03:06:23.000000000 -0600
@@ -0,0 +1,93 @@
+<?php
+// Get the names and values for vars sent by index.lib.php
+if (isset($HTTP_GET_VARS))
+{
+	while(list($name,$value) = each($HTTP_GET_VARS))
+	{
+		$$name = $value;
+	};
+};
+
+// Fix a security hole
+if (isset($L) && !is_dir('./localization/'.$L)) exit();
+	
+require("./config/config.lib.php");
+require("./localization/".$L."/localized.chat.php");
+
+header("Content-Type: text/html; charset=${Charset}");
+
+$Ver1 = ($Ver == "H" ? $Ver : "L");
+
+// For translations with an explicit charset (not the 'x-user-defined' one)
+if (!isset($FontName)) $FontName = "";
+?>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML dir="<?php echo(($Charset == "windows-1256") ? "RTL" : "LTR"); ?>">
+
+<HEAD>
+<TITLE>Exit frame</TITLE>
+<LINK REL="stylesheet" HREF="config/style.css.php?<?php echo("Charset=${Charset}&medium=${FontSize}&FontName=".urlencode($FontName)); ?>" TYPE="text/css">
+<SCRIPT TYPE="text/javascript" LANGUAGE="javascript">
+<!--
+// Open the users popup
+function users_popup()
+{
+	window.focus();
+	users_popupWin = window.open("users_popup<?php echo($Ver1); ?>.php?<?php echo("From=$From&L=$L"); ?>","users_popup_<?php echo(md5(uniqid(""))); ?>","width=180,height=300,resizable=yes,scrollbars=yes");
+	users_popupWin.focus();
+}
+
+// Close some popups when the user exits the chat
+function close_popups()
+{
+	with (window.parent)
+	{
+		if (is_help_popup && !is_help_popup.closed) is_help_popup.close();
+		if (is_ignored_popup && !is_ignored_popup.closed)
+		{
+			is_ignored_popup.window.document.forms['IgnForm'].elements['Exit'].value = '1';
+			is_ignored_popup.close()
+		};
+		if (frames['loader'] && !frames['loader'].closed && leaveChat)
+		{
+			leaveChat = true;
+			frames['loader'].close();
+		};
+	};
+}
+// -->
+</SCRIPT>
+</HEAD>
+
+<BODY CLASS="frame" onUnload="close_popups()">
+<CENTER>
+<A HREF="<?php echo("$From?Ver=$Ver&L=$L&U=".urlencode(stripslashes($U))."&E=".urlencode(stripslashes($R))."&EN=$T"); ?>" TARGET="_parent"><?php echo(L_EXIT); ?></A>
+<BR>
+<?php
+if ($FontSize < 11) echo("<BR>");
+if ($Ver == "H")
+{
+	?>
+	<!-- Display the big + clickable icon used to expand/collapse all rooms -->
+	<A HREF="#" onClick="window.parent.expandAll(); return false">
+	<IMG NAME="imEx_big" SRC="images/closed_big.gif" WIDTH=13 HEIGHT=13 ALIGN="MIDDLE" BORDER=0 ALT="<?php echo(L_EXPCOL_ALL); ?>"></A>
+	&nbsp;
+	<?php
+}
+?>
+<A HREF="users_popup<?php echo($Ver1); ?>.php?<?php echo("From=$From&L=$L"); ?>" onClick="users_popup(); return false" TARGET="_blank"><IMG SRC="images/popup.gif" WIDTH=13 HEIGHT=13 ALIGN="MIDDLE" BORDER=0 ALT="<?php echo(L_DETACH); ?>"></A>
+<?php
+if ($Ver == "H")
+{
+	?>
+	<!-- Display the connection state icon -->
+	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+	<A HREF="#" onClick="window.parent.reConnect(); if (window.parent.frames['input'] && window.parent.frames['input'].window.document.forms['MsgForm'].elements['M']) window.parent.frames['input'].window.document.forms['MsgForm'].elements['M'].focus(); return false">
+	<IMG NAME="ConState" SRC="images/connectOff.gif" WIDTH=13 HEIGHT=13 ALIGN="MIDDLE" BORDER=0 ALT="<?php echo(L_CONN_STATE); ?>"></A>
+	<?php
+}
+?>
+</CENTER>
+</BODY>
+
+</HTML>
\ No newline at end of file
diff -ruN 0.14.5/chat/exit.php3 0.15.0/chat/exit.php3
--- 0.14.5/chat/exit.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/exit.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,93 +0,0 @@
-<?php
-// Get the names and values for vars sent by index.lib.php3
-if (isset($HTTP_GET_VARS))
-{
-	while(list($name,$value) = each($HTTP_GET_VARS))
-	{
-		$$name = $value;
-	};
-};
-
-// Fix a security hole
-if (isset($L) && !is_dir('./localization/'.$L)) exit();
-	
-require("./config/config.lib.php3");
-require("./localization/".$L."/localized.chat.php3");
-
-header("Content-Type: text/html; charset=${Charset}");
-
-$Ver1 = ($Ver == "H" ? $Ver : "L");
-
-// For translations with an explicit charset (not the 'x-user-defined' one)
-if (!isset($FontName)) $FontName = "";
-?>
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<HTML dir="<?php echo(($Charset == "windows-1256") ? "RTL" : "LTR"); ?>">
-
-<HEAD>
-<TITLE>Exit frame</TITLE>
-<LINK REL="stylesheet" HREF="config/style.css.php3?<?php echo("Charset=${Charset}&medium=${FontSize}&FontName=${FontName}"); ?>" TYPE="text/css">
-<SCRIPT TYPE="text/javascript" LANGUAGE="javascript">
-<!--
-// Open the users popup
-function users_popup()
-{
-	window.focus();
-	users_popupWin = window.open("users_popup<?php echo($Ver1); ?>.php3?<?php echo("From=$From&L=$L"); ?>","users_popup_<?php echo(md5(uniqid(""))); ?>","width=180,height=300,resizable=yes,scrollbars=yes");
-	users_popupWin.focus();
-}
-
-// Close some popups when the user exits the chat
-function close_popups()
-{
-	with (window.parent)
-	{
-		if (is_help_popup && !is_help_popup.closed) is_help_popup.close();
-		if (is_ignored_popup && !is_ignored_popup.closed)
-		{
-			is_ignored_popup.window.document.forms['IgnForm'].elements['Exit'].value = '1';
-			is_ignored_popup.close()
-		};
-		if (frames['loader'] && !frames['loader'].closed && leaveChat)
-		{
-			leaveChat = true;
-			frames['loader'].close();
-		};
-	};
-}
-// -->
-</SCRIPT>
-</HEAD>
-
-<BODY CLASS="frame" onUnload="close_popups()">
-<CENTER>
-<A HREF="<?php echo("$From?Ver=$Ver&L=$L&U=".urlencode(stripslashes($U))."&E=".urlencode(stripslashes($R))."&EN=$T"); ?>" TARGET="_parent"><?php echo(L_EXIT); ?></A>
-<BR>
-<?php
-if ($FontSize < 11) echo("<BR>");
-if ($Ver == "H")
-{
-	?>
-	<!-- Display the big + clickable icon used to expand/collapse all rooms -->
-	<A HREF="#" onClick="window.parent.expandAll(); return false">
-	<IMG NAME="imEx_big" SRC="images/closed_big.gif" WIDTH=13 HEIGHT=13 ALIGN="MIDDLE" BORDER=0 ALT="<?php echo(L_EXPCOL_ALL); ?>"></A>
-	&nbsp;
-	<?php
-}
-?>
-<A HREF="users_popup<?php echo($Ver1); ?>.php3?<?php echo("From=$From&L=$L"); ?>" onClick="users_popup(); return false" TARGET="_blank"><IMG SRC="images/popup.gif" WIDTH=13 HEIGHT=13 ALIGN="MIDDLE" BORDER=0 ALT="<?php echo(L_DETACH); ?>"></A>
-<?php
-if ($Ver == "H")
-{
-	?>
-	<!-- Display the connection state icon -->
-	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-	<A HREF="#" onClick="window.parent.reConnect(); if (window.parent.frames['input'] && window.parent.frames['input'].window.document.forms['MsgForm'].elements['M']) window.parent.frames['input'].window.document.forms['MsgForm'].elements['M'].focus(); return false">
-	<IMG NAME="ConState" SRC="images/connectOff.gif" WIDTH=13 HEIGHT=13 ALIGN="MIDDLE" BORDER=0 ALT="<?php echo(L_CONN_STATE); ?>"></A>
-	<?php
-}
-?>
-</CENTER>
-</BODY>
-
-</HTML>
\ No newline at end of file
diff -ruN 0.14.5/chat/export.php 0.15.0/chat/export.php
--- 0.14.5/chat/export.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/export.php	2004-04-01 03:06:23.000000000 -0600
@@ -0,0 +1,182 @@
+<?php
+// Get the names and values for vars sent to this script
+if (isset($HTTP_GET_VARS))
+{
+	while(list($name,$value) = each($HTTP_GET_VARS))
+	{
+		$$name = $value;
+	};
+};
+
+// Fix a security hole
+if (isset($L) && !is_dir('./localization/'.$L)) exit();
+	
+require("config/config.lib.php");
+require("localization/".$L."/localized.chat.php");
+require("lib/database/".C_DB_TYPE.".lib.php");
+require("lib/release.lib.php");
+require("lib/clean.lib.php");
+
+// Avoid server configuration for magic quotes
+set_magic_quotes_runtime(0);
+
+// Get IP address and check for hackers
+require("./lib/get_IP.lib.php");
+$DbLink = new DB;
+$DbLink->query("SELECT count(*) FROM ".C_USR_TBL." WHERE username = '$U' AND ip = '$IP' LIMIT 1"); 
+list($isNotHack) = $DbLink->next_record();
+if (!$isNotHack)
+{
+	$DbLink->close();
+	exit();
+}
+else
+{
+	$DbLink->clean_results();
+}
+
+// Translate to html special characters, and entities if message was sent with a latin 1 charset
+$Latin1 = ($Charset == "iso-8859-1");
+function special_char($str,$lang)
+{
+	return ($lang ? htmlentities(stripslashes($str)) : htmlspecialchars(stripslashes($str)));
+}
+
+// ** Get messages **
+
+// Define the SQL query (depends on values for ignored users list and on whether to display
+// notification messages or not
+
+$CondForQuery = "username NOT LIKE 'SYS %' AND ";
+if (isset($Ign))
+{
+	$IgnoreList = "'".str_replace(",","','",addslashes(urldecode($Ign)))."'";
+	$CondForQuery .= "username NOT IN (${IgnoreList}) AND ";
+};
+$CondForQuery .= "(address = ' *' OR (room = '$R' AND (address IN ('$U','') OR username = '$U')))";
+
+$LimitForQuery = (isset($Limit) && $Limit != "") ? " LIMIT ".$Limit : "";
+
+$DbLink = new DB;
+$DbLink->query("SELECT m_time, username, latin1, address, message FROM ".C_MSG_TBL." WHERE ".$CondForQuery." ORDER BY m_time DESC".$LimitForQuery);
+
+// Format and display new messages
+if($DbLink->num_rows() > 0)
+{
+	$MessagesString = "";
+	while(list($Time, $User, $Latin1, $Dest, $Message) = $DbLink->next_record())
+	{
+		$NewMsg = "<P CLASS=\"msg\">";
+		if ($ST == 1) $NewMsg .= "<SPAN CLASS=\"time\">".date("H:i:s", $Time +  C_TMZ_OFFSET*60*60)."</SPAN> ";
+		if ($Dest != " *")
+		{
+			$User = special_char($User,$Latin1);
+			if ($Dest != "") $Dest = "]>[".htmlspecialchars(stripslashes($Dest));
+			$NewMsg .= "<B>[${User}${Dest}]</B> $Message</P>";
+		}
+		else
+		{
+			$NewMsg .= " <SPAN CLASS=\"notify\">[".L_ANNOUNCE."] $Message</SPAN>";
+		};
+
+		// Separator between messages sent before today and other ones
+		if (!isset($day_separator) && date("j", $Time +  C_TMZ_OFFSET*60*60) != date("j", time() +  C_TMZ_OFFSET*60*60))
+		{
+			$day_separator = "<P CLASS=\"msg\"><SPAN CLASS=\"notify\">--------- ".($O == 0 ? L_TODAY_UP : L_TODAY_DWN)." ---------</SPAN></P>";
+		};
+
+		$MessagesString = $NewMsg.((isset($day_separator) && $day_separator != "") ? "\n".$day_separator : "")."\n".$MessagesString;
+
+		if (isset($day_separator)) $day_separator = "";		// Today separator already printed
+	};
+};
+
+$DbLink->clean_results();
+$DbLink->close();
+
+
+if (isset($MessagesString) && $MessagesString != "")
+{
+	// Save messages to a file
+	header("Content-Type: application/octetstream");
+	header("Content-Disposition: attachement; filename=\"chat_save_".date("mdY").".htm\"");
+	?>
+	<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+	<HTML dir="<?php echo(($Charset == "windows-1256") ? "RTL" : "LTR"); ?>">
+	<HEAD>
+		<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=<?php echo($Charset); ?>">
+		<TITLE><?php echo(APP_NAME." - ".htmlspecialchars(stripslashes($R))." - ".date("F j, Y")); ?></TITLE>
+		<STYLE>
+		<?php
+			if (isset($FontName) && $FontName != "")	// For the 'x-user-defined' charset
+			{
+				?>
+				* {font-family: <?php echo($FontName); ?>, sans-serif;}
+				<?php
+			}
+			elseif ($Charset == "iso-8859-1")
+			{
+				?>
+				* {font-family: helvetica, arial, geneva, sans-serif;}
+				<?php
+			};
+			?>
+			BODY.mainframe
+			{
+				background-color: #CCCCFF;
+				color: #000000;
+				font-size: <?php echo($FontSize); ?>pt;
+				font-weight: 400;
+				margin: 5px;
+			}
+
+			A
+			{
+				text-decoration: underline;
+				color: #FFFFFF;
+				font-weight: 600;
+			}
+
+			A:hover, A:active
+			{
+				color: #FF9900;
+				text-decoration: none;
+			}
+
+			.msg
+			{
+				margin-top: 0px;
+				margin-bottom: 2px;
+				margin-left: <?php echo($Charset == "windows-1256" ? "5" : "55"); ?>px;
+				margin-right: <?php echo($Charset == "windows-1256" ? "55" : "5"); ?>px;
+				text-indent: -50px;
+			}
+
+			.time
+			{
+				direction: ltr;
+				unicode-bidi: embed;
+				color: #000000;
+				font-size: 8pt;
+			}
+
+			.notify
+			{
+				color: #666699;
+				font-size: <?php echo($FontSize); ?>pt;
+				font-weight: 600;
+			}
+		</STYLE>
+	<HEAD>
+
+	<BODY CLASS="mainframe">
+	<?php
+	echo($MessagesString);
+	unset($MessagesString);
+	?>
+	</BODY>
+	</HTML>
+	<?php
+	exit;
+}
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/export.php3 0.15.0/chat/export.php3
--- 0.14.5/chat/export.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/export.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,167 +0,0 @@
-<?php
-// Get the names and values for vars sent to this script
-if (isset($HTTP_GET_VARS))
-{
-	while(list($name,$value) = each($HTTP_GET_VARS))
-	{
-		$$name = $value;
-	};
-};
-
-// Fix a security hole
-if (isset($L) && !is_dir('./localization/'.$L)) exit();
-	
-require("config/config.lib.php3");
-require("localization/".$L."/localized.chat.php3");
-require("lib/database/".C_DB_TYPE.".lib.php3");
-require("lib/release.lib.php3");
-require("lib/clean.lib.php3");
-
-// Avoid server configuration for magic quotes
-set_magic_quotes_runtime(0);
-
-// Translate to html special characters, and entities if message was sent with a latin 1 charset
-$Latin1 = ($Charset == "iso-8859-1");
-function special_char($str,$lang)
-{
-	return ($lang ? htmlentities(stripslashes($str)) : htmlspecialchars(stripslashes($str)));
-}
-
-// ** Get messages **
-
-// Define the SQL query (depends on values for ignored users list and on whether to display
-// notification messages or not
-
-$CondForQuery = "username NOT LIKE 'SYS %' AND ";
-if (isset($Ign))
-{
-	$IgnoreList = "'".str_replace(",","','",addslashes(urldecode($Ign)))."'";
-	$CondForQuery .= "username NOT IN (${IgnoreList}) AND ";
-};
-$CondForQuery .= "(address = ' *' OR (room = '$R' AND (address IN ('$U','') OR username = '$U')))";
-
-$LimitForQuery = (isset($Limit) && $Limit != "") ? " LIMIT ".$Limit : "";
-
-$DbLink = new DB;
-$DbLink->query("SELECT m_time, username, latin1, address, message FROM ".C_MSG_TBL." WHERE ".$CondForQuery." ORDER BY m_time DESC".$LimitForQuery);
-
-// Format and display new messages
-if($DbLink->num_rows() > 0)
-{
-	$MessagesString = "";
-	while(list($Time, $User, $Latin1, $Dest, $Message) = $DbLink->next_record())
-	{
-		$NewMsg = "<P CLASS=\"msg\">";
-		if ($ST == 1) $NewMsg .= "<SPAN CLASS=\"time\">".date("H:i:s", $Time +  C_TMZ_OFFSET*60*60)."</SPAN> ";
-		if ($Dest != " *")
-		{
-			$User = special_char($User,$Latin1);
-			if ($Dest != "") $Dest = "]>[".htmlspecialchars(stripslashes($Dest));
-			$NewMsg .= "<B>[${User}${Dest}]</B> $Message</P>";
-		}
-		else
-		{
-			$NewMsg .= " <SPAN CLASS=\"notify\">[".L_ANNOUNCE."] $Message</SPAN>";
-		};
-
-		// Separator between messages sent before today and other ones
-		if (!isset($day_separator) && date("j", $Time +  C_TMZ_OFFSET*60*60) != date("j", time() +  C_TMZ_OFFSET*60*60))
-		{
-			$day_separator = "<P CLASS=\"msg\"><SPAN CLASS=\"notify\">--------- ".($O == 0 ? L_TODAY_UP : L_TODAY_DWN)." ---------</SPAN></P>";
-		};
-
-		$MessagesString = $NewMsg.((isset($day_separator) && $day_separator != "") ? "\n".$day_separator : "")."\n".$MessagesString;
-
-		if (isset($day_separator)) $day_separator = "";		// Today separator already printed
-	};
-};
-
-$DbLink->clean_results();
-$DbLink->close();
-
-
-if (isset($MessagesString) && $MessagesString != "")
-{
-	// Save messages to a file
-	header("Content-Type: application/octetstream");
-	header("Content-Disposition: attachement; filename=\"chat_save_".date("mdY").".htm\"");
-	?>
-	<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-	<HTML dir="<?php echo(($Charset == "windows-1256") ? "RTL" : "LTR"); ?>">
-	<HEAD>
-		<META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=<?php echo($Charset); ?>">
-		<TITLE><?php echo(APP_NAME." - ".htmlspecialchars(stripslashes($R))." - ".date("F j, Y")); ?></TITLE>
-		<STYLE>
-		<?php
-			if (isset($FontName) && $FontName != "")	// For the 'x-user-defined' charset
-			{
-				?>
-				* {font-family: <?php echo($FontName); ?>, sans-serif;}
-				<?php
-			}
-			elseif ($Charset == "iso-8859-1")
-			{
-				?>
-				* {font-family: helvetica, arial, geneva, sans-serif;}
-				<?php
-			};
-			?>
-			BODY.mainframe
-			{
-				background-color: #CCCCFF;
-				color: #000000;
-				font-size: <?php echo($FontSize); ?>pt;
-				font-weight: 400;
-				margin: 5px;
-			}
-
-			A
-			{
-				text-decoration: underline;
-				color: #FFFFFF;
-				font-weight: 600;
-			}
-
-			A:hover, A:active
-			{
-				color: #FF9900;
-				text-decoration: none;
-			}
-
-			.msg
-			{
-				margin-top: 0px;
-				margin-bottom: 2px;
-				margin-left: <?php echo($Charset == "windows-1256" ? "5" : "55"); ?>px;
-				margin-right: <?php echo($Charset == "windows-1256" ? "55" : "5"); ?>px;
-				text-indent: -50px;
-			}
-
-			.time
-			{
-				direction: ltr;
-				unicode-bidi: embed;
-				color: #000000;
-				font-size: 8pt;
-			}
-
-			.notify
-			{
-				color: #666699;
-				font-size: <?php echo($FontSize); ?>pt;
-				font-weight: 600;
-			}
-		</STYLE>
-	<HEAD>
-
-	<BODY CLASS="mainframe">
-	<?php
-	echo($MessagesString);
-	unset($MessagesString);
-	?>
-	</BODY>
-	</HTML>
-	<?php
-	exit;
-}
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/handle_inputH.php 0.15.0/chat/handle_inputH.php
--- 0.14.5/chat/handle_inputH.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/handle_inputH.php	2004-04-01 03:06:23.000000000 -0600
@@ -0,0 +1,411 @@
+<?php
+/* ------------------------------------------------------------------------------------
+	This script is called when something has been sent at the 'input' frame for DHTML
+	enabled browsers (then the 'input' frame itself is not reloaded)
+   ------------------------------------------------------------------------------------ */
+
+// Get the names and values for vars sent by index.lib.php
+if (isset($HTTP_GET_VARS))
+{
+	while(list($name,$value) = each($HTTP_GET_VARS))
+	{
+		$$name = $value;
+	};
+};
+
+// Get the names and values for post vars
+if (isset($HTTP_POST_VARS))
+{
+	while(list($name,$value) = each($HTTP_POST_VARS))
+	{
+		$$name = $value;
+	};
+};
+
+// Fix some security issues
+if ((empty($From) || trim($From) == '')
+	|| (empty($U) || trim($U) == '')
+	|| (empty($R) || trim($R) == '')
+	|| (empty($Ver) || empty($L) || empty($N))
+	|| (!isset($T) || !isset($D) || !isset($O) || !isset($ST) || !isset($NT))
+	|| !is_dir('./localization/'.$L))
+{
+	exit();
+}
+	
+require("./config/config.lib.php");
+require("./localization/".$L."/localized.chat.php");
+require("./lib/release.lib.php");
+require("./lib/database/".C_DB_TYPE.".lib.php");
+require("./lib/clean.lib.php");
+
+header("Content-Type: text/html; charset=${Charset}");
+
+// avoid server configuration for magic quotes
+set_magic_quotes_runtime(0);
+
+$U = urldecode($U);
+$R = urldecode($R);
+
+// Translate to html special characters, and entities if message was sent with a latin 1 charset
+$Latin1 = ($Charset == "iso-8859-1");
+function special_char($str,$lang)
+{
+	return addslashes($lang ? htmlentities(stripslashes($str)) : htmlspecialchars(stripslashes($str)));
+};
+
+$DbLink = new DB;
+
+
+// ** Updates user info in connected users tables and fix some security issues **
+// Fixed a security issue thanks to SeazoN
+if (C_REQUIRE_REGISTER && (!isset($PWD_Hash) || $PWD_Hash == ''))
+{
+	exit(); // hack attack
+}
+else if (isset($PWD_Hash) && $PWD_Hash != '')
+{
+	$DbLink->query(	'SELECT ' . C_USR_TBL . '.room, ' . C_USR_TBL . '.status, ' . C_USR_TBL. '.ip'
+					. ' FROM ' . C_USR_TBL . ', ' . C_REG_TBL
+					. ' WHERE ' . C_USR_TBL . '.username = \'' . $U . '\''
+					.   ' AND ' . C_REG_TBL . '.username = \'' . $U . '\''
+					.   ' AND ' . C_REG_TBL . '.password = \'' . $PWD_Hash . '\''
+					. ' LIMIT 1');
+}
+else // C_REQUIRE_REGISTER == 0 && $PWD_Hash is empty
+{
+	$DbLink->query('SELECT username FROM ' . C_REG_TBL . ' WHERE username = \'' . $U . '\' LIMIT 1');
+	if ($DbLink->num_rows() == 0)
+	{
+		$DbLink->query('SELECT room, status, ip FROM ' . C_USR_TBL . ' WHERE username = \'' . $U . '\' LIMIT 1');
+	}
+	else
+	{
+		$DbLink->clean_results();
+		$DbLink->close();
+		exit(); // hack attack
+	}
+}
+// End of SeazoN Fix
+if ($DbLink->num_rows() != 0)
+{
+	list($room, $status, $knownIp) = $DbLink->next_record();
+	$DbLink->clean_results();
+	$kicked = 0;
+	// Security issue
+	include("./lib/get_IP.lib.php");
+	if ($knownIp != $IP)
+	{
+		$kicked = 5;
+	}
+	// Update users info
+	elseif ($room != stripslashes($R))	// Same nick in another room
+	{
+		$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ($T, '$R', 'SYS exit', '', ".time().", '', 'sprintf(L_EXIT_ROM, \"".special_char($U,$Latin1)."\")')");
+		$kicked = 3;
+	}
+	elseif ($status == "k")			// Kicked by a moderator or the admin.
+	{
+		$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ($T, '$R', 'SYS exit', '', ".time().", '', 'sprintf(L_KICKED, \"".special_char($U,$Latin1)."\")')");
+		$kicked = 1;
+	}
+	elseif ($status == "d")			// The admin just deleted the room
+	{
+		$kicked = 2;
+	}
+	elseif ($status == "b")			// Banished by a moderator or the admin.
+	{
+		$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ($T, '$R', 'SYS exit', '', ".time().", '', 'sprintf(L_BANISHED, \"".special_char($U,$Latin1)."\")')");
+		$kicked = 4;
+	};
+	if ($kicked > 0)
+	{
+		// Kick the user from the current room
+		$kickedUrl	= ($kicked < 5)
+					? "$From?L=$L&U=".urlencode(stripslashes($U))."&E=".urlencode(stripslashes($R))."&KICKED=$kicked"
+					: "$From?L=$L";
+		?>
+		<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript">
+		<!--
+		window.parent.window.location = '<?php echo($kickedUrl); ?>';
+		// -->
+		</SCRIPT>
+		<?php
+		$DbLink->close();
+		exit;
+	}
+}
+else
+{
+	$DbLink->clean_results();
+	// Fix a security issue
+	?>
+	<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript">
+	<!--
+	window.parent.window.location = '<?php echo("$From?L=$L"); ?>';
+	// -->
+	</SCRIPT>
+	<?php
+	$DbLink->close();
+	exit;
+}
+
+// ** Send formated messages to the message table **
+function AddMessage($M, $T, $R, $U, $C, $Private)
+{
+	global $DbLink;
+	global $Latin1;
+	global $status;
+
+	// Text formating tags
+	if(C_HTML_TAGS_KEEP == "none")
+	{
+		if(C_HTML_TAGS_SHOW == 0)
+		{
+			// eliminates every HTML like tags
+			$M = ereg_replace("<[^>]+>", "", $M);
+		}
+		else
+		{
+			// or keep it without effect
+			$M = str_replace("<", "&lt;", $M);
+			$M = str_replace(">", "&gt;", $M);
+		}
+	}
+	else
+	{
+		// then C_HTML_TAGS_KEEP == "simple", we keep U, B and I tags
+		$M = str_replace("<", "&lt;", $M);
+		$M = str_replace(">", "&gt;", $M);
+
+		if(function_exists("preg_match"))
+		{
+			while(preg_match("/&lt;([ubi]?)&gt;(.*?)&lt;(\/\\1)&gt;/i",$M))
+			{
+				$M = preg_replace("/&lt;([ubi]?)&gt;(.*?)&lt;(\/\\1)&gt;/i","<\\1>\\2<\\3>",$M);
+			}
+			if(C_HTML_TAGS_SHOW == 0)
+			{
+				$M = preg_replace("/&lt;\/?[ubi]?&gt;/i","",$M);
+			}
+		}
+	}
+
+	// URL
+	$M = eregi_replace('([[:space:]]|^)(www[.])', '\\1http://\\2', $M); // no prefix (www.myurl.ext)
+	$prefix = '(http|https|ftp|telnet|news|gopher|file|wais)://';
+	$pureUrl = '([[:alnum:]/\n+-=%&:_.~?]+[#[:alnum:]+]*)';
+	$M = eregi_replace($prefix . $pureUrl, '<a href="\\1://\\2" target="_blank">\\1://\\2</a>', $M);
+
+	// e-mail addresses
+	$M = eregi_replace('([0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-wyz][a-z](fo|g|l|m|mes|o|op|pa|ro|seum|t|u|v|z)?)', '<a href="mailto:\\1">\\1</a>', $M);
+
+	// Smilies
+	if (C_USE_SMILIES == 1)
+	{
+		include("./lib/smilies.lib.php");
+		Check4Smilies($M,$SmiliesTbl);
+		unset($SmiliesTbl);
+	};
+
+	// transform ISO-8859-1 special characters
+	if ($Latin1)
+	{
+		global $MsgTo;
+		ereg("(.*)(".$MsgTo."(&gt;)?)(.*)",$M,$Regs);
+		if ($MsgTo != "" && ($Regs[1] == "" && $Regs[4] == "")) $Regs[4] = $M;
+		if (!ereg("&[[:alnum:]]{1,10};",$Regs[1]) && !ereg("&[[:alnum:]]{1,10};",$Regs[4]))
+		{
+			for ($i = 1; $i <= 4; $i++)
+			{
+				if (($i != 1 && $i != 4) || $Regs[$i] == "") continue;
+				$part = $Regs[$i];
+				$part = htmlentities($part);
+				$part = str_replace("&lt;", "<", $part);
+				$part = str_replace("&gt;", ">", $part);
+				$part = str_replace("&amp;lt;", "&lt;", $part);
+				$part = str_replace("&amp;gt;", "&gt;", $part);
+				$part = str_replace("&quot;","\"", $part);
+				$part = ereg_replace("&amp;(#[[:digit:]]{2,5};)", "&\\1", $part);
+				$Regs[$i] = $part;
+			}
+			$M = $Regs[1].$Regs[2].$Regs[4];
+		}
+	}
+
+	if (isset($C) and $C != "")
+	{
+		// Red colors are reserved to the admin or a moderator for the current room
+		if ((ereg('#(FF0000|fc403f|fc4b34|fa582a|f66421|f27119|ec7e11|ec117f|f21971|f62164|fa2a58|fc344b)', $C))
+			&& !($status == "a" || $status == "m"))
+			$C = "#000000";
+		$M = "<FONT COLOR=\"".$C."\">".$M."</FONT>";
+	};
+
+	$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ($T, '$R', '".addslashes($U)."', '$Latin1', ".time().", '$Private', '".addslashes($M)."')");
+}
+
+// ** Define the default color that will be used for messages **
+if (isset($HTTP_COOKIE_VARS["CookieColor"])) $CookieColor = $HTTP_COOKIE_VARS["CookieColor"];
+if(!isset($C))
+{
+	if(!isset($CookieColor))
+	{
+		// set default color to black
+		$C = "#000000";
+	}
+	elseif (ereg('#(FF0000|fc403f|fc4b34|fa582a|f66421|f27119|ec7e11|ec117f|f21971|f62164|fa2a58|fc344b)', $CookieColor))
+	{
+		// Red colors are reserved to the admin or a moderator for the current room
+		if (!(isset($status) && ($status == "a" || $status == "m"))) $C = "#000000";
+	}
+
+	if (!isset($C))
+	{
+		$C = $CookieColor;
+	}
+}
+setcookie("CookieColor", $C, time() + 60*60*24*365);        // cookie expires in one year
+
+
+// ** Test for online commands and swear words **
+$IsCommand = false;
+$RefreshMessages = false;
+$IsPopup = false;
+$IsM = false;
+
+if (isset($M) && trim($M) != "" && ereg("^\/", $M)) include("./lib/commands.lib.php");
+
+if (isset($M) && ereg("^\/", $M) && !($IsCommand) && !isset($Error)) $Error = L_BAD_CMD;
+
+if (isset($M) && trim($M) != "" && (!isset($M0) || ($M != $M0)) && !($IsCommand || isset($Error)))
+{
+	if (C_NO_SWEAR == 1)
+	{
+		include("./lib/swearing.lib.php");
+		$M = checkwords($M, false);
+	}
+	AddMessage(stripslashes($M), $T, $R, $U, $C, "");
+	$RefreshMessages = true;
+}
+
+$DbLink->close();
+?>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML dir="<?php echo(($Charset == "windows-1256") ? "RTL" : "LTR"); ?>">
+
+<HEAD>
+<TITLE>Hidden Input frame</TITLE>
+<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript1.2">
+<!--
+if (typeof(window.parent.frames['input']) != 'undefined'
+	&& typeof(window.parent.frames['input'].window.document.forms['MsgForm']) != 'undefined'
+	&& window.parent.frames['input'].window.document.forms['MsgForm'].elements['sent'] != '0')
+{
+
+	/* Udate the Form at the 'input' frame */
+	with (window.parent.frames['input'].window.document.forms['MsgForm'])
+	{
+		elements['D'].value = "<?php echo($D); ?>";
+		elements['N'].value = "<?php echo($N); ?>";
+		elements['O'].value = "<?php echo($O); ?>";
+		elements['ST'].value = "<?php echo($ST); ?>";
+		elements['NT'].value = "<?php echo($NT); ?>";
+		elements['Ign'].value = "<?php echo(isset($Ign) ? htmlspecialchars(stripslashes($Ign)) : ""); ?>";
+		elements['M0'].value = "<?php echo(isset($M) ? htmlspecialchars(stripslashes($M)) : ""); ?>";
+
+		// Get the value to put in the message box : previous M0 field value for /! command,
+		// previous entry if it was an erroneous command, else nothing; 
+		<?php
+		$ValM = $IsM ? $M0 : "";
+		if (isset($Error) && !($IsCommand)) $ValM = $M;
+		?>
+		elements['M'].value = "<?php echo(htmlspecialchars(stripslashes($ValM))); ?>";
+			
+		elements['MsgTo'].value = "";
+		elements['C'].value = "<?php echo($C); ?>";
+		elements['sent'].value = "0";
+
+		if (document.all) elements['sendForm'].disabled = false;
+	};
+
+	<?php
+	if ($RefreshMessages)
+	{
+		$Tmp = (isset($Ign) && $Ign != "") ? "&Ign=".urlencode(stripslashes($Ign)) : "";
+		$First = isset($First) ? $First : 0;
+		?>
+		/* Refresh the message frame or append messages to it */
+		<?php
+		if ($First) echo("window.parent.frames['messages'].window.document.close();\n\twindow.parent.connect = 0;\n");
+		?>
+		if (window.parent.connect == 0)
+		{
+			window.parent.refresh_query = "<?php echo("From=".urlencode($From)."&L=$L&U=".urlencode(stripslashes($U)).(isset($PWD_Hash) ? '&PWD_Hash=' . $PWD_Hash : '')."&R=".urlencode(stripslashes($R))."&T=$T&D=$D&N=$N&ST=$ST&NT=$NT".$Tmp."&First=$First"); ?>";
+			window.parent.force_refresh();
+		};
+		<?php
+	};
+
+	if(isset($Error))
+	{
+		?>
+		/* Display a JavaScript alert box with the error message */
+		window.parent.frames['input'].window.document.forms['MsgForm'].elements['M'].select();
+		alert("<?php echo(str_replace("\\\\n","\\n",addslashes($Error))); ?>");
+		<?php
+	};
+	?>
+
+	<?php
+	$posted_var_list = "From=$From&Ver=$Ver&L=$L&U=$U&R=$R&T=$T&D=$D&N=$N&O=$O&ST=$ST&NT=$NT";
+	if (isset($PWD_Hash) && $PWD_Hash != "") $posted_var_list .= "&PWD_Hash=$PWD_Hash";
+	$posted_var_list .= "&dummy=".uniqid("");	// Force reload from the server (not from the cache)
+
+	if (isset($status) && $status == "m")
+	{
+		?>
+		/* Add the red color when the user has been promoted to moderator */
+		if (!window.parent.isModerator)
+		{
+			window.parent.frames['input'].window.location.replace("input.php?<?php echo($posted_var_list); ?>");
+			window.parent.isModerator = 1;
+		}
+		<?php
+	}
+	elseif (!isset($status) || $status != "a")
+	{
+		?>
+		/* Remove the red color when the user has became a 'simple user */
+		if (window.parent.isModerator)
+		{
+			window.parent.frames['input'].window.location.replace("input.php?<?php echo($posted_var_list); ?>");
+			window.parent.isModerator = 0;
+		}
+		<?php
+	};
+	?>
+};
+// -->
+</SCRIPT>
+</HEAD>
+
+<BODY>
+<?php
+// Display JavaScript instructions that commands may have set
+if (isset($jsTbl))
+{
+	for (reset($jsTbl); $jsInst=current($jsTbl); next($jsTbl))
+	{
+		echo("$jsInst\n");
+	};
+	unset($jsTbl);
+}
+else
+{
+	echo("\t<!-- Not a blank document ;) -->\n");
+};
+?>
+</BODY>
+
+</HTML>
\ No newline at end of file
diff -ruN 0.14.5/chat/handle_inputH.php3 0.15.0/chat/handle_inputH.php3
--- 0.14.5/chat/handle_inputH.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/handle_inputH.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,383 +0,0 @@
-<?php
-/* ------------------------------------------------------------------------------------
-	This script is called when something has been sent at the 'input' frame for DHTML
-	enabled browsers (then the 'input' frame itself is not reloaded)
-   ------------------------------------------------------------------------------------ */
-
-// Get the names and values for vars sent by index.lib.php3
-if (isset($HTTP_GET_VARS))
-{
-	while(list($name,$value) = each($HTTP_GET_VARS))
-	{
-		$$name = $value;
-	};
-};
-
-// Get the names and values for post vars
-if (isset($HTTP_POST_VARS))
-{
-	while(list($name,$value) = each($HTTP_POST_VARS))
-	{
-		$$name = $value;
-	};
-};
-
-// Fix some security issues
-if ((empty($From) || trim($From) == '')
-	|| (empty($U) || trim($U) == '')
-	|| (empty($R) || trim($R) == '')
-	|| (empty($Ver) || empty($L) || empty($N))
-	|| (!isset($T) || !isset($D) || !isset($O) || !isset($ST) || !isset($NT))
-	|| !is_dir('./localization/'.$L))
-{
-	exit();
-}
-	
-require("./config/config.lib.php3");
-require("./localization/".$L."/localized.chat.php3");
-require("./lib/release.lib.php3");
-require("./lib/database/".C_DB_TYPE.".lib.php3");
-require("./lib/clean.lib.php3");
-
-header("Content-Type: text/html; charset=${Charset}");
-
-// avoid server configuration for magic quotes
-set_magic_quotes_runtime(0);
-
-$U = urldecode($U);
-$R = urldecode($R);
-
-// Translate to html special characters, and entities if message was sent with a latin 1 charset
-$Latin1 = ($Charset == "iso-8859-1");
-function special_char($str,$lang)
-{
-	return addslashes($lang ? htmlentities(stripslashes($str)) : htmlspecialchars(stripslashes($str)));
-};
-
-$DbLink = new DB;
-
-
-// ** Updates user info in connected users tables and fix some security issues **
-$DbLink->query("SELECT room, status, ip FROM ".C_USR_TBL." WHERE username = '$U' LIMIT 1");
-if ($DbLink->num_rows() != 0)
-{
-	list($room, $status, $knownIp) = $DbLink->next_record();
-	$DbLink->clean_results();
-	$kicked = 0;
-	// Security issue
-	include("./lib/get_IP.lib.php3");
-	if ($knownIp != $IP)
-	{
-		$kicked = 5;
-	}
-	// Update users info
-	elseif ($room != stripslashes($R))	// Same nick in another room
-	{
-		$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ($T, '$R', 'SYS exit', '', ".time().", '', 'sprintf(L_EXIT_ROM, \"".special_char($U,$Latin1)."\")')");
-		$kicked = 3;
-	}
-	elseif ($status == "k")			// Kicked by a moderator or the admin.
-	{
-		$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ($T, '$R', 'SYS exit', '', ".time().", '', 'sprintf(L_KICKED, \"".special_char($U,$Latin1)."\")')");
-		$kicked = 1;
-	}
-	elseif ($status == "d")			// The admin just deleted the room
-	{
-		$kicked = 2;
-	}
-	elseif ($status == "b")			// Banished by a moderator or the admin.
-	{
-		$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ($T, '$R', 'SYS exit', '', ".time().", '', 'sprintf(L_BANISHED, \"".special_char($U,$Latin1)."\")')");
-		$kicked = 4;
-	};
-	if ($kicked > 0)
-	{
-		// Kick the user from the current room
-		$kickedUrl	= ($kicked < 5)
-					? "$From?L=$L&U=".urlencode(stripslashes($U))."&E=".urlencode(stripslashes($R))."&KICKED=$kicked"
-					: "$From?L=$L";
-		?>
-		<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript">
-		<!--
-		window.parent.window.location = '<?php echo($kickedUrl); ?>';
-		// -->
-		</SCRIPT>
-		<?php
-		$DbLink->close();
-		exit;
-	}
-}
-else
-{
-	$DbLink->clean_results();
-	// Fix a security issue
-	?>
-	<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript">
-	<!--
-	window.parent.window.location = '<?php echo("$From?L=$L"); ?>';
-	// -->
-	</SCRIPT>
-	<?php
-	$DbLink->close();
-	exit;
-}
-
-// ** Send formated messages to the message table **
-function AddMessage($M, $T, $R, $U, $C, $Private)
-{
-	global $DbLink;
-	global $Latin1;
-	global $status;
-
-	// Text formating tags
-	if(C_HTML_TAGS_KEEP == "none")
-	{
-		if(C_HTML_TAGS_SHOW == 0)
-		{
-			// eliminates every HTML like tags
-			$M = ereg_replace("<[^>]+>", "", $M);
-		}
-		else
-		{
-			// or keep it without effect
-			$M = str_replace("<", "&lt;", $M);
-			$M = str_replace(">", "&gt;", $M);
-		}
-	}
-	else
-	{
-		// then C_HTML_TAGS_KEEP == "simple", we keep U, B and I tags
-		$M = str_replace("<", "&lt;", $M);
-		$M = str_replace(">", "&gt;", $M);
-
-		if(function_exists("preg_match"))
-		{
-			while(preg_match("/&lt;([ubi]?)&gt;(.*?)&lt;(\/\\1)&gt;/i",$M))
-			{
-				$M = preg_replace("/&lt;([ubi]?)&gt;(.*?)&lt;(\/\\1)&gt;/i","<\\1>\\2<\\3>",$M);
-			}
-			if(C_HTML_TAGS_SHOW == 0)
-			{
-				$M = preg_replace("/&lt;\/?[ubi]?&gt;/i","",$M);
-			}
-		}
-	}
-
-	// URL
-	$M = eregi_replace('([[:space:]]|^)(www)', '\\1http://\\2', $M); // no prefix (www.myurl.ext)
-	$prefix = '(http|https|ftp|telnet|news|gopher|file|wais)://';
-	$pureUrl = '([[:alnum:]/\n+-=%&:_.~?]+[#[:alnum:]+]*)';
-	$M = eregi_replace($prefix . $pureUrl, '<a href="\\1://\\2" target="_blank">\\1://\\2</a>', $M);
-
-	// e-mail addresses
-	$M = eregi_replace('([0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-wyz][a-z](fo|g|l|m|mes|o|op|pa|ro|seum|t|u|v|z)?)', '<a href="mailto:\\1">\\1</a>', $M);
-
-	// Smilies
-	if (C_USE_SMILIES == 1)
-	{
-		include("./lib/smilies.lib.php3");
-		Check4Smilies($M,$SmiliesTbl);
-		unset($SmiliesTbl);
-	};
-
-	// transform ISO-8859-1 special characters
-	if ($Latin1)
-	{
-		global $MsgTo;
-		ereg("(.*)(".$MsgTo."(&gt;)?)(.*)",$M,$Regs);
-		if ($MsgTo != "" && ($Regs[1] == "" && $Regs[4] == "")) $Regs[4] = $M;
-		if (!ereg("&[[:alnum:]]{1,10};",$Regs[1]) && !ereg("&[[:alnum:]]{1,10};",$Regs[4]))
-		{
-			for ($i = 1; $i <= 4; $i++)
-			{
-				if (($i != 1 && $i != 4) || $Regs[$i] == "") continue;
-				$part = $Regs[$i];
-				$part = htmlentities($part);
-				$part = str_replace("&lt;", "<", $part);
-				$part = str_replace("&gt;", ">", $part);
-				$part = str_replace("&amp;lt;", "&lt;", $part);
-				$part = str_replace("&amp;gt;", "&gt;", $part);
-				$part = str_replace("&quot;","\"", $part);
-				$part = ereg_replace("&amp;(#[[:digit:]]{2,5};)", "&\\1", $part);
-				$Regs[$i] = $part;
-			}
-			$M = $Regs[1].$Regs[2].$Regs[4];
-		}
-	}
-
-	if (isset($C) and $C != "")
-	{
-		// Red colors are reserved to the admin or a moderator for the current room
-		if ((ereg('#(FF0000|fc403f|fc4b34|fa582a|f66421|f27119|ec7e11|ec117f|f21971|f62164|fa2a58|fc344b)', $C))
-			&& !($status == "a" || $status == "m"))
-			$C = "#000000";
-		$M = "<FONT COLOR=\"".$C."\">".$M."</FONT>";
-	};
-
-	$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ($T, '$R', '".addslashes($U)."', '$Latin1', ".time().", '$Private', '".addslashes($M)."')");
-}
-
-// ** Define the default color that will be used for messages **
-if (isset($HTTP_COOKIE_VARS["CookieColor"])) $CookieColor = $HTTP_COOKIE_VARS["CookieColor"];
-if(!isset($C))
-{
-	if(!isset($CookieColor))
-	{
-		// set default color to black
-		$C = "#000000";
-	}
-	elseif (ereg('#(FF0000|fc403f|fc4b34|fa582a|f66421|f27119|ec7e11|ec117f|f21971|f62164|fa2a58|fc344b)', $CookieColor))
-	{
-		// Red colors are reserved to the admin or a moderator for the current room
-		if (!(isset($status) && ($status == "a" || $status == "m"))) $C = "#000000";
-	}
-
-	if (!isset($C))
-	{
-		$C = $CookieColor;
-	}
-}
-setcookie("CookieColor", $C, time() + 60*60*24*365);        // cookie expires in one year
-
-
-// ** Test for online commands and swear words **
-$IsCommand = false;
-$RefreshMessages = false;
-$IsPopup = false;
-$IsM = false;
-
-if (isset($M) && trim($M) != "" && ereg("^\/", $M)) include("./lib/commands.lib.php3");
-
-if (isset($M) && ereg("^\/", $M) && !($IsCommand) && !isset($Error)) $Error = L_BAD_CMD;
-
-if (isset($M) && trim($M) != "" && (!isset($M0) || ($M != $M0)) && !($IsCommand || isset($Error)))
-{
-	if (C_NO_SWEAR == 1)
-	{
-		include("./lib/swearing.lib.php3");
-		$M = checkwords($M, false);
-	}
-	AddMessage(stripslashes($M), $T, $R, $U, $C, "");
-	$RefreshMessages = true;
-}
-
-$DbLink->close();
-?>
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<HTML dir="<?php echo(($Charset == "windows-1256") ? "RTL" : "LTR"); ?>">
-
-<HEAD>
-<TITLE>Hidden Input frame</TITLE>
-<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript1.2">
-<!--
-if (typeof(window.parent.frames['input']) != 'undefined'
-	&& typeof(window.parent.frames['input'].window.document.forms['MsgForm']) != 'undefined'
-	&& window.parent.frames['input'].window.document.forms['MsgForm'].elements['sent'] != '0')
-{
-
-	/* Udate the Form at the 'input' frame */
-	with (window.parent.frames['input'].window.document.forms['MsgForm'])
-	{
-		elements['D'].value = "<?php echo($D); ?>";
-		elements['N'].value = "<?php echo($N); ?>";
-		elements['O'].value = "<?php echo($O); ?>";
-		elements['ST'].value = "<?php echo($ST); ?>";
-		elements['NT'].value = "<?php echo($NT); ?>";
-		elements['Ign'].value = "<?php echo(isset($Ign) ? htmlspecialchars(stripslashes($Ign)) : ""); ?>";
-		elements['M0'].value = "<?php echo(isset($M) ? htmlspecialchars(stripslashes($M)) : ""); ?>";
-
-		// Get the value to put in the message box : previous M0 field value for /! command,
-		// previous entry if it was an erroneous command, else nothing; 
-		<?php
-		$ValM = $IsM ? $M0 : "";
-		if (isset($Error) && !($IsCommand)) $ValM = $M;
-		?>
-		elements['M'].value = "<?php echo(htmlspecialchars(stripslashes($ValM))); ?>";
-			
-		elements['MsgTo'].value = "";
-		elements['C'].value = "<?php echo($C); ?>";
-		elements['sent'].value = "0";
-
-		if (document.all) elements['sendForm'].disabled = false;
-	};
-
-	<?php
-	if ($RefreshMessages)
-	{
-		$Tmp = (isset($Ign) && $Ign != "") ? "&Ign=".urlencode(stripslashes($Ign)) : "";
-		$First = isset($First) ? $First : 0;
-		?>
-		/* Refresh the message frame or append messages to it */
-		<?php
-		if ($First) echo("window.parent.frames['messages'].window.document.close();\n\twindow.parent.connect = 0;\n");
-		?>
-		if (window.parent.connect == 0)
-		{
-			window.parent.refresh_query = "<?php echo("From=".urlencode($From)."&L=$L&U=".urlencode(stripslashes($U))."&R=".urlencode(stripslashes($R))."&T=$T&D=$D&N=$N&ST=$ST&NT=$NT".$Tmp."&First=$First"); ?>";
-			window.parent.force_refresh();
-		};
-		<?php
-	};
-
-	if(isset($Error))
-	{
-		?>
-		/* Display a JavaScript alert box with the error message */
-		window.parent.frames['input'].window.document.forms['MsgForm'].elements['M'].select();
-		alert("<?php echo(str_replace("\\\\n","\\n",addslashes($Error))); ?>");
-		<?php
-	};
-	?>
-
-	<?php
-	$posted_var_list = "From=$From&Ver=$Ver&L=$L&U=$U&R=$R&T=$T&D=$D&N=$N&O=$O&ST=$ST&NT=$NT";
-	if (isset($PWD_Hash) && $PWD_Hash != "") $posted_var_list .= "&PWD_Hash=$PWD_Hash";
-	$posted_var_list .= "&dummy=".uniqid("");	// Force reload from the server (not from the cache)
-
-	if (isset($status) && $status == "m")
-	{
-		?>
-		/* Add the red color when the user has been promoted to moderator */
-		if (!window.parent.isModerator)
-		{
-			window.parent.frames['input'].window.location.replace("input.php3?<?php echo($posted_var_list); ?>");
-			window.parent.isModerator = 1;
-		}
-		<?php
-	}
-	elseif (!isset($status) || $status != "a")
-	{
-		?>
-		/* Remove the red color when the user has became a 'simple user */
-		if (window.parent.isModerator)
-		{
-			window.parent.frames['input'].window.location.replace("input.php3?<?php echo($posted_var_list); ?>");
-			window.parent.isModerator = 0;
-		}
-		<?php
-	};
-	?>
-};
-// -->
-</SCRIPT>
-</HEAD>
-
-<BODY>
-<?php
-// Display JavaScript instructions that commands may have set
-if (isset($jsTbl))
-{
-	for (reset($jsTbl); $jsInst=current($jsTbl); next($jsTbl))
-	{
-		echo("$jsInst\n");
-	};
-	unset($jsTbl);
-}
-else
-{
-	echo("\t<!-- Not a blank document ;) -->\n");
-};
-?>
-</BODY>
-
-</HTML>
\ No newline at end of file
diff -ruN 0.14.5/chat/help_popup.php 0.15.0/chat/help_popup.php
--- 0.14.5/chat/help_popup.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/help_popup.php	2004-04-01 03:06:24.000000000 -0600
@@ -0,0 +1,279 @@
+<?php
+if (isset($HTTP_GET_VARS["L"])) $L = $HTTP_GET_VARS["L"];
+
+// Fix a security hole
+if (isset($L) && !is_dir('./localization/'.$L)) exit();
+	
+if (isset($HTTP_GET_VARS["Ver"])) $Ver = $HTTP_GET_VARS["Ver"];
+require("./config/config.lib.php");
+require("./localization/".$L."/localized.chat.php");
+require("./lib/release.lib.php");
+
+header("Content-Type: text/html; charset=${Charset}");
+
+// For translations with an explicit charset (not the 'x-user-defined' one)
+if (!isset($FontName)) $FontName = "";
+
+// Text direction and horizontal alignment for cells topic
+$TextDir = ($Charset == "windows-1256" ? "RTL" : "LTR");
+$CellAlign = ($Charset != "windows-1256" ? "LEFT" : "RIGHT");
+?>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML dir="<?php echo($TextDir); ?>">
+
+<HEAD>
+<TITLE><?php echo(L_HLP); ?></TITLE>
+<LINK REL="stylesheet" HREF="config/style.css.php?<?php echo("Charset=${Charset}&medium=${FontSize}&FontName=".urlencode($FontName)); ?>" TYPE="text/css">
+<SCRIPT TYPE="text/javascript" LANGUAGE="javascript1.1">
+<!--
+function targetWin()
+{
+	if (window.opener.window.document.title == "<?php echo(APP_NAME); ?>")
+		return window.opener.frames['input'].window;
+	else if (window.opener.window.document.title == "Hidden Input frame")
+		return window.opener.window.parent.frames['input'].window;
+	else
+		return window.opener.window;
+}
+
+function smiley2Input(code)
+{
+	window.focus();
+	if (window.opener && !window.opener.closed)
+	{
+		addTo = targetWin();
+		if (addTo && !addTo.closed) addTo.document.forms['MsgForm'].elements['M'].value += code;
+	};
+}
+
+function cmd2Input(code,addstring)
+{
+	window.focus();
+	if (window.opener && !window.opener.closed)
+	{
+		addTo = targetWin();
+		if (addTo && !addTo.closed)
+		{
+			oldStr = (addstring ? addTo.document.forms['MsgForm'].elements['M'].value : "");
+			if (addstring && (oldStr == "" || oldStr.substring(0,1) != " "))
+				oldStr = " " + oldStr;
+			addTo.document.forms['MsgForm'].elements['M'].value = code + oldStr;
+		};
+	};
+}
+//-->
+</SCRIPT>
+</HEAD>
+
+<BODY CLASS="mainframe" onLoad="if (window.focus) window.focus();">
+<CENTER>
+
+<?php
+if (C_USE_SMILIES == "1")
+{
+	include("./lib/smilies.lib.php");
+	$Nb = count($SmiliesTbl);
+	$ResultTbl = Array();
+	DisplaySmilies($ResultTbl,$SmiliesTbl,$Nb,"help");
+	unset($SmiliesTbl);
+	?>
+	<!-- Smilies codes -->
+	<TABLE BORDER=0 CELLPADDING=3 WIDTH=574 CLASS="table">
+	<TR>
+		<TH CLASS="tabtitle" COLSPAN=<?php echo($Nb); ?>><?php echo(L_HELP_TIT_1); ?></TH>
+	</TR>
+	<?php
+	$i = "0";
+	$Nb = count($ResultTbl);
+	while($i < $Nb)
+	{
+		if ($i > 0) echo("\t");
+		echo("<TR VALIGN=\"BOTTOM\">\n");
+		echo("$ResultTbl[$i]");
+		echo("\t</TR>\n\t<TR>\n");
+		$i++;
+		echo("$ResultTbl[$i]");
+		echo("\t</TR>\n");
+		$i++;
+	};
+	unset($ResultTbl);
+	?>
+	</TABLE>
+	<BR>
+	<?php
+};
+
+if (C_HTML_TAGS_KEEP != "none")
+{
+	?>
+	<!-- Text formatting help -->
+	<TABLE BORDER=0 CELLPADDING=3 WIDTH=574 CLASS="table">
+		<TR><TD ALIGN="CENTER" CLASS="tabtitle"><?php echo(L_HELP_TIT_2); ?></TD></TR>
+		<TR><TD ALIGN="<?php echo($CellAlign); ?>"><?php echo(L_HELP_FMT_1); ?></TD></TR>
+		<TR><TD ALIGN="<?php echo($CellAlign); ?>"><?php echo(L_HELP_FMT_2); ?></TD></TR>
+	</TABLE>
+	<BR>
+	<?php
+}
+?>
+
+<!-- Commands help -->
+<TABLE BORDER=0 CELLPADDING=3 WIDTH=574 CLASS="table">
+	<TR><TH ALIGN="CENTER" CLASS="tabtitle" COLSPAN=2><?php echo(L_HELP_TIT_3); ?></TH></TR>
+	<TR><TH ALIGN="CENTER" COLSPAN=2><?php echo(L_HELP_CMD_0); ?></TH></TR>
+	<TR><TH ALIGN="<?php echo($CellAlign); ?>" COLSPAN=2><A HREF="#" onClick="cmd2Input('/!',false); return false" CLASS="sender">/!</A></TH></TR>
+	<TR>
+		<TD WIDTH=10>&nbsp;</TD>
+		<TD><?php echo(L_HELP_CMD_7); ?></TD>
+	</TR>
+	<TR><TH ALIGN="<?php echo($CellAlign); ?>" COLSPAN=2><A HREF="#" onClick="cmd2Input('/ANNOUNCE',true); return false" CLASS="sender">/announce {<?php echo(L_HELP_MSG); ?>}<A></TH></TR>
+	<TR>
+		<TD WIDTH=10>&nbsp;</TD>
+		<TD><?php echo(L_HELP_CMD_17); ?></TD>
+	</TR>
+	<?php
+	if (C_BANISH != "0")
+	{
+		?>
+		<TR><TH ALIGN="<?php echo($CellAlign); ?>" COLSPAN=2><A HREF="#" onClick="cmd2Input('/BAN',true); return false" CLASS="sender">/ban <BDO dir="<?php echo($TextDir); ?>">[*]</BDO> {<?php echo(L_HELP_USR); ?>}<A></TH></TR>
+		<TR>
+			<TD WIDTH=10>&nbsp;</TD>
+			<TD><?php echo(L_HELP_CMD_19); ?></TD>
+		</TR>
+		<?php
+	};
+	// $Ver value is 'H' for dynamic rendering of the messages frame, 'L' or 'M' in other case
+	if ($Ver == "H")
+	{
+		?>
+		<TR><TH ALIGN="<?php echo($CellAlign); ?>" COLSPAN=2><A HREF="#" onClick="cmd2Input('/CLEAR',false); return false" CLASS="sender">/clear</A></TH></TR>
+		<TR>
+			<TD WIDTH=10>&nbsp;</TD>
+			<TD><?php echo(L_HELP_CMD_15); ?></TD>
+		</TR>
+		<?php
+	};
+	?>
+	<TR><TH ALIGN="<?php echo($CellAlign); ?>" COLSPAN=2><A HREF="#" onClick="cmd2Input('/IGNORE',true); return false" CLASS="sender">/ignore <BDO dir="<?php echo($TextDir); ?>">[-]</BDO> <?php echo("[".L_HELP_USR."[,".L_HELP_USR."...]]"); ?></A></TH></TR>
+	<TR>
+		<TD WIDTH=10>&nbsp;</TD>
+		<TD><?php echo(L_HELP_CMD_6); ?></TD>
+	</TR>
+	<TR><TH ALIGN="<?php echo($CellAlign); ?>" COLSPAN=2><A HREF="#" onClick="cmd2Input('/INVITE',true); return false" CLASS="sender">/invite {<?php echo(L_HELP_USR); ?>}</A></TH></TR>
+	<TR>
+		<TD WIDTH=10>&nbsp;</TD>
+		<TD><?php echo(L_HELP_CMD_18); ?></TD>
+	</TR>
+	<?php
+	if (C_VERSION > 0)
+	{
+		?>
+		<TR><TH ALIGN="<?php echo($CellAlign); ?>" COLSPAN=2><A HREF="#" onClick="cmd2Input('/JOIN',true); return false" CLASS="sender">/join <BDO dir="<?php echo($TextDir); ?>">[n]</BDO> {#<?php echo(L_HELP_ROOM); ?>}</A></TH></TR>
+		<TR>
+			<TD WIDTH=10>&nbsp;</TD>
+			<TD><?php echo(L_HELP_CMD_4); ?></TD>
+		</TR>
+		<?php
+	}
+	?>
+	<TR><TH ALIGN="<?php echo($CellAlign); ?>" COLSPAN=2><A HREF="#" onClick="cmd2Input('/KICK',true); return false" CLASS="sender">/kick {<?php echo(L_HELP_USR); ?>}</A></TH></TR>
+	<TR>
+		<TD WIDTH=10>&nbsp;</TD>
+		<TD><?php echo(L_HELP_CMD_9); ?></TD>
+	</TR>
+	<TR><TH ALIGN="<?php echo($CellAlign); ?>" COLSPAN=2><A HREF="#" onClick="cmd2Input('/ME',true); return false" CLASS="sender">/me <?php echo("{".L_HELP_MSG."}"); ?></A><BR></TH></TR>
+	<TR>
+		<TD WIDTH=10>&nbsp;</TD>
+		<TD><?php echo(L_HELP_CMD_20); ?></TD>
+	</TR>
+	<TR><TH ALIGN="<?php echo($CellAlign); ?>" COLSPAN=2>
+		<A HREF="#" onClick="cmd2Input('/MSG',true); return false" CLASS="sender">/msg <?php echo("{".L_HELP_USR."} {".L_HELP_MSG."}"); ?></A><BR>
+		<A HREF="#" onClick="cmd2Input('/TO',true); return false" CLASS="sender">/to <?php echo("{".L_HELP_USR."} {".L_HELP_MSG."}"); ?></A>
+	</TH></TR>
+	<TR>
+		<TD WIDTH=10>&nbsp;</TD>
+		<TD><?php echo(L_HELP_CMD_10); ?></TD>
+	</TR>
+	<TR><TH ALIGN="<?php echo($CellAlign); ?>" COLSPAN=2><A HREF="#" onClick="cmd2Input('/NOTIFY',false); return false" CLASS="sender">/notify</A></TH></TR>
+	<TR>
+		<TD WIDTH=10>&nbsp;</TD>
+		<TD><?php echo(L_HELP_CMD_13); ?></TD>
+	</TR>
+	<?php
+	if ($Ver != "H")
+	{
+		?>
+		<TR><TH ALIGN="<?php echo($CellAlign); ?>" COLSPAN=2><A HREF="#" onClick="cmd2Input('/ORDER',false); return false" CLASS="sender">/order</A></TH></TR>
+		<TR>
+			<TD WIDTH=10>&nbsp;</TD>
+			<TD><?php echo(L_HELP_CMD_3); ?></TD>
+		</TR>
+		<?php
+	}
+	?>
+	<TR><TH ALIGN="<?php echo($CellAlign); ?>" COLSPAN=2><A HREF="#" onClick="cmd2Input('/PROFILE',false); return false" CLASS="sender">/profile</A></TH></TR>
+	<TR>
+		<TD WIDTH=10>&nbsp;</TD>
+		<TD><?php echo(L_HELP_CMD_12); ?></TD>
+	</TR>
+	<TR><TH ALIGN="<?php echo($CellAlign); ?>" COLSPAN=2><A HREF="#" onClick="cmd2Input('/PROMOTE',true); return false" CLASS="sender">/promote {<?php echo(L_HELP_USR); ?>}</A></TH></TR>
+	<TR>
+		<TD WIDTH=10>&nbsp;</TD>
+		<TD><?php echo(L_HELP_CMD_14); ?></TD>
+	</TR>
+	<TR><TH ALIGN="<?php echo($CellAlign); ?>" COLSPAN=2>
+		<A HREF="#" onClick="cmd2Input('/QUIT',true); return false" CLASS="sender">/quit [<?php echo(L_HELP_MSG); ?>]</A><BR>
+		<A HREF="#" onClick="cmd2Input('/EXIT',true); return false" CLASS="sender">/exit [<?php echo(L_HELP_MSG); ?>]</A><BR>
+		<A HREF="#" onClick="cmd2Input('/BYE',true); return false" CLASS="sender">/bye [<?php echo(L_HELP_MSG); ?>]</A>
+	</TH></TR>
+	<TR>
+		<TD WIDTH=10>&nbsp;</TD>
+		<TD><?php echo(L_HELP_CMD_5); ?></TD>
+	</TR>
+	<TR><TH ALIGN="<?php echo($CellAlign); ?>" COLSPAN=2><A HREF="#" onClick="cmd2Input('/REFRESH',true); return false" CLASS="sender">/refresh <BDO dir="<?php echo($TextDir); ?>">[n]</BDO></A></TH></TR>
+	<TR>
+		<TD WIDTH=10>&nbsp;</TD>
+		<TD><?php echo(($Ver == "H" ? L_HELP_CMD_2b : L_HELP_CMD_2a)); ?></TD>
+	</TR>
+	<?php
+	if (C_SAVE != "0")
+	{
+		?>
+		<TR><TH ALIGN="<?php echo($CellAlign); ?>" COLSPAN=2><A HREF="#" onClick="cmd2Input('/SAVE',true); return false" CLASS="sender">/save <BDO dir="<?php echo($TextDir); ?>">[n]</BDO></A></TH></TR>
+		<TR>
+			<TD WIDTH=10>&nbsp;</TD>
+			<TD><?php echo(L_HELP_CMD_16); ?></TD>
+		</TR>
+		<?php
+	}
+	?>
+	<TR><TH ALIGN="<?php echo($CellAlign); ?>" COLSPAN=2>
+		<A HREF="#" onClick="cmd2Input('/SHOW',true); return false" CLASS="sender">/show <BDO dir="<?php echo($TextDir); ?>">[n]</BDO></A>
+		<?php
+		if ($Ver == "H")
+		{
+			?>
+			<BR><A HREF="#" onClick="cmd2Input('/LAST',true); return false" CLASS="sender">/last <BDO dir="<?php echo($TextDir); ?>">[n]</BDO></A>
+			<?php
+		};
+		?>
+	</TH></TR>
+	<TR>
+		<TD WIDTH=10>&nbsp;</TD>
+		<TD><?php echo(($Ver == "H") ? L_HELP_CMD_1b : L_HELP_CMD_1a); ?></TD>
+	</TR>
+	<TR><TH ALIGN="<?php echo($CellAlign); ?>" COLSPAN=2><A HREF="#" onClick="cmd2Input('/TIMESTAMP',false); return false" CLASS="sender">/timestamp</A></TH></TR>
+	<TR>
+		<TD WIDTH=10>&nbsp;</TD>
+		<TD><?php echo(L_HELP_CMD_8); ?></TD>
+	</TR>
+	<TR><TH ALIGN="<?php echo($CellAlign); ?>" COLSPAN=2><A HREF="#" onClick="cmd2Input('/WHOIS',true); return false" CLASS="sender">/whois {<?php echo(L_HELP_USR); ?>}</A></TH></TR>
+	<TR>
+		<TD WIDTH=10>&nbsp;</TD>
+		<TD><?php echo(L_HELP_CMD_11); ?></TD>
+	</TR>
+</TABLE>
+</CENTER>
+</BODY>
+
+</HTML>
\ No newline at end of file
diff -ruN 0.14.5/chat/help_popup.php3 0.15.0/chat/help_popup.php3
--- 0.14.5/chat/help_popup.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/help_popup.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,279 +0,0 @@
-<?php
-if (isset($HTTP_GET_VARS["L"])) $L = $HTTP_GET_VARS["L"];
-
-// Fix a security hole
-if (isset($L) && !is_dir('./localization/'.$L)) exit();
-	
-if (isset($HTTP_GET_VARS["Ver"])) $Ver = $HTTP_GET_VARS["Ver"];
-require("./config/config.lib.php3");
-require("./localization/".$L."/localized.chat.php3");
-require("./lib/release.lib.php3");
-
-header("Content-Type: text/html; charset=${Charset}");
-
-// For translations with an explicit charset (not the 'x-user-defined' one)
-if (!isset($FontName)) $FontName = "";
-
-// Text direction and horizontal alignment for cells topic
-$TextDir = ($Charset == "windows-1256" ? "RTL" : "LTR");
-$CellAlign = ($Charset != "windows-1256" ? "LEFT" : "RIGHT");
-?>
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<HTML dir="<?php echo($TextDir); ?>">
-
-<HEAD>
-<TITLE><?php echo(L_HLP); ?></TITLE>
-<LINK REL="stylesheet" HREF="config/style.css.php3?<?php echo("Charset=${Charset}&medium=${FontSize}&FontName=${FontName}"); ?>" TYPE="text/css">
-<SCRIPT TYPE="text/javascript" LANGUAGE="javascript1.1">
-<!--
-function targetWin()
-{
-	if (window.opener.window.document.title == "<?php echo(APP_NAME); ?>")
-		return window.opener.frames['input'].window;
-	else if (window.opener.window.document.title == "Hidden Input frame")
-		return window.opener.window.parent.frames['input'].window;
-	else
-		return window.opener.window;
-}
-
-function smiley2Input(code)
-{
-	window.focus();
-	if (window.opener && !window.opener.closed)
-	{
-		addTo = targetWin();
-		if (addTo && !addTo.closed) addTo.document.forms['MsgForm'].elements['M'].value += code;
-	};
-}
-
-function cmd2Input(code,addstring)
-{
-	window.focus();
-	if (window.opener && !window.opener.closed)
-	{
-		addTo = targetWin();
-		if (addTo && !addTo.closed)
-		{
-			oldStr = (addstring ? addTo.document.forms['MsgForm'].elements['M'].value : "");
-			if (addstring && (oldStr == "" || oldStr.substring(0,1) != " "))
-				oldStr = " " + oldStr;
-			addTo.document.forms['MsgForm'].elements['M'].value = code + oldStr;
-		};
-	};
-}
-//-->
-</SCRIPT>
-</HEAD>
-
-<BODY CLASS="mainframe" onLoad="if (window.focus) window.focus();">
-<CENTER>
-
-<?php
-if (C_USE_SMILIES == "1")
-{
-	include("./lib/smilies.lib.php3");
-	$Nb = count($SmiliesTbl);
-	$ResultTbl = Array();
-	DisplaySmilies($ResultTbl,$SmiliesTbl,$Nb,"help");
-	unset($SmiliesTbl);
-	?>
-	<!-- Smilies codes -->
-	<TABLE BORDER=0 CELLPADDING=3 WIDTH=574 CLASS="table">
-	<TR>
-		<TH CLASS="tabtitle" COLSPAN=<?php echo($Nb); ?>><?php echo(L_HELP_TIT_1); ?></TH>
-	</TR>
-	<?php
-	$i = "0";
-	$Nb = count($ResultTbl);
-	while($i < $Nb)
-	{
-		if ($i > 0) echo("\t");
-		echo("<TR VALIGN=\"BOTTOM\">\n");
-		echo("$ResultTbl[$i]");
-		echo("\t</TR>\n\t<TR>\n");
-		$i++;
-		echo("$ResultTbl[$i]");
-		echo("\t</TR>\n");
-		$i++;
-	};
-	unset($ResultTbl);
-	?>
-	</TABLE>
-	<BR>
-	<?php
-};
-
-if (C_HTML_TAGS_KEEP != "none")
-{
-	?>
-	<!-- Text formatting help -->
-	<TABLE BORDER=0 CELLPADDING=3 WIDTH=574 CLASS="table">
-		<TR><TD ALIGN="CENTER" CLASS="tabtitle"><?php echo(L_HELP_TIT_2); ?></TD></TR>
-		<TR><TD ALIGN="<?php echo($CellAlign); ?>"><?php echo(L_HELP_FMT_1); ?></TD></TR>
-		<TR><TD ALIGN="<?php echo($CellAlign); ?>"><?php echo(L_HELP_FMT_2); ?></TD></TR>
-	</TABLE>
-	<BR>
-	<?php
-}
-?>
-
-<!-- Commands help -->
-<TABLE BORDER=0 CELLPADDING=3 WIDTH=574 CLASS="table">
-	<TR><TH ALIGN="CENTER" CLASS="tabtitle" COLSPAN=2><?php echo(L_HELP_TIT_3); ?></TH></TR>
-	<TR><TH ALIGN="CENTER" COLSPAN=2><?php echo(L_HELP_CMD_0); ?></TH></TR>
-	<TR><TH ALIGN="<?php echo($CellAlign); ?>" COLSPAN=2><A HREF="#" onClick="cmd2Input('/!',false); return false" CLASS="sender">/!</A></TH></TR>
-	<TR>
-		<TD WIDTH=10>&nbsp;</TD>
-		<TD><?php echo(L_HELP_CMD_7); ?></TD>
-	</TR>
-	<TR><TH ALIGN="<?php echo($CellAlign); ?>" COLSPAN=2><A HREF="#" onClick="cmd2Input('/ANNOUNCE',true); return false" CLASS="sender">/announce {<?php echo(L_HELP_MSG); ?>}<A></TH></TR>
-	<TR>
-		<TD WIDTH=10>&nbsp;</TD>
-		<TD><?php echo(L_HELP_CMD_17); ?></TD>
-	</TR>
-	<?php
-	if (C_BANISH != "0")
-	{
-		?>
-		<TR><TH ALIGN="<?php echo($CellAlign); ?>" COLSPAN=2><A HREF="#" onClick="cmd2Input('/BAN',true); return false" CLASS="sender">/ban <BDO dir="<?php echo($TextDir); ?>">[*]</BDO> {<?php echo(L_HELP_USR); ?>}<A></TH></TR>
-		<TR>
-			<TD WIDTH=10>&nbsp;</TD>
-			<TD><?php echo(L_HELP_CMD_19); ?></TD>
-		</TR>
-		<?php
-	};
-	// $Ver value is 'H' for dynamic rendering of the messages frame, 'L' or 'M' in other case
-	if ($Ver == "H")
-	{
-		?>
-		<TR><TH ALIGN="<?php echo($CellAlign); ?>" COLSPAN=2><A HREF="#" onClick="cmd2Input('/CLEAR',false); return false" CLASS="sender">/clear</A></TH></TR>
-		<TR>
-			<TD WIDTH=10>&nbsp;</TD>
-			<TD><?php echo(L_HELP_CMD_15); ?></TD>
-		</TR>
-		<?php
-	};
-	?>
-	<TR><TH ALIGN="<?php echo($CellAlign); ?>" COLSPAN=2><A HREF="#" onClick="cmd2Input('/IGNORE',true); return false" CLASS="sender">/ignore <BDO dir="<?php echo($TextDir); ?>">[-]</BDO> <?php echo("[".L_HELP_USR."[,".L_HELP_USR."...]]"); ?></A></TH></TR>
-	<TR>
-		<TD WIDTH=10>&nbsp;</TD>
-		<TD><?php echo(L_HELP_CMD_6); ?></TD>
-	</TR>
-	<TR><TH ALIGN="<?php echo($CellAlign); ?>" COLSPAN=2><A HREF="#" onClick="cmd2Input('/INVITE',true); return false" CLASS="sender">/invite {<?php echo(L_HELP_USR); ?>}</A></TH></TR>
-	<TR>
-		<TD WIDTH=10>&nbsp;</TD>
-		<TD><?php echo(L_HELP_CMD_18); ?></TD>
-	</TR>
-	<?php
-	if (C_VERSION > 0)
-	{
-		?>
-		<TR><TH ALIGN="<?php echo($CellAlign); ?>" COLSPAN=2><A HREF="#" onClick="cmd2Input('/JOIN',true); return false" CLASS="sender">/join <BDO dir="<?php echo($TextDir); ?>">[n]</BDO> {#<?php echo(L_HELP_ROOM); ?>}</A></TH></TR>
-		<TR>
-			<TD WIDTH=10>&nbsp;</TD>
-			<TD><?php echo(L_HELP_CMD_4); ?></TD>
-		</TR>
-		<?php
-	}
-	?>
-	<TR><TH ALIGN="<?php echo($CellAlign); ?>" COLSPAN=2><A HREF="#" onClick="cmd2Input('/KICK',true); return false" CLASS="sender">/kick {<?php echo(L_HELP_USR); ?>}</A></TH></TR>
-	<TR>
-		<TD WIDTH=10>&nbsp;</TD>
-		<TD><?php echo(L_HELP_CMD_9); ?></TD>
-	</TR>
-	<TR><TH ALIGN="<?php echo($CellAlign); ?>" COLSPAN=2><A HREF="#" onClick="cmd2Input('/ME',true); return false" CLASS="sender">/me <?php echo("{".L_HELP_MSG."}"); ?></A><BR></TH></TR>
-	<TR>
-		<TD WIDTH=10>&nbsp;</TD>
-		<TD><?php echo(L_HELP_CMD_20); ?></TD>
-	</TR>
-	<TR><TH ALIGN="<?php echo($CellAlign); ?>" COLSPAN=2>
-		<A HREF="#" onClick="cmd2Input('/MSG',true); return false" CLASS="sender">/msg <?php echo("{".L_HELP_USR."} {".L_HELP_MSG."}"); ?></A><BR>
-		<A HREF="#" onClick="cmd2Input('/TO',true); return false" CLASS="sender">/to <?php echo("{".L_HELP_USR."} {".L_HELP_MSG."}"); ?></A>
-	</TH></TR>
-	<TR>
-		<TD WIDTH=10>&nbsp;</TD>
-		<TD><?php echo(L_HELP_CMD_10); ?></TD>
-	</TR>
-	<TR><TH ALIGN="<?php echo($CellAlign); ?>" COLSPAN=2><A HREF="#" onClick="cmd2Input('/NOTIFY',false); return false" CLASS="sender">/notify</A></TH></TR>
-	<TR>
-		<TD WIDTH=10>&nbsp;</TD>
-		<TD><?php echo(L_HELP_CMD_13); ?></TD>
-	</TR>
-	<?php
-	if ($Ver != "H")
-	{
-		?>
-		<TR><TH ALIGN="<?php echo($CellAlign); ?>" COLSPAN=2><A HREF="#" onClick="cmd2Input('/ORDER',false); return false" CLASS="sender">/order</A></TH></TR>
-		<TR>
-			<TD WIDTH=10>&nbsp;</TD>
-			<TD><?php echo(L_HELP_CMD_3); ?></TD>
-		</TR>
-		<?php
-	}
-	?>
-	<TR><TH ALIGN="<?php echo($CellAlign); ?>" COLSPAN=2><A HREF="#" onClick="cmd2Input('/PROFILE',false); return false" CLASS="sender">/profile</A></TH></TR>
-	<TR>
-		<TD WIDTH=10>&nbsp;</TD>
-		<TD><?php echo(L_HELP_CMD_12); ?></TD>
-	</TR>
-	<TR><TH ALIGN="<?php echo($CellAlign); ?>" COLSPAN=2><A HREF="#" onClick="cmd2Input('/PROMOTE',true); return false" CLASS="sender">/promote {<?php echo(L_HELP_USR); ?>}</A></TH></TR>
-	<TR>
-		<TD WIDTH=10>&nbsp;</TD>
-		<TD><?php echo(L_HELP_CMD_14); ?></TD>
-	</TR>
-	<TR><TH ALIGN="<?php echo($CellAlign); ?>" COLSPAN=2>
-		<A HREF="#" onClick="cmd2Input('/QUIT',true); return false" CLASS="sender">/quit [<?php echo(L_HELP_MSG); ?>]</A><BR>
-		<A HREF="#" onClick="cmd2Input('/EXIT',true); return false" CLASS="sender">/exit [<?php echo(L_HELP_MSG); ?>]</A><BR>
-		<A HREF="#" onClick="cmd2Input('/BYE',true); return false" CLASS="sender">/bye [<?php echo(L_HELP_MSG); ?>]</A>
-	</TH></TR>
-	<TR>
-		<TD WIDTH=10>&nbsp;</TD>
-		<TD><?php echo(L_HELP_CMD_5); ?></TD>
-	</TR>
-	<TR><TH ALIGN="<?php echo($CellAlign); ?>" COLSPAN=2><A HREF="#" onClick="cmd2Input('/REFRESH',true); return false" CLASS="sender">/refresh <BDO dir="<?php echo($TextDir); ?>">[n]</BDO></A></TH></TR>
-	<TR>
-		<TD WIDTH=10>&nbsp;</TD>
-		<TD><?php echo(($Ver == "H" ? L_HELP_CMD_2b : L_HELP_CMD_2a)); ?></TD>
-	</TR>
-	<?php
-	if (C_SAVE != "0")
-	{
-		?>
-		<TR><TH ALIGN="<?php echo($CellAlign); ?>" COLSPAN=2><A HREF="#" onClick="cmd2Input('/SAVE',true); return false" CLASS="sender">/save <BDO dir="<?php echo($TextDir); ?>">[n]</BDO></A></TH></TR>
-		<TR>
-			<TD WIDTH=10>&nbsp;</TD>
-			<TD><?php echo(L_HELP_CMD_16); ?></TD>
-		</TR>
-		<?php
-	}
-	?>
-	<TR><TH ALIGN="<?php echo($CellAlign); ?>" COLSPAN=2>
-		<A HREF="#" onClick="cmd2Input('/SHOW',true); return false" CLASS="sender">/show <BDO dir="<?php echo($TextDir); ?>">[n]</BDO></A>
-		<?php
-		if ($Ver == "H")
-		{
-			?>
-			<BR><A HREF="#" onClick="cmd2Input('/LAST',true); return false" CLASS="sender">/last <BDO dir="<?php echo($TextDir); ?>">[n]</BDO></A>
-			<?php
-		};
-		?>
-	</TH></TR>
-	<TR>
-		<TD WIDTH=10>&nbsp;</TD>
-		<TD><?php echo(($Ver == "H") ? L_HELP_CMD_1b : L_HELP_CMD_1a); ?></TD>
-	</TR>
-	<TR><TH ALIGN="<?php echo($CellAlign); ?>" COLSPAN=2><A HREF="#" onClick="cmd2Input('/TIMESTAMP',false); return false" CLASS="sender">/timestamp</A></TH></TR>
-	<TR>
-		<TD WIDTH=10>&nbsp;</TD>
-		<TD><?php echo(L_HELP_CMD_8); ?></TD>
-	</TR>
-	<TR><TH ALIGN="<?php echo($CellAlign); ?>" COLSPAN=2><A HREF="#" onClick="cmd2Input('/WHOIS',true); return false" CLASS="sender">/whois {<?php echo(L_HELP_USR); ?>}</A></TH></TR>
-	<TR>
-		<TD WIDTH=10>&nbsp;</TD>
-		<TD><?php echo(L_HELP_CMD_11); ?></TD>
-	</TR>
-</TABLE>
-</CENTER>
-</BODY>
-
-</HTML>
\ No newline at end of file
diff -ruN 0.14.5/chat/ignore_popup.php 0.15.0/chat/ignore_popup.php
--- 0.14.5/chat/ignore_popup.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/ignore_popup.php	2004-04-01 03:06:24.000000000 -0600
@@ -0,0 +1,75 @@
+<?php
+// Get the names and values for vars sent by input.php
+if (isset($HTTP_GET_VARS))
+{
+	while(list($name,$value) = each($HTTP_GET_VARS))
+	{
+		$$name = $value;
+	};
+};
+
+// Fix a security hole
+if (isset($L) && !is_dir('./localization/'.$L)) exit();
+	
+require("./config/config.lib.php");
+require("./localization/".$L."/localized.chat.php");
+require("./lib/release.lib.php");
+
+header("Content-Type: text/html; charset=${Charset}");
+
+// For translations with an explicit charset (not the 'x-user-defined' one)
+if (!isset($FontName)) $FontName = "";
+?>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML dir="<?php echo(($Charset == "windows-1256") ? "RTL" : "LTR"); ?>">
+
+<HEAD>
+<TITLE><?php echo(L_IGNOR_TIT); ?></TITLE>
+<LINK REL="stylesheet" HREF="config/style.css.php?<?php echo("Charset=${Charset}&medium=${FontSize}&FontName=".urlencode($FontName)); ?>" TYPE="text/css">
+<SCRIPT TYPE="text/javascript" LANGUAGE="javascript1.1">
+<!--
+// Put the focus at the message box in the input frame
+function put_focus()
+{
+	var clean = (document.forms['IgnForm'].Refresh.value != 1);
+	with (window.opener)
+	{
+		if (clean) window.parent.is_ignored_popup = null;
+		focus();
+		if (document.forms['MsgForm']) document.forms['MsgForm'].elements['M'].focus();
+	}
+}
+// -->
+</SCRIPT>
+</HEAD>
+
+<BODY CLASS="frame" onUnload="if (window.opener && !window.opener.closed && document.forms['IgnForm'].elements['Exit'].value != 1) put_focus();">
+<CENTER>
+<?php
+if(isset($Ign))
+{
+	$Ignore = explode (",", $Ign);
+	for ($i = 0; $i < count($Ignore); $i++)
+	{
+		echo("-&nbsp;".urldecode($Ignore[$i])."<BR>");
+	}
+}
+else
+{
+	echo(L_IGNOR_NON);
+}
+?>
+</CENTER>
+
+<?php
+// The form bellow allows to check whether the popup unloads because ignored users list
+// has been modified, because the user reduced/closed it or because the user exit the
+// chat
+?>
+<FORM ACTION="nothing" METHOD="POST" AUTOCOMPLETE="OFF" NAME="IgnForm">
+	<INPUT TYPE="hidden" NAME="Refresh" VALUE="0">
+	<INPUT TYPE="hidden" NAME="Exit" VALUE="0">
+</FORM>
+</BODY>
+
+</HTML>
\ No newline at end of file
diff -ruN 0.14.5/chat/ignore_popup.php3 0.15.0/chat/ignore_popup.php3
--- 0.14.5/chat/ignore_popup.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/ignore_popup.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,75 +0,0 @@
-<?php
-// Get the names and values for vars sent by input.php3
-if (isset($HTTP_GET_VARS))
-{
-	while(list($name,$value) = each($HTTP_GET_VARS))
-	{
-		$$name = $value;
-	};
-};
-
-// Fix a security hole
-if (isset($L) && !is_dir('./localization/'.$L)) exit();
-	
-require("./config/config.lib.php3");
-require("./localization/".$L."/localized.chat.php3");
-require("./lib/release.lib.php3");
-
-header("Content-Type: text/html; charset=${Charset}");
-
-// For translations with an explicit charset (not the 'x-user-defined' one)
-if (!isset($FontName)) $FontName = "";
-?>
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<HTML dir="<?php echo(($Charset == "windows-1256") ? "RTL" : "LTR"); ?>">
-
-<HEAD>
-<TITLE><?php echo(L_IGNOR_TIT); ?></TITLE>
-<LINK REL="stylesheet" HREF="config/style.css.php3?<?php echo("Charset=${Charset}&medium=${FontSize}&FontName=${FontName}"); ?>" TYPE="text/css">
-<SCRIPT TYPE="text/javascript" LANGUAGE="javascript1.1">
-<!--
-// Put the focus at the message box in the input frame
-function put_focus()
-{
-	var clean = (document.forms['IgnForm'].Refresh.value != 1);
-	with (window.opener)
-	{
-		if (clean) window.parent.is_ignored_popup = null;
-		focus();
-		if (document.forms['MsgForm']) document.forms['MsgForm'].elements['M'].focus();
-	}
-}
-// -->
-</SCRIPT>
-</HEAD>
-
-<BODY CLASS="frame" onUnload="if (window.opener && !window.opener.closed && document.forms['IgnForm'].elements['Exit'].value != 1) put_focus();">
-<CENTER>
-<?php
-if(isset($Ign))
-{
-	$Ignore = explode (",", $Ign);
-	for ($i = 0; $i < count($Ignore); $i++)
-	{
-		echo("-&nbsp;".urldecode($Ignore[$i])."<BR>");
-	}
-}
-else
-{
-	echo(L_IGNOR_NON);
-}
-?>
-</CENTER>
-
-<?php
-// The form bellow allows to check whether the popup unloads because ignored users list
-// has been modified, because the user reduced/closed it or because the user exit the
-// chat
-?>
-<FORM ACTION="nothing" METHOD="POST" AUTOCOMPLETE="OFF" NAME="IgnForm">
-	<INPUT TYPE="hidden" NAME="Refresh" VALUE="0">
-	<INPUT TYPE="hidden" NAME="Exit" VALUE="0">
-</FORM>
-</BODY>
-
-</HTML>
\ No newline at end of file
diff -ruN 0.14.5/chat/index.php 0.15.0/chat/index.php
--- 0.14.5/chat/index.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/index.php	2004-04-01 03:06:24.000000000 -0600
@@ -0,0 +1,54 @@
+<?php
+// This is an example of what may be done to include phpMyChat into an
+// existing web page, regardless of its name.
+// You can also include such a file in a frameset.
+
+// Lines below must be at the top of your file because 'index.lib.php'
+// sets headers and cookies.
+$ChatPath = "";		// relative path to chat dir, empty value if this
+					// file is in the same dir than the chat;
+require("./${ChatPath}lib/index.lib.php");
+?>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML dir="<?php echo(($Charset == "windows-1256") ? "RTL" : "LTR"); ?>">
+
+<HEAD>
+<?php
+// You can put html head statements right after the "<HEAD>" tag.
+
+// Both values are boolean. See explanations in 'index.lib.php' file.
+send_headers(1,1);
+?>
+</HEAD>
+
+<BODY CLASS="ChatBody">
+<?php
+// If nothing other than phpMyChat is loaded in this page, or if you want
+// to have the same background color as phpMyChat for the whole page,
+// you have to modify the BODY tag to '<BODY CLASS="ChatBody">'
+// You can put html statements right after the "<BODY>" tag or add
+// php code here.
+
+$Is_Error = (isset($Error));
+
+if (isset($HTTP_COOKIE_VARS))
+{
+	if (isset($HTTP_COOKIE_VARS["CookieUsername"])) $CookieUsername = $HTTP_COOKIE_VARS["CookieUsername"];
+	if (isset($HTTP_COOKIE_VARS["CookieRoom"])) $CookieRoom = $HTTP_COOKIE_VARS["CookieRoom"];
+	if (isset($HTTP_COOKIE_VARS["CookieRoomType"])) $CookieRoomType = $HTTP_COOKIE_VARS["CookieRoomType"];
+};
+$Username = (isset($CookieUsername) ? $CookieUsername : "");
+$Room_name = (isset($CookieRoom) ? $CookieRoom : "");
+$Room_type = (isset($CookieRoomType) ? $CookieRoomType : "");
+
+layout($Is_Error,$Username,$Room_name,$Room_type);
+
+// You can add php code here, or add html statements before the "</BODY>" tag.
+?>
+</BODY>
+
+</HTML>
+<?php
+// The following line is required
+$DbLink->close();
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/index.php3 0.15.0/chat/index.php3
--- 0.14.5/chat/index.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/index.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,54 +0,0 @@
-<?php
-// This is an example of what may be done to include phpMyChat into an
-// existing web page, regardless of its name.
-// You can also include such a file in a frameset.
-
-// Lines below must be at the top of your file because 'index.lib.php3'
-// sets headers and cookies.
-$ChatPath = "";		// relative path to chat dir, empty value if this
-					// file is in the same dir than the chat;
-require("./${ChatPath}lib/index.lib.php3");
-?>
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<HTML dir="<?php echo(($Charset == "windows-1256") ? "RTL" : "LTR"); ?>">
-
-<HEAD>
-<?php
-// You can put html head statements right after the "<HEAD>" tag.
-
-// Both values are boolean. See explanations in 'index.lib.php3' file.
-send_headers(1,1);
-?>
-</HEAD>
-
-<BODY CLASS="ChatBody">
-<?php
-// If nothing other than phpMyChat is loaded in this page, or if you want
-// to have the same background color as phpMyChat for the whole page,
-// you have to modify the BODY tag to '<BODY CLASS="ChatBody">'
-// You can put html statements right after the "<BODY>" tag or add
-// php code here.
-
-$Is_Error = (isset($Error));
-
-if (isset($HTTP_COOKIE_VARS))
-{
-	if (isset($HTTP_COOKIE_VARS["CookieUsername"])) $CookieUsername = $HTTP_COOKIE_VARS["CookieUsername"];
-	if (isset($HTTP_COOKIE_VARS["CookieRoom"])) $CookieRoom = $HTTP_COOKIE_VARS["CookieRoom"];
-	if (isset($HTTP_COOKIE_VARS["CookieRoomType"])) $CookieRoomType = $HTTP_COOKIE_VARS["CookieRoomType"];
-};
-$Username = (isset($CookieUsername) ? $CookieUsername : "");
-$Room_name = (isset($CookieRoom) ? $CookieRoom : "");
-$Room_type = (isset($CookieRoomType) ? $CookieRoomType : "");
-
-layout($Is_Error,$Username,$Room_name,$Room_type);
-
-// You can add php code here, or add html statements before the "</BODY>" tag.
-?>
-</BODY>
-
-</HTML>
-<?php
-// The following line is required
-$DbLink->close();
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/input.php 0.15.0/chat/input.php
--- 0.14.5/chat/input.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/input.php	2004-04-01 03:06:25.000000000 -0600
@@ -0,0 +1,523 @@
+<?php
+// Get the names and values for vars sent by index.lib.php
+if (isset($HTTP_GET_VARS))
+{
+	while(list($name,$value) = each($HTTP_GET_VARS))
+	{
+		$$name = $value;
+	};
+};
+
+// Get the names and values for post vars
+if (isset($HTTP_POST_VARS))
+{
+	while(list($name,$value) = each($HTTP_POST_VARS))
+	{
+		$$name = $value;
+	};
+};
+
+// Fix some security issues
+if ((empty($From) || trim($From) == '')
+	|| (empty($U) || trim($U) == '')
+	|| (empty($R) || trim($R) == '')
+	|| (empty($Ver) || empty($L) || empty($N))
+	|| (!isset($T) || !isset($D) || !isset($O) || !isset($ST) || !isset($NT))
+	|| !is_dir('./localization/'.$L))
+{
+	exit();
+}
+	
+require("./config/config.lib.php");
+require("./localization/".$L."/localized.chat.php");
+require("./lib/release.lib.php");
+require("./lib/database/".C_DB_TYPE.".lib.php");
+require("./lib/clean.lib.php");
+
+header("Content-Type: text/html; charset=${Charset}");
+
+// avoid server configuration for magic quotes
+set_magic_quotes_runtime(0);
+
+$U = urldecode($U);
+$R = urldecode($R);
+
+// Translate to html special characters, and entities if message was sent with a latin 1 charset
+$Latin1 = ($Charset == "iso-8859-1");
+function special_char($str,$lang)
+{
+	return addslashes($lang ? htmlentities(stripslashes($str)) : htmlspecialchars(stripslashes($str)));
+};
+
+$DbLink = new DB;
+
+
+// ** Updates user info in connected users tables and fix some security issues **
+// Fixed a security issue thanks to SeazoN
+if (C_REQUIRE_REGISTER && (!isset($PWD_Hash) || $PWD_Hash == ''))
+{
+	exit(); // hack attack
+}
+else if (isset($PWD_Hash) && $PWD_Hash != '')
+{
+	$DbLink->query(	'SELECT ' . C_USR_TBL . '.room, ' . C_USR_TBL . '.status, ' . C_USR_TBL. '.ip'
+					. ' FROM ' . C_USR_TBL . ', ' . C_REG_TBL
+					. ' WHERE ' . C_USR_TBL . '.username = \'' . $U . '\''
+					.   ' AND ' . C_REG_TBL . '.username = \'' . $U . '\''
+					.   ' AND ' . C_REG_TBL . '.password = \'' . $PWD_Hash . '\''
+					. ' LIMIT 1');
+}
+else // C_REQUIRE_REGISTER == 0 && $PWD_Hash is empty
+{
+	$DbLink->query('SELECT username FROM ' . C_REG_TBL . ' WHERE username = \'' . $U . '\' LIMIT 1');
+	if ($DbLink->num_rows() == 0)
+	{
+		$DbLink->query('SELECT room, status, ip FROM ' . C_USR_TBL . ' WHERE username = \'' . $U . '\' LIMIT 1');
+	}
+	else
+	{
+		$DbLink->clean_results();
+		$DbLink->close();
+		exit(); // hack attack
+	}
+}
+// End of SeazoN Fix
+if ($DbLink->num_rows() != 0)
+{
+	list($room, $status, $knownIp) = $DbLink->next_record();
+	$DbLink->clean_results();
+	$kicked = 0;
+	// Security issue
+	include("./lib/get_IP.lib.php");
+	if ($knownIp != $IP)
+	{
+		$kicked = 5;
+	}
+	// Update users info
+	if ($room != stripslashes($R))	// Same nick in another room
+	{
+		$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ($T, '$R', 'SYS exit', '', ".time().", '', 'sprintf(L_EXIT_ROM, \"".special_char($U,$Latin1)."\")')");
+		$kicked = 3;
+	}
+	elseif ($status == "k")			// Kicked by a moderator or the admin.
+	{
+		$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ($T, '$R', 'SYS exit', '', ".time().", '', 'sprintf(L_KICKED, \"".special_char($U,$Latin1)."\")')");
+		$kicked = 1;
+	}
+	elseif ($status == "d")			// The admin just deleted the room
+	{
+		$kicked = 2;
+	}
+	elseif ($status == "b")			// Banished by a moderator or the admin.
+	{
+		$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ($T, '$R', 'SYS exit', '', ".time().", '', 'sprintf(L_BANISHED, \"".special_char($U,$Latin1)."\")')");
+		$kicked = 4;
+	};
+	if ($kicked > 0)
+	{
+		// Kick the user from the current room
+		$kickedUrl	= ($kicked < 5)
+					? "$From?L=$L&U=".urlencode(stripslashes($U))."&E=".urlencode(stripslashes($R))."&KICKED=$kicked"
+					: "$From?L=$L";
+		?>
+		<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript">
+		<!--
+		window.parent.window.location = '<?php echo($kickedUrl); ?>';
+		// -->
+		</SCRIPT>
+		<?php
+		$DbLink->close();
+		exit;
+	}
+}
+else
+{
+	$DbLink->clean_results();
+	// Fix a security issue
+	?>
+	<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript">
+	<!--
+	window.parent.window.location = '<?php echo("$From?L=$L"); ?>';
+	// -->
+	</SCRIPT>
+	<?php
+	$DbLink->close();
+	exit;
+};
+
+
+// ** Send formated messages to the message table **
+function AddMessage($M, $T, $R, $U, $C, $Private)
+{
+	global $DbLink;
+	global $Latin1;
+	global $status;
+
+	// Text formating tags
+	if(C_HTML_TAGS_KEEP == "none")
+	{
+		if(C_HTML_TAGS_SHOW == 0)
+		{
+			// eliminates every HTML like tags
+			$M = ereg_replace("<[^>]+>", "", $M);
+		}
+		else
+		{
+			// or keep it without effect
+			$M = str_replace("<", "&lt;", $M);
+			$M = str_replace(">", "&gt;", $M);
+		}
+	}
+	else
+	{
+		// then C_HTML_TAGS_KEEP == "simple", we keep U, B and I tags
+		$M = str_replace("<", "&lt;", $M);
+		$M = str_replace(">", "&gt;", $M);
+
+		if(function_exists("preg_match"))
+		{
+			while(preg_match("/&lt;([ubi]?)&gt;(.*?)&lt;(\/\\1)&gt;/i",$M))
+			{
+				$M = preg_replace("/&lt;([ubi]?)&gt;(.*?)&lt;(\/\\1)&gt;/i","<\\1>\\2<\\3>",$M);
+			}
+			if(C_HTML_TAGS_SHOW == 0)
+			{
+				$M = preg_replace("/&lt;\/?[ubi]?&gt;/i","",$M);
+			}
+		}
+	}
+
+	// URL
+	$M = eregi_replace('([[:space:]]|^)(www[.])', '\\1http://\\2', $M); // no prefix (www.myurl.ext)
+	$prefix = '(http|https|ftp|telnet|news|gopher|file|wais)://';
+	$pureUrl = '([[:alnum:]/\n+-=%&:_.~?]+[#[:alnum:]+]*)';
+	$M = eregi_replace($prefix . $pureUrl, '<a href="\\1://\\2" target="_blank">\\1://\\2</a>', $M);
+
+	// e-mail addresses
+	$M = eregi_replace('([0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-wyz][a-z](fo|g|l|m|mes|o|op|pa|ro|seum|t|u|v|z)?)', '<a href="mailto:\\1">\\1</a>', $M);
+
+	// Smilies
+	if (C_USE_SMILIES == 1)
+	{
+		include("./lib/smilies.lib.php");
+		Check4Smilies($M,$SmiliesTbl);
+		unset($SmiliesTbl);
+	};
+
+	// transform ISO-8859-1 special characters
+	if ($Latin1)
+	{
+		global $MsgTo;
+		ereg("(.*)(".$MsgTo."(&gt;)?)(.*)",$M,$Regs);
+		if ($MsgTo != "" && ($Regs[1] == "" && $Regs[4] == "")) $Regs[4] = $M;
+		if (!ereg("&[[:alnum:]]{1,10};",$Regs[1]) && !ereg("&[[:alnum:]]{1,10};",$Regs[4]))
+		{
+			for ($i = 1; $i <= 4; $i++)
+			{
+				if (($i != 1 && $i != 4) || $Regs[$i] == "") continue;
+				$part = $Regs[$i];
+				$part = htmlentities($part);
+				$part = str_replace("&lt;", "<", $part);
+				$part = str_replace("&gt;", ">", $part);
+				$part = str_replace("&amp;lt;", "&lt;", $part);
+				$part = str_replace("&amp;gt;", "&gt;", $part);
+				$part = str_replace("&quot;","\"", $part);
+				$part = ereg_replace("&amp;(#[[:digit:]]{2,5};)", "&\\1", $part);
+				$Regs[$i] = $part;
+			}
+			$M = $Regs[1].$Regs[2].$Regs[4];
+		}
+	}
+
+	if (isset($C) and $C != "")
+	{
+		// Red colors are reserved to the admin or a moderator for the current room
+		if ((ereg('#(FF0000|fc403f|fc4b34|fa582a|f66421|f27119|ec7e11|ec117f|f21971|f62164|fa2a58|fc344b)', $C))
+			&& !($status == "a" || $status == "m"))
+			$C = "#000000";
+		$M = "<FONT COLOR=\"".$C."\">".$M."</FONT>";
+	};
+
+	$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ($T, '$R', '".addslashes($U)."', '$Latin1', ".time().", '$Private', '".addslashes($M)."')");
+}
+
+
+// ** Define the default color that will be used for messages **
+if (isset($HTTP_COOKIE_VARS["CookieColor"])) $CookieColor = $HTTP_COOKIE_VARS["CookieColor"];
+if(!isset($C))
+{
+	if(!isset($CookieColor))
+	{
+		// set default color to black
+		$C = "#000000";
+	}
+	elseif (ereg('#(FF0000|fc403f|fc4b34|fa582a|f66421|f27119|ec7e11|ec117f|f21971|f62164|fa2a58|fc344b)', $CookieColor))
+	{
+		// Red colors are reserved to the admin or a moderator for the current room
+		if (!(isset($status) && ($status == "a" || $status == "m")))
+			$C = "#000000";
+	}
+	
+	if (!isset($C))
+	{
+		$C = $CookieColor;
+	}
+};
+setcookie("CookieColor", $C, time() + 60*60*24*365);        // cookie expires in one year
+
+
+// ** Test for online commands and swear words **
+$IsCommand = false;
+$RefreshMessages = false;
+$IsPopup = false;
+$IsM = false;
+
+if (isset($M) && trim($M) != "" && ereg("^\/", $M)) include("./lib/commands.lib.php");
+
+if (isset($M) && ereg("^\/", $M) && !($IsCommand) && !isset($Error)) $Error = L_BAD_CMD;
+
+if (isset($M) && trim($M) != "" && (!isset($M0) || ($M != $M0)) && !($IsCommand || isset($Error)))
+{
+	if (C_NO_SWEAR == 1)
+	{
+		include("./lib/swearing.lib.php");
+		$M = checkwords($M, false);
+	}
+	AddMessage(stripslashes($M), $T, $R, $U, $C, "");
+	$RefreshMessages = true;
+}
+
+$DbLink->close();
+
+// For translations with an explicit charset (not the 'x-user-defined' one)
+if (!isset($FontName)) $FontName = "";
+?>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML dir="<?php echo(($Charset == "windows-1256") ? "RTL" : "LTR"); ?>">
+
+<HEAD>
+<TITLE>Input frame</TITLE>
+<LINK REL="stylesheet" HREF="config/style.css.php?<?php echo("Charset=${Charset}&medium=${FontSize}&FontName=".urlencode($FontName)); ?>" TYPE="text/css">
+<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript1.2">
+<!--
+// Get the position for the help popup
+if (window.parent.NS4) document.captureEvents(Event.MOUSEDOWN);
+document.onmousedown = window.parent.displayLocation;
+// -->
+</SCRIPT>
+</HEAD>
+
+<BODY CLASS="frame" <?php if (!$IsPopup) echo("onLoad=\"if (window.focus) window.parent.get_focus();\""); ?>>
+<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0>
+<TR>
+
+	<!-- Input form  -->
+
+	<TD>
+	<?php
+	// Define the way posted values will be handled according to the javascript abilities
+	// of the browser
+	if ($Ver == "H")
+	{
+		$action = "handle_inputH.php";
+		$target = "input_sent";
+	}
+	else
+	{
+		$action = "input.php";
+		$target = "_self";
+	};
+	?>
+	<FORM NAME="MsgForm" ACTION="<?php echo($action); ?>" METHOD="POST" AUTOCOMPLETE="OFF" TARGET="<?php echo($target); ?>" onSubmit="return window.parent.validateSubmission();">
+		<INPUT TYPE="hidden" NAME="From" VALUE="<?php echo($From); ?>">
+		<INPUT TYPE="hidden" NAME="Ver" VALUE="<?php echo($Ver); ?>">
+		<INPUT TYPE="hidden" NAME="L" VALUE="<?php echo($L); ?>">
+		<INPUT TYPE="hidden" NAME="U" VALUE="<?php echo(htmlspecialchars(stripslashes(urlencode($U)))); ?>">
+		<INPUT TYPE="hidden" NAME="R" VALUE="<?php echo(htmlspecialchars(stripslashes(urlencode($R)))); ?>">
+		<INPUT TYPE="hidden" NAME="T" VALUE="<?php echo($T); ?>">
+		<INPUT TYPE="hidden" NAME="D" VALUE="<?php echo($D); ?>">
+		<INPUT TYPE="hidden" NAME="N" VALUE="<?php echo($N); ?>">
+		<INPUT TYPE="hidden" NAME="O" VALUE="<?php echo($O); ?>">
+		<INPUT TYPE="hidden" NAME="ST" VALUE="<?php echo($ST); ?>">
+		<INPUT TYPE="hidden" NAME="NT" VALUE="<?php echo($NT); ?>">
+		<INPUT TYPE="hidden" NAME="PWD_Hash" VALUE="<?php echo(isset($PWD_Hash) ? $PWD_Hash : ''); ?>">
+
+		<!-- Ignored users list -->
+		<INPUT TYPE="hidden" NAME="Ign" VALUE="<?php echo(isset($Ign) ? htmlspecialchars(stripslashes($Ign)) : ""); ?>">
+
+		<!-- Last sent message or command (will be used for the '/!' command) -->
+		<INPUT TYPE="hidden" NAME="M0" VALUE="<?php echo(isset($M) ? htmlspecialchars(stripslashes($M)) : ""); ?>">
+
+		<A HREF="help_popup.php?<?php echo("L=$L&Ver=$Ver"); ?>" onClick="window.parent.help_popup(); return false" TARGET="_blank" onmouseover="document.images['helpImg'].src = window.parent.imgHelpOn.src" onmouseout="document.images['helpImg'].src = window.parent.imgHelpOff.src"><IMG NAME="helpImg" SRC="images/helpOff.gif" WIDTH=15 HEIGHT=15 BORDER=0 ALT="<?php echo(L_HLP); ?>" onClick="document.forms['MsgForm'].elements['M'].focus();"></A>&nbsp;
+
+		<?php
+		// Get the value to put in the message box : preceding M0 field value for /! command,
+		// preceding entry if it was an erroneous command, else nothing; 
+		$ValM = $IsM ? $M0 : "";
+		if (isset($Error) && !($IsCommand)) $ValM = $M;
+		?>
+		<INPUT TYPE="text" NAME="M" SIZE="50" MAXLENGTH="299" VALUE="<?php echo(htmlspecialchars(stripslashes($ValM))); ?>">
+
+		<!-- Addressee that will be filled when the user click on a nick at the users frame -->
+		<INPUT TYPE="hidden" NAME="MsgTo" VALUE="">
+
+		<?php
+		if ($Ver == "L")
+		{
+			// Drop down list of colors for non-enabled JavaScript1.1+ browsers
+			echo("<SELECT NAME=\"C\">\n");
+			while(list($ColorName, $ColorCode) = each($TextColors))
+			{
+				// Red color is reserved to the admin or a moderator for the current room
+				if ($ColorCode == "#FF0000" && !(isset($status) && ($status == "a" || $status == "m"))) continue;
+				echo("<OPTION VALUE=\"".$ColorCode."\"");
+				if($C == $ColorCode || $ColorCode == "#000000") echo(" SELECTED");
+				echo(">".$ColorName."</OPTION>");
+			}
+			echo("\n</SELECT>&nbsp;\n");
+		}
+		else
+		{
+			?>
+			<INPUT TYPE="hidden" NAME="C" VALUE="<?php echo($C); ?>">
+			<?php
+		}
+		?>
+		<INPUT TYPE="hidden" NAME="sent" VALUE="0">
+		<INPUT TYPE="submit" NAME="sendForm" VALUE="<?php echo(L_OK); ?>">
+	</TD>
+
+	<?php
+	if ($Ver != "L")
+	{
+		// Define the colors picker for JavaScript1.1+ enabled browsers 
+		unset($TextColors);
+		$TextColors = array('#000000', '#ffffff');
+		for($x = 0; $x < 360; $x += 6)
+		{
+			$r = ceil(126 * (cos(deg2rad($x)) + 1));
+			$g = ceil(126 * (cos(deg2rad($x + 240)) + 1));
+			$b = ceil(126 * (cos(deg2rad($x + 120)) + 1));
+			if(!($r > 128 && $g < 128 && $b < 128 && !(isset($status) && ($status == "a" || $status == "m"))))
+			{
+				$TextColors[] = '#'.substr('0'.dechex($r), -2).substr('0'.dechex($g), -2).substr('0'.dechex($b), -2);
+			}
+		}
+		?>
+		<TD>&nbsp;&nbsp;</TD>
+		<TD>
+		<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0>
+		<TR>
+			<?php
+			while(list($key, $ColorCode) = each($TextColors))
+			{
+				$i = $key + 1;
+				if ($ColorCode == $C)
+				{
+					$wichImage = "selColor.gif";
+					$wichSelected = $i;
+				}
+				else
+				{
+					$wichImage = "unselColor.gif";
+				}
+				echo("\n\t\t\t");
+				echo('<td bgcolor="' . $ColorCode . '"><a href="#" onclick="window.parent.ChangeColor(\'' . $ColorCode . '\',\'C' . $i .'\'); return false;"><img src="images/' . $wichImage . '" alt="' . $ColorCode . '" name="C' . $i . '" border="0" width="2" height="20" /></a></td>');
+			};
+			unset($TextColors);
+			echo("\n");
+			?>
+		</TR>
+		</TABLE>
+		</TD>
+		<TD></FORM></TD>
+		<?php
+	}
+	?>
+</TR>
+</TABLE>
+
+<?php
+// ** Ensure a color is selected in the colors picker, else select the default one (black) **
+if ($Ver != "L")
+{
+	?>
+	<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript">
+	<!--
+	<?php
+	if (isset($wichSelected))
+	{
+		?>
+		window.parent.SelColor = "<?php echo("C${wichSelected}"); ?>";
+		<?php
+	}
+	else
+	{
+		?>
+		window.parent.ChangeColor("#000000","C1");
+		<?php
+	}
+	?>
+	// -->
+	</SCRIPT>
+	<?php
+};
+
+// ** Refresh the messages frame if necessary **
+if($RefreshMessages)
+{
+	$Tmp = isset($Ign) ? "&Ign=".urlencode(stripslashes($Ign)) : "";
+	$First = isset($First) ? $First : 0;
+	?>
+	<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript">
+	<!--
+	<?php
+	if ($Ver == "H")
+	{
+		if ($First) echo("window.parent.frames['messages'].window.document.close();\n\twindow.parent.connect = 0;\n");
+		?>
+		if (window.parent.connect == 0)
+		{
+			window.parent.refresh_query = "<?php echo("From=".urlencode($From)."&L=$L&U=".urlencode(stripslashes($U)).(isset($PWD_Hash) ? '&PWD_Hash=' . $PWD_Hash : '')."&R=".urlencode(stripslashes($R))."&T=$T&D=$D&N=$N&ST=$ST&NT=$NT".$Tmp."&First=$First"); ?>";
+			window.parent.force_refresh();
+		};
+		<?php
+	}
+	else
+	{
+		?>
+		window.parent.frames['messages'].window.location = 'messagesL.php?<?php echo("From=".urlencode($From)."&L=$L&U=".urlencode(stripslashes($U)).(isset($PWD_Hash) ? '&PWD_Hash=' . $PWD_Hash : '')."&R=".urlencode(stripslashes($R))."&T=$T&D=$D&N=$N&O=$O&ST=$ST&NT=$NT".$Tmp); ?>';
+		<?php
+	};
+	?>
+	// -->
+	</SCRIPT>
+	<?php
+};
+
+// ** Display a JavaScript alert box with the error message if necessary **
+if(isset($Error))
+{
+	?>
+	<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript">
+	<!--
+	document.forms['MsgForm'].elements['M'].select();
+	alert("<?php echo(str_replace("\\\\n","\\n",addslashes($Error))); ?>");
+	// -->
+	</SCRIPT>
+	<?php
+}
+
+// ** Put JavaScript instructions that commands may have set
+if (isset($jsTbl))
+{
+	for (reset($jsTbl); $jsInst=current($jsTbl); next($jsTbl))
+	{
+		echo("$jsInst\n");
+	};
+	unset($jsTbl);
+}
+?>
+</BODY>
+
+</HTML>
\ No newline at end of file
diff -ruN 0.14.5/chat/input.php3 0.15.0/chat/input.php3
--- 0.14.5/chat/input.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/input.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,495 +0,0 @@
-<?php
-// Get the names and values for vars sent by index.lib.php3
-if (isset($HTTP_GET_VARS))
-{
-	while(list($name,$value) = each($HTTP_GET_VARS))
-	{
-		$$name = $value;
-	};
-};
-
-// Get the names and values for post vars
-if (isset($HTTP_POST_VARS))
-{
-	while(list($name,$value) = each($HTTP_POST_VARS))
-	{
-		$$name = $value;
-	};
-};
-
-// Fix some security issues
-if ((empty($From) || trim($From) == '')
-	|| (empty($U) || trim($U) == '')
-	|| (empty($R) || trim($R) == '')
-	|| (empty($Ver) || empty($L) || empty($N))
-	|| (!isset($T) || !isset($D) || !isset($O) || !isset($ST) || !isset($NT))
-	|| !is_dir('./localization/'.$L))
-{
-	exit();
-}
-	
-require("./config/config.lib.php3");
-require("./localization/".$L."/localized.chat.php3");
-require("./lib/release.lib.php3");
-require("./lib/database/".C_DB_TYPE.".lib.php3");
-require("./lib/clean.lib.php3");
-
-header("Content-Type: text/html; charset=${Charset}");
-
-// avoid server configuration for magic quotes
-set_magic_quotes_runtime(0);
-
-$U = urldecode($U);
-$R = urldecode($R);
-
-// Translate to html special characters, and entities if message was sent with a latin 1 charset
-$Latin1 = ($Charset == "iso-8859-1");
-function special_char($str,$lang)
-{
-	return addslashes($lang ? htmlentities(stripslashes($str)) : htmlspecialchars(stripslashes($str)));
-};
-
-$DbLink = new DB;
-
-
-// ** Updates user info in connected users tables and fix some security issues **
-$DbLink->query("SELECT room, status, ip FROM ".C_USR_TBL." WHERE username = '$U' LIMIT 1");
-if ($DbLink->num_rows() != 0)
-{
-	list($room, $status, $knownIp) = $DbLink->next_record();
-	$DbLink->clean_results();
-	$kicked = 0;
-	// Security issue
-	include("./lib/get_IP.lib.php3");
-	if ($knownIp != $IP)
-	{
-		$kicked = 5;
-	}
-	// Update users info
-	if ($room != stripslashes($R))	// Same nick in another room
-	{
-		$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ($T, '$R', 'SYS exit', '', ".time().", '', 'sprintf(L_EXIT_ROM, \"".special_char($U,$Latin1)."\")')");
-		$kicked = 3;
-	}
-	elseif ($status == "k")			// Kicked by a moderator or the admin.
-	{
-		$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ($T, '$R', 'SYS exit', '', ".time().", '', 'sprintf(L_KICKED, \"".special_char($U,$Latin1)."\")')");
-		$kicked = 1;
-	}
-	elseif ($status == "d")			// The admin just deleted the room
-	{
-		$kicked = 2;
-	}
-	elseif ($status == "b")			// Banished by a moderator or the admin.
-	{
-		$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ($T, '$R', 'SYS exit', '', ".time().", '', 'sprintf(L_BANISHED, \"".special_char($U,$Latin1)."\")')");
-		$kicked = 4;
-	};
-	if ($kicked > 0)
-	{
-		// Kick the user from the current room
-		$kickedUrl	= ($kicked < 5)
-					? "$From?L=$L&U=".urlencode(stripslashes($U))."&E=".urlencode(stripslashes($R))."&KICKED=$kicked"
-					: "$From?L=$L";
-		?>
-		<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript">
-		<!--
-		window.parent.window.location = '<?php echo($kickedUrl); ?>';
-		// -->
-		</SCRIPT>
-		<?php
-		$DbLink->close();
-		exit;
-	}
-}
-else
-{
-	$DbLink->clean_results();
-	// Fix a security issue
-	?>
-	<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript">
-	<!--
-	window.parent.window.location = '<?php echo("$From?L=$L"); ?>';
-	// -->
-	</SCRIPT>
-	<?php
-	$DbLink->close();
-	exit;
-};
-
-
-// ** Send formated messages to the message table **
-function AddMessage($M, $T, $R, $U, $C, $Private)
-{
-	global $DbLink;
-	global $Latin1;
-	global $status;
-
-	// Text formating tags
-	if(C_HTML_TAGS_KEEP == "none")
-	{
-		if(C_HTML_TAGS_SHOW == 0)
-		{
-			// eliminates every HTML like tags
-			$M = ereg_replace("<[^>]+>", "", $M);
-		}
-		else
-		{
-			// or keep it without effect
-			$M = str_replace("<", "&lt;", $M);
-			$M = str_replace(">", "&gt;", $M);
-		}
-	}
-	else
-	{
-		// then C_HTML_TAGS_KEEP == "simple", we keep U, B and I tags
-		$M = str_replace("<", "&lt;", $M);
-		$M = str_replace(">", "&gt;", $M);
-
-		if(function_exists("preg_match"))
-		{
-			while(preg_match("/&lt;([ubi]?)&gt;(.*?)&lt;(\/\\1)&gt;/i",$M))
-			{
-				$M = preg_replace("/&lt;([ubi]?)&gt;(.*?)&lt;(\/\\1)&gt;/i","<\\1>\\2<\\3>",$M);
-			}
-			if(C_HTML_TAGS_SHOW == 0)
-			{
-				$M = preg_replace("/&lt;\/?[ubi]?&gt;/i","",$M);
-			}
-		}
-	}
-
-	// URL
-	$M = eregi_replace('([[:space:]]|^)(www)', '\\1http://\\2', $M); // no prefix (www.myurl.ext)
-	$prefix = '(http|https|ftp|telnet|news|gopher|file|wais)://';
-	$pureUrl = '([[:alnum:]/\n+-=%&:_.~?]+[#[:alnum:]+]*)';
-	$M = eregi_replace($prefix . $pureUrl, '<a href="\\1://\\2" target="_blank">\\1://\\2</a>', $M);
-
-	// e-mail addresses
-	$M = eregi_replace('([0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-wyz][a-z](fo|g|l|m|mes|o|op|pa|ro|seum|t|u|v|z)?)', '<a href="mailto:\\1">\\1</a>', $M);
-
-	// Smilies
-	if (C_USE_SMILIES == 1)
-	{
-		include("./lib/smilies.lib.php3");
-		Check4Smilies($M,$SmiliesTbl);
-		unset($SmiliesTbl);
-	};
-
-	// transform ISO-8859-1 special characters
-	if ($Latin1)
-	{
-		global $MsgTo;
-		ereg("(.*)(".$MsgTo."(&gt;)?)(.*)",$M,$Regs);
-		if ($MsgTo != "" && ($Regs[1] == "" && $Regs[4] == "")) $Regs[4] = $M;
-		if (!ereg("&[[:alnum:]]{1,10};",$Regs[1]) && !ereg("&[[:alnum:]]{1,10};",$Regs[4]))
-		{
-			for ($i = 1; $i <= 4; $i++)
-			{
-				if (($i != 1 && $i != 4) || $Regs[$i] == "") continue;
-				$part = $Regs[$i];
-				$part = htmlentities($part);
-				$part = str_replace("&lt;", "<", $part);
-				$part = str_replace("&gt;", ">", $part);
-				$part = str_replace("&amp;lt;", "&lt;", $part);
-				$part = str_replace("&amp;gt;", "&gt;", $part);
-				$part = str_replace("&quot;","\"", $part);
-				$part = ereg_replace("&amp;(#[[:digit:]]{2,5};)", "&\\1", $part);
-				$Regs[$i] = $part;
-			}
-			$M = $Regs[1].$Regs[2].$Regs[4];
-		}
-	}
-
-	if (isset($C) and $C != "")
-	{
-		// Red colors are reserved to the admin or a moderator for the current room
-		if ((ereg('#(FF0000|fc403f|fc4b34|fa582a|f66421|f27119|ec7e11|ec117f|f21971|f62164|fa2a58|fc344b)', $C))
-			&& !($status == "a" || $status == "m"))
-			$C = "#000000";
-		$M = "<FONT COLOR=\"".$C."\">".$M."</FONT>";
-	};
-
-	$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ($T, '$R', '".addslashes($U)."', '$Latin1', ".time().", '$Private', '".addslashes($M)."')");
-}
-
-
-// ** Define the default color that will be used for messages **
-if (isset($HTTP_COOKIE_VARS["CookieColor"])) $CookieColor = $HTTP_COOKIE_VARS["CookieColor"];
-if(!isset($C))
-{
-	if(!isset($CookieColor))
-	{
-		// set default color to black
-		$C = "#000000";
-	}
-	elseif (ereg('#(FF0000|fc403f|fc4b34|fa582a|f66421|f27119|ec7e11|ec117f|f21971|f62164|fa2a58|fc344b)', $CookieColor))
-	{
-		// Red colors are reserved to the admin or a moderator for the current room
-		if (!(isset($status) && ($status == "a" || $status == "m")))
-			$C = "#000000";
-	}
-	
-	if (!isset($C))
-	{
-		$C = $CookieColor;
-	}
-};
-setcookie("CookieColor", $C, time() + 60*60*24*365);        // cookie expires in one year
-
-
-// ** Test for online commands and swear words **
-$IsCommand = false;
-$RefreshMessages = false;
-$IsPopup = false;
-$IsM = false;
-
-if (isset($M) && trim($M) != "" && ereg("^\/", $M)) include("./lib/commands.lib.php3");
-
-if (isset($M) && ereg("^\/", $M) && !($IsCommand) && !isset($Error)) $Error = L_BAD_CMD;
-
-if (isset($M) && trim($M) != "" && (!isset($M0) || ($M != $M0)) && !($IsCommand || isset($Error)))
-{
-	if (C_NO_SWEAR == 1)
-	{
-		include("./lib/swearing.lib.php3");
-		$M = checkwords($M, false);
-	}
-	AddMessage(stripslashes($M), $T, $R, $U, $C, "");
-	$RefreshMessages = true;
-}
-
-$DbLink->close();
-
-// For translations with an explicit charset (not the 'x-user-defined' one)
-if (!isset($FontName)) $FontName = "";
-?>
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<HTML dir="<?php echo(($Charset == "windows-1256") ? "RTL" : "LTR"); ?>">
-
-<HEAD>
-<TITLE>Input frame</TITLE>
-<LINK REL="stylesheet" HREF="config/style.css.php3?<?php echo("Charset=${Charset}&medium=${FontSize}&FontName=${FontName}"); ?>" TYPE="text/css">
-<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript1.2">
-<!--
-// Get the position for the help popup
-if (window.parent.NS4) document.captureEvents(Event.MOUSEDOWN);
-document.onmousedown = window.parent.displayLocation;
-// -->
-</SCRIPT>
-</HEAD>
-
-<BODY CLASS="frame" <?php if (!$IsPopup) echo("onLoad=\"if (window.focus) window.parent.get_focus();\""); ?>>
-<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0>
-<TR>
-
-	<!-- Input form  -->
-
-	<TD>
-	<?php
-	// Define the way posted values will be handled according to the javascript abilities
-	// of the browser
-	if ($Ver == "H")
-	{
-		$action = "handle_inputH.php3";
-		$target = "input_sent";
-	}
-	else
-	{
-		$action = "input.php3";
-		$target = "_self";
-	};
-	?>
-	<FORM NAME="MsgForm" ACTION="<?php echo($action); ?>" METHOD="POST" AUTOCOMPLETE="OFF" TARGET="<?php echo($target); ?>" onSubmit="return window.parent.validateSubmission();">
-		<INPUT TYPE="hidden" NAME="From" VALUE="<?php echo($From); ?>">
-		<INPUT TYPE="hidden" NAME="Ver" VALUE="<?php echo($Ver); ?>">
-		<INPUT TYPE="hidden" NAME="L" VALUE="<?php echo($L); ?>">
-		<INPUT TYPE="hidden" NAME="U" VALUE="<?php echo(htmlspecialchars(stripslashes(urlencode($U)))); ?>">
-		<INPUT TYPE="hidden" NAME="R" VALUE="<?php echo(htmlspecialchars(stripslashes(urlencode($R)))); ?>">
-		<INPUT TYPE="hidden" NAME="T" VALUE="<?php echo($T); ?>">
-		<INPUT TYPE="hidden" NAME="D" VALUE="<?php echo($D); ?>">
-		<INPUT TYPE="hidden" NAME="N" VALUE="<?php echo($N); ?>">
-		<INPUT TYPE="hidden" NAME="O" VALUE="<?php echo($O); ?>">
-		<INPUT TYPE="hidden" NAME="ST" VALUE="<?php echo($ST); ?>">
-		<INPUT TYPE="hidden" NAME="NT" VALUE="<?php echo($NT); ?>">
-		<INPUT TYPE="hidden" NAME="PWD_Hash" VALUE="<?php echo(isset($PWD_Hash) ? $PWD_Hash : ''); ?>">
-
-		<!-- Ignored users list -->
-		<INPUT TYPE="hidden" NAME="Ign" VALUE="<?php echo(isset($Ign) ? htmlspecialchars(stripslashes($Ign)) : ""); ?>">
-
-		<!-- Last sent message or command (will be used for the '/!' command) -->
-		<INPUT TYPE="hidden" NAME="M0" VALUE="<?php echo(isset($M) ? htmlspecialchars(stripslashes($M)) : ""); ?>">
-
-		<A HREF="help_popup.php3?<?php echo("L=$L&Ver=$Ver"); ?>" onClick="window.parent.help_popup(); return false" TARGET="_blank" onmouseover="document.images['helpImg'].src = window.parent.imgHelpOn.src" onmouseout="document.images['helpImg'].src = window.parent.imgHelpOff.src"><IMG NAME="helpImg" SRC="images/helpOff.gif" WIDTH=15 HEIGHT=15 BORDER=0 ALT="<?php echo(L_HLP); ?>" onClick="document.forms['MsgForm'].elements['M'].focus();"></A>&nbsp;
-
-		<?php
-		// Get the value to put in the message box : preceding M0 field value for /! command,
-		// preceding entry if it was an erroneous command, else nothing; 
-		$ValM = $IsM ? $M0 : "";
-		if (isset($Error) && !($IsCommand)) $ValM = $M;
-		?>
-		<INPUT TYPE="text" NAME="M" SIZE="50" MAXLENGTH="299" VALUE="<?php echo(htmlspecialchars(stripslashes($ValM))); ?>">
-
-		<!-- Addressee that will be filled when the user click on a nick at the users frame -->
-		<INPUT TYPE="hidden" NAME="MsgTo" VALUE="">
-
-		<?php
-		if ($Ver == "L")
-		{
-			// Drop down list of colors for non-enabled JavaScript1.1+ browsers
-			echo("<SELECT NAME=\"C\">\n");
-			while(list($ColorName, $ColorCode) = each($TextColors))
-			{
-				// Red color is reserved to the admin or a moderator for the current room
-				if ($ColorCode == "#FF0000" && !(isset($status) && ($status == "a" || $status == "m"))) continue;
-				echo("<OPTION VALUE=\"".$ColorCode."\"");
-				if($C == $ColorCode || $ColorCode == "#000000") echo(" SELECTED");
-				echo(">".$ColorName."</OPTION>");
-			}
-			echo("\n</SELECT>&nbsp;\n");
-		}
-		else
-		{
-			?>
-			<INPUT TYPE="hidden" NAME="C" VALUE="<?php echo($C); ?>">
-			<?php
-		}
-		?>
-		<INPUT TYPE="hidden" NAME="sent" VALUE="0">
-		<INPUT TYPE="submit" NAME="sendForm" VALUE="<?php echo(L_OK); ?>">
-	</TD>
-
-	<?php
-	if ($Ver != "L")
-	{
-		// Define the colors picker for JavaScript1.1+ enabled browsers 
-		unset($TextColors);
-		$TextColors = array('#000000', '#ffffff');
-		for($x = 0; $x < 360; $x += 6)
-		{
-			$r = ceil(126 * (cos(deg2rad($x)) + 1));
-			$g = ceil(126 * (cos(deg2rad($x + 240)) + 1));
-			$b = ceil(126 * (cos(deg2rad($x + 120)) + 1));
-			if(!($r > 128 && $g < 128 && $b < 128 && !(isset($status) && ($status == "a" || $status == "m"))))
-			{
-				$TextColors[] = '#'.substr('0'.dechex($r), -2).substr('0'.dechex($g), -2).substr('0'.dechex($b), -2);
-			}
-		}
-		?>
-		<TD>&nbsp;&nbsp;</TD>
-		<TD>
-		<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0>
-		<TR>
-			<?php
-			while(list($key, $ColorCode) = each($TextColors))
-			{
-				$i = $key + 1;
-				if ($ColorCode == $C)
-				{
-					$wichImage = "selColor.gif";
-					$wichSelected = $i;
-				}
-				else
-				{
-					$wichImage = "unselColor.gif";
-				}
-				echo("\n\t\t\t");
-				echo('<td bgcolor="' . $ColorCode . '"><a href="#" onclick="window.parent.ChangeColor(\'' . $ColorCode . '\',\'C' . $i .'\'); return false;"><img src="images/' . $wichImage . '" alt="' . $ColorCode . '" name="C' . $i . '" border="0" width="2" height="20" /></a></td>');
-			};
-			unset($TextColors);
-			echo("\n");
-			?>
-		</TR>
-		</TABLE>
-		</TD>
-		<TD></FORM></TD>
-		<?php
-	}
-	?>
-</TR>
-</TABLE>
-
-<?php
-// ** Ensure a color is selected in the colors picker, else select the default one (black) **
-if ($Ver != "L")
-{
-	?>
-	<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript">
-	<!--
-	<?php
-	if (isset($wichSelected))
-	{
-		?>
-		window.parent.SelColor = "<?php echo("C${wichSelected}"); ?>";
-		<?php
-	}
-	else
-	{
-		?>
-		window.parent.ChangeColor("#000000","C1");
-		<?php
-	}
-	?>
-	// -->
-	</SCRIPT>
-	<?php
-};
-
-// ** Refresh the messages frame if necessary **
-if($RefreshMessages)
-{
-	$Tmp = isset($Ign) ? "&Ign=".urlencode(stripslashes($Ign)) : "";
-	$First = isset($First) ? $First : 0;
-	?>
-	<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript">
-	<!--
-	<?php
-	if ($Ver == "H")
-	{
-		if ($First) echo("window.parent.frames['messages'].window.document.close();\n\twindow.parent.connect = 0;\n");
-		?>
-		if (window.parent.connect == 0)
-		{
-			window.parent.refresh_query = "<?php echo("From=".urlencode($From)."&L=$L&U=".urlencode(stripslashes($U))."&R=".urlencode(stripslashes($R))."&T=$T&D=$D&N=$N&ST=$ST&NT=$NT".$Tmp."&First=$First"); ?>";
-			window.parent.force_refresh();
-		};
-		<?php
-	}
-	else
-	{
-		?>
-		window.parent.frames['messages'].window.location = 'messagesL.php3?<?php echo("From=".urlencode($From)."&L=$L&U=".urlencode(stripslashes($U))."&R=".urlencode(stripslashes($R))."&T=$T&D=$D&N=$N&O=$O&ST=$ST&NT=$NT".$Tmp); ?>';
-		<?php
-	};
-	?>
-	// -->
-	</SCRIPT>
-	<?php
-};
-
-// ** Display a JavaScript alert box with the error message if necessary **
-if(isset($Error))
-{
-	?>
-	<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript">
-	<!--
-	document.forms['MsgForm'].elements['M'].select();
-	alert("<?php echo(str_replace("\\\\n","\\n",addslashes($Error))); ?>");
-	// -->
-	</SCRIPT>
-	<?php
-}
-
-// ** Put JavaScript instructions that commands may have set
-if (isset($jsTbl))
-{
-	for (reset($jsTbl); $jsInst=current($jsTbl); next($jsTbl))
-	{
-		echo("$jsInst\n");
-	};
-	unset($jsTbl);
-}
-?>
-</BODY>
-
-</HTML>
\ No newline at end of file
diff -ruN 0.14.5/chat/install/database/mysql.dump.php 0.15.0/chat/install/database/mysql.dump.php
--- 0.14.5/chat/install/database/mysql.dump.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/install/database/mysql.dump.php	2004-04-01 03:06:31.000000000 -0600
@@ -0,0 +1,132 @@
+<?php
+
+// ----- TABLES CREATION -----
+
+$Create_Tab[0] = "
+CREATE TABLE ${C_MSG_TBL} (
+   type tinyint(1) DEFAULT '0' NOT NULL,
+   room varchar(30) NOT NULL,
+   username varchar(30) NOT NULL,
+   latin1 tinyint(1) DEFAULT '0' NOT NULL,
+   m_time int(11) DEFAULT '0' NOT NULL,
+   address varchar(30) NOT NULL,
+   message text NOT NULL
+)
+";
+
+$Create_Tab[1] = "
+CREATE TABLE ${C_USR_TBL} (
+   room varchar(30) NOT NULL,
+   username varchar(30) NOT NULL,
+   latin1 tinyint(1) DEFAULT '0' NOT NULL,
+   u_time int(11) DEFAULT '0' NOT NULL,
+   status varchar(1) NOT NULL,
+   ip varchar(16) NOT NULL,
+   UNIQUE room (room, username)
+)
+";
+
+$Create_Tab[2] = "
+CREATE TABLE ${C_REG_TBL} (
+   username varchar(30) NOT NULL,
+   latin1 tinyint(1) DEFAULT '0' NOT NULL,
+   password varchar(32) NOT NULL,
+   firstname varchar(64) NOT NULL,
+   lastname varchar(64) NOT NULL,
+   country varchar(64) NOT NULL,
+   website varchar(64) NOT NULL,
+   email varchar(64) NOT NULL,
+   showemail tinyint(1) NOT NULL,
+   perms varchar(9) NOT NULL,
+   rooms varchar(128) NOT NULL,
+   reg_time int(11) DEFAULT '0' NOT NULL,
+   ip varchar(16) NOT NULL,
+   gender tinyint(1) DEFAULT '0' NOT NULL
+)
+";
+
+$Create_Tab[3] = "
+CREATE TABLE ${C_BAN_TBL} (
+   username varchar(30) NOT NULL,
+   latin1 tinyint(1) DEFAULT '0' NOT NULL,
+   ip varchar(16) NOT NULL,
+   rooms varchar(100) NOT NULL,
+   ban_until int(11) DEFAULT '0' NOT NULL
+)
+";
+
+
+// ----- TABLES UPDATES FROM OLDER VERSION THAN 0.13.? -----
+
+// Message table
+$Upd1_Tab[0] = "
+ALTER TABLE ${C_MSG_TBL}
+  CHANGE type type tinyint(1) DEFAULT '0' NOT NULL,
+  CHANGE latin1 latin1 tinyint(1) DEFAULT '0' NOT NULL
+";
+
+// Users table
+$Upd1_Tab[1] = "
+ALTER TABLE ${C_USR_TBL}
+  CHANGE latin1 latin1 tinyint(1) DEFAULT '0' NOT NULL,
+  ADD status varchar(1) NOT NULL,
+  ADD ip varchar(16) NOT NULL
+";
+
+// Registred users table
+$Upd1_Tab[2] = "
+ALTER TABLE ${C_REG_TBL}
+  CHANGE latin1 latin1 tinyint(1) DEFAULT '0' NOT NULL,
+  CHANGE showemail showemail tinyint(1) NOT NULL,
+  CHANGE perms perms varchar(9) NOT NULL,
+  ADD reg_time int(11) DEFAULT '0' NOT NULL,
+  ADD ip varchar(16) NOT NULL,
+  ADD gender tinyint(1) DEFAULT '0' NOT NULL
+";
+$Upd1_Tab[3] = "
+UPDATE ${C_REG_TBL} SET reg_time =".time()." 
+";
+
+// Banished users table
+$Upd1_Tab[4] = "
+CREATE TABLE ${C_BAN_TBL} (
+   username varchar(30) NOT NULL,
+   latin1 tinyint(1) DEFAULT '0' NOT NULL,
+   ip varchar(16) NOT NULL,
+   rooms varchar(100) NOT NULL,
+   ban_until int(11) DEFAULT '0' NOT NULL
+)
+";
+
+
+// ----- TABLES UPDATES FROM VERSION 0.13.? -----
+
+// Users table
+$Upd2_Tab[1] = "
+ALTER TABLE ${C_USR_TBL}
+  ADD ip varchar(16) NOT NULL
+";
+
+// Registred users table
+$Upd2_Tab[2] = "
+ALTER TABLE ${C_REG_TBL}
+  ADD ip varchar(16) NOT NULL,
+  ADD gender tinyint(1) DEFAULT '0' NOT NULL
+";
+
+// Banished users table
+$Upd2_Tab[3] = "
+CREATE TABLE ${C_BAN_TBL} (
+   username varchar(30) NOT NULL,
+   latin1 tinyint(1) DEFAULT '0' NOT NULL,
+   ip varchar(16) NOT NULL,
+   rooms varchar(100) NOT NULL,
+   ban_until int(11) DEFAULT '0' NOT NULL
+)
+";
+
+
+// ----- PROFILE FOR ADMIN CREATION -----
+
+$Create_Adm = "INSERT INTO ${C_REG_TBL} VALUES ('${ADM_LOG}', '', '${admin_pwd}', '${ADM_FNAME}', '${ADM_LNAME}', '${ADM_LANG}', '${ADM_WEB}', '${ADM_EMAIL}', '${SHOWEMAIL}', 'admin', '', ".time().", '${IP}', '${ADM_GENDER}')";
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/install/database/mysql.sql 0.15.0/chat/install/database/mysql.sql
--- 0.14.5/chat/install/database/mysql.sql	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/install/database/mysql.sql	2004-04-01 03:06:31.000000000 -0600
@@ -0,0 +1,51 @@
+DROP TABLE IF EXISTS c_messages;
+CREATE TABLE c_messages (
+   type tinyint(1) DEFAULT '0' NOT NULL,
+   room varchar(30) NOT NULL,
+   username varchar(30) NOT NULL,
+   latin1 tinyint(1) DEFAULT '0' NOT NULL,
+   m_time int(11) DEFAULT '0' NOT NULL,
+   address varchar(30) NOT NULL,
+   message text NOT NULL
+);
+
+
+DROP TABLE IF EXISTS c_users;
+CREATE TABLE c_users (
+   room varchar(30) NOT NULL,
+   username varchar(30) NOT NULL,
+   latin1 tinyint(1) DEFAULT '0' NOT NULL,
+   u_time int(11) DEFAULT '0' NOT NULL,
+   status varchar(1) NOT NULL,
+   ip varchar(16) NOT NULL,
+   UNIQUE room (room, username)
+);
+
+
+DROP TABLE IF EXISTS c_reg_users;
+CREATE TABLE c_reg_users (
+   username varchar(30) NOT NULL,
+   latin1 tinyint(1) DEFAULT '0' NOT NULL,
+   password varchar(32) NOT NULL,
+   firstname varchar(64) NOT NULL,
+   lastname varchar(64) NOT NULL,
+   country varchar(64) NOT NULL,
+   website varchar(64) NOT NULL,
+   email varchar(64) NOT NULL,
+   showemail tinyint(1) NOT NULL,
+   perms varchar(9) NOT NULL,
+   rooms varchar(128) NOT NULL,
+   reg_time int(11) DEFAULT '0' NOT NULL,
+   ip varchar(16) NOT NULL,
+   gender tinyint(1) DEFAULT '0' NOT NULL
+);
+INSERT INTO c_reg_users VALUES('admin', '', '21232f297a57a5a743894a0e4a801fc3', '', '', '', '', '', 0, 'admin', '', '', '', '');
+
+DROP TABLE IF EXISTS c_ban_users;
+CREATE TABLE c_ban_users (
+   username varchar(30) NOT NULL,
+   latin1 tinyint(1) DEFAULT '0' NOT NULL,
+   ip varchar(16) NOT NULL,
+   rooms varchar(100) NOT NULL,
+   ban_until int(11) DEFAULT '0' NOT NULL
+);
\ No newline at end of file
diff -ruN 0.14.5/chat/install/database/pgsql.dump.php 0.15.0/chat/install/database/pgsql.dump.php
--- 0.14.5/chat/install/database/pgsql.dump.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/install/database/pgsql.dump.php	2004-04-01 03:06:31.000000000 -0600
@@ -0,0 +1,145 @@
+<?php
+function pgsql_cleanstr($str) {
+    $str = str_replace("\r", "", $str);
+    $str = str_replace("\n", " ", $str);
+    return $str;
+}
+
+
+// ----- TABLES CREATION -----
+
+$Create_Tab[0] = pgsql_cleanstr("
+CREATE TABLE ${C_MSG_TBL} (
+   type int2 DEFAULT '0' NOT NULL,
+   room varchar(30) NOT NULL,
+   username varchar(30) NOT NULL,
+   latin1 int2 DEFAULT '0' NOT NULL,
+   m_time int4 DEFAULT '0' NOT NULL,
+   address varchar(30) NOT NULL,
+   message text NOT NULL
+)"
+);
+
+$Create_Tab[1] = pgsql_cleanstr("
+CREATE TABLE ${C_USR_TBL} (
+   room varchar(30) NOT NULL,
+   username varchar(30) NOT NULL,
+   latin1 int2 DEFAULT '0' NOT NULL,
+   u_time int4 DEFAULT '0' NOT NULL,
+   status varchar(1) NOT NULL,
+   ip varchar(16) NOT NULL
+)"
+);
+
+$Create_Tab[2] = pgsql_cleanstr("
+CREATE TABLE ${C_REG_TBL} (
+   username varchar(30) NOT NULL UNIQUE,
+   latin1 int2 DEFAULT '0' NOT NULL,
+   password varchar(32) NOT NULL,
+   firstname varchar(64) NOT NULL,
+   lastname varchar(64) NOT NULL,
+   country varchar(64) NOT NULL,
+   website varchar(64) NOT NULL,
+   email varchar(64) NOT NULL,
+   showemail int2 NOT NULL,
+   perms varchar(9) NOT NULL,
+   rooms varchar(128) NOT NULL,
+   reg_time int4 DEFAULT '0' NOT NULL,
+   ip varchar(16) NOT NULL,
+   gender int2 DEFAULT '0' NOT NULL
+)"
+);
+
+$Create_Tab[3] = pgsql_cleanstr("
+CREATE TABLE ${C_BAN_TBL} (
+   username varchar(30) NOT NULL,
+   latin1 int2 DEFAULT '0' NOT NULL,
+   ip varchar(16) NOT NULL,
+   rooms varchar(100) NOT NULL,
+   ban_until int4 DEFAULT '0' NOT NULL
+)"
+);
+
+
+// ----- TABLES UPDATES FROM OLDER VERSION THAN 0.13.? -----
+
+// Message table
+
+$Upd1_Tab[] = pgsql_cleanstr("SELECT type::int2 AS \"type\", room, username, latin1::int2 AS \"latin1\", m_time, address, message INTO __phpmychat_tmp FROM ${C_MSG_TBL}
+");
+$Upd1_Tab[] = pgsql_cleanstr("DROP TABLE ${C_MSG_TBL}
+");
+$Upd1_Tab[] = pgsql_cleanstr("ALTER TABLE __phpmychat_tmp RENAME TO ${C_MSG_TBL}");
+
+// Users table
+
+$Upd1_Tab[] = pgsql_cleanstr("SELECT room, username, latin1::int2 AS \"latin1\", u_time INTO __phpmychat_tmp FROM ${C_USR_TBL}
+");
+$Upd1_Tab[] = pgsql_cleanstr("ALTER TABLE __phpmychat_tmp ADD status varchar(1) NOT NULL");
+$Upd1_Tab[] = pgsql_cleanstr("ALTER TABLE __phpmychat_tmp ADD ip varchar(16) NOT NULL");
+$Upd1_Tab[] = pgsql_cleanstr("DROP TABLE ${C_USR_TBL}
+");
+$Upd1_Tab[] = pgsql_cleanstr("ALTER TABLE __phpmychat_tmp RENAME TO ${C_USR_TBL}");
+
+// Registered users table
+
+$Upd1_Tab[] = pgsql_cleanstr("SELECT username, latin1::int2 AS \"latin1\", password, firstname, lastname, country, website, email, showemail::int2 AS \"showemail\", perms, rooms INTO __phpmychat_tmp FROM ${C_REG_TBL}
+");
+$Upd1_Tab[] = pgsql_cleanstr("ALTER TABLE __phpmychat_tmp ADD reg_time int4 DEFAULT '0' NOT NULL");
+$Upd1_Tab[] = pgsql_cleanstr("ALTER TABLE __phpmychat_tmp ADD ip varchar(16) NOT NULL");
+$Upd1_Tab[] = pgsql_cleanstr("ALTER TABLE __phpmychat_tmp ADD gender tinyint(1) DEFAULT '0' NOT NULL");
+$Upd1_Tab[] = pgsql_cleanstr("DROP TABLE ${C_REG_TBL}
+");
+$Upd1_Tab[] = pgsql_cleanstr("ALTER TABLE __phpmychat_tmp RENAME TO ${C_REG_TBL}");
+
+// Banished users table
+
+$Upd1_Tab[] = pgsql_cleanstr("
+CREATE TABLE ${C_BAN_TBL} (
+   username varchar(30) NOT NULL,
+   latin1 int2 DEFAULT '0' NOT NULL,
+   ip varchar(16) NOT NULL,
+   rooms varchar(100) NOT NULL,
+   ban_until int4 DEFAULT '0' NOT NULL
+)"
+);
+
+
+// ----- TABLES UPDATES FROM VERSIONS 0.13.? -----
+
+// Users table
+
+$Upd2_Tab[] = pgsql_cleanstr("SELECT * INTO __phpmychat_tmp FROM ${C_USR_TBL}
+");
+$Upd2_Tab[] = pgsql_cleanstr("ALTER TABLE __phpmychat_tmp ADD ip varchar(16) NOT NULL");
+$Upd2_Tab[] = pgsql_cleanstr("DROP TABLE ${C_USR_TBL}
+");
+$Upd2_Tab[] = pgsql_cleanstr("ALTER TABLE __phpmychat_tmp RENAME TO ${C_USR_TBL}");
+
+// Registered users table
+
+$Upd2_Tab[] = pgsql_cleanstr("SELECT * INTO __phpmychat_tmp FROM ${C_REG_TBL}
+");
+$Upd2_Tab[] = pgsql_cleanstr("ALTER TABLE __phpmychat_tmp ADD ip varchar(16) NOT NULL AFTER password");
+$Upd2_Tab[] = pgsql_cleanstr("ALTER TABLE __phpmychat_tmp ADD gender tinyint(1) DEFAULT '0' NOT NULL");
+$Upd2_Tab[] = pgsql_cleanstr("DROP TABLE ${C_REG_TBL}
+");
+$Upd2_Tab[] = pgsql_cleanstr("ALTER TABLE __phpmychat_tmp RENAME TO ${C_REG_TBL}");
+
+// Banished users table
+
+$Upd2_Tab[] = pgsql_cleanstr("
+CREATE TABLE ${C_BAN_TBL} (
+   username varchar(30) NOT NULL,
+   latin1 int2 DEFAULT '0' NOT NULL,
+   ip varchar(16) NOT NULL,
+   rooms varchar(100) NOT NULL,
+   ban_until int4 DEFAULT '0' NOT NULL
+)"
+);
+
+
+// ----- PROFILE FOR ADMIN CREATION -----
+
+$Create_Adm = "INSERT INTO ${C_REG_TBL} VALUES ('${ADM_LOG}', '', '${admin_pwd}', '${ADM_FNAME}', '${ADM_LNAME}', '${ADM_LANG}', '${ADM_WEB}', '${ADM_EMAIL}', '${SHOWEMAIL}', 'admin', '', ".time().", '${IP}', '${ADM_GENDER}')";
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/install/database/pgsql.sql 0.15.0/chat/install/database/pgsql.sql
--- 0.14.5/chat/install/database/pgsql.sql	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/install/database/pgsql.sql	2004-04-01 03:06:31.000000000 -0600
@@ -0,0 +1,47 @@
+CREATE TABLE c_messages (
+   type int2 DEFAULT '0' NOT NULL,
+   room varchar(30) NOT NULL,
+   username varchar(30) NOT NULL,
+   latin1 int2 DEFAULT '0' NOT NULL,
+   m_time int4 DEFAULT '0' NOT NULL,
+   address varchar(30) NOT NULL,
+   message text NOT NULL
+);
+
+
+CREATE TABLE c_users (
+   room varchar(30) NOT NULL,
+   username varchar(30) NOT NULL,
+   latin1 int2 DEFAULT '0' NOT NULL,
+   u_time int4 DEFAULT '0' NOT NULL,
+   status varchar(1) NOT NULL,
+   ip varchar(16) NOT NULL
+);
+
+
+CREATE TABLE c_reg_users (
+   username varchar(30) NOT NULL UNIQUE,
+   latin1 int2 DEFAULT '0' NOT NULL,
+   password varchar(32) NOT NULL,
+   firstname varchar(64) NOT NULL,
+   lastname varchar(64) NOT NULL,
+   country varchar(64) NOT NULL,
+   website varchar(64) NOT NULL,
+   email varchar(64) NOT NULL,
+   showemail int2 NOT NULL,
+   perms varchar(9) NOT NULL,
+   rooms varchar(128) NOT NULL,
+   reg_time int4 DEFAULT '0' NOT NULL,
+   ip varchar(16) NOT NULL,
+   gender int2 DEFAULT '0' NOT NULL
+);
+INSERT INTO c_reg_users VALUES('admin', '', '21232f297a57a5a743894a0e4a801fc3', '', '', '', '', '', 0, 'admin', '', '', '', '');
+
+
+CREATE TABLE c_ban_users (
+   username varchar(30) NOT NULL,
+   latin1 int2 DEFAULT '0' NOT NULL,
+   ip varchar(16) NOT NULL,
+   rooms varchar(100) NOT NULL,
+   ban_until int4 DEFAULT '0' NOT NULL
+);
\ No newline at end of file
diff -ruN 0.14.5/chat/install/languages/argentinian_spanish.setup.php 0.15.0/chat/install/languages/argentinian_spanish.setup.php
--- 0.14.5/chat/install/languages/argentinian_spanish.setup.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/install/languages/argentinian_spanish.setup.php	2004-04-01 03:06:31.000000000 -0600
@@ -0,0 +1,130 @@
+<?php
+// File: argentinian_spanish.setup.php
+// Argentinian Spanish translation for the setup process
+//   by Jorge Colaccini <jrc@informas.com>
+
+// extra header for charset
+$S_Charset = "iso-8859-1";
+$S_FontSize = "10";
+
+// Settings for setup.php file
+define("S_MAIN_1","Las tablas sern creadas/subidas al servidor local.");
+define("S_MAIN_2","Paso 1 completado: las tablas han sido creadas/subidas.");
+define("S_MAIN_3","Paso 1 Salteado por el usuario.");
+define("S_MAIN_4","Encuentra seteo(s) perdidos o invlido(s).");
+define("S_MAIN_5","Al menos uno est perdido.");
+define("S_MAIN_6","Se requiere por lo menos un canal.");
+define("S_MAIN_7","El nombre del canal no puede contener barras (\\).");
+define("S_MAIN_8","La hora del lugar por omisin, se ha perdido.");
+define("S_MAIN_9","El nmero de mensajes para mostrar y/o el timeout por defecto entre cada actualizacin se ha perdido.");
+define("S_MAIN_11","Paso 2 completado: la configuracin para el <i>fine tunning</i> (ajuste fino) ha sido registrada.");
+define("S_MAIN_12","Debs ingresar tu nombre de usuario.");
+define("S_MAIN_13","Tu nombre de usuario no puede tener espacios, comas o barras (\\).");
+define("S_MAIN_14","Debs ingresar tu contrasea.");
+define("S_MAIN_15","Tu <I>nick</I> o alias (<b>%s</B>) ha sido registrado por otro usuario y la contrasea que ingresaste es incorrecta.");
+define("S_MAIN_16","Paso 3 completado: Tus datos como administrador han sido registrados.");
+define("S_MAIN_17","Paso 3 Salteado por el usuario.");
+define("S_MAIN_18","- Configuracin");
+
+// Settings for setup0.php file
+define("S_SETUP0_1","Este script te permitir una fcil instalacin de %s.");
+define("S_SETUP0_2","Si quers, pods hacerlo en forma manual. Si prefers hacerlo as, entonces tens que:");
+define("S_SETUP0_3","Crear tablas para %s utilizando archivos dump localizados en el directorio: <I>'chat/install/database'</I>;");
+define("S_SETUP0_4","Editar el archivo <I>config.lib.php</I> ubicado en el directorio <I>'chat/config'</I> para definir las configuraciones de %s;");
+define("S_SETUP0_5","El proceso Manual requiere informacin adicional para el Administrador en la tabla de usuarios registrados (c_reg_users): debs ingresar tu nick en la columna <I>username</I>, la contrasea en <I>password</I> usando encriptacin MD5, y la palabra 'admin' (sin comillas) en <I>perms</I>. Si quers, pods aadir informacin adicional en otras columnas pero esto no es obligatorio;");
+define("S_SETUP0_5m","Configurar tres variables en el inicio del archivo/script 'chat/admin/mail4admin.lib.php'.");
+define("S_SETUP0_6","Para continuar con la configuracin automtica hac click en el botn de abajo.");
+define("S_SETUP0_7"," Continuar ");
+define("S_SETUP0_8","Antes de actualizar desde una versin anterior de %s deberas vaciar la tabla de mensajes (utilizando el script 'chat/admin.php' de esa versin).");
+
+// Settings for setup1.php file
+define("S_SETUP1_1","Primer paso: Configuracin de tablas");
+define("S_SETUP1_2","Configuracin de la base de datos");
+define("S_SETUP1_3","Seleccion el tipo de servidor SQL:");
+define("S_SETUP1_4","Nombre de Host de tu servidor SQL:");
+define("S_SETUP1_5","Nombre de la base de datos del servidor:");
+define("S_SETUP1_6","(debe existir)");
+define("S_SETUP1_7","Usuario de Login de la base de datos:");
+define("S_SETUP1_8","Contrasea del usuario de la base de datos:");
+define("S_SETUP1_9","Creacin de tablas/actualizacin");
+define("S_SETUP1_10","Que quers que haga este script?");
+define("S_SETUP1_11","Crear tablas para %s");
+define("S_SETUP1_12","Actualizar las existentes creadas para versiones 0.12.0  0.12.1");
+define("S_SETUP1_13","Nada, las tablas han sido creadas (para versiones 0.13.4 y 0.14.?)");
+define("S_SETUP1_14","Nombre de las tablas<SUP>*</SUP> donde...");
+define("S_SETUP1_15","sern almacenados los mensajes:");
+define("S_SETUP1_16","sern almacenados los datos de los usuarios registrados:");
+define("S_SETUP1_17","sern almacenados el historial de acceso de los usuarios:");
+define("S_SETUP1_18","<SUP>*</SUP>Los nombres que ingreses para las tablas deben corresponder a tablas existentes si ests eligiendo <BR><B>actualizacin</B>. Si quers <B>crear nuevas tablas</B> los nombres <B>no</B> deben ser los <BR> mismos que los de las tablas existentes!<BR>Todos los campos deben ser rellenados, si no quers que el script lo haga<BR>ser necesario hacerlo ms adelante cuando cres el Administrador.");
+define("S_SETUP1_19"," Continuar ");
+define("S_SETUP1_20","Actualizacin de las existentes creadas para versiones 0.13.0 a 0.13.3");
+define("S_SETUP1_21","sern almacenados los nombres de usuarios bloqueados:");
+
+// Settings for setup2.php file
+define("S_SETUP2_1","Segundo paso: Opciones ms especficas");
+define("S_SETUP2_2","Depuracin de mensajes y usuarios");
+define("S_SETUP2_3","Nmero de horas para que los mensajes sean borrados:");
+define("S_SETUP2_4","Nmero de minutos para que los usuarios inactivos sean borrados:");
+define("S_SETUP2_5","Nmero de das para que los usuarios inactivos sean borrados&nbsp;&nbsp;&nbsp;<BR>de la tabla de usuarios registrados (0 para nunca):");
+define("S_SETUP2_6","Salones predeterminados, a crear");
+define("S_SETUP2_7","Separado con coma (,) no espacios.");
+define("S_SETUP2_8","Configuracin de idioma");
+define("S_SETUP2_9","Permitir soporte de caracteres multi-idiomas?");
+define("S_SETUP2_10","Idioma predeterminado:");
+define("S_SETUP2_11","Seguridad y restricciones");
+define("S_SETUP2_12","Mostrar un enlace para administracin cuando aparece la pantalla inicial?");
+define("S_SETUP2_13","Mostrar un enlace que le permita a los usuarios borrar sus datos ?");
+define("S_SETUP2_14","Se requiere registracin obligatoria para usar el chat?");
+define("S_SETUP2_15","Los Usuarios pueden acceder...");
+define("S_SETUP2_16","...solamente la primer sala de las predeterminadas");
+define("S_SETUP2_17","...a todas las salas predeterminadas, pero no pueden crear una sala");
+define("S_SETUP2_18","...a todas las salas y adems pueden crear nuevas");
+define("S_SETUP2_19","Esttica de los mensajes");
+define("S_SETUP2_20","Utilizar caritas (<i>emoticons</i>)(ver 'chat/lib/smilies.lib.php')?");
+define("S_SETUP2_21","Permitir efectos de negrita, itlica y subrayado en mensajes ?");
+define("S_SETUP2_22","Mostrar los tags HTML descartados?");
+define("S_SETUP2_23","Configuracin de presentacin predeterminada");
+define("S_SETUP2_24","Zona horaria medida en horas entre el tiempo de tu servidor y el de tu pas:");
+define("S_SETUP2_25","Orden de presentacin de los mensajes:");
+define("S_SETUP2_26","ltimo al principio");
+define("S_SETUP2_27","ltimo al final");
+define("S_SETUP2_28","Nmero de mensajes a mostrar:");
+define("S_SETUP2_29","Tiempo para la actualizacin de mensajes en pantalla (en segundos):");
+define("S_SETUP2_30","Mostrar la hora (<i>timestamp</i>)?.");
+define("S_SETUP2_31","Mostrar las notificaciones de entrada y/o salida de usuarios?");
+define("S_SETUP2_36","Verificar malas palabras (ver 'chat/lib/swearing.lib.php') ?");
+define("S_SETUP2_41","Nmero mximo de mensajes que un usuario tiene permitido exportar a un archivo HTML (0 para ninguno -el comando est desactivado-, '*' para todos los mensajes posibles, o un valor, para para no sobrecargar al servidor)?");
+define("S_SETUP2_42","Activar las posibilidades de bloqueo?<BR>0 para no, un nmero positivo para definir el nmero de da/s a bloquear<BR>(2000000 para *siempre*, 0.02 para aprox. media hora...)");
+define("S_SETUP2_43","Registracin de usuarios");
+define("S_SETUP2_44","Generar una clave y enviarla a la direccin de e-mail del usuario?<BR>Esta opcin requiere la funcin <I>'mail()'</I> de PHP activada, (asegurte con el administrador del server, que pods usarla).<BR>Ms an, para hacer que funcione tens que definir cuatro variables en el archivo script 'chat/lib/mail_validation.lib.php'.");
+define("S_SETUP2_45","La configuracin del PHP que ests usando no parece permitir el uso de la funcin <I>'mail()'</I>. En consecuencia, no pods elegir que la contrasea se genere automticamente y se enve por email al usuario.");
+define("S_SETUP2_46","pblicos:");
+define("S_SETUP2_47","privados:");
+define("S_SETUP2_48","Enviar un mensaje de bienvenida al usuario que ingresa al chat (ver 'chat/lib/welcome.lib.php') ?");
+
+// Settings for setup3.php file
+define("S_SETUP3_1","Los datos del Administrador estn definidos, y solamente un<BR>administrador puede existir. Modificar los campos, por favor<BR>abajo del update los datos existentes.");
+define("S_SETUP3_2","Tercer paso: Registracin del administrador");
+define("S_SETUP3_3","Los datos con <SPAN CLASS=error>*</SPAN> son de ingreso obligatorios.");
+define("S_SETUP3_4","login (<i>nick</i>):");
+define("S_SETUP3_5","contrasea:");
+define("S_SETUP3_6","nombre:");
+define("S_SETUP3_7","apellido:");
+define("S_SETUP3_8","idiomas:");
+define("S_SETUP3_9","sitioweb:");
+define("S_SETUP3_10","e-mail:");
+define("S_SETUP3_11","mostrar e-mail en el comando /whois");
+define("S_SETUP3_12","Pasar por alto >>");
+define("S_SETUP3_13","Podrs modificar tus datos posteriormente haciendo click en edit<BR>datos (perfil) en la pgina de comienzo de %s.");
+define("S_SETUP3_14", "Sexo");
+define("S_SETUP3_15", "masculino");
+define("S_SETUP3_16", "femenino");
+
+// Settings for setup4.php file
+define("S_SETUP4_1","Cuarto paso: El archivo config");
+define("S_SETUP4_2","Aqu est el archivo config, de acuerdo con la informacin que ingresaste.<BR><BR>Copi todo, incluyendo las primeras y ltimas lneas, y luego pegalas en tu editor de texto favorito (Notepad, Vi...). Despus, *tens que cambiar* la contrasea de tu base de datos en la linea 7 y guardar el archivo como <I>config.lib.php</I>.<BR><BR>Asegurte que no haya <B>ni lineas en blanco, ni espacios antes del <i>tag</i> de apertura de php, ni del de cierre (<i>&lt;?php ... ?&gt;</i>)</B>. Finalmente, pods subir (<i>upload</i>) el archivo config al directorio <I>config</I> del servidor (reemplazando el existente). (ver <I>install.txt</I> en el directorio <I>docs</I> para ms informacin sobre esto).<BR><BR>No dejs de mirar el <A HREF=\"#warn\">mensaje de advertencia</A> al final de esta pgina.");
+define("S_SETUP4_3","Seleccionar todo");
+define("S_SETUP4_4","Una vez que completaste los pasos de abajo, %s est casi listo para correr.<BR>");
+define("S_SETUP4_4m","Debers configurar manualmente tres variables al principio del archivo <I>'chat/admin/mail4admin.lib.php'</I><BR>y... a tener interesantes discusiones en tu chat!.");
+define("S_SETUP4_5","Despus que %s est instalado y funcionando podras remover el archivo<BR><I>setup.php</I> y el directorio <I>'chat/install'</I> en tu servidor.");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/install/languages/chinese_simplified.setup.php 0.15.0/chat/install/languages/chinese_simplified.setup.php
--- 0.14.5/chat/install/languages/chinese_simplified.setup.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/install/languages/chinese_simplified.setup.php	2004-04-01 03:06:31.000000000 -0600
@@ -0,0 +1,129 @@
+<?php
+// Chinese simplified language file for the setup process
+// Perry Huang <perryhg@hotmail.com>
+
+// extra header for charset
+$S_Charset = "gb2312";
+$S_FontSize = "10";
+
+// Settings for setup.php file
+define("S_MAIN_1", "ڱϴ/ ݱ.");
+define("S_MAIN_2", " 1 : Ѿ/ ݱ.");
+define("S_MAIN_3", " 1 û.");
+define("S_MAIN_4", "©Ƿ趨.");
+define("S_MAIN_5", "©һϢûʱ.");
+define("S_MAIN_6", "һĬϵƵ.");
+define("S_MAIN_7", "Ƶֲܺзб (\\).");
+define("S_MAIN_8", "©ʱ.");
+define("S_MAIN_9", "©ĬʾϢ©ĬˢϢʱ.");
+define("S_MAIN_11", " 2 : ϸڵѵǼ");
+define("S_MAIN_12", "¼.");
+define("S_MAIN_13", "вܺпո񣬶Ż߷б (\\).");
+define("S_MAIN_14", ".");
+define("S_MAIN_15", "<I>%s</I> nickname עᲢ.");
+define("S_MAIN_16", " 3 : ĹԱѾ.");
+define("S_MAIN_17", " 3 û.");
+define("S_MAIN_18", "-  Setup");
+
+// Settings for setup0.php file
+define("S_SETUP0_1", "ű㷽ذװ %s.");
+define("S_SETUP0_2", "Ը⣬ֹ. ѡҪ:");
+define("S_SETUP0_3", "ʹ <I>'chat/install/database'</I> Ŀ¼еdumpļΪ %s ݱ;");
+define("S_SETUP0_4", "༭<I>'chat/config'</I> Ŀ¼е <I>config.lib.php</I>  %s ;");
+define("S_SETUP0_5", "ΪԱעû(c_reg_users),ֹϢ:nick<I>username</I>, MD5 hash ֵ<I>password</I>У<I>perms</I>м 'admin' һ(û),Ը,κʱмϢ,ⲻǱҪ;");
+define("S_SETUP0_5m", " 'chat/admin/mail4admin.lib.php' űĶ.");
+define("S_SETUP0_6", "İťԶװ.");
+define("S_SETUP0_7", " ʼװ ");
+define("S_SETUP0_8", "Ӿɰ汾 %s ֮ǰʹþɰ 'chat/admin.php' Ϣ.");
+
+// Settings for setup1.php file
+define("S_SETUP1_1", "һ: ݱ");
+define("S_SETUP1_2", "ݿ");
+define("S_SETUP1_3", "ѡ SQL :");
+define("S_SETUP1_4", " SQL  Hostname():");
+define("S_SETUP1_5", "߼ݿ:");
+define("S_SETUP1_6", "(д)");
+define("S_SETUP1_7", "ݿûĵ¼:");
+define("S_SETUP1_8", "ݿû:");
+define("S_SETUP1_9", "/ݱ");
+define("S_SETUP1_10", "ϣűʲô?");
+define("S_SETUP1_11", "Ϊ %s ݱ");
+define("S_SETUP1_12", " 0.12.0 0.12.1 洴");
+define("S_SETUP1_13", ",ݱѾ°汾( 0.13.4  0.14.? )");
+define("S_SETUP1_14", "; tables<SUP>*</SUP> ");
+define("S_SETUP1_15", "ڱϢ:");
+define("S_SETUP1_16", "ڱעû:");
+define("S_SETUP1_17", "ڱѵ¼û:");
+define("S_SETUP1_18", "<SUP>*</SUP>ѡ<b></b>,ݱֱеıͬ.<br>ѡ<b>±</b>,<b>ʹ</b>еı.<br><b></b>д,ʹ㲻ϣ˽űݿκ޸,ЩϢڴԱ.");
+define("S_SETUP1_19", "OK");
+define("S_SETUP1_20", " 0.13.0 to 0.13.3 汾ݱ");
+define("S_SETUP1_21", "ڱ赲û:");
+
+// Settings for setup2.php file
+define("S_SETUP2_1", "ڶ: ϸڵ");
+define("S_SETUP2_2", "Ϣû");
+define("S_SETUP2_3", "ϢɾǰСʱ:");
+define("S_SETUP2_4", "ǻûٷӺɾ:");
+define("S_SETUP2_5", "ǻûעûɾ(0 ʾɾ):");
+define("S_SETUP2_6", "ĬƵ");
+define("S_SETUP2_7", "ö (,) ָ,Ҫո.");
+define("S_SETUP2_8", "");
+define("S_SETUP2_9", "ʹö/ַ֧?");
+define("S_SETUP2_10", "Ĭ:");
+define("S_SETUP2_11", "ȫ");
+define("S_SETUP2_12", "ʾϢ");
+define("S_SETUP2_13", "ʾûɾԵĸõ");
+define("S_SETUP2_15", "ûԷ...");
+define("S_SETUP2_16", "...ֻܷĬµĵһƵ");
+define("S_SETUP2_17", "...ԷʶΪĬֵƵܴƵ");
+define("S_SETUP2_18", "...ԷƵƵ");
+define("S_SETUP2_19", "Ϣ");
+define("S_SETUP2_20", "ʹͼα (ο 'chat/lib/smilies.lib.php')?");
+define("S_SETUP2_21", "Ϣпʹô(bold), б(italic)  »(underline) ǩ");
+define("S_SETUP2_22", "ʾԵ HTML ǩ");
+define("S_SETUP2_23", "Ĭʾ");
+define("S_SETUP2_24", "ڵʱ:");
+define("S_SETUP2_25", "ĬϢ˳:");
+define("S_SETUP2_26", "¶");
+define("S_SETUP2_27", "϶");
+define("S_SETUP2_28", "ĬʾϢ:");
+define("S_SETUP2_29", "ĬˢϢʱ(ʾ):");
+define("S_SETUP2_30", "Ĭʾʱ.");
+define("S_SETUP2_31", "Ĭʾû/뿪ͨ.");
+define("S_SETUP2_36", "ô (ο 'chat/lib/swearing.lib.php') ?");
+define("S_SETUP2_41", "ûHTMLļϢ(0 ʾ ֹ -ñ-, '*' ʾпϢ, һϢ)?");
+define("S_SETUP2_42", "赲?<BR>0 ʾʹ, һֱʾ赲<BR>(2000000 ʾ, 0.02 ʾСʱ....))");
+define("S_SETUP2_43", "ûע");
+define("S_SETUP2_14", "Ҫע");
+define("S_SETUP2_44", "벢͵ûemailַȥ?<BR>Ҫ <I>'mail()'</I> PHP֧, PHPԱȷʹøú.<BR>, Ҫ㻹 'chat/lib/mail_validation.lib.php' ű涨4");
+define("S_SETUP2_45", "PHPúʹ <I>'mail()'</I> . 㲻ѡʹ'벢email'Ĺ.");
+define("S_SETUP2_46", ":");
+define("S_SETUP2_47", "˽:");
+define("S_SETUP2_48", "û¼ʱͻӭϢ (ο 'chat/lib/welcome.lib.php') ?");
+
+// Settings for setup3.php file
+define("S_SETUP3_1", "ѾһԱòֻһԱ.<BR> ޸Ըе.");
+define("S_SETUP3_2", " 3: Աע");
+define("S_SETUP3_3", "<SPAN CLASS=error>*</SPAN>ݱд.");
+define("S_SETUP3_4", "¼(nick):");
+define("S_SETUP3_5", ":");
+define("S_SETUP3_6", ":");
+define("S_SETUP3_7", ":");
+define("S_SETUP3_8", "ʹ:");
+define("S_SETUP3_9", "վ:");
+define("S_SETUP3_10", "e-mail ַ:");
+define("S_SETUP3_11", "ʹ/whoisʱʾe-mail");
+define("S_SETUP3_12", " >>");
+define("S_SETUP3_13", "Ժ %s ҳϵ'༭'޸.");
+define("S_SETUP3_14", "Ա");
+define("S_SETUP3_15", "");
+define("S_SETUP3_16", "Ů");
+
+// Settings for setup4.php file
+define("S_SETUP4_1", " 4: ļ");
+define("S_SETUP4_2", "ǸϢļ<BR><BR>е,һкһ,ճı༭(notpad, vi...).Ȼ ** ڵ7ݿ벢Ϊ<I>config.lib.php</I>.<BR><BR>ȷѾ<B>ûп,ûпոַ,PHPʼǩ֮ǰͽǩ֮ûַ</B>,Ȼ԰ļϴϵ<I>config</I>Ŀ¼(滻ԭļ)һЩȫ(ο<I>docs</I>Ŀ¼µ<I>install.txt</I>ļ,иĲϢ)<BR><BR>һ<A HREF=\"#warn\">Ϣ</A>.");
+define("S_SETUP4_3", "ѡȫ");
+define("S_SETUP4_4", "һϵĲ, %s ѾϿ.<BR>");
+define("S_SETUP4_4m", " ֹ <I>'chat/admin/mail4admin.lib.php'</I>ļͷ<BR> ף.");
+define("S_SETUP4_5", " %s кӦôӷ<BR>ɾ<I>setup.php</I> ļ <I>'chat/install'</I> Ŀ¼.");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/install/languages/czech.setup.php 0.15.0/chat/install/languages/czech.setup.php
--- 0.14.5/chat/install/languages/czech.setup.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/install/languages/czech.setup.php	2004-04-01 03:06:34.000000000 -0600
@@ -0,0 +1,131 @@
+<?php
+// Translation into Czech for setup process
+// By Martin Dvorak <jezek2@penguin.cz>
+
+// extra header for charset
+$S_Charset = "iso-8859-2";
+$S_FontSize = "10";
+
+// Settings for setup.php file
+define("S_MAIN_1","Tabulky budou vytvoeny/aktualizovny na loklnm serveru.");
+define("S_MAIN_2","Krok 1 hotov: tabulky byly vytvoeny/aktualizovny.");
+define("S_MAIN_3","Krok 1 byl uivatelem zruen.");
+define("S_MAIN_4","Nalezeno chybjc nebo patn nastaven.");
+define("S_MAIN_5","Chyb alespo jedno ze zpodn pro itn databze.");
+define("S_MAIN_6","Je vyadovna alespo jedna defaultn mstnost.");
+define("S_MAIN_7","Jmno mstnosti neme obsahovat zptn lomtka (\\).");
+define("S_MAIN_8","Chyb nastaven asovho psma.");
+define("S_MAIN_9","Chyb defaultn poet zobrazovanch zprv a/nebo defaultn zpodn mezi kadm obnovenm zprv.");
+define("S_MAIN_11","Krok 2 hotov: nastaven pro vyladn chatu bylo registrovno.");
+define("S_MAIN_12","Muste napsat vae pihlaovac jmno.");
+define("S_MAIN_13","Vae jmno neme obsahovat mezery, rky ani zptn lomtka (\\).");
+define("S_MAIN_14","Muste napsat vae heslo.");
+define("S_MAIN_15","Pezdvka <I>%s</I> je u registrovna a vy jste napsal patn heslo.");
+define("S_MAIN_16","Krok 3 hotov: v profil administrtora byl registrovn.");
+define("S_MAIN_17","Krok 3 byl uivatelem zruen.");
+define("S_MAIN_18","- Instalace");
+
+// Settings for setup0.php file
+define("S_SETUP0_1","Tento skript vm slou k velmi lehk a rychl instalaci skriptu %s.");
+define("S_SETUP0_2","Mete jej samozejm nainstalovat i run, jestli chcete. Pokud preferujete tuto cestu, muste udlat toto:");
+define("S_SETUP0_3","Vytvoit tabulky pro %s pouitm \"dump\" soubor, je naleznete v adresi <I>'chat/install/database'</I>;");
+define("S_SETUP0_4","Upravit soubor <I>config.lib.php</I> umstn v adresi <I>'chat/config'</I> pro nastaven konfigurace;");
+define("S_SETUP0_5","Manuln pidat vyadovan informace o administrtorovi do tabulky pro regisrovan uivatele (c_reg_users): vae pezdvka ve sloupci <I>username</I>, vae heslo v MD5 hash form ve sloupci <I>password</I> a slovo 'admin' (bez uvozovek) ve sloupeku <I>perms</I>. Jestli chcete, mete kdykoli pidat dal informace do ostatnch sloupek, ale nen to poteba;");
+define("S_SETUP0_5m","Sets three variables at the top of the 'chat/admin/mail4admin.lib.php' script.");
+define("S_SETUP0_6","Pro zahjen automatick instalace, kliknte prosm na spodn tlatko.");
+define("S_SETUP0_7"," Nainstalovat ");
+define("S_SETUP0_8","Doporuujeme ped aktualizac ze star verze %s vyistit tabulku se zprvami (nap. pomoc skriptu 'chat/admin.php' star verze).");
+
+// Settings for setup1.php file
+define("S_SETUP1_1","Prvn krok: Konfigurace tabulek");
+define("S_SETUP1_2","Nastaven databze");
+define("S_SETUP1_3","Vyberte si v SQL server:");
+define("S_SETUP1_4","Adresa (hostname) vaeho SQL serveru:");
+define("S_SETUP1_5","Logick jmno databze na tomto serveru:");
+define("S_SETUP1_6","(mus existovat)");
+define("S_SETUP1_7","Pihlaovac jmno do databze:");
+define("S_SETUP1_8","Pihlaovac heslo do databze:");
+define("S_SETUP1_9","Vytven/Aktualizace tabulek");
+define("S_SETUP1_10","Co chcete, aby tento skript udlal?");
+define("S_SETUP1_11","Vytvoit tabulky pro %s");
+//define("S_SETUP1_12","Updatovat u existujc (jen z verz 0.12.0 a 0.12.1)");
+define("S_SETUP1_12","Aktualizovat u existujc z verze 0.12.0 nebo 0.12.1");
+//define("S_SETUP1_13","Neudlat nic, tabulky jsou u hotovy (nap. z verz 0.13.?)");
+define("S_SETUP1_13","Neudlat nic, tabulky jsou u hotovy (z verz 0.13.4 a 0.14.?)");
+define("S_SETUP1_14","Jmna tabulek<SUP>*</SUP>, kde...");
+define("S_SETUP1_15","budou ukldny zprvy:");
+define("S_SETUP1_16","budou uloeny profily registerovanch uivatel:");
+define("S_SETUP1_17","budou uloeny jmna neregistrovanch uivatel:");
+define("S_SETUP1_18","<SUP>*</SUP>Jmna, je napete, mus bt shodn s existujcmy tabulky, pokud jste zvolili jejich <BR><B>aktualizaci</B>. Pokud chcete <B>vytvoit nov tabulky</B>, jmna se <B>musej liit</B><BR>od u existujcch tabulek!<BR>Vechny polka musej bt vyplnna, ikdy nechcete dn tabulky vytvoit,<BR>protoe informace budou poteba pozdji pi vytven profilu administrtora.");
+define("S_SETUP1_19","OK");
+define("S_SETUP1_20","Aktualizovat u existujc z verz od 0.13.0 do 0.13.3");
+define("S_SETUP1_21","budou uloeny zakzn uivatel:");
+
+// Settings for setup2.php file
+define("S_SETUP2_1","Druh krok: Vylaovn nastaven");
+define("S_SETUP2_2","Nastaven pro itn zprv a jmen uivatel");
+define("S_SETUP2_3","Za kolik hodin mazat zprvy:");
+define("S_SETUP2_4","Za kolik minut mazat neaktivn uivatele:");
+define("S_SETUP2_5","Za kolik dn mazat neaktivn uivatele, kte byly smazni&nbsp;&nbsp;&nbsp;<BR>z tabulky s registrovanmi uivateli (0 = nikdy):");
+define("S_SETUP2_6","Defaultn mstnosti");
+define("S_SETUP2_7","Mstnosti jsou oddleny rkou (,) bez mezer.");
+define("S_SETUP2_8","Nastaven jazyka");
+define("S_SETUP2_9","Povolit vce jazyk/znakovch sad?");
+define("S_SETUP2_10","Defaultn jazyk:");
+define("S_SETUP2_11","Nastaven bezpenosti a omezen");
+define("S_SETUP2_12","Zobrazit odkaz pro administraci uivatel na prvn strnce chatu?");
+define("S_SETUP2_13","Zobrazit odkaz, je umouje uivatelm mazat jejich vlastn porfily?");
+define("S_SETUP2_15","Uivatel mohou pistupovat...");
+define("S_SETUP2_16","...jen do prvn defaultn mstnosti");
+define("S_SETUP2_17","...do vech defaultnch mstnost, ale bez monosti vytvet vlasn");
+define("S_SETUP2_18","...do vech mstnost a vytvet nov");
+define("S_SETUP2_19","Vylepen zprv");
+define("S_SETUP2_20","Pouvat grafick smailky (viz 'chat/lib/smilies.lib.php')?");
+define("S_SETUP2_21","Nechat inek tag pro tun, sklonn a podtren text ve zprvch?");
+define("S_SETUP2_22","Zobrazovat neplatn HTML tagy?");
+define("S_SETUP2_23","Defaultn zobrazen");
+define("S_SETUP2_24","Posun asu v hodinch mezi asem serveru a va zem:");
+define("S_SETUP2_25","Defaultn poad zprv:");
+define("S_SETUP2_26","posledn nahoe");
+define("S_SETUP2_27","posledn dole");
+define("S_SETUP2_28","Defaultn poet zobrazovanch zprv:");
+define("S_SETUP2_29","Defaultn prodleva mezi obnovovnm zprv (v sekundch):");
+define("S_SETUP2_30","Zobrazovat defaultn as u zprv.");
+define("S_SETUP2_31","Zobrazovat defaultn notifikace, kdy uivatel vstoup/odejde.");
+define("S_SETUP2_36","Zakzat patn slova (viz 'chat/lib/swearing.lib.php')?");
+define("S_SETUP2_41","Maximln poet zprv, kter m uivatel dovoleno exportovat do HTML souboru (0 pro dn -pkaz save je zakzn-, '*' pro vechny dostupn zprvy, nebo slo pro omezen zaten serveru)?");
+define("S_SETUP2_42","Povolit zakazovn uivatel?<BR>0 pro zakzn, jinak kladn slo pro definici potu dn pro zkazy<BR>(2000000 pro absolutn zkaz, 0.02 pro zkaz piblin na pl hodiny....))");
+define("S_SETUP2_43","Registrace uivatel");
+define("S_SETUP2_14","Vyadovat registraci uivatel?");
+define("S_SETUP2_44","Generovat automaticky pi registraci heslo a poslat ho na e-mail, kter zad uivatel do registrace?<BR>Tato volba vyaduje zapnutou PHP funkci <I>'mail()'</I>, zjistte od administrtora serveru jestli ji mete pouvat.<BR>Mimo to muste mt nastaven 4 volby v souboru 'chat/lib/mail_validation.lib.php', aby tato volba sprvn pracovala.");
+define("S_SETUP2_45","Vae konfigurace PHP zejm neumouje pout PHP funkci <I>'mail()'</I>, take nemete nechat povolenou volbu pro automatick generovn a posln hesla pes e-mail pi registraci novch uivatel.");
+define("S_SETUP2_46","veejnou:");
+define("S_SETUP2_47","soukromou:");
+define("S_SETUP2_48","Poslat uvtac zprvu pchozm uivatelm (viz 'chat/lib/welcome.lib.php') ?");
+
+// Settings for setup3.php file
+define("S_SETUP3_1","Profil administrtora je u definovn a v chatu me bt<BR>pouze jeden administrtor. Modifikujte, prosm, spodn polka<BR>pro updatovn existujchi profilu.");
+define("S_SETUP3_2","Tet krok: Registrace administrtora");
+define("S_SETUP3_3","Polka s <SPAN CLASS=error>*</SPAN> jsou vyadovna.");
+define("S_SETUP3_4","jmno (pezdvka):");
+define("S_SETUP3_5","heslo:");
+define("S_SETUP3_6","kestn jmen:");
+define("S_SETUP3_7","pjmen:");
+define("S_SETUP3_8","ovldan jazyky:");
+define("S_SETUP3_9","domovsk strnka:");
+define("S_SETUP3_10","e-mailov adresa:");
+define("S_SETUP3_11","zobrazovat e-mail pomoc pkazu /whois");
+define("S_SETUP3_12","Vynechat >>");
+define("S_SETUP3_13","V profil mete upravit kdykoli po instalaci kliknutm na odkaz<BR>pro editaci profilu na prvn stran chatu.");
+define("S_SETUP3_14", "pohlav");
+define("S_SETUP3_15", "musk");
+define("S_SETUP3_16", "ensk");
+
+// Settings for setup4.php file
+define("S_SETUP4_1","tvrt krok: Konfiguran soubor");
+define("S_SETUP4_2","Tady je konfiguran soubor vytvoen podle vmi zadanch daj.<BR><BR>Okoprujte cel obsah vetn prvn a posledn adky, a vlote jej do vaeho oblbenho textovho editoru (notepad i vi). Pot *muste* vyplnit heslo do databze na 7. dce a uloit soubor jako <I>config.lib.php</I>.<BR><BR>Dkladn zkontrolujte jestli <B>nen dn przdn dka ani mezera, ani ped otevracm tagem PHP kdu ani po ukonovacm</B>, pot nahrajte konfiguran soubor na v server do adrese <I>config</I> (pepsnm u existujcho souboru) a stete jej (viz soubor <I>install.txt</I> v adresi <I>docs</I> pro vce informac).<BR><BR>Nezapomete se podvat na <A HREF=\"#warn\">varovnou zprvu</A> dole.");
+define("S_SETUP4_3","Oznait ve");
+define("S_SETUP4_4","Jakmile udlte vechny ve uveden kroky, %s bude skoro pipraven.");
+define("S_SETUP4_4m"," Jen nastavte manuln ti promnn na zatku souboru <I>'chat/admin/mail4admin.lib.php'</I>...");
+define("S_SETUP4_5","Po spnm rozbhnut %su byste mli odstranit soubor<BR><I>setup.php</I> a cel adres <I>'chat/install'</I> z vaeho serveru.");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/install/languages/english.setup.php 0.15.0/chat/install/languages/english.setup.php
--- 0.14.5/chat/install/languages/english.setup.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/install/languages/english.setup.php	2004-04-01 03:06:34.000000000 -0600
@@ -0,0 +1,129 @@
+<?php
+// Original english file for the setup process
+// By Loc Chapeaux <loic-info@netcourrier.com> and Martin Edelius <martin.edelius@spirex.se>
+
+// extra header for charset
+$S_Charset = "iso-8859-1";
+$S_FontSize = "10";
+
+// Settings for setup.php file
+define("S_MAIN_1","Tables will be created/updated on a local server.");
+define("S_MAIN_2","Step 1 completed: tables have been created/updated.");
+define("S_MAIN_3","Step 1 bypassed by user.");
+define("S_MAIN_4","Found missing or invalid setting(s).");
+define("S_MAIN_5","At least one of the cleaning delays is missing.");
+define("S_MAIN_6","At least one default room is required.");
+define("S_MAIN_7","The name of a room cannot contain backslashes (\\).");
+define("S_MAIN_8","The timezone offset is missing.");
+define("S_MAIN_9","The default number of messages to display and/or the default timeout between each update is/are missing.");
+define("S_MAIN_11","Step 2 completed: settings for fine tunning have been registered.");
+define("S_MAIN_12","You must enter a login name.");
+define("S_MAIN_13","Your name cannot contain a space, comma or backslash (\\).");
+define("S_MAIN_14","You must enter your password.");
+define("S_MAIN_15","The <I>%s</I> nick is already registered and the password you entered is wrong.");
+define("S_MAIN_16","Step 3 completed: your administrator profile has been registered.");
+define("S_MAIN_17","Step 3 bypassed by user.");
+define("S_MAIN_18","- Setup");
+
+// Settings for setup0.php file
+define("S_SETUP0_1","This script allows you to easily install %s.");
+define("S_SETUP0_2","You can also do this manually if you wish. If you prefer to do it this way, you have to:");
+define("S_SETUP0_3","Create tables for %s using the dump files located in <I>'chat/install/database'</I> dir;");
+define("S_SETUP0_4","Edit the <I>config.lib.php</I> file located in the <I>'chat/config'</I> dir to define %s settings;");
+define("S_SETUP0_5","Manually add required information for the Administrator into the registered users table (c_reg_users): your nick in the <I>username</I> column, MD5 hash of the actual password in the <I>password</I> column and the word 'admin' (without quotes) in the <I>perms</I> column. If you want to you can always add additional information in the other columns but it is not required;");
+define("S_SETUP0_5m","Sets three variables at the top of the 'chat/admin/mail4admin.lib.php' script.");
+define("S_SETUP0_6","To continue with the automated setup please click the button below.");
+define("S_SETUP0_7"," Go ");
+define("S_SETUP0_8","Before updating from an older version of %s you'd better clean the messages table (using the 'chat/admin.php' script of this old version for example).");
+
+// Settings for setup1.php file
+define("S_SETUP1_1","First step: Tables configuration");
+define("S_SETUP1_2","Database settings");
+define("S_SETUP1_3","Select your SQL server type:");
+define("S_SETUP1_4","Hostname of your SQL server:");
+define("S_SETUP1_5","Logical database name on that server:");
+define("S_SETUP1_6","(must exist)");
+define("S_SETUP1_7","Database user's login:");
+define("S_SETUP1_8","Database user's password:");
+define("S_SETUP1_9","Tables creation/update");
+define("S_SETUP1_10","What do you want this script to do ?");
+define("S_SETUP1_11","Create tables for %s");
+define("S_SETUP1_12","Update existing ones created for 0.12.0 or 0.12.1 releases");
+define("S_SETUP1_13","Do nothing, tables are already up to date (for 0.13.4 and 0.14.? releases)");
+define("S_SETUP1_14","Names of the tables<SUP>*</SUP> where...");
+define("S_SETUP1_15","messages will be stored:");
+define("S_SETUP1_16","registered users profiles will be stored:");
+define("S_SETUP1_17","logged users will be stored:");
+define("S_SETUP1_18","<SUP>*</SUP>Names you enter for tables must correspond to existing tables if you choose to<BR><B>update</B> them. If you want to <B>create new tables</B> the names must <B>not</B> be the<BR>same as those of existing tables!<BR>All of the fields must be completed, even if you don't want the script to do<BR>anything as the information will be necessary when creating the administrator<BR>profile later.");
+define("S_SETUP1_19","OK");
+define("S_SETUP1_20","Update existing ones created for 0.13.0 to 0.13.3 releases");
+define("S_SETUP1_21","banished users will be stored:");
+
+// Settings for setup2.php file
+define("S_SETUP2_1","Second step: Fine tuning options");
+define("S_SETUP2_2","Clean up settings for messages and usernames");
+define("S_SETUP2_3","Number of hours until messages are deleted:");
+define("S_SETUP2_4","Number of minutes until inactive users are deleted:");
+define("S_SETUP2_5","Number of days until inactive users are deleted&nbsp;&nbsp;&nbsp;<BR>from registration table (0 for never):");
+define("S_SETUP2_6","Default rooms to create");
+define("S_SETUP2_7","Separated with comma (,) no spaces.");
+define("S_SETUP2_8","Language settings");
+define("S_SETUP2_9","Allow multi-languages/charset support ?");
+define("S_SETUP2_10","Default language:");
+define("S_SETUP2_11","Security and restrictions");
+define("S_SETUP2_12","Show link for admin resources at startup screen ?");
+define("S_SETUP2_13","Show link that allows users to delete their own profile ?");
+define("S_SETUP2_15","Users can access...");
+define("S_SETUP2_16","...only the first room within the default ones");
+define("S_SETUP2_17","...all the rooms defined as default ones but not create a room");
+define("S_SETUP2_18","...all the rooms and create new ones");
+define("S_SETUP2_19","Messages enhancements");
+define("S_SETUP2_20","Use graphical smilies (see 'chat/lib/smilies.lib.php')?");
+define("S_SETUP2_21","Keep effect of bold, italic and underline tags in messages ?");
+define("S_SETUP2_22","Show discarded HTML tags ?");
+define("S_SETUP2_23","Default display seetings");
+define("S_SETUP2_24","Timezone offset in hours between the server time and your country:");
+define("S_SETUP2_25","Default message order:");
+define("S_SETUP2_26","last on top");
+define("S_SETUP2_27","last on bottom");
+define("S_SETUP2_28","Default number of messages to display:");
+define("S_SETUP2_29","Default timeout between refreshing messages frame (in seconds):");
+define("S_SETUP2_30","Show timestamp as default.");
+define("S_SETUP2_31","Show nofications of user entrance/exit as default.");
+define("S_SETUP2_36","Check for swear words (see 'chat/lib/swearing.lib.php') ?");
+define("S_SETUP2_41","Maximum number of messages that an user is allowed to export to an HTML file (0 for none -save command is disabled-, '*' for all available messages, or an integer to limit server charge)?");
+define("S_SETUP2_42","Enable the banishment feature?<BR>0 for no, else a positive number to define the number of banishment<BR>day(s) (2000000 for no end, 0.02 for ~half an hour....))");
+define("S_SETUP2_43","Registration of users");
+define("S_SETUP2_14","Require registration?");
+define("S_SETUP2_44","Generate a password and send it to the e-mail address the user enter in?<BR>This option require the <I>'mail()'</I> PHP function to be enabled, ensure you can use it with the administrator of your PHP server.<BR>Moreover, to have it running you must define 4 settings in the 'chat/lib/mail_validation.lib.php' script.");
+define("S_SETUP2_45","Your PHP configuration seems not to allow the use of the <I>'mail()'</I> function. So you can't choose to generate a password and send it to the user by e-mail.");
+define("S_SETUP2_46","publics:");
+define("S_SETUP2_47","privates:");
+define("S_SETUP2_48","Send a welcome message to an user logging into the chat (see 'chat/lib/welcome.lib.php') ?");
+
+// Settings for setup3.php file
+define("S_SETUP3_1","An administrator profile is already defined and only one<BR>administrator can exist. Please modify the fields<BR>below to update the existing profile.");
+define("S_SETUP3_2","Third step: Administrator registration");
+define("S_SETUP3_3","Fields with a <SPAN CLASS=error>*</SPAN> are required.");
+define("S_SETUP3_4","login (nick):");
+define("S_SETUP3_5","password:");
+define("S_SETUP3_6","firstname:");
+define("S_SETUP3_7","lastname:");
+define("S_SETUP3_8","spoken languages:");
+define("S_SETUP3_9","website:");
+define("S_SETUP3_10","e-mail address:");
+define("S_SETUP3_11","show e-mail by /whois command");
+define("S_SETUP3_12","Skip >>");
+define("S_SETUP3_13","You may modify your profile later by clicking on the edit<BR>profile link at the start page of %s.");
+define("S_SETUP3_14", "gender");
+define("S_SETUP3_15", "male");
+define("S_SETUP3_16", "female");
+
+// Settings for setup4.php file
+define("S_SETUP4_1","Fourth step: The config file");
+define("S_SETUP4_2","Here's the config file created according to the information you have entered.<BR><BR>Copy all of it, including the first and last lines, and then paste it into your favourite text-editor (Notepad, Vi...). After this you *must* enter the database users password on line 7 and save the file as <I>config.lib.php</I>.<BR><BR>Ensure that there is <B>neither empty line neither space character, neither before the php opening tag neither after the closing one</B>, then you can upload the config file to your server in the <I>config</I> dir (replace the existing one) and secure it (see the <I>install.txt</I> file in the <I>docs</I> dir for more information on this).<BR><BR>Don't forget to have a look at the <A HREF=\"#warn\">warning message</A> bellow.");
+define("S_SETUP4_3","Highlight all");
+define("S_SETUP4_4","Once you have completed the steps above, %s is near ready to run.<BR>");
+define("S_SETUP4_4m"," Just sets manually three variables at the top of the <I>'chat/admin/mail4admin.lib.php'</I><BR>script... and have some nice chat discussions.");
+define("S_SETUP4_5","After you have got %s up and running you should remove the<BR><I>setup.php</I> file and the whole <I>'chat/install'</I> dir from your server.");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/install/languages/french.setup.php 0.15.0/chat/install/languages/french.setup.php
--- 0.14.5/chat/install/languages/french.setup.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/install/languages/french.setup.php	2004-04-01 03:06:34.000000000 -0600
@@ -0,0 +1,129 @@
+<?php
+// Translation into french language for setup process
+// By Loc Chapeaux <loic-info@netcourrier.com>
+
+// extra header for charset
+$S_Charset = "iso-8859-1";
+$S_FontSize = "10";
+
+// Settings for setup.php file
+define("S_MAIN_1","Les tables seront cres/mises  jour sur un serveur local.");
+define("S_MAIN_2","Etape 1 acheve : les tables ont t cres/mises  jour.");
+define("S_MAIN_3","Etape 1 ignore conformment  votre choix.");
+define("S_MAIN_4","Certaines rponses sont manquantes ou invalides.");
+define("S_MAIN_5","Au moins l'un des dlais avant effacement des donnes est manquant.");
+define("S_MAIN_6","Il vous faut dfinir au moins un salon par dfaut.");
+define("S_MAIN_7","Un nom de salon ne peut contenir d'anti-slash (\\).");
+define("S_MAIN_8","Le dcalage entre l'heure serveur et votre fuseau horaire est manquant.");
+define("S_MAIN_9","Le nombre de messages  afficher par dfaut et/ou le dlai entre deux rafrachissements est(sont) manquants.");
+define("S_MAIN_11","Etape 2 acheve : vos choix concernant le fonctionnement du chat ont t enregistrs.");
+define("S_MAIN_12","Vous devez choisir un pseudo.");
+define("S_MAIN_13","Votre pseudo ne peu contenir ni espace, ni virgule, ni anti-slash (\\).");
+define("S_MAIN_14","Vous devez choisir un mot de passe.");
+define("S_MAIN_15","Le pseudo <I>%s</I> est dj rserv et vous n'avez pas entr le mot de passe qui lui est associ.");
+define("S_MAIN_16","Etape 3 acheve : votre profil a t enregistr comme celui de l'administrateur.");
+define("S_MAIN_17","Etape 4 ignore conformment  votre choix.");
+define("S_MAIN_18","- Installation");
+
+// Settings for setup0.php file
+define("S_SETUP0_1","Ce script a pour but de faciliter l'installation de %s sur votre site.");
+define("S_SETUP0_2","Mais tout cela peut aussi tre fait manuellement. Dans le cas o vous prfreriez cette mthode, il vous faudrait&nbsp;:");
+define("S_SETUP0_3","Crer les tables ncessaires  %s en vous aidant des \"dump files\" situes dans le sous-rpertoire <I>'chat/install/database'</I>&nbsp;;");
+define("S_SETUP0_4","Complter le fichier <I>config.lib.php</I> situ dans le sous-rpertoire <I>'chat/config'</I> afin de dfinir les paramtres de %s&nbsp;;");
+define("S_SETUP0_5","Crer le profil de l'administrateur dans la table des utilisateurs enregistrs (c_reg_users)&nbsp;: votre pseudo dans la colonne <I>username</I>, le MD5 hash de votre mot de passe dans la colonne <I>password</I> et le mot 'admin' (sans quotes) dans la colonne <I>perms</I>. Vous pouvez bien sr complter le reste de l'enregistrement mais ce n'est pas obligatoire ;");
+define("S_SETUP0_5m","Renseigner trois variables au dbut du script 'chat/admin/mail4admin.lib.php'.");
+define("S_SETUP0_6","Pour poursuivre l'installation avec ce script cliquez sur le bouton ci-dessous.");
+define("S_SETUP0_7"," Continuer ");
+define("S_SETUP0_8","Avant de mettre  jour une ancienne version de %s il est conseill de vider la table contenant les messages ( l'aide du script 'chat/admin.php' de cette ancienne version par exemple).");
+
+// Settings for setup1.php file
+define("S_SETUP1_1","Premire tape : Configuration des tables");
+define("S_SETUP1_2","Paramtres d'accs  la base");
+define("S_SETUP1_3","Slectionnez votre type de serveur SQL :");
+define("S_SETUP1_4","\"Hostname\" de votre serveur SQL :");
+define("S_SETUP1_5","Nom de la base sur ce serveur :");
+define("S_SETUP1_6","(elle doit exister)");
+define("S_SETUP1_7","Votre login pour accder  cette base :");
+define("S_SETUP1_8","Votre mot de passe pour accder  cette base :");
+define("S_SETUP1_9","Cration/mise  jour des tables");
+define("S_SETUP1_10","Que voulez-vous faire ?");
+define("S_SETUP1_11","Crer les tables ncessaires  %s");
+define("S_SETUP1_12","Mettre  jour des tables cres pour les versions 0.12.0 et 0.12.1");
+define("S_SETUP1_13","Ne rien faire, les tables sont dj  jour (pour les version 0.13.4 et 0.14.?)");
+define("S_SETUP1_14","Noms des tables<SUP>*</SUP> dans lesquelles seront stocks...");
+define("S_SETUP1_15","les messages :");
+define("S_SETUP1_16","les profils des utilisateurs enregistrs :");
+define("S_SETUP1_17","les utilisateurs connects :");
+define("S_SETUP1_18","<SUP>*</SUP>Les noms des tables que vous entrez doivent (ne doivent pas) correspondre  des tables existantes<BR>si vous avez choisi de les mettre  jour (de les crer).<BR>Tous ces champs doivent imprativement tre complts, mme si vous choisissez de ne rien faire<BR>faire par le script : les noms des tables seront ncessaires pour crer le profil de l'administrateur<BR>un peu plus tard.");
+define("S_SETUP1_19","OK");
+define("S_SETUP1_20","Mettre  jour des tables cres pour les versions 0.13.0  0.13.3");
+define("S_SETUP1_21","les utilisateurs bannis :");
+
+// Settings for setup2.php file
+define("S_SETUP2_1","Deuxime tape : configuration avance du chat");
+define("S_SETUP2_2","Dpoussirage des tables");
+define("S_SETUP2_3","Dlai en heure au bout duquel les messages seront effacs :");
+define("S_SETUP2_4","Dlai en minutes au bout duquel les utilisateurs inactifs&nbsp;&nbsp;&nbsp;<BR>seront dconnects :");
+define("S_SETUP2_5","Nombre de jours avant que les utilisateurs enregistrs&nbsp;&nbsp;&nbsp;<BR>inactifs voient leur profil dtruit (0 pour jamais) :");
+define("S_SETUP2_6","Salons par dfaut  crer");
+define("S_SETUP2_7","Sparez-les avec une virgule sans espace (,).");
+define("S_SETUP2_8","Paramtres linguistiques");
+define("S_SETUP2_9","Version multilingue ?");
+define("S_SETUP2_10","Langue par dfaut :");
+define("S_SETUP2_11","Scurisation et restrictions");
+define("S_SETUP2_12","Mettre un lien vers le script d'administration sur la page d'accueil ?");
+define("S_SETUP2_13","Permettre aux utilisateurs d'effacer leur profil ?");
+define("S_SETUP2_15","Un utilisateur aura accs...");
+define("S_SETUP2_16","... au premier des salons par dfaut seulement");
+define("S_SETUP2_17","...  tous les salons par dfaut mais ne pourra en crer un");
+define("S_SETUP2_18","...  tous les salons par dfaut et pourra de plus en crer");
+define("S_SETUP2_19","Options concernant les messages");
+define("S_SETUP2_20","Utiliser des smilies graphiques (voir 'chat/lib/smilies.lib.php') ?");
+define("S_SETUP2_21","Tenir compte des tags gras, italique et soulign dans les messages ?");
+define("S_SETUP2_22","Afficher les tags HTML en clair lorsqu'ils sont sans effet ?");
+define("S_SETUP2_23","Affichage par dfaut");
+define("S_SETUP2_24","Ecart en heures pleines entre le temps serveur et votre fuseau horaire :");
+define("S_SETUP2_25","Ordre d'affichage des messages par dfaut :");
+define("S_SETUP2_26","le dernier en haut de la page");
+define("S_SETUP2_27","le dernier en bas de la page");
+define("S_SETUP2_28","Nombre de messages  afficher par dfaut :");
+define("S_SETUP2_29","Dlai de rafrachissement du cadre contenant les messages par dfaut :");
+define("S_SETUP2_30","Par dfaut, afficher l'heure d'mission des messages.");
+define("S_SETUP2_31","Par dfaut, afficher les notifications d'entre/sortie d'utilisateurs.");
+define("S_SETUP2_36","Interdire certains mots (voir 'chat/lib/swearing.lib.php') ?");
+define("S_SETUP2_41","Nombre maximal de messages qu'un utilisateur pourra sauvegarder dans un fichier HTML (0 pour aucun -la commande save devient indisponible-, '*' pour tous les messages disponibles, ou bien une valeur quelconque pour limiter la charge du serveur) ?");
+define("S_SETUP2_42","Activer la fonctionnalit qui permet de bannir un utiliseur ?<BR>0 pour non, sinon un nombre strictement positif pour dfinir le nombre<BR>de jour de bannissement (2000000 pour indiquer qu'il n'a pas de terme,<BR>0.01 pour ~1/4 d'heure....)");
+define("S_SETUP2_43","Enregistrement des utilisateurs");
+define("S_SETUP2_14","Enregistrement des utilisateurs requis ?");
+define("S_SETUP2_44","Choisir l'option qui consiste  gnrer un mot de passe et  l'envoyer  l'adresse e-mail spcifie par l'utilisateur ?<BR>Cette option fait appel  la fonction <I>'mail()'</I> de PHP, assurez-vous d'y avoir accs auprs du gestionnaire de votre serveur PHP avant de la retenir.<BR>De plus son utilisation ncessite de votre part la dfinition de 4 paramtres au dbut du script 'chat/lib/mail_validation.lib.php'.");
+define("S_SETUP2_45","La configuration de votre serveur PHP ne semble pas permettre l'utilisation de la fonction <I>mail()</I>. En consquence vous ne pouvez choisir l'option qui consiste  gnrer un mot de passe et  l'envoyer  l'adresse e-mail spcifie par l'utilisateur.");
+define("S_SETUP2_46","publics :");
+define("S_SETUP2_47","privs :");
+define("S_SETUP2_48","Envoyer un message d'accueil  un utilisateur entrant sur le chat (voir 'chat/lib/welcome.lib.php') ?");
+
+// Settings for setup3.php file
+define("S_SETUP3_1","Un administrateur existe dj et il ne peut y en avoir<BR>qu'un. Si vous modifiez les champs ci-dessous, le profil<BR>existant sera mis  jour.");
+define("S_SETUP3_2","Troisime tape: Enregistrement du profil de l'administrateur");
+define("S_SETUP3_3","Les champs suivis d'une <SPAN CLASS=error>*</SPAN> doivent tre renseigns.");
+define("S_SETUP3_4","login (pseudo) :");
+define("S_SETUP3_5","mot de passe :");
+define("S_SETUP3_6","prnom :");
+define("S_SETUP3_7","nom :");
+define("S_SETUP3_8","langues parles :");
+define("S_SETUP3_9","site web :");
+define("S_SETUP3_10","addresse e-mail :");
+define("S_SETUP3_11","e-mail visible via la commande /whois");
+define("S_SETUP3_12","Ignorer >>");
+define("S_SETUP3_13","Au mme titre que n'importe quel utilisateur, vous pourrez<BR> modifier ce profil plus tard en cliquant sur le lien idoine<BR>situ sur la page d'accueil de %s.");
+define("S_SETUP3_14", "sexe");
+define("S_SETUP3_15", "masculin");
+define("S_SETUP3_16", "fminin");
+
+// Settings for setup4.php file
+define("S_SETUP4_1","Quatrime tape : Le fichier de configuration");
+define("S_SETUP4_2","Voici votre fichier de configuration personnalis.<BR><BR>Il vous suffit maintenant de copier entirement le contenu de la boite ci-dessous dans votre diteur de texte prfr (NotePad, Vi...), de complter le mot de passe pour l'accs  la base (ligne 7), et d'enregistrer ce fichier sous le nom <I>config.lib.php</I>.<BR><BR>Assurez-vous qu'il n'y a <B>ni ligne vide ni espace, ni avant le tag php ouvrant ni aprs le tag php fermant</B>, puis transfrez le fichier de configuration sur votre serveur dans le rpertoire <I>config</I> (crasez le fichier existant) et scurisez son accs (cf. le fichier <I>install.txt</I> dans le sous-rpertoire <I>docs</I> pour des informations plus compltes).<BR><BR>Enfin n'oubliez pas de lire l'<A HREF=\"#warn\">avertissement</A> plus bas.");
+define("S_SETUP4_3","Selectionner tout");
+define("S_SETUP4_4","Une fois tout ceci fait, %s sera presque prt  l'emploi.<BR>");
+define("S_SETUP4_4m","Il ne vous restera qu' renseigner trois variables au dbut du script<BR><I>'chat/admin/mail4admin.lib.php'</I>... et  vous lancer dans quelque<BR>passionnante discussion.");
+define("S_SETUP4_5","Aprs vous tre assur du bon fonctionnement de %s, il vous est<BR>conseill de dtruire le fichier <I>setup.php</I> ainsi que tout le sous-rpertoire<BR><I>'chat/install'</I> de votre serveur.");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/install/languages/italian.setup.php 0.15.0/chat/install/languages/italian.setup.php
--- 0.14.5/chat/install/languages/italian.setup.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/install/languages/italian.setup.php	2004-04-01 03:06:35.000000000 -0600
@@ -0,0 +1,130 @@
+<?php
+// Translation into Italian for setup process
+// By Bartolotta Gioachino <develoeprs@rockitalia.com> & Silvia M. Carrassi <silvia@ladysilvia.net>
+
+// extra header for charset
+$S_Charset = "iso-8859-1";
+$S_FontSize = "10";
+
+// Settings for setup.php file
+define("S_MAIN_1","Le tabelle saranno create/aggiornate su un server locale.");
+define("S_MAIN_2","Step 1 completato: Le tabelle sono state create/aggiornate.");
+define("S_MAIN_3","Step 1 saltato dall'utente.");
+define("S_MAIN_4","Trovati settaggi mancanti o invalidi.");
+define("S_MAIN_5","Manca almeno uno dei ritardi di pulizia delle tabelle.");
+define("S_MAIN_6","E' richiesta almeno un'area di Default.");
+define("S_MAIN_7","Il nome dell'area non pu contenere backslashes (\\).");
+define("S_MAIN_8","Manca l'offset della zona oraria.");
+define("S_MAIN_9","Il numero dei messaggi di default da mostrare e/o il timeout di default tra un aggiornamento e l'altro sono mancanti.");
+define("S_MAIN_11","Step 2 completato: le impostazioni sono state registrate.");
+define("S_MAIN_12","Dovete inserire un nome di login.");
+define("S_MAIN_13","Il tuo nome non pu contenere spazi, virgole o backslash (\\).");
+define("S_MAIN_14","Dovete inserire la vostra password.");
+define("S_MAIN_15","Il nick <I>%s</I>  gi registrato e la password che avete inserito  errata.");
+define("S_MAIN_16","Step 3 completato: il vostro profilo d'amministratore  stato registrato.");
+define("S_MAIN_17","Step 3 saltato dall'utente.");
+define("S_MAIN_18","- Setup");
+
+// Settings for setup0.php file
+define("S_SETUP0_1","Questo script vi permette di installare facilmente %s.");
+define("S_SETUP0_2","Potete fare questo anche manualmente se lo desiderate. Se preferite farlo in questo modo dovete:");
+define("S_SETUP0_3","Creare le tabelle per %s utilizzando i files dump allocati nella directory <I>'chat/install/database'</I>;");
+define("S_SETUP0_4","Editate il file <I>config.lib.php</I> allocato nella directory <I>'chat/config'</I>per definirne le impostazioni %s;");
+define("S_SETUP0_5","Aggiungete manualmente le informazioni richieste per l'Admin dentro la tabella degli utenti registrati (c_reg_users): Il vostro nick nella colonna <I>username</I>, MD5 hash della password attuale nella colonna <I>password</I> e la parola 'admin' (senza apici) nella colonna <I>perms</I>. Se volete potete aggiungere informazioni supplementari nelle altre colonne ma non  obbligatorio;");
+define("S_SETUP0_5m","Sets three variables at the top of the 'chat/admin/mail4admin.lib.php' script.");
+define("S_SETUP0_6","Per continuare con il setup automatizzato cliccate il pulsante sotto, grazie.");
+define("S_SETUP0_7"," Vai ");
+define("S_SETUP0_8","Prima di aggiornare da una versione pi vecchia di %s sarebbe meglio svuotare la tabella dei messaggi (utilizzando lo script 'chat/admin.php' della versione pi vecchia per esempio.).");
+
+// Settings for setup1.php file
+define("S_SETUP1_1","Primo step: Configurazione tabelle");
+define("S_SETUP1_2","Impostazioni Database");
+define("S_SETUP1_3","Scegliete il vostro gestore DBMS:");
+define("S_SETUP1_4","Nome host del vostro server SQL:");
+define("S_SETUP1_5","Nome del database sul server:");
+define("S_SETUP1_6","(deve esistere)");
+define("S_SETUP1_7","Nome utente del database:");
+define("S_SETUP1_8","Password utente del database:");
+define("S_SETUP1_9","Creazione/Aggiornamento Tabelle");
+define("S_SETUP1_10","Cosa vuoi che faccia questo script ?");
+define("S_SETUP1_11","Crea le tabelle per %s");
+define("S_SETUP1_12","Aggiorna le tabelle esistenti create per le versioni 0.12.0 o 0.12.1");
+define("S_SETUP1_13","Non fare nulla le tabelle sono gi aggiornate (per le versioni 0.13.4 e 0.14.?)");
+define("S_SETUP1_14","Nome delle tabelle<SUP>*</SUP> dove...");
+define("S_SETUP1_15","i messaggi saranno depositati:");
+define("S_SETUP1_16","i profili degli utenti registrati saranno depositati:");
+define("S_SETUP1_17","i dati degli utenti loggati saranno depositati:");
+define("S_SETUP1_18","<SUP>*</SUP>Nomi delle tabelle che inserisci devono corrispondere alle tabelle esistenti se scegli di <b><br>aggiornarle</B>. Se vuoi <b>creare delle nuove tabelle</b> il nome <B>non deve</B> essere lo<BR>stesso di quelle esistenti!<BR>Tutti i campi devono essere completati, anche se non vuoi che lo script faccia <BR>nulla poich tutte le informazioni saranno necessarie quando pi tardi dovrai creare <br>il profilo dell'amministratore.");
+define("S_SETUP1_19","OK");
+define("S_SETUP1_20","Aggiorna le tabelle esistenti create per le versioni dalla 0.13.0 alla 0.13.3");
+define("S_SETUP1_21","i dati degli utenti banditi (bannati) saranno depositati:");
+
+// Settings for setup2.php file
+define("S_SETUP2_1","Secondo step: Opzioni accurate");
+define("S_SETUP2_2","Pulisci impostazioni per messaggi e nomi utente");
+define("S_SETUP2_3","Numero di ore prima che i messaggi vengano cancellati:");
+define("S_SETUP2_4","Numero di minuti prima che gli utenti inattivi vengano cancellati:");
+define("S_SETUP2_5","Numero di giorni prima che gli utenti non attivi vengano cancellati &nbsp;&nbsp;&nbsp;<BR>dalla tabella di registrazione (0 per disabilitare):");
+define("S_SETUP2_6","Aree di default da creare");
+define("S_SETUP2_7","Separate da virgola (,) senza spazi.");
+define("S_SETUP2_8","Impostazioni di linguaggio");
+define("S_SETUP2_9","Consenti il supporto multi-languages/charset ?");
+define("S_SETUP2_10","Linguaggio di Default:");
+define("S_SETUP2_11","Sicurezza e restrizioni");
+define("S_SETUP2_12","Mostra link per le risorse d'amministrazione nella schermata di avvio ?");
+define("S_SETUP2_13","Mostra link che consente all'utente di cancellare il proprio profilo ?");
+define("S_SETUP2_15","L'utente pu accedere...");
+define("S_SETUP2_16","...solamente alla prima area all'interno di quelle di default");
+define("S_SETUP2_17","...tutte le aree definite come default ma non pu creare un'area");
+define("S_SETUP2_18","...tutte le aree e pu crearne nuove");
+define("S_SETUP2_19","Opzioni messaggi");
+define("S_SETUP2_20","Usa gli smilies grafici (vedi 'chat/lib/smilies.lib.php') ?");
+define("S_SETUP2_21","Possibile utilizzo dei tag per grassetto, corsivo e sottolineato nei messaggi ?");
+define("S_SETUP2_22","Mostra tags HTML scartati ?");
+define("S_SETUP2_23","Impostazioni di visualizzazione di Default");
+define("S_SETUP2_24","Differenza, in ore, fra l'ora del server e quella del posto in cui vi trovate.");
+define("S_SETUP2_25","Ordine di default dei messaggi:");
+define("S_SETUP2_26","Ultimo in cima");
+define("S_SETUP2_27","Ultimo in basso");
+define("S_SETUP2_28","Numero di default di messaggi da visualizzare:");
+define("S_SETUP2_29","Timeout di default durante l'aggiornamento del frame dei messaggi (in secondi):");
+define("S_SETUP2_30","Mostra data e ora per default.");
+define("S_SETUP2_31","Mostra di default notifiche sull'arrivo/uscita degli utenti.");
+define("S_SETUP2_36","Controlla per le parolacce (vedi 'chat/lib/swearing.lib.php') ?");
+define("S_SETUP2_41","Numero massimo di messaggi che a un utente  consentito esportare su un file HTML (0 per nessuno -Il comando save viene disabilitato-, '*' per tutti i messaggi disponibili, o un numero intero per limitare il carico del server)?");
+define("S_SETUP2_42","Abilita l'opzione di banditura?<BR>0 per no, altrimenti un numero positivo per definire il numero dei giorni di bandita<BR> (2000000 per infinito, 0.02 per mezz'ora....))");
+define("S_SETUP2_43","Registrazione degli utenti");
+define("S_SETUP2_14","Richiedi registrazione?");
+define("S_SETUP2_44","Genera una password e inviala all'indirizzo email che l'utente ha inserirto?<BR>Questa opzione richiede che la funzione PHP <I>'mail()'</I> sia abilitata , assicurati di poterla utilizzare chiedendo magari all'amministratore del tuo server.<BR>Inoltre per farla funzionare dovete definire 4 parametri nello script 'chat/lib/mail_validation.lib.php'.");
+define("S_SETUP2_45","La Vostra configurazione di PHP non sembra consentire l'uso della funzione <I>'mail()'</I>. Cos non puoi scegliere di generare una password e mandarla all'utente via e-mail.");
+define("S_SETUP2_46","pubbliche:");
+define("S_SETUP2_47","private:");
+define("S_SETUP2_48","Send a welcome message to an user logging into the chat (see 'chat/lib/welcome.lib.php') ?");
+
+// Settings for setup3.php file
+define("S_SETUP3_1","E' stato gi definito un profilo per l'Amministratore e soltanto<BR> un amministratore pu esistere. Per favore modificate i campi <BR>sotto per aggiornare il profilo esistente.");
+define("S_SETUP3_2","Terzo step: Registrazione Amministratore");
+define("S_SETUP3_3","I campi contrassegnati con un <SPAN CLASS=error>*</SPAN> sono obbligatori.");
+define("S_SETUP3_4","login (nick):");
+define("S_SETUP3_5","password:");
+define("S_SETUP3_6","Nome:");
+define("S_SETUP3_7","Cognome:");
+define("S_SETUP3_8","Lingue parlate:");
+define("S_SETUP3_9","Sito web:");
+define("S_SETUP3_10","Indirizzo e-mail:");
+define("S_SETUP3_11","Mostra e-mail tramite il comando /whois");
+define("S_SETUP3_12","Salta >>");
+define("S_SETUP3_13","Potrete modificare in seguito il Vostro profilo cliccando sul link per l'editing dei profili<BR>profile nella pagina di inizio di %s.");
+define("S_SETUP3_14", "Sesso");
+define("S_SETUP3_15", "maschio");
+define("S_SETUP3_16", "femmina");
+
+// Settings for setup4.php file
+define("S_SETUP4_1","Quarto step: Il file di configurazione");
+define("S_SETUP4_2","Qui c' il file di configurazione creato in base alle informazioni che avete inserito.<BR><BR>Copiatelo tutto, inclusa la prima e l'ultima linea, poi incollatele nel vostro editor di testo preferito (Notepad, Vi...). Dopo *dovete* inserire la password del database nella riga 7 e salvate il file come <I>config.lib.php</I>.<BR><BR>Assicuratevi che non ci sia <B>nessuna linea vuota nessun carattere di spazio, niente prima del tag di apertura del php niente dopo averlo chiuso</B>, poi potrete uploadare il file di configurazione sul Vostro server nella directory <I>config</I> (rimpiazza quello esistente) e rendetelo sicuro (vedi il file <I>install.txt</I> nella directory <I>docs</I> per maggiori informazioni a riguardo).<BR><BR>Non dimenticate di guardare <A HREF=\"#warn\">il mesaggio di avviso</A> riportato sotto.");
+define("S_SETUP4_3","Seleziona tutto");
+//define("S_SETUP4_4","Appena avrete completato i passi sopra citati, %s  pronta a partire.");
+define("S_SETUP4_4","Once you have completed the steps above, %s is near ready to run.<BR>");
+define("S_SETUP4_4m"," Just sets manually three variables at the top of the <I>'chat/admin/mail4admin.lib.php'</I><BR>script... and have some nice chat discussions.");
+define("S_SETUP4_5","Dopo aver messo in funzione %s dovreste rimuovere il file <BR><I>setup.php</I> e tutta la directory <I>'chat/install'</I> dal Vostro server.");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/install/languages/languages.setup.php 0.15.0/chat/install/languages/languages.setup.php
--- 0.14.5/chat/install/languages/languages.setup.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/install/languages/languages.setup.php	2004-04-01 03:06:35.000000000 -0600
@@ -0,0 +1,52 @@
+<?php
+if (!isset($Lang) || !file_exists("install/languages/${Lang}.setup.php"))
+{
+
+	// Available languages
+	$AvailableLanguages = array(
+		"cs|czech"				=>	"czech",
+		"en([-_][[:alpha:]]{2})?|english"	=>	"english",
+		"fr([-_][[:alpha:]]{2})?|french"	=>	"french",
+		"it|italian"			=>	"italian",
+		"es[-_]ar"				=>	"argentinian_spanish",
+		"es([-_][[:alpha:]]{2})?|spanish"	=>	"spanish",
+		"zh([-_][[:alpha:]]{2})?|chinese"	=>	"chinese_simplified"
+	);
+
+	function Detect($Str,$From)
+	{
+		global $AvailableLanguages;
+		global $Lang;
+
+		$NotFound = true;
+		reset($AvailableLanguages);
+		while(list($key, $name) = each($AvailableLanguages))
+		{
+			if (($From == 1 && eregi("^".$key."$",$Str)) || ($From == 2 && eregi("(\(|\[|;[[:space:]])".$key."(;|\]|\))",$Str)))
+			{
+				$Lang = $AvailableLanguages[$key];
+				break;
+			};
+		};
+	};
+
+	if (!isset($HTTP_ACCEPT_LANGUAGE))
+		$HTTP_ACCEPT_LANGUAGE = getenv("HTTP_ACCEPT_LANGUAGE");
+	if (!isset($HTTP_USER_AGENT))
+		$HTTP_USER_AGENT = getenv("HTTP_USER_AGENT");
+
+	if ($HTTP_ACCEPT_LANGUAGE != "")
+	{	
+		$Accepted = explode(",", $HTTP_ACCEPT_LANGUAGE);
+		Detect($Accepted[0],1);
+	}
+	elseif ($HTTP_USER_AGENT != "")
+	{	
+		Detect($HTTP_USER_AGENT,2);
+	};
+
+	//if no language detected set default one
+	if (!isset($Lang)) $Lang = "english";
+
+};
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/install/languages/spanish.setup.php 0.15.0/chat/install/languages/spanish.setup.php
--- 0.14.5/chat/install/languages/spanish.setup.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/install/languages/spanish.setup.php	2004-04-01 03:06:35.000000000 -0600
@@ -0,0 +1,129 @@
+<?php
+// Spanish translation for the setup process
+// By Pedro Garassino <pedro@dkanontower.com> && Len Del Ro <leon@webmaster.com.mx>
+
+// extra header for charset
+$S_Charset = "iso-8859-1";
+$S_FontSize = "10";
+
+// Settings for setup.php file
+define("S_MAIN_1","Las tablas sern creadas/subidas al servidor local.");
+define("S_MAIN_2","Paso 1 completado: las tablas han sido creadas/subidas.");
+define("S_MAIN_3","Paso 1 omitido por el usuario.");
+define("S_MAIN_4","Encuentra ajuste(s) perdido(s) o invlido(s).");
+define("S_MAIN_5","Al menos uno de los ajustes del tiempo de depuracin est perdido.");
+define("S_MAIN_6","Al menos debe haber una sala.");
+define("S_MAIN_7","El nombre de la sala no puede contener diagonales invertidas o barras (\\).");
+define("S_MAIN_8","El ajuste de zona horaria se ha perdido.");
+define("S_MAIN_9","El nmero de mensajes para mostrar y/o el timeout por defecto entre cada actualizacin se ha perdido.");
+define("S_MAIN_11","Paso 2 completado: los ajustes finos han sido registrados.");
+define("S_MAIN_12","Usted debe ingresar su nombre de usuario.");
+define("S_MAIN_13","Su nombre de usuario no puede tener espacios, comas o barras (\\).");
+define("S_MAIN_14","Usted debe ingresar su clave.");
+define("S_MAIN_15","El alias <I>%s</I> ya ha sido registrado y la clave es incorrecta.");
+define("S_MAIN_16","Paso 3 completado: Su perfil como administrador ha sido registrado.");
+define("S_MAIN_17","Paso 3 omitido por el usuario.");
+define("S_MAIN_18","- Ajuste");
+
+// Settings for setup0.php file
+define("S_SETUP0_1","Este script permite una fcil instalacin %s.");
+define("S_SETUP0_2","Usted puede hacerlo en forma manual, si lo desea. Si usted prefiere hacerlo, entonces debe:");
+define("S_SETUP0_3","Crear las tablas para %s utilizando los archivos dump localizados en el directorio <I>'chat/install/database'</I>;");
+define("S_SETUP0_4","Editar el archivo <I>config.lib.php</I> localizado en el directorio <I>'chat/config'</I> para definir los ajustes a %s;");
+define("S_SETUP0_5","Manualmente se requiere informacin adicional para el Administrador en la tabla de usuarios registrados (c_reg_users),<BR>su alias en la columna <I>username</I>,<BR>el MD5 hash de su clave en la columna <I>password</I><BR>y la palabra 'admin' (sin comillas) en la columna <I>perms</I>.<BR>Si usted quiere, puede aadir informacin adicional en otras columnas pero esto no es requerido;");
+define("S_SETUP0_5m","Ajustar tres variables en la parte de arriba de 'chat/admin/mail4admin.lib.php' script.");
+define("S_SETUP0_6","Para continuar con el setup automtico haga click en el botn de abajo.");
+define("S_SETUP0_7"," Ir ");
+define("S_SETUP0_8","Antes de actualizar una versin anterior de %s usted debe vaciar la tabla de mensajes (utilizando el script 'chat/admin.php' de la versin anterior).");
+
+// Settings for setup1.php file
+define("S_SETUP1_1","Primer paso: Configuracin de tablas");
+define("S_SETUP1_2","Ajuste de la base de datos");
+define("S_SETUP1_3","Seleccione su tipo de servidor SQL:");
+define("S_SETUP1_4","Nombre del servidor SQL:");
+define("S_SETUP1_5","Nombre de la base de datos en el servidor:");
+define("S_SETUP1_6","(ya debe existir)");
+define("S_SETUP1_7","Nombre de usuario de la base de datos:");
+define("S_SETUP1_8","Contrasea del usuario de la base de datos:");
+define("S_SETUP1_9","Creacin/actualizacin de tablas");
+define("S_SETUP1_10","Qu quiere usted que haga este script?");
+define("S_SETUP1_11","Crear las tablas para %s");
+define("S_SETUP1_12","Actualizar las tablas existentes creadas para las versiones 0.12.0 or 0.12.1");
+define("S_SETUP1_13","Nada, las tablas han ya sido creadas (para versiones 0.13.4 y 0.14.?)");
+define("S_SETUP1_14","Nombre de las tablas<SUP>*</SUP> donde...");
+define("S_SETUP1_15","los mensajes sern almacenados:");
+define("S_SETUP1_16","los perfiles de los usuarios registrados sern almacenados:");
+define("S_SETUP1_17","los usuarios activos sern almacenados:");
+define("S_SETUP1_18","<SUP>*</SUP>Los nombres que usted asigna a las tablas deben corresponder a los existentes si usted elige <B>actualizar</B>.<BR>Si usted quiere <B>crear nuevas tablas</B> los nombres <B>no</B> deben ser los mismos que los de las tablas existentes!<BR>Todos los campos deben ser completados, si usted no quiere que el script lo haga ser necesario hacerlo cuando cree al Administrador ms adelante.");
+define("S_SETUP1_19","OK");
+define("S_SETUP1_20","Actualizar las tablas existentes creadas para versiones 0.13.0 to 0.13.3");
+define("S_SETUP1_21","los usuarios expulsados sern almacenados en:");
+
+// Settings for setup2.php file
+define("S_SETUP2_1","Segundo paso: Opciones de ajustes finos");
+define("S_SETUP2_2","Quitar los ajustes para mensajes y usuarios");
+define("S_SETUP2_3","Nmero de horas hasta que los mensajes son borrados:");
+define("S_SETUP2_4","Nmero de minutos hasta que los usuarios inactivos son borrados:");
+define("S_SETUP2_5","Nmero de das hasta que los usuarios inactivos son borrados&nbsp;&nbsp;&nbsp;<BR>de la tabla de registro (0 para nunca):");
+define("S_SETUP2_6","Salas a crear por defecto");
+define("S_SETUP2_7","Separados con coma (,) sin espacios.");
+define("S_SETUP2_8","Ajuste de idioma");
+define("S_SETUP2_9","Permitir soporte de caracteres multi-idiomas?");
+define("S_SETUP2_10","Idioma por defecto:");
+define("S_SETUP2_11","Seguridad y restricciones");
+define("S_SETUP2_12","Mostrar las ligas para administracin de recursos en la pantalla incial?");
+define("S_SETUP2_13","Mostrar las ligas que permiten a los usuarios borrar su perfil?");
+define("S_SETUP2_14","Requieren registro?");
+define("S_SETUP2_15","Los usuarios pueden acceder...");
+define("S_SETUP2_16","... solamente a la primera sala con los valores por defecto");
+define("S_SETUP2_17","... a todas las salas definidas por defecto, pero no crear una sala");
+define("S_SETUP2_18","... a todas las salas y con la posiblidad de crear nuevas");
+define("S_SETUP2_19","Enriquecimiento de mensajes");
+define("S_SETUP2_20","Utilizar grficos sonrisas (ver 'chat/lib/smilies.lib.php')?");
+define("S_SETUP2_21","Conservar el efecto de negrita, itlica y subrayado en mensajes?");
+define("S_SETUP2_22","Mostrar etiquetas HTML descartadas?");
+define("S_SETUP2_23","Mostrar ajustes por defecto");
+define("S_SETUP2_24","Desplazamiento de Zona Horaria (en horas) entre el tiempo de su servidor y su localidad:");
+define("S_SETUP2_25","Orden por defecto de los mensajes:");
+define("S_SETUP2_26","el ms reciente arriba");
+define("S_SETUP2_27","el ms reciente abajo");
+define("S_SETUP2_28","Nmero de mensajes por defecto a mostrar:");
+define("S_SETUP2_29","Intervalo  de tiempo de actualizacin del marco de mensajes (en segundos):");
+define("S_SETUP2_30","Mostrar sello de hora por defecto.");
+define("S_SETUP2_31","Mostrar avisos de usuario entrante/salida por defecto.");
+define("S_SETUP2_36","Verificar palabras obscenas (ver 'chat/lib/swearing.lib.php') ?");
+define("S_SETUP2_41","Nmero mximo de mensajes que se le permite exportar a un usuario a un archivo HTML (0 para no -el comando est desactivado-, '*' para todos los mensajes posibles, o un lmite para la carga del servidor)");
+define("S_SETUP2_42","Activar la posibilidad de expulsar?<BR>0 para no, un nmero positivo para definir el nmero de da(s) (2000000 para nunca, 0.02 para media hora....)");
+define("S_SETUP2_43","Registro de usuarios");
+define("S_SETUP2_44","Generar una clave y enviarla a la direccin de e-mail del usuario?<BR>Esta opcin requiere que la funcin PHP <I>'mail()'</I> est activada, pregunte al administrador del servidor si puede emplearla.<BR>Sin embargo, para tenerla en operacin usted debe definir 4 ajustes en el script 'chat/lib/mail_validation.lib.php'.");
+define("S_SETUP2_45","Su configuracin de PHP parece no permitir el uso de la funcin <I>'mail()'</I>. De modo que no puede elegir generar una clave y enviarla al usuario por e-mail.");
+define("S_SETUP2_46","pblicos:");
+define("S_SETUP2_47","privados:");
+define("S_SETUP2_48","Enviar un mensaje de bienvenida al usuario que ingresa al chat (ver 'chat/lib/welcome.lib.php') ?");
+
+// Settings for setup3.php file
+define("S_SETUP3_1","El perfil del Administrador est definido, y slamente<BR>puede haber un administrador. Por favor modifique los campos de abajo para actualizar el perfil existente.");
+define("S_SETUP3_2","Tercer paso: Registro del administrador");
+define("S_SETUP3_3","Los campos con <SPAN CLASS=error>*</SPAN> son obligatorios.");
+define("S_SETUP3_4","login (alias):");
+define("S_SETUP3_5","clave:");
+define("S_SETUP3_6","Nombre:");
+define("S_SETUP3_7","Apellido:");
+define("S_SETUP3_8","idiomas que habla:");
+define("S_SETUP3_9","sitio web:");
+define("S_SETUP3_10","direccin de e-mail:");
+define("S_SETUP3_11","mostrar e-mail con el comando /whois");
+define("S_SETUP3_12","Omitir >>");
+define("S_SETUP3_13","Puede modificar su perfil posteriormente haciendo click en la liga editar perfil en la pgina de %s.");
+define("S_SETUP3_14", "Gnero");
+define("S_SETUP3_15", "masculino");
+define("S_SETUP3_16", "femenino");
+
+// Settings for setup4.php file
+define("S_SETUP4_1","Cuarto paso: El archivo config");
+define("S_SETUP4_2","Aqu est el archivo config, conforme a la informacin que usted ha ingresado.<BR><BR>Cpielo todo, incluyendo las primeras y ltimas lneas, luego pguelo en su editor de texto favorito (Notepad, Vi...).<BR>Despus, usted *debe* poner la clave del usuario de su base de datos en la linea 7 y guardar el archivo como <I>config.lib.php</I>.<BR><BR>Asegrese de que no haya <B>ni lineas en blanco, ni espacios entre caracteres, ni antes de la apertura de la etiqueta php, ni despus de su cierre</B>, entonces podr cargar el archivo config en el directorio <I>config</I> de su servidor (y reemplazar el existente) y asegurarlo (para mayor informacin, ver <I>install.txt</I> en el directorio <I>docs</I>).<BR><BR>No olvide mirar el <A HREF=\"#warn\">mensaje de advertencia</A> ms abajo.");
+define("S_SETUP4_3","Seleccionar todo");
+define("S_SETUP4_4","Una vez que usted ha completado los pasos de arriba, %s est casi listo para correr.<BR>");
+define("S_SETUP4_4m"," Ajuste manualmente las tres variables en la parte superior del script <I>'chat/admin/mail4admin.lib.php'</I><BR>... y que tenga algunas buenas discusiones en el chat.");
+define("S_SETUP4_5","Despus de tener el %s instalado y corriendo usted puede, por seguridad, remover de su servidor el archivo <I>setup.php</I> y el directorio <I>'chat/install'</I>.");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/install/preconfig.php 0.15.0/chat/install/preconfig.php
--- 0.14.5/chat/install/preconfig.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/install/preconfig.php	2004-04-01 03:06:29.000000000 -0600
@@ -0,0 +1,63 @@
+<?php
+
+echo("<?php\n");
+?>
+// Database settings
+define("C_DB_TYPE", '<?php echo(stripslashes($C_DB_TYPE)); ?>');
+define("C_DB_HOST", '<?php echo(stripslashes($C_DB_HOST)); ?>');
+define("C_DB_NAME", '<?php echo(stripslashes($C_DB_NAME)); ?>');
+define("C_DB_USER", '<?php echo(stripslashes($C_DB_USER)); ?>');
+define("C_DB_PASS", '*** Complete here ***');
+define("C_MSG_TBL", '<?php echo(stripslashes($C_MSG_TBL)); ?>');
+define("C_USR_TBL", '<?php echo(stripslashes($C_USR_TBL)); ?>');
+define("C_REG_TBL", '<?php echo(stripslashes($C_REG_TBL)); ?>');
+define("C_BAN_TBL", '<?php echo(stripslashes($C_BAN_TBL)); ?>');
+
+// Cleaning settings for messages and usernames
+define("C_MSG_DEL", '<?php echo($C_MSG_DEL); ?>');
+define("C_USR_DEL", '<?php echo($C_USR_DEL); ?>');
+define("C_REG_DEL", '<?php echo($C_REG_DEL); ?>');
+
+// Proposed rooms
+<?php
+$R0 = "'".str_replace(",","', '",$C_PUB_CHAT_ROOMS)."'";
+?>
+$DefaultChatRooms = array(<?php echo($R0); ?>);
+<?php
+$R0 = ($C_PRIV_CHAT_ROOMS != "" ? "'".str_replace(",","', '",$C_PRIV_CHAT_ROOMS)."'" : "");
+?>
+$DefaultPrivateRooms = array(<?php echo($R0); ?>);
+
+// Language settings
+define("C_LANGUAGE", '<?php echo($C_LANGUAGE); ?>');
+define("C_MULTI_LANG", '<?php echo($C_MULTI_LANG); ?>');
+
+// Registration of users
+define("C_REQUIRE_REGISTER", '<?php echo($C_REQUIRE_REGISTER); ?>');
+define("C_EMAIL_PASWD", '<?php echo($C_EMAIL_PASWD); ?>');
+
+// Security and restriction settings
+define("C_SHOW_ADMIN", '<?php echo($C_SHOW_ADMIN); ?>');
+define("C_SHOW_DEL_PROF", '<?php echo($C_SHOW_DEL_PROF); ?>');
+define("C_VERSION", '<?php echo($C_VERSION); ?>');
+define("C_BANISH", '<?php echo($C_BANISH); ?>');
+define("C_NO_SWEAR", '<?php echo($C_NO_SWEAR); ?>');
+define("C_SAVE", '<?php echo($C_SAVE); ?>');
+
+// Messages enhancements
+define("C_USE_SMILIES", '<?php echo($C_USE_SMILIES); ?>');
+define("C_HTML_TAGS_KEEP", '<?php echo($C_HTML_TAGS_KEEP); ?>');
+define("C_HTML_TAGS_SHOW", '<?php echo($C_HTML_TAGS_SHOW); ?>');
+
+// Default display seetings
+define("C_TMZ_OFFSET", '<?php echo($C_TMZ_OFFSET); ?>');
+define("C_MSG_ORDER", '<?php echo($C_MSG_ORDER); ?>');
+define("C_MSG_NB", '<?php echo($C_MSG_NB); ?>');
+define("C_MSG_REFRESH", '<?php echo($C_MSG_REFRESH); ?>');
+define("C_SHOW_TIMESTAMP", '<?php echo($C_SHOW_TIMESTAMP); ?>');
+define("C_NOTIFY", '<?php echo($C_NOTIFY); ?>');
+define("C_WELCOME", '<?php echo($C_WELCOME); ?>');
+<?php
+echo("?>");
+
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/install/setup0.php 0.15.0/chat/install/setup0.php
--- 0.14.5/chat/install/setup0.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/install/setup0.php	2004-04-01 03:06:30.000000000 -0600
@@ -0,0 +1,49 @@
+<?php
+
+?>
+<P>
+	<A HREF="<?php echo($From."?Lang=argentinian_spanish"); ?>"><IMG SRC="localization/argentinian_spanish/flag.gif" BORDER=0 WIDTH=24 HEIGHT=16 ALT="Espaol para Argentina"></A>&nbsp;&nbsp;&nbsp;
+	<A HREF="<?php echo($From."?Lang=czech"); ?>"><IMG SRC="localization/czech/flag.gif" BORDER=0 WIDTH=24 HEIGHT=16 ALT="Czech"></A>&nbsp;&nbsp;&nbsp;
+	<A HREF="<?php echo($From."?Lang=english"); ?>"><IMG SRC="localization/english/flag.gif" BORDER=0 WIDTH=24 HEIGHT=16 ALT="English"></A>&nbsp;&nbsp;&nbsp;
+	<A HREF="<?php echo($From."?Lang=french"); ?>"><IMG SRC="localization/french/flag.gif" BORDER=0 WIDTH=24 HEIGHT=16 ALT="Franais"></A>&nbsp;&nbsp;&nbsp;
+	<A HREF="<?php echo($From."?Lang=italian"); ?>"><IMG SRC="localization/italian/flag.gif" BORDER=0 WIDTH=24 HEIGHT=16 ALT="Italiano"></A>&nbsp;&nbsp;&nbsp;
+	<A HREF="<?php echo($From."?Lang=spanish"); ?>"><IMG SRC="localization/spanish/flag.gif" BORDER=0 WIDTH=24 HEIGHT=16 ALT="Espaol"></A>&nbsp;&nbsp;&nbsp;
+	<A HREF="<?php echo($From."?Lang=chinese_simplified"); ?>"><IMG SRC="localization/chinese_simplified/flag.gif" BORDER=0 WIDTH=24 HEIGHT=16 ALT="Chinese simplified"></A>
+</P>
+
+<P CLASS=whois>
+	<?php echo(sprintf(S_SETUP0_1, APP_NAME)); ?>
+</P>
+</CENTER>
+<OL STYLE="color: #FFFFFF">
+	<?php echo(S_SETUP0_2); ?><BR><BR>
+	<LI><?php echo(sprintf(S_SETUP0_3, APP_NAME)); ?>
+	<BR><BR>
+	<LI><?php echo(sprintf(S_SETUP0_4, APP_NAME)); ?>
+	<BR><BR>
+	<LI><?php echo(S_SETUP0_5); ?>
+	<?php
+	if (!@mail('','',''))
+	{
+		?>
+		<BR><BR>
+		<LI><?php echo(S_SETUP0_5m); ?>
+		<?php
+	};
+	?>
+</OL>
+<BR>
+<CENTER>
+<P CLASS="error">
+	<?php echo(sprintf(S_SETUP0_8, APP_NAME)); ?>
+</P><BR>
+<P CLASS=whois>
+	<?php echo(S_SETUP0_6); ?>
+</P>
+<FORM ACTION="<?php echo($From."?Lang=${Lang}"); ?>" METHOD="POST" AUTOCOMPLETE="OFF" NAME="Params">
+	<INPUT TYPE=hidden NAME="next" value="1">
+	<INPUT TYPE="submit" VALUE="<?php echo(S_SETUP0_7); ?>">
+</FORM>
+<?php
+
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/install/setup1.php 0.15.0/chat/install/setup1.php
--- 0.14.5/chat/install/setup1.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/install/setup1.php	2004-04-01 03:06:30.000000000 -0600
@@ -0,0 +1,117 @@
+<?php
+require("./config/config.lib.php");
+
+$C_DB_TYPE = (isset($C_DB_TYPE) ? $C_DB_TYPE : C_DB_TYPE);
+$C_DB_HOST = (isset($C_DB_HOST) ? htmlspecialchars(stripslashes($C_DB_HOST)) : C_DB_HOST);
+$C_DB_NAME = (isset($C_DB_NAME) ? htmlspecialchars(stripslashes($C_DB_NAME)) : C_DB_NAME);
+$C_DB_USER = (isset($C_DB_USER) ? htmlspecialchars(stripslashes($C_DB_USER)) : C_DB_USER);
+if (!isset($Create)) $Create = 3;
+$C_MSG_TBL = (isset($C_MSG_TBL) ? htmlspecialchars(stripslashes($C_MSG_TBL)) : C_MSG_TBL);
+$C_REG_TBL = (isset($C_REG_TBL) ? htmlspecialchars(stripslashes($C_REG_TBL)) : C_REG_TBL);
+$C_USR_TBL = (isset($C_USR_TBL) ? htmlspecialchars(stripslashes($C_USR_TBL)) : C_USR_TBL);
+$C_BAN_TBL = (isset($C_BAN_TBL) ? htmlspecialchars(stripslashes($C_BAN_TBL)) : C_BAN_TBL);
+?>
+
+<P CLASS=title><?php echo(S_SETUP1_1); ?></P>
+
+<FORM ACTION="<?php echo($From."?Lang=${Lang}"); ?>" METHOD="POST" AUTOCOMPLETE="OFF" NAME="Params">
+<INPUT type=hidden name="Form_Send" value="1">
+<TABLE BORDER=0 CELLPADDING=3 CLASS=table>
+<TR>
+	<TD ALIGN=CENTER>
+		<TABLE BORDER=0>
+		<TR>
+			<TH COLSPAN=2 CLASS=tabtitle><?php echo(S_SETUP1_2); ?></TH>
+		</TR>
+		<TR>
+			<TD ALIGN=RIGHT VALIGN=TOP NOWRAP><?php echo(S_SETUP1_3); ?></TD>
+			<TD VALIGN=TOP>
+				<INPUT TYPE="radio" NAME="C_DB_TYPE" VALUE="mysql" <?php if ($C_DB_TYPE == "mysql") echo("CHECKED"); ?>> MySQL<BR>
+				<INPUT TYPE="radio" NAME="C_DB_TYPE" VALUE="pgsql" <?php if ($C_DB_TYPE == "pgsql") echo("CHECKED"); ?>> PostgreSQL<BR>
+				<INPUT TYPE="radio" NAME="C_DB_TYPE" VALUE="odbc" <?php if ($C_DB_TYPE == "odbc") echo("CHECKED"); ?> DISABLED> ODBC
+			</TD>
+		</TR>
+		<TR>
+			<TD ALIGN=RIGHT VALIGN=TOP NOWRAP><?php echo(S_SETUP1_4); ?></TD>
+			<TD VALIGN=TOP>
+				<INPUT TYPE=text NAME="C_DB_HOST" SIZE=11 MAXLENGTH=30 VALUE="<?php echo($C_DB_HOST); ?>">
+			</TD>
+		</TR>
+		<TR>
+			<TD ALIGN=RIGHT VALIGN=TOP NOWRAP><?php echo(S_SETUP1_5); ?></TD>
+			<TD VALIGN=TOP>
+				<INPUT TYPE=text NAME="C_DB_NAME" SIZE=11 MAXLENGTH=30 VALUE="<?php echo($C_DB_NAME); ?>">
+				&nbsp;<?php echo(S_SETUP1_6); ?>
+			</TD>
+		</TR>
+		<TR>
+			<TD ALIGN=RIGHT VALIGN=TOP NOWRAP><?php echo(S_SETUP1_7); ?></TD>
+			<TD VALIGN=TOP>
+				<INPUT TYPE=text NAME="C_DB_USER" SIZE=11 MAXLENGTH=30 VALUE="<?php echo($C_DB_USER); ?>">
+			</TD>
+		</TR>
+		<TR>
+			<TD ALIGN=RIGHT VALIGN=TOP NOWRAP><?php echo(S_SETUP1_8); ?></TD>
+			<TD VALIGN=TOP>
+				<INPUT TYPE=password NAME="C_DB_PASS" SIZE=11 MAXLENGTH=30>
+			</TD>
+		</TR>
+		<TR><TD>&nbsp;</TD></TR>
+		<TR>
+			<TH COLSPAN=2 CLASS=tabtitle><?php echo(S_SETUP1_9); ?></TH>
+		<TR>
+		<TR>
+			<TD ALIGN=LEFT COLSPAN=2 NOWRAP><?php echo(S_SETUP1_10); ?><TD>
+		</TR>
+		<TR>
+			<TD ALIGN=LEFT VALIGN=TOP COLSPAN=2 NOWRAP>
+				&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="radio" NAME="Create" VALUE="3" <?php if ($Create == 3) echo("CHECKED"); ?>> <?php echo(sprintf(S_SETUP1_11, APP_NAME)); ?><BR>
+				&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="radio" NAME="Create" VALUE="2" <?php if ($Create == 2) echo("CHECKED"); ?>> <?php echo(S_SETUP1_12); ?><BR>
+				&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="radio" NAME="Create" VALUE="1" <?php if ($Create == 1) echo("CHECKED"); ?>> <?php echo(S_SETUP1_20); ?><BR>
+				&nbsp;&nbsp;&nbsp;&nbsp;<INPUT TYPE="radio" NAME="Create" VALUE="0" <?php if ($Create == 0) echo("CHECKED"); ?>> <?php echo(S_SETUP1_13); ?><BR>
+			</TD>
+		</TR>
+		<TR><TD>&nbsp;</TD></TR>
+		<TR>
+			<TH COLSPAN=2><?php echo(S_SETUP1_14); ?><TH>
+		</TR>
+		</TABLE>
+		<TABLE BORDER=0>
+		<TR>
+			<TD VALIGN=TOP NOWRAP>&nbsp;&nbsp;-&nbsp;<?php echo(S_SETUP1_15); ?></TD>
+			<TD VALIGN=TOP>
+				<INPUT TYPE=text NAME="C_MSG_TBL" SIZE=11 MAXLENGTH=16 VALUE="<?php echo($C_MSG_TBL); ?>">
+			</TD>
+		</TR>
+		<TR>
+			<TD VALIGN=TOP NOWRAP>&nbsp;&nbsp;-&nbsp;<?php echo(S_SETUP1_16); ?></TD>
+			<TD VALIGN=TOP>
+				<INPUT TYPE=text NAME="C_REG_TBL" SIZE=11 MAXLENGTH=16 VALUE="<?php echo($C_REG_TBL); ?>">
+			</TD>
+		</TR>
+		<TR>
+			<TD VALIGN=TOP NOWRAP>&nbsp;&nbsp;-&nbsp;<?php echo(S_SETUP1_17); ?></TD>
+			<TD VALIGN=TOP>
+				<INPUT TYPE=text NAME="C_USR_TBL" SIZE=11 MAXLENGTH=16 VALUE="<?php echo($C_USR_TBL); ?>">
+			</TD>
+		</TR>
+		<TR>
+			<TD VALIGN=TOP NOWRAP>&nbsp;&nbsp;-&nbsp;<?php echo(S_SETUP1_21); ?></TD>
+			<TD VALIGN=TOP>
+				<INPUT TYPE=text NAME="C_BAN_TBL" SIZE=11 MAXLENGTH=16 VALUE="<?php echo($C_BAN_TBL); ?>">
+			</TD>
+		</TR>
+		<TR>
+			<TD COLSPAN=2 CLASS=small>
+				<FONT COLOR="#000000"><?php echo(S_SETUP1_18); ?></FONT>
+			<TD>
+		</TR>
+		</TABLE>
+		<P>
+		<INPUT TYPE="submit" VALUE="<?php echo(S_SETUP1_19); ?>">
+	</TD>
+</TR>
+</TABLE>
+<?php
+
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/install/setup2.php 0.15.0/chat/install/setup2.php
--- 0.14.5/chat/install/setup2.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/install/setup2.php	2004-04-01 03:06:30.000000000 -0600
@@ -0,0 +1,334 @@
+<?php
+$old_error_reporting = error_reporting (E_ERROR | E_WARNING | E_PARSE); 
+require("./config/config.lib.php");
+error_reporting($old_error_reporting); 
+
+$C_MSG_DEL = (isset($C_MSG_DEL) ? $C_MSG_DEL : C_MSG_DEL);
+$C_USR_DEL = (isset($C_USR_DEL) ? $C_USR_DEL : C_USR_DEL);
+$C_REG_DEL = (isset($C_REG_DEL) ? $C_REG_DEL : C_REG_DEL);
+$C_LANGUAGE = (isset($C_LANGUAGE) ? $C_LANGUAGE : C_LANGUAGE);
+$R0 = "";
+for (reset($DefaultChatRooms); $room=current($DefaultChatRooms); next($DefaultChatRooms))
+{
+	if ($R0 != "") $R0 .= ",";
+	$R0 .= htmlspecialchars($room); 
+}
+$C_PUB_CHAT_ROOMS = (isset($C_PUB_CHAT_ROOMS) ? htmlspecialchars(stripslashes($C_PUB_CHAT_ROOMS)) : $R0);
+$R0 = "";
+for (reset($DefaultPrivateRooms); $room=current($DefaultPrivateRooms); next($DefaultPrivateRooms))
+{
+	if ($R0 != "") $R0 .= ",";
+	$R0 .= htmlspecialchars($room); 
+}
+$C_PRIV_CHAT_ROOMS = (isset($C_PRIV_CHAT_ROOMS) ? htmlspecialchars(stripslashes($C_PRIV_CHAT_ROOMS)) : $R0);
+$C_VERSION = (isset($C_VERSION) ? $C_VERSION : C_VERSION);
+$C_BANISH = (isset($C_BANISH) ? $C_BANISH : C_BANISH);
+$C_SAVE = (isset($C_SAVE) ? $C_SAVE : C_SAVE);
+$C_TMZ_OFFSET = (isset($C_TMZ_OFFSET) ? $C_TMZ_OFFSET : C_TMZ_OFFSET);
+$C_MSG_NB = (isset($C_MSG_NB) ? $C_MSG_NB : C_MSG_NB);
+$C_MSG_REFRESH = (isset($C_MSG_REFRESH) ? $C_MSG_REFRESH : C_MSG_REFRESH);
+if (!$Error)
+{
+	$C_MULTI_LANG = C_MULTI_LANG;
+	$C_REQUIRE_REGISTER = C_REQUIRE_REGISTER;
+	$C_EMAIL_PASWD = C_EMAIL_PASWD;
+	$C_SHOW_ADMIN = C_SHOW_ADMIN;
+	$C_SHOW_DEL_PROF = C_SHOW_DEL_PROF;
+	$C_MSG_ORDER = C_MSG_ORDER;
+	$C_SHOW_TIMESTAMP = C_SHOW_TIMESTAMP;
+	$C_USE_SMILIES = C_USE_SMILIES;
+	$C_HTML_TAGS_KEEP = (C_HTML_TAGS_KEEP == "simple");
+	$C_HTML_TAGS_SHOW = C_HTML_TAGS_SHOW;
+	$C_NO_SWEAR = C_NO_SWEAR;
+	$C_NOTIFY = C_NOTIFY;
+	$C_WELCOME = C_WELCOME;
+}
+?>
+
+<P CLASS=title><?php echo(S_SETUP2_1); ?></P>
+
+<FORM ACTION="<?php echo($From."?Lang=${Lang}"); ?>" METHOD="POST" AUTOCOMPLETE="OFF" NAME="Params">
+<INPUT TYPE=hidden NAME="Form_Send" VALUE="2">
+<INPUT TYPE=hidden NAME="C_DB_TYPE" VALUE="<?php echo($C_DB_TYPE); ?>">
+<INPUT TYPE=hidden NAME="C_DB_HOST" VALUE="<?php echo(stripslashes($C_DB_HOST)); ?>">
+<INPUT TYPE=hidden NAME="C_DB_NAME" VALUE="<?php echo(stripslashes($C_DB_NAME)); ?>">
+<INPUT TYPE=hidden NAME="C_DB_USER" VALUE="<?php echo(stripslashes($C_DB_USER)); ?>">
+<INPUT TYPE=hidden NAME="C_DB_PASS" VALUE="<?php echo(stripslashes($C_DB_PASS)); ?>">
+<INPUT TYPE=hidden NAME="C_MSG_TBL" VALUE="<?php echo(stripslashes($C_MSG_TBL)); ?>">
+<INPUT TYPE=hidden NAME="C_REG_TBL" VALUE="<?php echo(stripslashes($C_REG_TBL)); ?>">
+<INPUT TYPE=hidden NAME="C_USR_TBL" VALUE="<?php echo(stripslashes($C_USR_TBL)); ?>">
+<INPUT TYPE=hidden NAME="C_BAN_TBL" VALUE="<?php echo(stripslashes($C_BAN_TBL)); ?>">
+
+<TABLE BORDER=0 CELLPADDING=3 CLASS=table>
+<TR>
+	<TD ALIGN=CENTER>
+
+		<TABLE WIDTH=500 BORDER=0>
+		<TR>
+			<TH COLSPAN=2 CLASS=tabtitle><?php echo(S_SETUP2_2); ?></TH>
+		</TR>
+		<TR>
+			<TD ALIGN=RIGHT VALIGN=MIDDLE NOWRAP>
+				<?php echo(S_SETUP2_3); ?>&nbsp;
+			</TD>
+			<TD VALIGN=MIDDLE WIDTH=110 NOWRAP>
+				<INPUT TYPE=text NAME="C_MSG_DEL" SIZE=3 MAXLENGTH=4 VALUE="<?php echo($C_MSG_DEL); ?>">
+			</TD>
+		</TR>
+		<TR>
+			<TD ALIGN=RIGHT VALIGN=MIDDLE NOWRAP>
+				<?php echo(S_SETUP2_4); ?>&nbsp;
+			</TD>
+			<TD VALIGN=MIDDLE NOWRAP>
+				<INPUT TYPE=text NAME="C_USR_DEL" SIZE=3 MAXLENGTH=4 VALUE="<?php echo($C_USR_DEL); ?>">
+			</TD>
+		</TR>
+		<TR>
+			<TD ALIGN=RIGHT VALIGN=MIDDLE NOWRAP>
+				<?php echo(S_SETUP2_5); ?>&nbsp;
+			</TD>
+			<TD VALIGN=BOTTOM NOWRAP>
+				<INPUT TYPE=text NAME="C_REG_DEL" SIZE=3 MAXLENGTH=4 VALUE="<?php echo($C_REG_DEL); ?>">
+			</TD>
+		</TR>
+		<TR><TD>&nbsp;</TD></TR>
+		</TABLE>
+
+		<TABLE WIDTH=500 BORDER=0>
+		<TR>
+			<TH COLSPAN=2 CLASS=tabtitle><?php echo(S_SETUP2_6); ?></TH>
+		</TR>
+		<TR ALIGN=CENTER>
+			<TD ALIGN=RIGHT NOWRAP><?php echo(S_SETUP2_46); ?>&nbsp;</TD>
+			<TD>
+				<INPUT TYPE=text NAME="C_PUB_CHAT_ROOMS" SIZE=50 MAXLENGTH=128 VALUE="<?php echo($C_PUB_CHAT_ROOMS); ?>">
+			</TD>
+		</TR>
+		<TR ALIGN=CENTER>
+			<TD ALIGN=RIGHT NOWRAP><?php echo(S_SETUP2_47); ?>&nbsp;</TD>
+			<TD>
+				<INPUT TYPE=text NAME="C_PRIV_CHAT_ROOMS" SIZE=50 MAXLENGTH=128 VALUE="<?php echo($C_PRIV_CHAT_ROOMS); ?>">
+			</TD>
+		</TR>
+		<TR>
+			<TD COLSPAN=2 ALIGN=CENTER VALIGN=MIDDLE NOWRAP><?php echo(S_SETUP2_7); ?></TD>
+		</TR>
+		<TR><TD COLSPAN=2>&nbsp;</TD></TR>
+		</TABLE>
+
+		<TABLE WIDTH=500 BORDER=0>
+		<TR>
+			<TH CLASS=tabtitle><?php echo(S_SETUP2_8); ?></TH>
+		</TR>
+		<TR>
+			<TD ALIGN=CENTER VALIGN=TOP>
+				<INPUT TYPE="checkbox" NAME="C_MULTI_LANG" VALUE="1" 
+				<?php if ($C_MULTI_LANG) echo("CHECKED"); ?>> <?php echo(S_SETUP2_9); ?>
+			</TD>
+		</TR>
+		<TR>
+			<TD ALIGN=CENTER NOWRAP>
+				<?php echo(S_SETUP2_10); ?> 
+				<SELECT NAME="C_LANGUAGE">
+					<?php
+					asort($AvailableLanguages);
+					reset($AvailableLanguages);
+					while(list($key, $name) = each($AvailableLanguages))
+					{
+						echo("<OPTION VALUE=\"${name}\"");
+						if ($C_LANGUAGE == $name) echo(" SELECTED");
+						echo(">".ucfirst(str_replace("_"," ",$name))."</OPTION>");
+					}
+					?>
+				</SELECT>
+			</TD>
+		</TR>
+		<TR><TD>&nbsp;</TD></TR>
+		</TABLE>
+
+		<TABLE WIDTH=500 BORDER=0>
+		<TR>
+			<TH COLSPAN=2 CLASS=tabtitle><?php echo(S_SETUP2_43); ?></TH>
+		</TR>
+		<TR>
+			<TD COLSPAN=2>
+				<TABLE WIDTH=100% BORDER=0>
+				<TR>
+					<TD>
+						<INPUT TYPE="checkbox" NAME="C_REQUIRE_REGISTER" VALUE="1" 
+						<?php if ($C_REQUIRE_REGISTER) echo("CHECKED"); ?>> 
+					</TD>
+					<TD>
+						<?php echo(S_SETUP2_14); ?>
+					</TD>
+				</TR>
+				<?php
+				if (@mail('','',''))
+				{
+					?>
+					<TR>
+						<TD VALIGN=TOP>
+							<INPUT TYPE="checkbox" NAME="C_EMAIL_PASWD" VALUE="1"
+							<?php if ($C_EMAIL_PASWD) echo("CHECKED"); ?>> 
+						</TD>
+						<TD>
+							<?php echo(S_SETUP2_44); ?>
+						</TD>
+					</TR>
+					<?php
+				}
+				else
+				{
+					?>
+					<TR>
+						<TD VALIGN=TOP>&nbsp;</TD>
+						<TD>
+							<?php echo(S_SETUP2_45); ?>
+						</TD>
+					</TR>
+					<?php
+				};
+				?>
+				</TABLE>
+			</TD>
+		</TR>
+		<TR><TD>&nbsp;</TD></TR>
+		</TABLE>
+
+		<TABLE WIDTH=500 BORDER=0>
+		<TR>
+			<TH COLSPAN=2 CLASS=tabtitle><?php echo(S_SETUP2_11); ?></TH>
+		</TR>
+		<TR>
+			<TD COLSPAN=2 VALIGN=TOP>
+				<INPUT TYPE="checkbox" NAME="C_SHOW_ADMIN" VALUE="1"
+				<?php if ($C_SHOW_ADMIN) echo("CHECKED"); ?>> <?php echo(S_SETUP2_12); ?>
+			</TD>
+		</TR>
+		<TR>
+			<TD COLSPAN=2 VALIGN=TOP>
+				<INPUT TYPE="checkbox" NAME="C_SHOW_DEL_PROF" VALUE="1"
+				<?php if ($C_SHOW_DEL_PROF) echo("CHECKED"); ?>> <?php echo(S_SETUP2_13); ?>
+			</TD>
+		</TR>
+		<TR>
+			<TD COLSPAN=2 VALIGN=TOP NOWRAP>
+				<BR><?php echo(S_SETUP2_15); ?><BR>
+				&nbsp;&nbsp;<INPUT TYPE="radio" NAME="C_VERSION" VALUE="0" <?php if ($C_VERSION == "0") echo("CHECKED"); ?>> <?php echo(S_SETUP2_16); ?><BR>
+				&nbsp;&nbsp;<INPUT TYPE="radio" NAME="C_VERSION" VALUE="1" <?php if ($C_VERSION == "1") echo("CHECKED"); ?>>	<?php echo(S_SETUP2_17); ?><BR>
+				&nbsp;&nbsp;<INPUT TYPE="radio" NAME="C_VERSION" VALUE="2" <?php if ($C_VERSION == "2") echo("CHECKED"); ?>>	<?php echo(S_SETUP2_18); ?>
+			</TD>
+		</TR>
+		<TR><TD>&nbsp;</TD></TR>
+		<TR>
+			<TD VALIGN=MIDDLE>
+				<?php echo(S_SETUP2_42); ?>&nbsp;
+			</TD>
+			<TD VALIGN=BOTTOM WIDTH=70>
+				<INPUT TYPE=text NAME="C_BANISH" SIZE=5 MAXLENGTH=11 VALUE="<?php echo($C_BANISH); ?>">
+			</TD>
+		</TR>
+		<TR>
+			<TD COLSPAN=2 VALIGN=TOP><BR>
+				<INPUT TYPE="checkbox" NAME="C_NO_SWEAR" VALUE="1"
+				<?php if ($C_NO_SWEAR) echo("CHECKED"); ?>> <?php echo(S_SETUP2_36); ?>
+			</TD>
+		</TR>
+		<TR>
+		<TR><TD>&nbsp;</TD></TR>
+		<TR>
+			<TD VALIGN=MIDDLE>
+				<?php echo(S_SETUP2_41); ?>&nbsp;
+			</TD>
+			<TD VALIGN=BOTTOM WIDTH=70>
+				<INPUT TYPE=text NAME="C_SAVE" SIZE=2 MAXLENGTH=2 VALUE="<?php echo($C_SAVE); ?>">
+			</TD>
+		</TR>
+		<TR><TD>&nbsp;</TD></TR>
+		</TABLE>
+
+		<TABLE WIDTH=500 BORDER=0>
+		<TR>
+			<TH CLASS=tabtitle><?php echo(S_SETUP2_19); ?></TH>
+		</TR>
+		<TR>
+			<TD VALIGN=TOP>
+				<INPUT TYPE="checkbox" NAME="C_USE_SMILIES" VALUE="1"
+				<?php if ($C_USE_SMILIES) echo("CHECKED"); ?>> <?php echo(S_SETUP2_20); ?>
+			</TD>
+		</TR>
+		<TR>
+			<TD VALIGN=TOP>
+				<INPUT TYPE="checkbox" NAME="C_HTML_TAGS_KEEP" VALUE="simple"
+				<?php if ($C_HTML_TAGS_KEEP) echo("CHECKED"); ?>> <?php echo(S_SETUP2_21); ?>
+			</TD>
+		</TR>
+		<TR>
+			<TD VALIGN=TOP>
+				<INPUT TYPE="checkbox" NAME="C_HTML_TAGS_SHOW" VALUE="1"
+				<?php if ($C_HTML_TAGS_SHOW) echo("CHECKED"); ?>> <?php echo(S_SETUP2_22); ?>
+			</TD>
+		</TR>
+		<TR><TD>&nbsp;</TD></TR>
+		</TABLE>
+
+		<TABLE WIDTH=500 BORDER=0>
+		<TR>
+			<TH CLASS=tabtitle COLSPAN=2><?php echo(S_SETUP2_23); ?></TH>
+		</TR>
+		<TR>
+			<TD VALIGN=TOP COLSPAN=2 NOWRAP>
+				<?php echo(S_SETUP2_24); ?>&nbsp;
+				<INPUT TYPE=text NAME="C_TMZ_OFFSET" SIZE=3 MAXLENGTH=3 VALUE="<?php echo($C_TMZ_OFFSET); ?>">
+			</TD>
+		</TR>
+		<TR>
+			<TD VALIGN=TOP COLSPAN=2 NOWRAP>
+				<?php echo(S_SETUP2_25); ?>&nbsp;<BR>
+				&nbsp;&nbsp;<INPUT TYPE="radio" NAME="C_MSG_ORDER" VALUE="0" <?php if ($C_MSG_ORDER== "0") echo("CHECKED"); ?>> <?php echo(S_SETUP2_26); ?><BR>
+				&nbsp;&nbsp;<INPUT TYPE="radio" NAME="C_MSG_ORDER" VALUE="1" <?php if ($C_MSG_ORDER== "1") echo("CHECKED"); ?>> <?php echo(S_SETUP2_27); ?>
+			</TD>
+		</TR>
+		<TR>
+			<TD VALIGN=TOP COLSPAN=2 NOWRAP>
+				<?php echo(S_SETUP2_28); ?>&nbsp;
+				<INPUT TYPE=text NAME="C_MSG_NB" SIZE=3 MAXLENGTH=3 VALUE="<?php echo($C_MSG_NB); ?>">
+			</TD>
+		</TR>
+		<TR>
+			<TD VALIGN=TOP COLSPAN=2 NOWRAP>
+				<?php echo(S_SETUP2_29); ?>&nbsp;
+				<INPUT TYPE=text NAME="C_MSG_REFRESH" SIZE=3 MAXLENGTH=3 VALUE="<?php echo($C_MSG_REFRESH); ?>">
+			</TD>
+		</TR>
+		<TR>
+			<TD VALIGN=TOP COLSPAN=2>
+				<INPUT TYPE="checkbox" NAME="C_SHOW_TIMESTAMP" VALUE="1"
+				<?php if ($C_SHOW_TIMESTAMP) echo("CHECKED"); ?>> <?php echo(S_SETUP2_30); ?>
+			</TD>
+		</TR>
+		<TR>
+			<TD VALIGN=TOP COLSPAN=2>
+				<INPUT TYPE="checkbox" NAME="C_NOTIFY" VALUE="1"
+				<?php if ($C_NOTIFY) echo("CHECKED"); ?>> <?php echo(S_SETUP2_31); ?>
+			</TD>
+		</TR>
+		<TR>
+			<TD VALIGN=TOP>
+				<INPUT TYPE="checkbox" NAME="C_WELCOME" VALUE="1"<?php if ($C_WELCOME) echo( "CHECKED"); ?>>
+			</TD>
+			<TD>
+			 	<?php echo(S_SETUP2_48); ?>
+			</TD>
+		</TR>
+
+		<TR><TD>&nbsp;</TD></TR>
+		</TABLE>
+		<P>
+		<INPUT TYPE="submit" VALUE="<?php echo(S_SETUP1_19); ?>">
+	</TD>
+</TR>
+</TABLE>
+<?php
+
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/install/setup3.php 0.15.0/chat/install/setup3.php
--- 0.14.5/chat/install/setup3.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/install/setup3.php	2004-04-01 03:06:30.000000000 -0600
@@ -0,0 +1,161 @@
+<?php
+//Check for an admin yet defined in db.
+define("C_DB_TYPE", "${C_DB_TYPE}");
+define("C_DB_HOST", "${C_DB_HOST}");
+define("C_DB_NAME", "${C_DB_NAME}");
+define("C_DB_USER", "${C_DB_USER}");
+define("C_DB_PASS", "${C_DB_PASS}");
+include("./lib/database/${C_DB_TYPE}.lib.php");
+
+$Exist_Adm = false;
+$DbLink = new DB;
+$DbLink->query("SELECT username,password,firstname,lastname,country,website,email,showemail,gender FROM ${C_REG_TBL} WHERE perms='admin' LIMIT 1");
+if ($DbLink->num_rows() != 0)
+{
+	list($ADM_LOG,$ADM_PASS,$ADM_FNAME, $ADM_LNAME, $ADM_LANG, $ADM_WEB, $ADM_EMAIL, $SHOWEMAIL, $ADM_GENDER) = $DbLink->next_record();
+	$Msg = S_SETUP3_1;
+	$Exist_Adm = true;
+}
+else
+{
+	$ADM_LOG = "";
+	$ADM_PASS = "";
+	$ADM_FNAME = "";
+	$ADM_LNAME = "";
+	$ADM_LANG = "";
+	$ADM_WEB = "";
+	$ADM_EMAIL = "";
+	$SHOWEMAIL = "";
+	$ADM_GENDER = "";
+};
+
+$DbLink->clean_results();
+$DbLink->close();
+?>
+
+<P CLASS=title><?php echo(S_SETUP3_2); ?></P>
+
+<?php
+if (isset($Msg)) echo("<P CLASS=whois>${Msg}</P>");
+?>
+	
+<FORM ACTION="<?php echo($From."?Lang=${Lang}"); ?>" METHOD="POST" AUTOCOMPLETE="OFF" NAME="Params">
+<INPUT type=hidden name="Form_Send" value="3">
+<INPUT type=hidden name="Exist_Adm" value="<?php echo($Exist_Adm); ?>">
+
+<INPUT TYPE=hidden NAME="C_DB_TYPE" VALUE="<?php echo($C_DB_TYPE); ?>">
+<INPUT TYPE=hidden NAME="C_DB_HOST" VALUE="<?php echo(stripslashes($C_DB_HOST)); ?>">
+<INPUT TYPE=hidden NAME="C_DB_NAME" VALUE="<?php echo(stripslashes($C_DB_NAME)); ?>">
+<INPUT TYPE=hidden NAME="C_DB_USER" VALUE="<?php echo(stripslashes($C_DB_USER)); ?>">
+<INPUT TYPE=hidden NAME="C_DB_PASS" VALUE="<?php echo(stripslashes($C_DB_PASS)); ?>">
+<INPUT TYPE=hidden NAME="C_MSG_TBL" VALUE="<?php echo(stripslashes($C_MSG_TBL)); ?>">
+<INPUT TYPE=hidden NAME="C_REG_TBL" VALUE="<?php echo(stripslashes($C_REG_TBL)); ?>">
+<INPUT TYPE=hidden NAME="C_USR_TBL" VALUE="<?php echo(stripslashes($C_USR_TBL)); ?>">
+<INPUT TYPE=hidden NAME="C_BAN_TBL" VALUE="<?php echo(stripslashes($C_BAN_TBL)); ?>">
+<INPUT TYPE=hidden NAME="C_MSG_DEL" VALUE="<?php echo($C_MSG_DEL); ?>">
+<INPUT TYPE=hidden NAME="C_USR_DEL" VALUE="<?php echo($C_USR_DEL); ?>">
+<INPUT TYPE=hidden NAME="C_REG_DEL" VALUE="<?php echo($C_REG_DEL); ?>">
+<INPUT TYPE=hidden NAME="C_LANGUAGE" VALUE="<?php echo($C_LANGUAGE); ?>">
+<INPUT TYPE=hidden NAME="C_MULTI_LANG" VALUE="<?php echo($C_MULTI_LANG); ?>">
+<INPUT TYPE=hidden NAME="C_REQUIRE_REGISTER" VALUE="<?php echo($C_REQUIRE_REGISTER); ?>">
+<INPUT TYPE=hidden NAME="C_EMAIL_PASWD" VALUE="<?php echo($C_EMAIL_PASWD); ?>">
+<INPUT TYPE=hidden NAME="C_SHOW_ADMIN" VALUE="<?php echo($C_SHOW_ADMIN); ?>">
+<INPUT TYPE=hidden NAME="C_SHOW_DEL_PROF" VALUE="<?php echo($C_SHOW_DEL_PROF); ?>">
+<INPUT TYPE=hidden NAME="C_TMZ_OFFSET" VALUE="<?php echo($C_TMZ_OFFSET); ?>">
+<INPUT TYPE=hidden NAME="C_MSG_ORDER" VALUE="<?php echo($C_MSG_ORDER); ?>">
+<INPUT TYPE=hidden NAME="C_MSG_NB" VALUE="<?php echo($C_MSG_NB); ?>">
+<INPUT TYPE=hidden NAME="C_MSG_REFRESH" VALUE="<?php echo($C_MSG_REFRESH); ?>">
+<INPUT TYPE=hidden NAME="C_SHOW_TIMESTAMP" VALUE="<?php echo($C_SHOW_TIMESTAMP); ?>">
+<INPUT TYPE=hidden NAME="C_USE_SMILIES" VALUE="<?php echo($C_USE_SMILIES); ?>">
+<INPUT TYPE=hidden NAME="C_HTML_TAGS_KEEP" VALUE="<?php echo($C_HTML_TAGS_KEEP); ?>">
+<INPUT TYPE=hidden NAME="C_HTML_TAGS_SHOW" VALUE="<?php echo($C_HTML_TAGS_SHOW); ?>">
+<INPUT TYPE=hidden NAME="C_PUB_CHAT_ROOMS" VALUE="<?php echo(htmlspecialchars(stripslashes($C_PUB_CHAT_ROOMS))); ?>">
+<INPUT TYPE=hidden NAME="C_PRIV_CHAT_ROOMS" VALUE="<?php echo(htmlspecialchars(stripslashes($C_PRIV_CHAT_ROOMS))); ?>">
+<INPUT TYPE=hidden NAME="C_VERSION" VALUE="<?php echo($C_VERSION); ?>">
+<INPUT TYPE=hidden NAME="C_BANISH" VALUE="<?php echo($C_BANISH); ?>">
+<INPUT TYPE=hidden NAME="C_NO_SWEAR" VALUE="<?php echo($C_NO_SWEAR); ?>">
+<INPUT TYPE=hidden NAME="C_SAVE" VALUE="<?php echo($C_SAVE); ?>">
+<INPUT TYPE=hidden NAME="C_NOTIFY" VALUE="<?php echo($C_NOTIFY); ?>">
+<INPUT TYPE=hidden NAME="C_WELCOME" VALUE="<?php echo($C_WELCOME); ?>">
+
+<TABLE BORDER=0 CELLPADDING=3 CLASS=table>
+<TR>
+	<TD ALIGN=CENTER>
+		<TABLE BORDER=0>
+		<TR>
+			<TH COLSPAN=2><?php echo(S_SETUP3_3); ?></TH>
+		</TR>
+		<TR><TD>&nbsp;</TD></TR>
+		<TR>
+			<TD ALIGN=RIGHT VALIGN=TOP NOWRAP><?php echo(S_SETUP3_4); ?></TD>
+			<TD VALIGN=TOP>
+				<INPUT TYPE=text NAME="ADM_LOG" SIZE=11 MAXLENGTH=10 VALUE="<?echo(htmlspecialchars(stripslashes($ADM_LOG)))?>">
+				<SPAN CLASS=error>*</SPAN>
+			</TD>
+		</TR>
+		<TR>
+			<TD ALIGN=RIGHT VALIGN=TOP NOWRAP><?php echo(S_SETUP3_5); ?></TD>
+			<TD VALIGN=TOP>
+				<INPUT TYPE=password NAME="ADM_PASS" SIZE=11 MAXLENGTH=16>
+				<SPAN CLASS=error>*</SPAN>
+			</TD>
+		</TR>
+		<TR>
+			<TD ALIGN=RIGHT VALIGN=TOP NOWRAP><?php echo(S_SETUP3_6); ?></TD>
+			<TD VALIGN=TOP>
+				<INPUT TYPE=text NAME="ADM_FNAME" SIZE=11 MAXLENGTH=64 VALUE="<?echo(htmlspecialchars(stripslashes($ADM_FNAME)))?>">
+			</TD>
+		</TR>
+		<TR>
+			<TD ALIGN=RIGHT VALIGN=TOP NOWRAP><?php echo(S_SETUP3_7); ?></TD>
+			<TD VALIGN=TOP>
+				<INPUT TYPE=text NAME="ADM_LNAME" SIZE=11 MAXLENGTH=64 VALUE="<?echo(htmlspecialchars(stripslashes($ADM_LNAME)))?>">
+			</TD>
+		</TR>
+		<TR>
+			<TD ALIGN=RIGHT VALIGN=TOP NOWRAP><?php echo(S_SETUP3_14); ?> :</TD>
+			<TD VALIGN=TOP>
+				<INPUT TYPE="radio" NAME="ADM_GENDER" VALUE="1" <?php if ($ADM_GENDER == "1") echo("CHECKED"); ?>>&nbsp;<?php echo(S_SETUP3_15); ?><BR>
+				<INPUT TYPE="radio" NAME="ADM_GENDER" VALUE="2" <?php if ($ADM_GENDER == "2") echo("CHECKED"); ?>>&nbsp;<?php echo(S_SETUP3_16); ?>
+			</TD>
+		</TR>
+		<TR>
+			<TD ALIGN=RIGHT VALIGN=TOP NOWRAP><?php echo(S_SETUP3_8); ?></TD>
+			<TD VALIGN=TOP>
+				<INPUT TYPE=text NAME="ADM_LANG" SIZE=11 MAXLENGTH=64 VALUE="<?echo(htmlspecialchars(stripslashes($ADM_LANG)))?>">
+			</TD>
+		</TR>
+		<TR>
+			<TD ALIGN=RIGHT VALIGN=TOP NOWRAP><?php echo(S_SETUP3_9); ?></TD>
+			<TD VALIGN=TOP>
+				<INPUT TYPE=text NAME="ADM_WEB" SIZE=11 MAXLENGTH=64 VALUE="<?echo(htmlspecialchars(stripslashes($ADM_WEB)))?>">
+			</TD>
+		</TR>
+		<TR>
+			<TD ALIGN=RIGHT VALIGN=TOP NOWRAP><?php echo(S_SETUP3_10); ?></TD>
+			<TD VALIGN=TOP>
+				<INPUT TYPE=text NAME="ADM_EMAIL" SIZE=11 MAXLENGTH=64 VALUE="<?echo(htmlspecialchars(stripslashes($ADM_EMAIL)))?>">
+			</TD>
+		</TR>
+		<TR><TD>&nbsp;</TD></TR>
+		<TR>
+			<TD COLSPAN=2 ALIGN=center>
+				<INPUT type=checkbox name="SHOWEMAIL" value="1" <?if($SHOWEMAIL) echo("checked")?>>
+				&nbsp;<?php echo(S_SETUP3_11); ?>
+			</TD>
+		</TR>
+		</TABLE>
+		<P>
+		<INPUT TYPE="submit" NAME="submit_type" VALUE="<?php echo(S_SETUP1_19); ?>">
+		&nbsp;
+		<INPUT TYPE="submit" NAME="submit_type" VALUE="<?php echo(S_SETUP3_12); ?>">
+	</TD>
+</TR>
+</TABLE>
+
+<P CLASS=whois>
+	<?php echo(sprintf(S_SETUP3_13, APP_NAME)); ?>
+<P> 
+<?php
+
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/install/setup4.php 0.15.0/chat/install/setup4.php
--- 0.14.5/chat/install/setup4.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/install/setup4.php	2004-04-01 03:06:30.000000000 -0600
@@ -0,0 +1,38 @@
+<?
+
+?>
+<P CLASS=title><?php echo(S_SETUP4_1); ?></P>
+
+<TABLE BORDER=0 WIDTH=500 CELLPADDING=3 CELLSPACING=0 CLASS=table>
+<TR>
+	<TD>
+		<?php echo(S_SETUP4_2); ?>
+	</TD>
+</TR>
+<TR><TD>&nbsp;</TD></TR>
+<FORM NAME="HSelect">
+<TR>
+	<TD ALIGN=CENTER>
+		<INPUT TYPE=button VALUE="<?php echo(S_SETUP4_3); ?>" onClick="document.forms['HSelect'].elements['txt'].focus();document.forms['HSelect'].elements['txt'].select();">
+	</TD>
+</TR>
+<TR>
+	<TD ALIGN=CENTER>
+<TEXTAREA NAME="txt" ROWS=20 COLS=75 WRAP=OFF>
+<?php include("./install/preconfig.php"); ?>
+</TEXTAREA>
+	<TD>
+<TR>
+</FORM>
+</TABLE>
+
+<P CLASS=whois>
+	<?php echo(sprintf(S_SETUP4_4, APP_NAME)); if (!@mail('','','')) echo(S_SETUP4_4m); ?>
+</P>
+<P CLASS=error>
+	<?php echo(sprintf(S_SETUP4_5, APP_NAME)); ?>
+</P>
+<P><A NAME="warn"></A></P>
+<?php
+
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/banish.lib.php 0.15.0/chat/lib/banish.lib.php
--- 0.14.5/chat/lib/banish.lib.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/lib/banish.lib.php	2004-04-01 03:06:35.000000000 -0600
@@ -0,0 +1,98 @@
+<?
+// This library allows to ensure the user who wants to enter in the chat is not a
+// banished one.
+// Additional credits for this lib go to Tomas Haluza (<thaluza@kiss.cz>),
+// Ray Lopez (<kaidream@hotmail.com>) and Fabiano R. Prestes (<zoso@post.com>)
+
+$IsBanished = false;
+
+// Clean the banished users table
+$DbLink->query("DELETE FROM ".C_BAN_TBL." WHERE ban_until < ".time());
+
+// Get the IP of the user
+if (!isset($ChatPath))
+{
+	$ChatPath = "";
+}
+// Fix a security holes
+else if (!is_dir('./'.substr($ChatPath, 0, -1)))
+{
+	exit();
+}
+
+if (!isset($IP) || $IP == "") include("./${ChatPath}lib/get_IP.lib.php");
+
+
+// Seek for a banished nick
+$DbLink->query("SELECT ip,rooms FROM ".C_BAN_TBL." WHERE username='$U' LIMIT 1");
+$Nb = $DbLink->num_rows();
+// Nick of the user is banished from some rooms
+if ($Nb != "0")
+{
+	list($Old_IP,$BanishedFromRooms) = $DbLink->next_record();
+	$DbLink->clean_results();
+	$BanishedFromRooms = addslashes($BanishedFromRooms);
+
+	// Is the user banished from the room he wants to enter in
+	if ($BanishedFromRooms == "*")
+	{
+		$IsBanished = true;
+	}
+	elseif (isset($R2) && $R2 != "")
+	{
+		if (room_in($R2, $BanishedFromRooms)) $IsBanished = true;
+	}
+	elseif (isset($R1) && $R1 != "")
+	{
+		if (room_in($R1, $BanishedFromRooms)) $IsBanished = true;
+	}
+	elseif (isset($R0) && $R0 != "")
+	{
+		if (room_in($R0, $BanishedFromRooms)) $IsBanished = true;
+	};
+
+	// Update the IP of the user in the banished table when necessary
+	if ($IsBanished && $IP != $Old_IP && (substr($IP, 0, 1) != "p" || substr($Old_IP, 0, 1) == "p")) $DbLink->query("UPDATE ".C_BAN_TBL." SET ip='$IP' WHERE username='$U'");
+}
+// Nick of the user isn't banished from any room, seek for banished IP
+else
+{
+	$DbLink->clean_results();
+
+	$DbLink->query("SELECT rooms,ban_until FROM ".C_BAN_TBL." WHERE ip='$IP' LIMIT 1");
+	$Nb = $DbLink->num_rows();
+	// IP is banished from some rooms
+	if ($Nb != "0")
+	{
+		list($BanishedFromRooms,$Until) = $DbLink->next_record();
+		$DbLink->clean_results();
+		$BanishedFromRooms = addslashes($BanishedFromRooms);
+
+		// Is the IP banished from the room user wants to enter in ?
+		if ($BanishedFromRooms == "*")
+		{
+			$IsBanished = true;
+		}
+		elseif (isset($R2) && $R2 != "")
+		{
+			if (room_in($R2, $BanishedFromRooms)) $IsBanished = true;
+		}
+		elseif (isset($R1) && $R1 != "")
+		{
+			if (room_in($R1, $BanishedFromRooms)) $IsBanished = true;
+		}
+		elseif (isset($R0) && $R0 != "")
+		{
+			if (room_in($R0, $BanishedFromRooms)) $IsBanished = true;
+		};
+
+		// Add the user to the banished table when necessary
+		if ($IsBanished) $DbLink->query("INSERT INTO ".C_BAN_TBL." VALUES ('$U', '$Latin1', '$IP', '$BanishedFromRooms', '$Until')");
+	}
+	else
+	{
+		$DbLink->clean_results();
+	};
+ };
+
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/banish.lib.php3 0.15.0/chat/lib/banish.lib.php3
--- 0.14.5/chat/lib/banish.lib.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/lib/banish.lib.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,98 +0,0 @@
-<?
-// This library allows to ensure the user who wants to enter in the chat is not a
-// banished one.
-// Additional credits for this lib go to Tomas Haluza (<thaluza@kiss.cz>),
-// Ray Lopez (<kaidream@hotmail.com>) and Fabiano R. Prestes (<zoso@post.com>)
-
-$IsBanished = false;
-
-// Clean the banished users table
-$DbLink->query("DELETE FROM ".C_BAN_TBL." WHERE ban_until < ".time());
-
-// Get the IP of the user
-if (!isset($ChatPath))
-{
-	$ChatPath = "";
-}
-// Fix a security holes
-else if (!is_dir('./'.substr($ChatPath, 0, -1)))
-{
-	exit();
-}
-
-if (!isset($IP) || $IP == "") include("./${ChatPath}lib/get_IP.lib.php3");
-
-
-// Seek for a banished nick
-$DbLink->query("SELECT ip,rooms FROM ".C_BAN_TBL." WHERE username='$U' LIMIT 1");
-$Nb = $DbLink->num_rows();
-// Nick of the user is banished from some rooms
-if ($Nb != "0")
-{
-	list($Old_IP,$BanishedFromRooms) = $DbLink->next_record();
-	$DbLink->clean_results();
-	$BanishedFromRooms = addslashes($BanishedFromRooms);
-
-	// Is the user banished from the room he wants to enter in
-	if ($BanishedFromRooms == "*")
-	{
-		$IsBanished = true;
-	}
-	elseif (isset($R2) && $R2 != "")
-	{
-		if (room_in($R2, $BanishedFromRooms)) $IsBanished = true;
-	}
-	elseif (isset($R1) && $R1 != "")
-	{
-		if (room_in($R1, $BanishedFromRooms)) $IsBanished = true;
-	}
-	elseif (isset($R0) && $R0 != "")
-	{
-		if (room_in($R0, $BanishedFromRooms)) $IsBanished = true;
-	};
-
-	// Update the IP of the user in the banished table when necessary
-	if ($IsBanished && $IP != $Old_IP && (substr($IP, 0, 1) != "p" || substr($Old_IP, 0, 1) == "p")) $DbLink->query("UPDATE ".C_BAN_TBL." SET ip='$IP' WHERE username='$U'");
-}
-// Nick of the user isn't banished from any room, seek for banished IP
-else
-{
-	$DbLink->clean_results();
-
-	$DbLink->query("SELECT rooms,ban_until FROM ".C_BAN_TBL." WHERE ip='$IP' LIMIT 1");
-	$Nb = $DbLink->num_rows();
-	// IP is banished from some rooms
-	if ($Nb != "0")
-	{
-		list($BanishedFromRooms,$Until) = $DbLink->next_record();
-		$DbLink->clean_results();
-		$BanishedFromRooms = addslashes($BanishedFromRooms);
-
-		// Is the IP banished from the room user wants to enter in ?
-		if ($BanishedFromRooms == "*")
-		{
-			$IsBanished = true;
-		}
-		elseif (isset($R2) && $R2 != "")
-		{
-			if (room_in($R2, $BanishedFromRooms)) $IsBanished = true;
-		}
-		elseif (isset($R1) && $R1 != "")
-		{
-			if (room_in($R1, $BanishedFromRooms)) $IsBanished = true;
-		}
-		elseif (isset($R0) && $R0 != "")
-		{
-			if (room_in($R0, $BanishedFromRooms)) $IsBanished = true;
-		};
-
-		// Add the user to the banished table when necessary
-		if ($IsBanished) $DbLink->query("INSERT INTO ".C_BAN_TBL." VALUES ('$U', '$Latin1', '$IP', '$BanishedFromRooms', '$Until')");
-	}
-	else
-	{
-		$DbLink->clean_results();
-	};
- };
-
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/clean.lib.php 0.15.0/chat/lib/clean.lib.php
--- 0.14.5/chat/lib/clean.lib.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/lib/clean.lib.php	2004-04-01 03:06:35.000000000 -0600
@@ -0,0 +1,7 @@
+<?php
+$Chat = new DB;
+$Chat->query("DELETE FROM ".C_MSG_TBL." WHERE m_time < ".(time() - C_MSG_DEL * 60 * 60));
+$Chat->query("DELETE FROM ".C_USR_TBL." WHERE u_time < ".(time() - C_USR_DEL * 60)." OR (status = 'k' AND u_time <  ".(time() - 20).")");
+$CleanUsrTbl = ($Chat->affected_rows() > 0);
+$Chat->close();
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/clean.lib.php3 0.15.0/chat/lib/clean.lib.php3
--- 0.14.5/chat/lib/clean.lib.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/lib/clean.lib.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,7 +0,0 @@
-<?php
-$Chat = new DB;
-$Chat->query("DELETE FROM ".C_MSG_TBL." WHERE m_time < ".(time() - C_MSG_DEL * 60 * 60));
-$Chat->query("DELETE FROM ".C_USR_TBL." WHERE u_time < ".(time() - C_USR_DEL * 60)." OR (status = 'k' AND u_time <  ".(time() - 20).")");
-$CleanUsrTbl = ($Chat->affected_rows() > 0);
-$Chat->close();
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/commands/announce.cmd.php 0.15.0/chat/lib/commands/announce.cmd.php
--- 0.14.5/chat/lib/commands/announce.cmd.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/lib/commands/announce.cmd.php	2004-04-01 03:06:38.000000000 -0600
@@ -0,0 +1,14 @@
+<?php
+
+if ($status == "a")
+{
+	AddMessage(stripslashes($Cmd[1]), $T, $R, 'SYS announce', '', ' *');
+	$IsCommand = true;
+	$RefreshMessages = true;
+}
+else
+{
+	$Error = L_NO_ADMIN;
+};
+
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/commands/announce.cmd.php3 0.15.0/chat/lib/commands/announce.cmd.php3
--- 0.14.5/chat/lib/commands/announce.cmd.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/lib/commands/announce.cmd.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,14 +0,0 @@
-<?php
-
-if ($status == "a")
-{
-	AddMessage(stripslashes($Cmd[1]), $T, $R, 'SYS announce', '', ' *');
-	$IsCommand = true;
-	$RefreshMessages = true;
-}
-else
-{
-	$Error = L_NO_ADMIN;
-};
-
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/commands/banish.cmd.php 0.15.0/chat/lib/commands/banish.cmd.php
--- 0.14.5/chat/lib/commands/banish.cmd.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/lib/commands/banish.cmd.php	2004-04-01 03:06:39.000000000 -0600
@@ -0,0 +1,118 @@
+<?php
+
+// Returns true if the room to check ($what) is in the string ($in),
+// false else
+function room_in($what, $in)
+{
+	$rooms = explode(",",$in);
+	for (reset($rooms); $room_name=current($rooms); next($rooms))
+	{
+		if (strcasecmp($what, $room_name) == 0) return true;
+	};
+	return false;
+};
+
+// Returns 0 if the room to check ($what) is in the string ($in), the
+// number of rooms else
+function room_not_in($what, $in)
+{
+	$rooms = explode(",",$in);
+	for (reset($rooms); $room_name=current($rooms); next($rooms))
+	{
+		if (strcasecmp($what, $room_name) == 0) return "0";
+	};
+	return count($rooms);
+};
+
+$UU = $Cmd[2];
+
+// Check for invalid characters
+if (ereg("[\, ]", stripslashes($UU)))
+{
+	$Error = L_ERR_USR_16;
+}
+else
+{
+	// Ensure the current user is moderator for the current room or admin.
+	$DbLink->query("SELECT password,perms,rooms FROM ".C_REG_TBL." WHERE username='$U' LIMIT 1");
+	if ($DbLink->num_rows() == 0)
+	{
+		$Error = L_NO_MODERATOR;
+		$DbLink->clean_results();
+	}
+	else
+	{
+		list($password,$perms,$rooms) = $DbLink->next_record();
+		$DbLink->clean_results();
+		if (($password != $PWD_Hash) || (($perms != "moderator")&&($perms != "admin")) || (($perms == "moderator")&&(!room_in(stripslashes($R), $rooms))))
+		{
+			$Error = L_NO_MODERATOR;
+		}
+		else
+		{
+			// Define an additional condition for moderators so they can only banish an user from their current room
+			$Query4Moder = ($perms != "admin" ? "room='$R' AND " : "");
+			// Ensure the user to be banished is logged in (into the current room for moderators)
+			$DbLink->query("SELECT latin1,room,status,ip FROM ".C_USR_TBL." WHERE ".$Query4Moder."username='$UU' LIMIT 1");
+			if ($DbLink->num_rows() == 0)
+			{
+				$DbLink->clean_results();
+				$Error = sprintf(L_NONEXIST_USER, stripslashes($UU));
+			}
+			else
+			{
+				list($UULatin1,$UURoom,$status,$IP) = $DbLink->next_record();
+				$DbLink->clean_results();
+				// Ensure the user to be banished is not a more powerfull user (admin>moderator)
+				if ($status == "a" || ($status == "m" && $perms != "admin"))
+				{
+					$Error = sprintf(L_NO_BANISHED, stripslashes($UU));
+				}
+				else
+				{
+					if ($Cmd[1] == "* " && $perms != "admin") $Cmd[1] = "";
+
+					// Define the duration of the banishment
+					$Until = ($Cmd[1] == "* ") ? "2147483647" : time() + round(C_BANISH * 60 * 60 * 24);
+					if ($Until > 2147483647) $Until = "2147483647";
+  
+					$DbLink->query("SELECT ip,rooms FROM ".C_BAN_TBL." WHERE username='$UU' LIMIT 1");
+					// User is already banished from some rooms -> Update the banished table
+					if ($DbLink->num_rows() != 0)
+					{
+						list($Old_IP,$Old_ban_rooms) = $DbLink->next_record();
+						$DbLink->clean_results();
+						// Define rooms that the user will be banished from (if they are more
+						// than 3, user will be banished from the whole chat)
+						if ($Cmd[1] == "* ") $New_ban_rooms = "*";
+						else
+						{
+							$UURoom = addslashes($UURoom);
+							$Old_ban_rooms = addslashes($Old_ban_rooms);
+							$NbAlrBanished = room_not_in($UURoom, $Old_ban_rooms);
+							$New_ban_rooms = ($NbAlrBanished > 2 ? "*" : $Old_ban_rooms.",".$UURoom);
+						};
+						// IP needs to be updated ?
+						if (substr($IP, 0, 1) == "p" && substr($Old_IP, 0, 1) != "p") $IP = $Old_IP;
+						// Update the table
+						$DbLink->query("UPDATE ".C_BAN_TBL." SET ip='$IP',rooms='$New_ban_rooms',ban_until='$Until' WHERE username='$UU'");
+					}
+					// User isn't already banished from any room -> Insert into the banished table
+					else
+					{
+						$DbLink->clean_results();
+						$New_ban_rooms = ($Cmd[1] == "* ") ? "*" : addslashes($UURoom);
+						$DbLink->query("INSERT INTO ".C_BAN_TBL." VALUES ('$UU', '$UULatin1', '$IP', '$New_ban_rooms', '$Until')");
+					};
+
+					// Modify the status of the banished user in users table
+					$DbLink->query("UPDATE ".C_USR_TBL." SET u_time='".time()."', status='b' WHERE username='$UU'");
+					$IsCommand = true;
+					$RefreshMessages = true;
+				};
+			};
+		};
+	};
+};
+
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/commands/banish.cmd.php3 0.15.0/chat/lib/commands/banish.cmd.php3
--- 0.14.5/chat/lib/commands/banish.cmd.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/lib/commands/banish.cmd.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,118 +0,0 @@
-<?php
-
-// Returns true if the room to check ($what) is in the string ($in),
-// false else
-function room_in($what, $in)
-{
-	$rooms = explode(",",$in);
-	for (reset($rooms); $room_name=current($rooms); next($rooms))
-	{
-		if (strcasecmp($what, $room_name) == 0) return true;
-	};
-	return false;
-};
-
-// Returns 0 if the room to check ($what) is in the string ($in), the
-// number of rooms else
-function room_not_in($what, $in)
-{
-	$rooms = explode(",",$in);
-	for (reset($rooms); $room_name=current($rooms); next($rooms))
-	{
-		if (strcasecmp($what, $room_name) == 0) return "0";
-	};
-	return count($rooms);
-};
-
-$UU = $Cmd[2];
-
-// Check for invalid characters
-if (ereg("[\, ]", stripslashes($UU)))
-{
-	$Error = L_ERR_USR_16;
-}
-else
-{
-	// Ensure the current user is moderator for the current room or admin.
-	$DbLink->query("SELECT password,perms,rooms FROM ".C_REG_TBL." WHERE username='$U' LIMIT 1");
-	if ($DbLink->num_rows() == 0)
-	{
-		$Error = L_NO_MODERATOR;
-		$DbLink->clean_results();
-	}
-	else
-	{
-		list($password,$perms,$rooms) = $DbLink->next_record();
-		$DbLink->clean_results();
-		if (($password != $PWD_Hash) || (($perms != "moderator")&&($perms != "admin")) || (($perms == "moderator")&&(!room_in(stripslashes($R), $rooms))))
-		{
-			$Error = L_NO_MODERATOR;
-		}
-		else
-		{
-			// Define an additional condition for moderators so they can only banish an user from their current room
-			$Query4Moder = ($perms != "admin" ? "room='$R' AND " : "");
-			// Ensure the user to be banished is logged in (into the current room for moderators)
-			$DbLink->query("SELECT latin1,room,status,ip FROM ".C_USR_TBL." WHERE ".$Query4Moder."username='$UU' LIMIT 1");
-			if ($DbLink->num_rows() == 0)
-			{
-				$DbLink->clean_results();
-				$Error = sprintf(L_NONEXIST_USER, stripslashes($UU));
-			}
-			else
-			{
-				list($UULatin1,$UURoom,$status,$IP) = $DbLink->next_record();
-				$DbLink->clean_results();
-				// Ensure the user to be banished is not a more powerfull user (admin>moderator)
-				if ($status == "a" || ($status == "m" && $perms != "admin"))
-				{
-					$Error = sprintf(L_NO_BANISHED, stripslashes($UU));
-				}
-				else
-				{
-					if ($Cmd[1] == "* " && $perms != "admin") $Cmd[1] = "";
-
-					// Define the duration of the banishment
-					$Until = ($Cmd[1] == "* ") ? "2147483647" : time() + round(C_BANISH * 60 * 60 * 24);
-					if ($Until > 2147483647) $Until = "2147483647";
-  
-					$DbLink->query("SELECT ip,rooms FROM ".C_BAN_TBL." WHERE username='$UU' LIMIT 1");
-					// User is already banished from some rooms -> Update the banished table
-					if ($DbLink->num_rows() != 0)
-					{
-						list($Old_IP,$Old_ban_rooms) = $DbLink->next_record();
-						$DbLink->clean_results();
-						// Define rooms that the user will be banished from (if they are more
-						// than 3, user will be banished from the whole chat)
-						if ($Cmd[1] == "* ") $New_ban_rooms = "*";
-						else
-						{
-							$UURoom = addslashes($UURoom);
-							$Old_ban_rooms = addslashes($Old_ban_rooms);
-							$NbAlrBanished = room_not_in($UURoom, $Old_ban_rooms);
-							$New_ban_rooms = ($NbAlrBanished > 2 ? "*" : $Old_ban_rooms.",".$UURoom);
-						};
-						// IP needs to be updated ?
-						if (substr($IP, 0, 1) == "p" && substr($Old_IP, 0, 1) != "p") $IP = $Old_IP;
-						// Update the table
-						$DbLink->query("UPDATE ".C_BAN_TBL." SET ip='$IP',rooms='$New_ban_rooms',ban_until='$Until' WHERE username='$UU'");
-					}
-					// User isn't already banished from any room -> Insert into the banished table
-					else
-					{
-						$DbLink->clean_results();
-						$New_ban_rooms = ($Cmd[1] == "* ") ? "*" : addslashes($UURoom);
-						$DbLink->query("INSERT INTO ".C_BAN_TBL." VALUES ('$UU', '$UULatin1', '$IP', '$New_ban_rooms', '$Until')");
-					};
-
-					// Modify the status of the banished user in users table
-					$DbLink->query("UPDATE ".C_USR_TBL." SET u_time='".time()."', status='b' WHERE username='$UU'");
-					$IsCommand = true;
-					$RefreshMessages = true;
-				};
-			};
-		};
-	};
-};
-
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/commands/clear.cmd.php 0.15.0/chat/lib/commands/clear.cmd.php
--- 0.14.5/chat/lib/commands/clear.cmd.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/lib/commands/clear.cmd.php	2004-04-01 03:06:39.000000000 -0600
@@ -0,0 +1,11 @@
+<?php
+
+if ($Ver == "H")
+{
+	$N = 5;
+	$IsCommand = true;
+	$First = 1;
+	$RefreshMessages = true;
+}
+
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/commands/clear.cmd.php3 0.15.0/chat/lib/commands/clear.cmd.php3
--- 0.14.5/chat/lib/commands/clear.cmd.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/lib/commands/clear.cmd.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,11 +0,0 @@
-<?php
-
-if ($Ver == "H")
-{
-	$N = 5;
-	$IsCommand = true;
-	$First = 1;
-	$RefreshMessages = true;
-}
-
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/commands/help.cmd.php 0.15.0/chat/lib/commands/help.cmd.php
--- 0.14.5/chat/lib/commands/help.cmd.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/lib/commands/help.cmd.php	2004-04-01 03:06:39.000000000 -0600
@@ -0,0 +1,22 @@
+<?php
+
+// Define a table that contains JavaScript instructions to be ran
+$jsTbl = array(
+	"<SCRIPT TYPE=\"text/javascript\" LANGUAGE=\"JavaScript\">",
+	"<!--",
+	"if (window.parent.is_help_popup && !window.parent.is_help_popup.closed)",
+	"{",
+	"\twindow.parent.is_help_popup.focus();",
+	"}",
+	"else",
+	"{",
+	"\twindow.parent.is_help_popup = window.open(\"help_popup.php?L=$L&Ver=$Ver\",\"help_popup\",\"width=600,height=350,scrollbars=yes,resizable=yes\");",
+	"};",
+	"// -->",
+	"</SCRIPT>"
+);
+
+$IsCommand = true;
+$IsPopup = true;
+
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/commands/help.cmd.php3 0.15.0/chat/lib/commands/help.cmd.php3
--- 0.14.5/chat/lib/commands/help.cmd.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/lib/commands/help.cmd.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,22 +0,0 @@
-<?php
-
-// Define a table that contains JavaScript instructions to be ran
-$jsTbl = array(
-	"<SCRIPT TYPE=\"text/javascript\" LANGUAGE=\"JavaScript\">",
-	"<!--",
-	"if (window.parent.is_help_popup && !window.parent.is_help_popup.closed)",
-	"{",
-	"\twindow.parent.is_help_popup.focus();",
-	"}",
-	"else",
-	"{",
-	"\twindow.parent.is_help_popup = window.open(\"help_popup.php3?L=$L&Ver=$Ver\",\"help_popup\",\"width=600,height=350,scrollbars=yes,resizable=yes\");",
-	"};",
-	"// -->",
-	"</SCRIPT>"
-);
-
-$IsCommand = true;
-$IsPopup = true;
-
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/commands/history.cmd.php 0.15.0/chat/lib/commands/history.cmd.php
--- 0.14.5/chat/lib/commands/history.cmd.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/lib/commands/history.cmd.php	2004-04-01 03:06:39.000000000 -0600
@@ -0,0 +1,7 @@
+<?php
+
+$IsCommand = true;
+$M = $M0;
+$IsM = true;
+
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/commands/history.cmd.php3 0.15.0/chat/lib/commands/history.cmd.php3
--- 0.14.5/chat/lib/commands/history.cmd.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/lib/commands/history.cmd.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,7 +0,0 @@
-<?php
-
-$IsCommand = true;
-$M = $M0;
-$IsM = true;
-
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/commands/ignore.cmd.php 0.15.0/chat/lib/commands/ignore.cmd.php
--- 0.14.5/chat/lib/commands/ignore.cmd.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/lib/commands/ignore.cmd.php	2004-04-01 03:06:39.000000000 -0600
@@ -0,0 +1,125 @@
+<?php
+
+// Check if a nick is already in the ignored list
+function is_user_ignored($who, $userlist)
+{
+	$users = explode(",", $userlist);
+	for (reset($users); $user_name=current($users); next($users))
+	{
+		if (strcasecmp($who, urldecode($user_name)) == 0) return true;
+	}
+	return false;
+}
+
+// Check for invalid characters in the name of the user to be ignored
+if ($Cmd[3] != "" && ereg("[\ ]", stripslashes($Cmd[3])))
+{
+	$Error = L_ERR_USR_16;
+}
+elseif ($Cmd[1] == "")
+{
+	// Launch the ignored popup	
+	if ($Cmd[3] == "")
+	{
+		$IsCommand = true;
+		$IsPopup = true;
+		$Tmp = (isset($Ign) && $Ign != "") ? "&Ign=".urlencode(stripslashes($Ign)) : "";
+
+		// Define a table that contains JavaScript instructions to be ran
+		$jsTbl = array(
+			"<SCRIPT TYPE=\"text/javascript\" LANGUAGE=\"JavaScript\">",
+			"<!--",
+			"if (window.parent.is_ignored_popup && !window.parent.is_ignored_popup.closed)",
+			"{",
+			"\twindow.parent.is_ignored_popup.focus();",
+			"}",
+			"else",
+			"{",
+			"\twindow.parent.is_ignored_popup = window.open(\"ignore_popup.php?L=$L$Tmp\",\"ignore_popup\",\"width=180,height=300,scrollbars=yes,resizable=yes\");",
+			"}",
+			"// -->",
+			"</SCRIPT>"
+		);
+	}
+	// Add user(s) to ignored list
+	else
+	{
+		if (!isset($Ign)) $Ign="";
+		$Ignore = explode (",", stripslashes($Cmd[3]));
+		for ($i = 0; $i < count($Ignore); $i++)
+		{
+			$Ignore[$i] = trim($Ignore[$i]);
+			if ($Ignore[$i] == "") continue;
+			if ($Ignore[$i] != "" && $Ignore[$i] != stripslashes($U) && !is_user_ignored($Ignore[$i], $Ign))
+			{
+				$tmp = urlencode($Ignore[$i]);
+				$IsCommand = true;
+				$Ign .= $Ign != "" ? ",".$tmp : $tmp;
+				$RefreshMessages = true;
+			}
+		}
+	}
+}
+else
+{
+	// Unset ignored list	
+	if ($Cmd[3] == "")
+	{
+		$IsCommand = true;
+		if (isset($Ign) && $Ign != "")
+		{
+			$RefreshMessages = true;
+			unset($Ign);
+		}
+	}
+	// Remove user(s) from ignored list
+	else
+	{
+		$IsCommand = true;
+		if (isset($Ign) && $Ign != "")
+		{
+			$Ignore = explode (",", stripslashes($Cmd[3]));
+			for ($i = 0; $i < count($Ignore); $i++)
+			{
+				$Ignore[$i] = trim($Ignore[$i]);
+				if ($Ignore[$i] == "") continue;
+				if ($Ignore[$i] != "" && is_user_ignored($Ignore[$i], $Ign))
+				{
+					$users = explode(",", $Ign);
+					$Ign = "";
+					for (reset($users); $user_name=current($users); next($users))
+					{
+						if ($Ignore[$i] != urldecode($user_name)) $Ign .= ($Ign != "")? ",".$user_name : $user_name;
+					}
+					if ($Ign == "") unset($Ign);
+					$RefreshMessages = true;
+				}
+			}
+		}
+	}
+}
+
+if ($IsCommand) $First = 1;		// Will completly reload the loader script
+if (!$IsPopup && $IsCommand)
+{
+	$Tmp = (isset($Ign) && $Ign != "") ? "&Ign=".urlencode(stripslashes($Ign)) : "";
+
+	// Define a table that contains JavaScript instructions to be ran
+	$jsTbl = array(
+		"<SCRIPT TYPE=\"text/javascript\" LANGUAGE=\"JavaScript\">",
+		"<!--",
+		"// Refresh the ignored popup",
+		"with (parent)",
+		"{",
+		"\tif (is_ignored_popup != null && !is_ignored_popup.closed)",
+		"\t{",
+		"\t\tis_ignored_popup.document.forms['IgnForm'].elements['Refresh'].value = 1;",
+		"\t\tis_ignored_popup.location = \"ignore_popup.php?L=$L$Tmp\";",
+		"\t};",
+		"};",
+		"// -->",
+		"</SCRIPT>"
+	);
+};
+
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/commands/ignore.cmd.php3 0.15.0/chat/lib/commands/ignore.cmd.php3
--- 0.14.5/chat/lib/commands/ignore.cmd.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/lib/commands/ignore.cmd.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,125 +0,0 @@
-<?php
-
-// Check if a nick is already in the ignored list
-function is_user_ignored($who, $userlist)
-{
-	$users = explode(",", $userlist);
-	for (reset($users); $user_name=current($users); next($users))
-	{
-		if (strcasecmp($who, urldecode($user_name)) == 0) return true;
-	}
-	return false;
-}
-
-// Check for invalid characters in the name of the user to be ignored
-if ($Cmd[3] != "" && ereg("[\ ]", stripslashes($Cmd[3])))
-{
-	$Error = L_ERR_USR_16;
-}
-elseif ($Cmd[1] == "")
-{
-	// Launch the ignored popup	
-	if ($Cmd[3] == "")
-	{
-		$IsCommand = true;
-		$IsPopup = true;
-		$Tmp = (isset($Ign) && $Ign != "") ? "&Ign=".urlencode(stripslashes($Ign)) : "";
-
-		// Define a table that contains JavaScript instructions to be ran
-		$jsTbl = array(
-			"<SCRIPT TYPE=\"text/javascript\" LANGUAGE=\"JavaScript\">",
-			"<!--",
-			"if (window.parent.is_ignored_popup && !window.parent.is_ignored_popup.closed)",
-			"{",
-			"\twindow.parent.is_ignored_popup.focus();",
-			"}",
-			"else",
-			"{",
-			"\twindow.parent.is_ignored_popup = window.open(\"ignore_popup.php3?L=$L$Tmp\",\"ignore_popup\",\"width=180,height=300,scrollbars=yes,resizable=yes\");",
-			"}",
-			"// -->",
-			"</SCRIPT>"
-		);
-	}
-	// Add user(s) to ignored list
-	else
-	{
-		if (!isset($Ign)) $Ign="";
-		$Ignore = explode (",", stripslashes($Cmd[3]));
-		for ($i = 0; $i < count($Ignore); $i++)
-		{
-			$Ignore[$i] = trim($Ignore[$i]);
-			if ($Ignore[$i] == "") continue;
-			if ($Ignore[$i] != "" && $Ignore[$i] != stripslashes($U) && !is_user_ignored($Ignore[$i], $Ign))
-			{
-				$tmp = urlencode($Ignore[$i]);
-				$IsCommand = true;
-				$Ign .= $Ign != "" ? ",".$tmp : $tmp;
-				$RefreshMessages = true;
-			}
-		}
-	}
-}
-else
-{
-	// Unset ignored list	
-	if ($Cmd[3] == "")
-	{
-		$IsCommand = true;
-		if (isset($Ign) && $Ign != "")
-		{
-			$RefreshMessages = true;
-			unset($Ign);
-		}
-	}
-	// Remove user(s) from ignored list
-	else
-	{
-		$IsCommand = true;
-		if (isset($Ign) && $Ign != "")
-		{
-			$Ignore = explode (",", stripslashes($Cmd[3]));
-			for ($i = 0; $i < count($Ignore); $i++)
-			{
-				$Ignore[$i] = trim($Ignore[$i]);
-				if ($Ignore[$i] == "") continue;
-				if ($Ignore[$i] != "" && is_user_ignored($Ignore[$i], $Ign))
-				{
-					$users = explode(",", $Ign);
-					$Ign = "";
-					for (reset($users); $user_name=current($users); next($users))
-					{
-						if ($Ignore[$i] != urldecode($user_name)) $Ign .= ($Ign != "")? ",".$user_name : $user_name;
-					}
-					if ($Ign == "") unset($Ign);
-					$RefreshMessages = true;
-				}
-			}
-		}
-	}
-}
-
-if ($IsCommand) $First = 1;		// Will completly reload the loader script
-if (!$IsPopup && $IsCommand)
-{
-	$Tmp = (isset($Ign) && $Ign != "") ? "&Ign=".urlencode(stripslashes($Ign)) : "";
-
-	// Define a table that contains JavaScript instructions to be ran
-	$jsTbl = array(
-		"<SCRIPT TYPE=\"text/javascript\" LANGUAGE=\"JavaScript\">",
-		"<!--",
-		"// Refresh the ignored popup",
-		"with (parent)",
-		"{",
-		"\tif (is_ignored_popup != null && !is_ignored_popup.closed)",
-		"\t{",
-		"\t\tis_ignored_popup.document.forms['IgnForm'].elements['Refresh'].value = 1;",
-		"\t\tis_ignored_popup.location = \"ignore_popup.php3?L=$L$Tmp\";",
-		"\t};",
-		"};",
-		"// -->",
-		"</SCRIPT>"
-	);
-};
-
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/commands/invite.cmd.php 0.15.0/chat/lib/commands/invite.cmd.php
--- 0.14.5/chat/lib/commands/invite.cmd.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/lib/commands/invite.cmd.php	2004-04-01 03:06:39.000000000 -0600
@@ -0,0 +1,27 @@
+<?php
+
+// Check for invalid characters in the user name
+if ($Cmd[2] != "" && ereg("[\ ]", stripslashes($Cmd[2])))
+{
+	$Error = L_ERR_USR_16;
+}
+else
+{
+	$IsCommand = true;
+	$TimeSend = time();
+	// Message to add if user need to be registered to enter the current room
+	$ReqRegist = (($T == "0" && !C_REQUIRE_REGISTER) ? ".\" \".L_INVITE_REG" : "");
+	// Get all addressee and insert a message for each one
+	$Invited = explode (",", $Cmd[2]);
+	for ($i = 0; $i < count($Invited); $i++)
+	{
+		$Invited[$i] = trim($Invited[$i]);
+		if ($Invited[$i] == "") continue;
+		$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ($T, '$R', 'SYS inviteTo', '$Latin1', '$TimeSend', '$Invited[$i]', 'sprintf(L_INVITE, \"".special_char($U,$Latin1)."\", \"JOIN\", \"$T #".addslashes(special_char($R,0))."\", \"".special_char($R,0)."\")$ReqRegist')");
+	};
+	unset($Invited);
+	// Insert a message for the sender
+	$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ($T, '$R', 'SYS inviteFrom', '$Latin1', '$TimeSend', '$U', 'sprintf(L_INVITE_DONE, \"".special_char($Cmd[2],0)."\")')");
+};
+
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/commands/invite.cmd.php3 0.15.0/chat/lib/commands/invite.cmd.php3
--- 0.14.5/chat/lib/commands/invite.cmd.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/lib/commands/invite.cmd.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,27 +0,0 @@
-<?php
-
-// Check for invalid characters in the user name
-if ($Cmd[2] != "" && ereg("[\ ]", stripslashes($Cmd[2])))
-{
-	$Error = L_ERR_USR_16;
-}
-else
-{
-	$IsCommand = true;
-	$TimeSend = time();
-	// Message to add if user need to be registered to enter the current room
-	$ReqRegist = (($T == "0" && !C_REQUIRE_REGISTER) ? ".\" \".L_INVITE_REG" : "");
-	// Get all addressee and insert a message for each one
-	$Invited = explode (",", $Cmd[2]);
-	for ($i = 0; $i < count($Invited); $i++)
-	{
-		$Invited[$i] = trim($Invited[$i]);
-		if ($Invited[$i] == "") continue;
-		$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ($T, '$R', 'SYS inviteTo', '$Latin1', '$TimeSend', '$Invited[$i]', 'sprintf(L_INVITE, \"".special_char($U,$Latin1)."\", \"JOIN\", \"$T #".addslashes(special_char($R,0))."\", \"".special_char($R,0)."\")$ReqRegist')");
-	};
-	unset($Invited);
-	// Insert a message for the sender
-	$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ($T, '$R', 'SYS inviteFrom', '$Latin1', '$TimeSend', '$U', 'sprintf(L_INVITE_DONE, \"".special_char($Cmd[2],0)."\")')");
-};
-
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/commands/join.cmd.php 0.15.0/chat/lib/commands/join.cmd.php
--- 0.14.5/chat/lib/commands/join.cmd.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/lib/commands/join.cmd.php	2004-04-01 03:06:39.000000000 -0600
@@ -0,0 +1,145 @@
+<?php
+if (!function_exists("room_in"))
+{ 
+	// This function will be used to test banishment for the room the user wants to enter in
+	// Returns true if the room to check ($what) is in the string ($in), false else
+	function room_in($what, $in)
+	{
+		$rooms = explode(",",$in);
+		for (reset($rooms); $room_name=current($rooms); next($rooms))
+		{
+			if (strcasecmp($what, $room_name) == 0) return true;
+		};
+		return false;
+	};
+};
+
+if (C_NO_SWEAR == 1) include("./lib/swearing.lib.php");
+
+$new_room_type = ($Cmd[2] != "" ? $Cmd[2]:1);
+$new_room = $Cmd[3];
+
+if (C_VERSION == 1)
+{
+	// Ensure that the room to enter in is among default ones
+	for ($i = 0; $i < count($DefaultChatRooms); $i++)
+	{
+		if (strcasecmp($new_room, $DefaultChatRooms[$i]) == 0) $IsCommand = true;
+	}
+	if (!$IsCommand) $Error = L_ERR_USR_17;
+}
+// Check for invalid characters
+elseif (ereg("[\,]", stripslashes($new_room)))
+{
+	$Error = L_ERR_ROM_1;
+}
+// Check for swear words if necessary
+elseif(C_NO_SWEAR == 1 && checkwords($new_room, true))
+{
+	$Error = L_ERR_ROM_2;
+}
+else
+{
+	// Ensure there is no existing room with the same name but a different type
+	// among reserved name for private/public (default) rooms
+	$ToCheck = ($new_room_type == "1" ? $DefaultPrivateRooms : $DefaultChatRooms);
+	for ($i = 0; $i < count($ToCheck); $i++)
+	{
+		if (strcasecmp($new_room,$ToCheck[$i]) == "0")
+		{
+			$Error = ($new_room_type == 0 ? L_ERR_ROM_3:L_ERR_ROM_4);
+			break;
+		};
+	};
+	unset($ToCheck);
+	if (!isset($Error) || $Error == "") $IsCommand = true;
+};
+
+if ($IsCommand)
+{
+	$what_room = "";
+
+	// Get the type of the room and its case sensitive name when it already exists
+	$ToCheck = ($new_room_type == "1" ? $DefaultChatRooms : $DefaultPrivateRooms);
+	for ($i = 0; $i < count($DefaultChatRooms); $i++)
+	{
+		if (strcasecmp($new_room, $ToCheck[$i]) == 0)
+		{
+			$what_room = "R0";
+			$new_room = $ToCheck[$i];
+		};
+	};
+	unset($ToCheck);
+	if ($what_room == "")
+	{
+		$DbLink->query("SELECT room FROM ".C_MSG_TBL." WHERE type='".$new_room_type."' AND room='".$new_room."' LIMIT 1");
+		if ($DbLink->num_rows() != 0)
+		{
+			$what_room = "R1";
+			list($new_room) = $DbLink->next_record();
+		};
+		$DbLink->clean_results();
+	};
+	if ($new_room_type == "0") $what_room = "";
+
+	// Room must be created
+	if ($what_room == "")
+	{
+		// Ensure the user is a registered one
+		if (!isset($Error))
+		{
+			$DbLink->query("SELECT count(*) FROM ".C_REG_TBL." WHERE username='$U'");
+			list($count) = $DbLink->next_record();
+			if ($count != 0) $what_room = "R2";
+			$DbLink->clean_results();
+		};
+
+		// Ensure there is no existing room with the same name but a different type
+		// among rooms created by users
+		if ($what_room == "R2")
+		{
+			$T1 = 1 - $new_room_type;
+			$DbLink->query("SELECT count(*) FROM ".C_MSG_TBL." WHERE room = '".$new_room."' AND type = '$T1' LIMIT 1");
+			list($count) = $DbLink->next_record();
+			$DbLink->clean_results();
+			if($count != 0)
+			{
+				$Error = ($new_room_type == 0 ? L_ERR_ROM_3:L_ERR_ROM_4);
+				$what_room = "";
+			};
+		};
+	};
+
+	// Ensure the user is not banished from the room he wants to enter in
+	if (C_BANISH != "0" && (!isset($status) || $status != "a"))
+	{
+		$$what_room = $new_room;
+		include("./lib/banish.lib.php");
+		if ($IsBanished)
+		{
+			$what_room = "";
+			$Error = L_ERR_USR_20;
+		};
+	};
+
+	// If the room can't be created
+	if ($what_room == "")
+	{
+		if (!isset($Error)) $Error = L_ERR_USR_13;
+		$IsCommand = false;
+	}
+	// Log into the new room
+	else
+	{
+		?>
+		<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript">
+		<!--
+		window.parent.window.location = '<?php echo("$From?Ver=$Ver&L=$L&U=".urlencode(stripslashes($U))."&$what_room=".urlencode(stripslashes($new_room))."&D=$D&N=$N&O=$O&ST=$ST&NT=$NT&E=".urlencode(stripslashes($R))."&T=$new_room_type&Reload=JoinCmd"); if (isset($PWD_Hash)) echo("&PWD_Hash=".$PWD_Hash); ?>';
+		// -->
+		</SCRIPT>
+		<?php
+		exit;
+	};
+};
+
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/commands/join.cmd.php3 0.15.0/chat/lib/commands/join.cmd.php3
--- 0.14.5/chat/lib/commands/join.cmd.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/lib/commands/join.cmd.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,145 +0,0 @@
-<?php
-if (!function_exists("room_in"))
-{ 
-	// This function will be used to test banishment for the room the user wants to enter in
-	// Returns true if the room to check ($what) is in the string ($in), false else
-	function room_in($what, $in)
-	{
-		$rooms = explode(",",$in);
-		for (reset($rooms); $room_name=current($rooms); next($rooms))
-		{
-			if (strcasecmp($what, $room_name) == 0) return true;
-		};
-		return false;
-	};
-};
-
-if (C_NO_SWEAR == 1) include("./lib/swearing.lib.php3");
-
-$new_room_type = ($Cmd[2] != "" ? $Cmd[2]:1);
-$new_room = $Cmd[3];
-
-if (C_VERSION == 1)
-{
-	// Ensure that the room to enter in is among default ones
-	for ($i = 0; $i < count($DefaultChatRooms); $i++)
-	{
-		if (strcasecmp($new_room, $DefaultChatRooms[$i]) == 0) $IsCommand = true;
-	}
-	if (!$IsCommand) $Error = L_ERR_USR_17;
-}
-// Check for invalid characters
-elseif (ereg("[\,]", stripslashes($new_room)))
-{
-	$Error = L_ERR_ROM_1;
-}
-// Check for swear words if necessary
-elseif(C_NO_SWEAR == 1 && checkwords($new_room, true))
-{
-	$Error = L_ERR_ROM_2;
-}
-else
-{
-	// Ensure there is no existing room with the same name but a different type
-	// among reserved name for private/public (default) rooms
-	$ToCheck = ($new_room_type == "1" ? $DefaultPrivateRooms : $DefaultChatRooms);
-	for ($i = 0; $i < count($ToCheck); $i++)
-	{
-		if (strcasecmp($new_room,$ToCheck[$i]) == "0")
-		{
-			$Error = ($new_room_type == 0 ? L_ERR_ROM_3:L_ERR_ROM_4);
-			break;
-		};
-	};
-	unset($ToCheck);
-	if (!isset($Error) || $Error == "") $IsCommand = true;
-};
-
-if ($IsCommand)
-{
-	$what_room = "";
-
-	// Get the type of the room and its case sensitive name when it already exists
-	$ToCheck = ($new_room_type == "1" ? $DefaultChatRooms : $DefaultPrivateRooms);
-	for ($i = 0; $i < count($DefaultChatRooms); $i++)
-	{
-		if (strcasecmp($new_room, $ToCheck[$i]) == 0)
-		{
-			$what_room = "R0";
-			$new_room = $ToCheck[$i];
-		};
-	};
-	unset($ToCheck);
-	if ($what_room == "")
-	{
-		$DbLink->query("SELECT room FROM ".C_MSG_TBL." WHERE type='".$new_room_type."' AND room='".$new_room."' LIMIT 1");
-		if ($DbLink->num_rows() != 0)
-		{
-			$what_room = "R1";
-			list($new_room) = $DbLink->next_record();
-		};
-		$DbLink->clean_results();
-	};
-	if ($new_room_type == "0") $what_room = "";
-
-	// Room must be created
-	if ($what_room == "")
-	{
-		// Ensure the user is a registered one
-		if (!isset($Error))
-		{
-			$DbLink->query("SELECT count(*) FROM ".C_REG_TBL." WHERE username='$U'");
-			list($count) = $DbLink->next_record();
-			if ($count != 0) $what_room = "R2";
-			$DbLink->clean_results();
-		};
-
-		// Ensure there is no existing room with the same name but a different type
-		// among rooms created by users
-		if ($what_room == "R2")
-		{
-			$T1 = 1 - $new_room_type;
-			$DbLink->query("SELECT count(*) FROM ".C_MSG_TBL." WHERE room = '".$new_room."' AND type = '$T1' LIMIT 1");
-			list($count) = $DbLink->next_record();
-			$DbLink->clean_results();
-			if($count != 0)
-			{
-				$Error = ($new_room_type == 0 ? L_ERR_ROM_3:L_ERR_ROM_4);
-				$what_room = "";
-			};
-		};
-	};
-
-	// Ensure the user is not banished from the room he wants to enter in
-	if (C_BANISH != "0" && (!isset($status) || $status != "a"))
-	{
-		$$what_room = $new_room;
-		include("./lib/banish.lib.php3");
-		if ($IsBanished)
-		{
-			$what_room = "";
-			$Error = L_ERR_USR_20;
-		};
-	};
-
-	// If the room can't be created
-	if ($what_room == "")
-	{
-		if (!isset($Error)) $Error = L_ERR_USR_13;
-		$IsCommand = false;
-	}
-	// Log into the new room
-	else
-	{
-		?>
-		<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript">
-		<!--
-		window.parent.window.location = '<?php echo("$From?Ver=$Ver&L=$L&U=".urlencode(stripslashes($U))."&$what_room=".urlencode(stripslashes($new_room))."&D=$D&N=$N&O=$O&ST=$ST&NT=$NT&E=".urlencode(stripslashes($R))."&T=$new_room_type&Reload=JoinCmd"); if (isset($PWD_Hash)) echo("&PWD_Hash=".$PWD_Hash); ?>';
-		// -->
-		</SCRIPT>
-		<?php
-		exit;
-	};
-};
-
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/commands/kick.cmd.php 0.15.0/chat/lib/commands/kick.cmd.php
--- 0.14.5/chat/lib/commands/kick.cmd.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/lib/commands/kick.cmd.php	2004-04-01 03:06:39.000000000 -0600
@@ -0,0 +1,68 @@
+<?php
+
+function room_in($what, $in)
+{
+	$rooms = explode(",",$in);
+	for (reset($rooms); $room_name=current($rooms); next($rooms))
+	{
+		if (strcasecmp($what, $room_name) == 0) return true;
+	}
+	return false;
+}
+
+$UU = $Cmd[1];
+
+// Check for invalid characters
+if (ereg("[\, ]", stripslashes($UU)))
+{
+	$Error = L_ERR_USR_16;
+}
+else
+{
+	// Ensure the current user is moderator for the current room or admin.
+	$DbLink->query("SELECT password,perms,rooms FROM ".C_REG_TBL." WHERE username='$U' LIMIT 1");
+	if ($DbLink->num_rows() == 0)
+	{
+		$Error = L_NO_MODERATOR;
+		$DbLink->clean_results();
+	}
+	else
+	{
+		list($password,$perms,$rooms) = $DbLink->next_record();
+		$DbLink->clean_results();
+		if (($password != $PWD_Hash) || (($perms != "moderator")&&($perms != "admin")) || (($perms == "moderator")&&(!room_in(stripslashes($R), $rooms))))
+		{
+			$Error = L_NO_MODERATOR;
+		}
+		else
+		{
+			// Define an additional condition for moderators so they can only kick an user from their current room
+			$Query4Moder = ($perms != "admin" ? "room='$R' AND " : "");
+			// Ensure the user to be kicked is logged in (into the current room for moderators)
+			$DbLink->query("SELECT status FROM ".C_USR_TBL." WHERE ".$Query4Moder."username='$UU' LIMIT 1");
+			if ($DbLink->num_rows() == 0)
+			{
+				$DbLink->clean_results();
+				$Error = sprintf(L_NONEXIST_USER, stripslashes($UU));
+			}
+			else
+			{
+				list($status) = $DbLink->next_record();
+				$DbLink->clean_results();
+				// Ensure the user to be kicked is not a more powerfull user (admin>moderator)
+				if ($status == "a" || ($status == "m" && $perms != "admin"))
+				{
+					$Error = sprintf(L_NO_KICKED, stripslashes($UU));
+				}
+				else
+				{
+					$IsCommand = true;
+					$RefreshMessages = true;
+					$DbLink->query("UPDATE ".C_USR_TBL." SET u_time='".time()."', status='k' WHERE ".$Query4Moder."username='$UU'");
+				}
+			}
+		}
+	}
+}
+
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/commands/kick.cmd.php3 0.15.0/chat/lib/commands/kick.cmd.php3
--- 0.14.5/chat/lib/commands/kick.cmd.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/lib/commands/kick.cmd.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,68 +0,0 @@
-<?php
-
-function room_in($what, $in)
-{
-	$rooms = explode(",",$in);
-	for (reset($rooms); $room_name=current($rooms); next($rooms))
-	{
-		if (strcasecmp($what, $room_name) == 0) return true;
-	}
-	return false;
-}
-
-$UU = $Cmd[1];
-
-// Check for invalid characters
-if (ereg("[\, ]", stripslashes($UU)))
-{
-	$Error = L_ERR_USR_16;
-}
-else
-{
-	// Ensure the current user is moderator for the current room or admin.
-	$DbLink->query("SELECT password,perms,rooms FROM ".C_REG_TBL." WHERE username='$U' LIMIT 1");
-	if ($DbLink->num_rows() == 0)
-	{
-		$Error = L_NO_MODERATOR;
-		$DbLink->clean_results();
-	}
-	else
-	{
-		list($password,$perms,$rooms) = $DbLink->next_record();
-		$DbLink->clean_results();
-		if (($password != $PWD_Hash) || (($perms != "moderator")&&($perms != "admin")) || (($perms == "moderator")&&(!room_in(stripslashes($R), $rooms))))
-		{
-			$Error = L_NO_MODERATOR;
-		}
-		else
-		{
-			// Define an additional condition for moderators so they can only kick an user from their current room
-			$Query4Moder = ($perms != "admin" ? "room='$R' AND " : "");
-			// Ensure the user to be kicked is logged in (into the current room for moderators)
-			$DbLink->query("SELECT status FROM ".C_USR_TBL." WHERE ".$Query4Moder."username='$UU' LIMIT 1");
-			if ($DbLink->num_rows() == 0)
-			{
-				$DbLink->clean_results();
-				$Error = sprintf(L_NONEXIST_USER, stripslashes($UU));
-			}
-			else
-			{
-				list($status) = $DbLink->next_record();
-				$DbLink->clean_results();
-				// Ensure the user to be kicked is not a more powerfull user (admin>moderator)
-				if ($status == "a" || ($status == "m" && $perms != "admin"))
-				{
-					$Error = sprintf(L_NO_KICKED, stripslashes($UU));
-				}
-				else
-				{
-					$IsCommand = true;
-					$RefreshMessages = true;
-					$DbLink->query("UPDATE ".C_USR_TBL." SET u_time='".time()."', status='k' WHERE ".$Query4Moder."username='$UU'");
-				}
-			}
-		}
-	}
-}
-
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/commands/me.cmd.php 0.15.0/chat/lib/commands/me.cmd.php
--- 0.14.5/chat/lib/commands/me.cmd.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/lib/commands/me.cmd.php	2004-04-01 03:06:39.000000000 -0600
@@ -0,0 +1,17 @@
+<?php
+
+// Check for swear words in the message if necessary
+if (C_NO_SWEAR == 1)
+{
+	include("./lib/swearing.lib.php");
+	$Cmd[1] = checkwords($Cmd[1], false);
+};
+
+$M = "<B>* ".$U." </B>".stripslashes($Cmd[1]);
+
+AddMessage($M, $T, $R, $U, $C, '');
+
+$IsCommand = true;
+$RefreshMessages = true;
+
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/commands/me.cmd.php3 0.15.0/chat/lib/commands/me.cmd.php3
--- 0.14.5/chat/lib/commands/me.cmd.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/lib/commands/me.cmd.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,17 +0,0 @@
-<?php
-
-// Check for swear words in the message if necessary
-if (C_NO_SWEAR == 1)
-{
-	include("./lib/swearing.lib.php3");
-	$Cmd[1] = checkwords($Cmd[1], false);
-};
-
-$M = "<B>* ".$U." </B>".stripslashes($Cmd[1]);
-
-AddMessage($M, $T, $R, $U, $C, '');
-
-$IsCommand = true;
-$RefreshMessages = true;
-
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/commands/notify.cmd.php 0.15.0/chat/lib/commands/notify.cmd.php
--- 0.14.5/chat/lib/commands/notify.cmd.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/lib/commands/notify.cmd.php	2004-04-01 03:06:39.000000000 -0600
@@ -0,0 +1,9 @@
+<?php
+
+$NT = 1 - $NT;
+setcookie("CookieNotify", $NT, time() + 60*60*24*365);		// cookie expires in one year
+$IsCommand = true;
+$First = 1;
+$RefreshMessages = true;
+
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/commands/notify.cmd.php3 0.15.0/chat/lib/commands/notify.cmd.php3
--- 0.14.5/chat/lib/commands/notify.cmd.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/lib/commands/notify.cmd.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,9 +0,0 @@
-<?php
-
-$NT = 1 - $NT;
-setcookie("CookieNotify", $NT, time() + 60*60*24*365);		// cookie expires in one year
-$IsCommand = true;
-$First = 1;
-$RefreshMessages = true;
-
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/commands/order.cmd.php 0.15.0/chat/lib/commands/order.cmd.php
--- 0.14.5/chat/lib/commands/order.cmd.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/lib/commands/order.cmd.php	2004-04-01 03:06:39.000000000 -0600
@@ -0,0 +1,11 @@
+<?php
+
+if ($Ver == "L")
+{
+	$O = 1 - $O;
+	setcookie("CookieMsgOrder", $O, time() + 60*60*24*365);		// cookie expires in one year
+	$IsCommand = true;
+	$RefreshMessages = true;
+}
+
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/commands/order.cmd.php3 0.15.0/chat/lib/commands/order.cmd.php3
--- 0.14.5/chat/lib/commands/order.cmd.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/lib/commands/order.cmd.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,11 +0,0 @@
-<?php
-
-if ($Ver == "L")
-{
-	$O = 1 - $O;
-	setcookie("CookieMsgOrder", $O, time() + 60*60*24*365);		// cookie expires in one year
-	$IsCommand = true;
-	$RefreshMessages = true;
-}
-
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/commands/priv_msg.cmd.php 0.15.0/chat/lib/commands/priv_msg.cmd.php
--- 0.14.5/chat/lib/commands/priv_msg.cmd.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/lib/commands/priv_msg.cmd.php	2004-04-01 03:06:39.000000000 -0600
@@ -0,0 +1,21 @@
+<?php
+
+// Check for invalid characters in the addressee name
+if (ereg("[\, ]", stripslashes($Cmd[2])))
+{
+	$Error = L_ERR_USR_16;
+}
+elseif (trim($Cmd[2]) != "" && trim($Cmd[3]) != "")
+{
+	// Check for swear words in the message if necessary
+	if (C_NO_SWEAR == 1)
+	{
+		include("./lib/swearing.lib.php");
+		$Cmd[3] = checkwords($Cmd[3], false);
+	}
+ 	AddMessage(stripslashes($Cmd[3]), $T, $R, $U, $C, $Cmd[2]);
+	$IsCommand = true;
+	$RefreshMessages = true;
+}
+
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/commands/priv_msg.cmd.php3 0.15.0/chat/lib/commands/priv_msg.cmd.php3
--- 0.14.5/chat/lib/commands/priv_msg.cmd.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/lib/commands/priv_msg.cmd.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,21 +0,0 @@
-<?php
-
-// Check for invalid characters in the addressee name
-if (ereg("[\, ]", stripslashes($Cmd[2])))
-{
-	$Error = L_ERR_USR_16;
-}
-elseif (trim($Cmd[2]) != "" && trim($Cmd[3]) != "")
-{
-	// Check for swear words in the message if necessary
-	if (C_NO_SWEAR == 1)
-	{
-		include("./lib/swearing.lib.php3");
-		$Cmd[3] = checkwords($Cmd[3], false);
-	}
- 	AddMessage(stripslashes($Cmd[3]), $T, $R, $U, $C, $Cmd[2]);
-	$IsCommand = true;
-	$RefreshMessages = true;
-}
-
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/commands/profile.cmd.php 0.15.0/chat/lib/commands/profile.cmd.php
--- 0.14.5/chat/lib/commands/profile.cmd.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/lib/commands/profile.cmd.php	2004-04-01 03:06:39.000000000 -0600
@@ -0,0 +1,16 @@
+<?php
+
+$IsCommand = true;
+$IsPopup = true;
+
+// Define a table that contains JavaScript instructions to be ran
+$jsTbl = array(
+	"<SCRIPT TYPE=\"text/javascript\" LANGUAGE=\"JavaScript\">",
+	"<!--",
+	"// Lauch the profile popup",
+	"window.open(\"edituser.php?L=$L&pmc_username=$U&LIMIT=1\",\"edituser_popup\",\"width=350,height=470,resizable=yes,scrollbars=yes\");",
+	"// -->",
+	"</SCRIPT>"
+);
+
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/commands/profile.cmd.php3 0.15.0/chat/lib/commands/profile.cmd.php3
--- 0.14.5/chat/lib/commands/profile.cmd.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/lib/commands/profile.cmd.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,16 +0,0 @@
-<?php
-
-$IsCommand = true;
-$IsPopup = true;
-
-// Define a table that contains JavaScript instructions to be ran
-$jsTbl = array(
-	"<SCRIPT TYPE=\"text/javascript\" LANGUAGE=\"JavaScript\">",
-	"<!--",
-	"// Lauch the profile popup",
-	"window.open(\"edituser.php3?L=$L&AUTH_USERNAME=$U&LIMIT=1\",\"edituser_popup\",\"width=350,height=470,resizable=yes,scrollbars=yes\");",
-	"// -->",
-	"</SCRIPT>"
-);
-
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/commands/promote.cmd.php 0.15.0/chat/lib/commands/promote.cmd.php
--- 0.14.5/chat/lib/commands/promote.cmd.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/lib/commands/promote.cmd.php	2004-04-01 03:06:39.000000000 -0600
@@ -0,0 +1,73 @@
+<?php
+
+function room_in($what, $in)
+{
+	$rooms = explode(",",$in);
+	for (reset($rooms); $room_name=current($rooms); next($rooms))
+	{
+		if (strcasecmp($what, $room_name) == 0) return true;
+	}
+	return false;
+}
+
+$UU = $Cmd[1];
+
+// Check for invalid characters
+if (ereg("[\, ]", stripslashes($UU)))
+{
+	$Error = L_ERR_USR_16;
+}
+else
+{
+	$DbLink->query("SELECT password,perms,rooms FROM ".C_REG_TBL." WHERE username='$U' LIMIT 1");
+	// Ensure the current user is moderator for the current room or admin.
+	if ($DbLink->num_rows() == 0)
+	{
+		$Error = L_NO_MODERATOR;
+		$DbLink->clean_results();
+	}
+	else
+	{
+		list($password,$perms,$rooms) = $DbLink->next_record();
+		$DbLink->clean_results();
+		if (($password != $PWD_Hash) || (($perms != "moderator")&&($perms != "admin")) || (($perms == "moderator")&&(!room_in(stripslashes($R), $rooms))))
+		{
+			$Error = L_NO_MODERATOR;
+		}
+		else
+		{
+			// Ensure the user to be promoted is a registered one
+			$DbLink->query("SELECT latin1,perms,rooms FROM ".C_REG_TBL." WHERE username='$UU' LIMIT 1");
+			if ($DbLink->num_rows() == 0)
+			{
+				$Error = sprintf(L_NONREG_USER, stripslashes($UU));
+				$DbLink->clean_results();
+			}
+			else
+			{
+				$IsCommand = true;
+				$RefreshMessages = true;
+				list($Latin1_UU,$perms,$rooms) = $DbLink->next_record();
+				$DbLink->clean_results();
+				// Promote the user if is not already moderator for the current room or admin
+				if ($perms == "admin")
+				{
+					$Error = sprintf(L_ADMIN, stripslashes($UU));
+				}
+				elseif (!room_in($R,addslashes($rooms)))
+				{
+					$rooms .= stripslashes($rooms == "" ? $R:",${R}");
+					$DbLink->query("UPDATE ".C_REG_TBL." SET perms='moderator', rooms='".addslashes($rooms)."' WHERE username='$UU'");
+					$DbLink->query("UPDATE ".C_USR_TBL." SET status='m' WHERE username='$UU'");
+					$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ($T, '$R', 'SYS promote', '$Latin1', ".time().", '', 'sprintf(L_MODERATOR, \"".special_char($UU,$Latin1_UU)."\")')");
+				}
+				else
+				{
+					$Error = sprintf(L_IS_MODERATOR, stripslashes($UU));
+				};
+			};
+		};
+	};
+};
+
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/commands/promote.cmd.php3 0.15.0/chat/lib/commands/promote.cmd.php3
--- 0.14.5/chat/lib/commands/promote.cmd.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/lib/commands/promote.cmd.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,73 +0,0 @@
-<?php
-
-function room_in($what, $in)
-{
-	$rooms = explode(",",$in);
-	for (reset($rooms); $room_name=current($rooms); next($rooms))
-	{
-		if (strcasecmp($what, $room_name) == 0) return true;
-	}
-	return false;
-}
-
-$UU = $Cmd[1];
-
-// Check for invalid characters
-if (ereg("[\, ]", stripslashes($UU)))
-{
-	$Error = L_ERR_USR_16;
-}
-else
-{
-	$DbLink->query("SELECT password,perms,rooms FROM ".C_REG_TBL." WHERE username='$U' LIMIT 1");
-	// Ensure the current user is moderator for the current room or admin.
-	if ($DbLink->num_rows() == 0)
-	{
-		$Error = L_NO_MODERATOR;
-		$DbLink->clean_results();
-	}
-	else
-	{
-		list($password,$perms,$rooms) = $DbLink->next_record();
-		$DbLink->clean_results();
-		if (($password != $PWD_Hash) || (($perms != "moderator")&&($perms != "admin")) || (($perms == "moderator")&&(!room_in(stripslashes($R), $rooms))))
-		{
-			$Error = L_NO_MODERATOR;
-		}
-		else
-		{
-			// Ensure the user to be promoted is a registered one
-			$DbLink->query("SELECT latin1,perms,rooms FROM ".C_REG_TBL." WHERE username='$UU' LIMIT 1");
-			if ($DbLink->num_rows() == 0)
-			{
-				$Error = sprintf(L_NONREG_USER, stripslashes($UU));
-				$DbLink->clean_results();
-			}
-			else
-			{
-				$IsCommand = true;
-				$RefreshMessages = true;
-				list($Latin1_UU,$perms,$rooms) = $DbLink->next_record();
-				$DbLink->clean_results();
-				// Promote the user if is not already moderator for the current room or admin
-				if ($perms == "admin")
-				{
-					$Error = sprintf(L_ADMIN, stripslashes($UU));
-				}
-				elseif (!room_in($R,addslashes($rooms)))
-				{
-					$rooms .= stripslashes($rooms == "" ? $R:",${R}");
-					$DbLink->query("UPDATE ".C_REG_TBL." SET perms='moderator', rooms='".addslashes($rooms)."' WHERE username='$UU'");
-					$DbLink->query("UPDATE ".C_USR_TBL." SET status='m' WHERE username='$UU'");
-					$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ($T, '$R', 'SYS promote', '$Latin1', ".time().", '', 'sprintf(L_MODERATOR, \"".special_char($UU,$Latin1_UU)."\")')");
-				}
-				else
-				{
-					$Error = sprintf(L_IS_MODERATOR, stripslashes($UU));
-				};
-			};
-		};
-	};
-};
-
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/commands/quit.cmd.php 0.15.0/chat/lib/commands/quit.cmd.php
--- 0.14.5/chat/lib/commands/quit.cmd.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/lib/commands/quit.cmd.php	2004-04-01 03:06:39.000000000 -0600
@@ -0,0 +1,29 @@
+<?php
+
+// Check for swear words in the message to be sent if there is one
+if (trim($Cmd[3]) != "")
+{
+	if (C_NO_SWEAR == 1)
+	{
+		include("./lib/swearing.lib.php");
+		$Cmd[3] = checkwords($Cmd[3], false);
+	}
+	AddMessage(stripslashes($Cmd[3]), $T, $R, $U, $C, '');
+}
+$IsCommand = true;
+?>
+<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript">
+<!--
+if (window.parent.frames['loader'] && !window.parent.frames['loader'].closed)
+{
+	if (typeof(window.parent.leaveChat) != 'undefined') window.parent.leaveChat = true;
+	window.parent.frames['loader'].close();
+};
+
+window.parent.window.location = '<?php echo("$From?Ver=$Ver&L=$L&U=".urlencode(stripslashes($U))."&O=$O&ST=$ST&NT=$NT&E=".urlencode(stripslashes($R))."&EN=$T"); ?>';
+// -->
+</SCRIPT>
+<?php
+exit;
+
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/commands/quit.cmd.php3 0.15.0/chat/lib/commands/quit.cmd.php3
--- 0.14.5/chat/lib/commands/quit.cmd.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/lib/commands/quit.cmd.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,29 +0,0 @@
-<?php
-
-// Check for swear words in the message to be sent if there is one
-if (trim($Cmd[3]) != "")
-{
-	if (C_NO_SWEAR == 1)
-	{
-		include("./lib/swearing.lib.php3");
-		$Cmd[3] = checkwords($Cmd[3], false);
-	}
-	AddMessage(stripslashes($Cmd[3]), $T, $R, $U, $C, '');
-}
-$IsCommand = true;
-?>
-<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript">
-<!--
-if (window.parent.frames['loader'] && !window.parent.frames['loader'].closed)
-{
-	if (typeof(window.parent.leaveChat) != 'undefined') window.parent.leaveChat = true;
-	window.parent.frames['loader'].close();
-};
-
-window.parent.window.location = '<?php echo("$From?Ver=$Ver&L=$L&U=".urlencode(stripslashes($U))."&O=$O&ST=$ST&NT=$NT&E=".urlencode(stripslashes($R))."&EN=$T"); ?>';
-// -->
-</SCRIPT>
-<?php
-exit;
-
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/commands/refresh.cmd.php 0.15.0/chat/lib/commands/refresh.cmd.php
--- 0.14.5/chat/lib/commands/refresh.cmd.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/lib/commands/refresh.cmd.php	2004-04-01 03:06:39.000000000 -0600
@@ -0,0 +1,14 @@
+<?php
+
+if($Cmd[2] != "")
+{
+	$D = $Cmd[2] < 3 ? 0 : $Cmd[2];
+}
+else
+{
+	$D = ($D == 0 ? 10 : 0);
+}
+$IsCommand = true;
+$RefreshMessages = true;
+
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/commands/refresh.cmd.php3 0.15.0/chat/lib/commands/refresh.cmd.php3
--- 0.14.5/chat/lib/commands/refresh.cmd.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/lib/commands/refresh.cmd.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,14 +0,0 @@
-<?php
-
-if($Cmd[2] != "")
-{
-	$D = $Cmd[2] < 3 ? 0 : $Cmd[2];
-}
-else
-{
-	$D = ($D == 0 ? 10 : 0);
-}
-$IsCommand = true;
-$RefreshMessages = true;
-
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/commands/save.cmd.php 0.15.0/chat/lib/commands/save.cmd.php
--- 0.14.5/chat/lib/commands/save.cmd.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/lib/commands/save.cmd.php	2004-04-01 03:06:39.000000000 -0600
@@ -0,0 +1,40 @@
+<?php
+
+// ** Check for messages to be saved **
+
+// Define the SQL query (depends on values for ignored users list and on whether to display
+// notification messages or not)
+
+$CondForQuery = "";
+$IgnoreList = "'SYS enter','SYS exit','SYS delreg','SYS promote'";
+if (isset($Ign) && $Ign != "") $IgnoreList = ",'".str_replace(",","','",addslashes(urldecode($Ign)))."'";
+if ($IgnoreList != "") $CondForQuery = "username NOT IN (${IgnoreList}) AND ";
+$CondForQuery .= "(address IN ('$U',' *') OR (room = '$R' AND (address = '' OR username = '$U')))";
+
+$DbLink->query("SELECT Count(*) FROM ".C_MSG_TBL." WHERE ".$CondForQuery." LIMIT 1");
+list($Count) = $DbLink->next_record();
+$DbLink->clean_results();
+
+if ($Count != "0")
+{
+	$IsCommand = true;
+	$Save_URL_Query = isset($Ign) ? "&Ign=".urlencode(stripslashes($Ign)) : "";
+	if (C_SAVE != "*" && ($Cmd[2] > C_SAVE || $Cmd[2] == "")) $Cmd[2] = C_SAVE;
+	if ($Cmd[2] != "") $Save_URL_Query .= "&Limit=$Cmd[2]";
+
+	// Define a table that contains JavaScript instructions to be ran
+	$jsTbl = array(
+		"<SCRIPT TYPE=\"text/javascript\" LANGUAGE=\"JavaScript\">",
+		"<!--",
+		"// Save messages to a file",
+		"window.open(\"export.php?L=$L&U=".urlencode(stripslashes($U))."&R=".urlencode(stripslashes($R))."&ST=$ST".$Save_URL_Query."\",\"save_popup\",\"width=0,height=0,scrollbars=no,resizable=no\");",
+		"// -->",
+		"</SCRIPT>"
+	);
+}
+else
+{
+	$Error = L_NO_SAVE;
+};
+
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/commands/save.cmd.php3 0.15.0/chat/lib/commands/save.cmd.php3
--- 0.14.5/chat/lib/commands/save.cmd.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/lib/commands/save.cmd.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,40 +0,0 @@
-<?php
-
-// ** Check for messages to be saved **
-
-// Define the SQL query (depends on values for ignored users list and on whether to display
-// notification messages or not)
-
-$CondForQuery = "";
-$IgnoreList = "'SYS enter','SYS exit','SYS delreg','SYS promote'";
-if (isset($Ign) && $Ign != "") $IgnoreList = ",'".str_replace(",","','",addslashes(urldecode($Ign)))."'";
-if ($IgnoreList != "") $CondForQuery = "username NOT IN (${IgnoreList}) AND ";
-$CondForQuery .= "(address IN ('$U',' *') OR (room = '$R' AND (address = '' OR username = '$U')))";
-
-$DbLink->query("SELECT Count(*) FROM ".C_MSG_TBL." WHERE ".$CondForQuery." LIMIT 1");
-list($Count) = $DbLink->next_record();
-$DbLink->clean_results();
-
-if ($Count != "0")
-{
-	$IsCommand = true;
-	$Save_URL_Query = isset($Ign) ? "&Ign=".urlencode(stripslashes($Ign)) : "";
-	if (C_SAVE != "*" && ($Cmd[2] > C_SAVE || $Cmd[2] == "")) $Cmd[2] = C_SAVE;
-	if ($Cmd[2] != "") $Save_URL_Query .= "&Limit=$Cmd[2]";
-
-	// Define a table that contains JavaScript instructions to be ran
-	$jsTbl = array(
-		"<SCRIPT TYPE=\"text/javascript\" LANGUAGE=\"JavaScript\">",
-		"<!--",
-		"// Save messages to a file",
-		"window.open(\"export.php3?L=$L&U=".urlencode(stripslashes($U))."&R=".urlencode(stripslashes($R))."&ST=$ST".$Save_URL_Query."\",\"save_popup\",\"width=0,height=0,scrollbars=no,resizable=no\");",
-		"// -->",
-		"</SCRIPT>"
-	);
-}
-else
-{
-	$Error = L_NO_SAVE;
-};
-
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/commands/show.cmd.php 0.15.0/chat/lib/commands/show.cmd.php
--- 0.14.5/chat/lib/commands/show.cmd.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/lib/commands/show.cmd.php	2004-04-01 03:06:39.000000000 -0600
@@ -0,0 +1,8 @@
+<?php
+
+$N = ($Cmd[3] != "") ? max(abs($Cmd[3]), 5) : 5;
+$IsCommand = true;
+$First = 1;
+$RefreshMessages = true;
+
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/commands/show.cmd.php3 0.15.0/chat/lib/commands/show.cmd.php3
--- 0.14.5/chat/lib/commands/show.cmd.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/lib/commands/show.cmd.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,8 +0,0 @@
-<?php
-
-$N = ($Cmd[3] != "") ? max(abs($Cmd[3]), 5) : 5;
-$IsCommand = true;
-$First = 1;
-$RefreshMessages = true;
-
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/commands/timestamp.cmd.php 0.15.0/chat/lib/commands/timestamp.cmd.php
--- 0.14.5/chat/lib/commands/timestamp.cmd.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/lib/commands/timestamp.cmd.php	2004-04-01 03:06:39.000000000 -0600
@@ -0,0 +1,30 @@
+<?php
+
+$ST = 1 - $ST;
+setcookie("CookieShowTimestamp", $ST, time() + 60*60*24*365);		// cookie expires in one year
+$IsCommand = true;
+$First = 1;
+$RefreshMessages = true;
+
+// Define a table that contains JavaScript instructions to be ran
+$jsTbl = array(
+	"<SCRIPT TYPE=\"text/javascript\" LANGUAGE=\"JavaScript\">",
+	"<!--",
+	"// Show/hide the server time in the status bar"
+);
+
+if ($ST == 1)
+{
+	$CorrectedDate = mktime(date("H") + C_TMZ_OFFSET,date("i"),date("s"),date("m"),date("d"),date("Y"));
+	$jsTbl[] = "gap = window.parent.calc_gap(\"".date("F d, Y H:i:s", $CorrectedDate)."\");";
+	$jsTbl[] = "window.parent.clock(gap);";
+}
+else
+{
+	$jsTbl[] = "window.parent.stop_clock();";
+};
+
+$jsTbl[] = "// -->";
+$jsTbl[] = "</SCRIPT>";
+
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/commands/timestamp.cmd.php3 0.15.0/chat/lib/commands/timestamp.cmd.php3
--- 0.14.5/chat/lib/commands/timestamp.cmd.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/lib/commands/timestamp.cmd.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,30 +0,0 @@
-<?php
-
-$ST = 1 - $ST;
-setcookie("CookieShowTimestamp", $ST, time() + 60*60*24*365);		// cookie expires in one year
-$IsCommand = true;
-$First = 1;
-$RefreshMessages = true;
-
-// Define a table that contains JavaScript instructions to be ran
-$jsTbl = array(
-	"<SCRIPT TYPE=\"text/javascript\" LANGUAGE=\"JavaScript\">",
-	"<!--",
-	"// Show/hide the server time in the status bar"
-);
-
-if ($ST == 1)
-{
-	$CorrectedDate = mktime(date("H") + C_TMZ_OFFSET,date("i"),date("s"),date("m"),date("d"),date("Y"));
-	$jsTbl[] = "gap = window.parent.calc_gap(\"".date("F d, Y H:i:s", $CorrectedDate)."\");";
-	$jsTbl[] = "window.parent.clock(gap);";
-}
-else
-{
-	$jsTbl[] = "window.parent.stop_clock();";
-};
-
-$jsTbl[] = "// -->";
-$jsTbl[] = "</SCRIPT>";
-
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/commands/whois.cmd.php 0.15.0/chat/lib/commands/whois.cmd.php
--- 0.14.5/chat/lib/commands/whois.cmd.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/lib/commands/whois.cmd.php	2004-04-01 03:06:39.000000000 -0600
@@ -0,0 +1,75 @@
+<?php
+
+function room_in($what, $in)
+{
+	for (reset($in); $room_name=current($in); next($in))
+	{
+		if (strcasecmp($what, $room_name) == 0) return true;
+	}
+	return false;
+}
+
+// Check for invalid characters in the user name
+if (ereg("[\, ]", stripslashes($Cmd[1])))
+{
+	$Error = L_ERR_USR_16;
+}
+else
+{
+	$IsCommand = true;
+
+	// Define what can see the current user:
+	// - the whole profile including e-mail and IP address if he is admin or moderator of the current room
+	//   if this room is one of the default rooms;
+	// - e-mail only if the registered user accepted this to be displayed and no IP
+	if ($status == "a")
+	{	
+		$power = "all";
+	}
+	elseif ($status == "m" && room_in(stripslashes($R),$DefaultChatRooms))
+	{
+		$power = "medium";
+	}
+	else
+	{
+		$power = "weak";
+	};
+
+	// Ensure the user whose profile is required is a registered one
+	$DbLink->query("SELECT count(*) FROM ".C_REG_TBL." WHERE username='".$Cmd[1]."' LIMIT 1");
+	list($count) = $DbLink->next_record();
+	$DbLink->clean_results();
+	if ($count == 0)
+	{
+		$Error = sprintf(L_NONREG_USER, stripslashes($Cmd[1]));
+		if ($power != "weak")
+		{
+			$DbLink->query("SELECT ip FROM ".C_USR_TBL." WHERE username='".$Cmd[1]."' LIMIT 1");
+			$Nb = $DbLink->num_rows();
+			if ($Nb != "0")
+			{
+				list($IP) = $DbLink->next_record();
+				if (substr($IP, 0, 1) == "p") $IP = substr($IP, 1)." (proxy)";
+				$Error .= "\\n".sprintf(L_NONREG_USER_IP, $IP);
+			};
+			$DbLink->clean_results();
+ 		};
+	}
+	else
+	{
+		$IsPopup = true;
+		$win_name = "whois_popup_".md5(uniqid(""));
+
+		// Define a table that contains JavaScript instructions to be ran
+		$jsTbl = array(
+			"<SCRIPT TYPE=\"text/javascript\" LANGUAGE=\"JavaScript\">",
+			"<!--",
+			"// Lauch the whois popup",
+			"window.open(\"whois_popup.php?L=$L&power=$power&U=".urlencode(stripslashes($Cmd[1]))."&R=".urlencode(stripslashes($R))."\",\"$win_name\",\"width=420,height=240,resizable=yes,scrollbars=yes\");",
+			"// -->",
+			"</SCRIPT>"
+		);
+	};
+}
+
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/commands/whois.cmd.php3 0.15.0/chat/lib/commands/whois.cmd.php3
--- 0.14.5/chat/lib/commands/whois.cmd.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/lib/commands/whois.cmd.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,75 +0,0 @@
-<?php
-
-function room_in($what, $in)
-{
-	for (reset($in); $room_name=current($in); next($in))
-	{
-		if (strcasecmp($what, $room_name) == 0) return true;
-	}
-	return false;
-}
-
-// Check for invalid characters in the user name
-if (ereg("[\, ]", stripslashes($Cmd[1])))
-{
-	$Error = L_ERR_USR_16;
-}
-else
-{
-	$IsCommand = true;
-
-	// Define what can see the current user:
-	// - the whole profile including e-mail and IP address if he is admin or moderator of the current room
-	//   if this room is one of the default rooms;
-	// - e-mail only if the registered user accepted this to be displayed and no IP
-	if ($status == "a")
-	{	
-		$power = "all";
-	}
-	elseif ($status == "m" && room_in(stripslashes($R),$DefaultChatRooms))
-	{
-		$power = "medium";
-	}
-	else
-	{
-		$power = "weak";
-	};
-
-	// Ensure the user whose profile is required is a registered one
-	$DbLink->query("SELECT count(*) FROM ".C_REG_TBL." WHERE username='".$Cmd[1]."' LIMIT 1");
-	list($count) = $DbLink->next_record();
-	$DbLink->clean_results();
-	if ($count == 0)
-	{
-		$Error = sprintf(L_NONREG_USER, stripslashes($Cmd[1]));
-		if ($power != "weak")
-		{
-			$DbLink->query("SELECT ip FROM ".C_USR_TBL." WHERE username='".$Cmd[1]."' LIMIT 1");
-			$Nb = $DbLink->num_rows();
-			if ($Nb != "0")
-			{
-				list($IP) = $DbLink->next_record();
-				if (substr($IP, 0, 1) == "p") $IP = substr($IP, 1)." (proxy)";
-				$Error .= "\\n".sprintf(L_NONREG_USER_IP, $IP);
-			};
-			$DbLink->clean_results();
- 		};
-	}
-	else
-	{
-		$IsPopup = true;
-		$win_name = "whois_popup_".md5(uniqid(""));
-
-		// Define a table that contains JavaScript instructions to be ran
-		$jsTbl = array(
-			"<SCRIPT TYPE=\"text/javascript\" LANGUAGE=\"JavaScript\">",
-			"<!--",
-			"// Lauch the whois popup",
-			"window.open(\"whois_popup.php3?L=$L&power=$power&U=".urlencode(stripslashes($Cmd[1]))."&R=".urlencode(stripslashes($R))."\",\"$win_name\",\"width=420,height=240,resizable=yes,scrollbars=yes\");",
-			"// -->",
-			"</SCRIPT>"
-		);
-	};
-}
-
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/commands.lib.php 0.15.0/chat/lib/commands.lib.php
--- 0.14.5/chat/lib/commands.lib.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/lib/commands.lib.php	2004-04-01 03:06:35.000000000 -0600
@@ -0,0 +1,86 @@
+<?php
+if (eregi("^\/(show|last)([[:space:]]([[:digit:]]+))?$", $M, $Cmd))
+{
+	include("./lib/commands/show.cmd.php");
+}
+elseif (eregi("^\/refresh([[:space:]]([[:digit:]]*))?$", $M, $Cmd))
+{
+	include("./lib/commands/refresh.cmd.php");
+}
+elseif (eregi("^\/order$", $M))
+{
+	include("./lib/commands/order.cmd.php");
+}
+elseif (eregi("^\/timestamp$", $M))
+{
+	include("./lib/commands/timestamp.cmd.php");
+}
+elseif (C_VERSION > 0 && eregi("^\/join[[:space:]]((0|1)[[:space:]])?#(.{1,30})$", $M, $Cmd))
+{
+	include("./lib/commands/join.cmd.php");
+}
+elseif (eregi("^\/(quit|exit|bye)([[:space:]](.+))?$", $M, $Cmd))
+{
+	include("./lib/commands/quit.cmd.php");
+}
+elseif (eregi("^\/ignore([[:space:]]\\-)?([[:space:]](.+))?$", $M, $Cmd))
+{
+	include("./lib/commands/ignore.cmd.php");
+}
+elseif (eregi("^\/!$", $M, $Cmd) && (isset ($M0) && $M0 != ""))
+{
+	include("./lib/commands/history.cmd.php");
+}
+elseif (eregi("^\/kick[[:space:]](.{1,30})$", $M, $Cmd))
+{
+	include("./lib/commands/kick.cmd.php");
+}
+elseif (eregi("^\/(msg|to)[[:space:]]([^[:space:]]{1,30})[[:space:]](.+)$", $M, $Cmd))
+{
+	include("./lib/commands/priv_msg.cmd.php");
+}
+elseif (eregi("^\/whois[[:space:]](.{1,30})$", $M, $Cmd))
+{
+	include("./lib/commands/whois.cmd.php");
+}
+elseif (eregi("^\/profile$", $M))
+{
+	include("./lib/commands/profile.cmd.php");
+}
+elseif (eregi("^\/notify$", $M))
+{
+	include("./lib/commands/notify.cmd.php");
+}
+elseif (eregi("^\/promote[[:space:]](.{1,30})$", $M, $Cmd))
+{
+	include("./lib/commands/promote.cmd.php");
+}
+elseif (eregi("^\/(help|\?)$", $M, $Cmd))
+{
+	include("./lib/commands/help.cmd.php");
+}
+elseif (eregi("^\/clear$", $M, $Cmd))
+{
+	include("./lib/commands/clear.cmd.php");
+}
+elseif (C_SAVE != "0" && eregi("^\/save([[:space:]]([[:digit:]]*))?$", $M, $Cmd) && ($Cmd[2] == "" OR $Cmd[2] > 0))
+{
+	include("./lib/commands/save.cmd.php");
+}
+elseif (eregi("^\/announce[[:space:]](.*)?$", $M, $Cmd))
+{
+	include("./lib/commands/announce.cmd.php");
+}
+elseif (eregi("^\/invite([[:space:]](.+))+$", $M, $Cmd))
+{
+	include("./lib/commands/invite.cmd.php");
+}
+elseif (C_BANISH != "0" && eregi("^\/ban[[:space:]](\*[[:space:]])?(.{1,30})$", $M, $Cmd))
+{
+	include("./lib/commands/banish.cmd.php");
+}
+elseif (eregi("^\/me[[:space:]](.*)?$", $M, $Cmd))
+{
+	include("./lib/commands/me.cmd.php");
+};
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/commands.lib.php3 0.15.0/chat/lib/commands.lib.php3
--- 0.14.5/chat/lib/commands.lib.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/lib/commands.lib.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,86 +0,0 @@
-<?php
-if (eregi("^\/(show|last)([[:space:]]([[:digit:]]+))?$", $M, $Cmd))
-{
-	include("./lib/commands/show.cmd.php3");
-}
-elseif (eregi("^\/refresh([[:space:]]([[:digit:]]*))?$", $M, $Cmd))
-{
-	include("./lib/commands/refresh.cmd.php3");
-}
-elseif (eregi("^\/order$", $M))
-{
-	include("./lib/commands/order.cmd.php3");
-}
-elseif (eregi("^\/timestamp$", $M))
-{
-	include("./lib/commands/timestamp.cmd.php3");
-}
-elseif (C_VERSION > 0 && eregi("^\/join[[:space:]]((0|1)[[:space:]])?#(.{1,30})$", $M, $Cmd))
-{
-	include("./lib/commands/join.cmd.php3");
-}
-elseif (eregi("^\/(quit|exit|bye)([[:space:]](.+))?$", $M, $Cmd))
-{
-	include("./lib/commands/quit.cmd.php3");
-}
-elseif (eregi("^\/ignore([[:space:]]\\-)?([[:space:]](.+))?$", $M, $Cmd))
-{
-	include("./lib/commands/ignore.cmd.php3");
-}
-elseif (eregi("^\/!$", $M, $Cmd) && (isset ($M0) && $M0 != ""))
-{
-	include("./lib/commands/history.cmd.php3");
-}
-elseif (eregi("^\/kick[[:space:]](.{1,30})$", $M, $Cmd))
-{
-	include("./lib/commands/kick.cmd.php3");
-}
-elseif (eregi("^\/(msg|to)[[:space:]]([^[:space:]]{1,30})[[:space:]](.+)$", $M, $Cmd))
-{
-	include("./lib/commands/priv_msg.cmd.php3");
-}
-elseif (eregi("^\/whois[[:space:]](.{1,30})$", $M, $Cmd))
-{
-	include("./lib/commands/whois.cmd.php3");
-}
-elseif (eregi("^\/profile$", $M))
-{
-	include("./lib/commands/profile.cmd.php3");
-}
-elseif (eregi("^\/notify$", $M))
-{
-	include("./lib/commands/notify.cmd.php3");
-}
-elseif (eregi("^\/promote[[:space:]](.{1,30})$", $M, $Cmd))
-{
-	include("./lib/commands/promote.cmd.php3");
-}
-elseif (eregi("^\/(help|\?)$", $M, $Cmd))
-{
-	include("./lib/commands/help.cmd.php3");
-}
-elseif (eregi("^\/clear$", $M, $Cmd))
-{
-	include("./lib/commands/clear.cmd.php3");
-}
-elseif (C_SAVE != "0" && eregi("^\/save([[:space:]]([[:digit:]]*))?$", $M, $Cmd) && ($Cmd[2] == "" OR $Cmd[2] > 0))
-{
-	include("./lib/commands/save.cmd.php3");
-}
-elseif (eregi("^\/announce[[:space:]](.*)?$", $M, $Cmd))
-{
-	include("./lib/commands/announce.cmd.php3");
-}
-elseif (eregi("^\/invite([[:space:]](.+))+$", $M, $Cmd))
-{
-	include("./lib/commands/invite.cmd.php3");
-}
-elseif (C_BANISH != "0" && eregi("^\/ban[[:space:]](\*[[:space:]])?(.{1,30})$", $M, $Cmd))
-{
-	include("./lib/commands/banish.cmd.php3");
-}
-elseif (eregi("^\/me[[:space:]](.*)?$", $M, $Cmd))
-{
-	include("./lib/commands/me.cmd.php3");
-};
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/connected_users.lib.php 0.15.0/chat/lib/connected_users.lib.php
--- 0.14.5/chat/lib/connected_users.lib.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/lib/connected_users.lib.php	2004-04-01 03:06:35.000000000 -0600
@@ -0,0 +1,52 @@
+<?php
+// Fix a security holes
+if (!is_dir('./'.substr($ChatPath, 0, -1))) exit();
+
+require("./${ChatPath}config/config.lib.php");
+require("./${ChatPath}lib/database/".C_DB_TYPE.".lib.php");
+require("./${ChatPath}lib/clean.lib.php");
+
+function display_connected($Private,$Full,$String1,$String2)
+{
+	$List = "";
+
+	if ($Private)
+	{
+		$query = "SELECT DISTINCT username, latin1 FROM ".C_USR_TBL;
+	}
+	else
+	{
+		$query = "SELECT DISTINCT u.username, u.latin1 FROM ".C_USR_TBL." u, ".C_MSG_TBL." m WHERE u.room = m.room AND m.type = 1 ORDER BY username";
+	}
+
+	$DbLink = new DB;
+	$DbLink->query($query);
+	$NbUsers = $DbLink->num_rows();
+
+	if ($NbUsers > 0)
+	{
+		if ($Full)
+		{
+			echo($String1."<BR>");
+			while(list($User,$Latin1) = $DbLink->next_record())
+			{
+				if ($Latin1) $User = htmlentities($User);
+				$List .= ($List == "" ? $User : ", ".$User);
+			}
+			echo($List);
+		}
+		else
+		{
+			echo($NbUsers." ".$String1);
+		}
+	}
+	else
+	{
+		echo($String2);
+	}
+
+	$DbLink->clean_results();
+	$DbLink->Close();
+}
+
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/connected_users.lib.php3 0.15.0/chat/lib/connected_users.lib.php3
--- 0.14.5/chat/lib/connected_users.lib.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/lib/connected_users.lib.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,52 +0,0 @@
-<?php
-// Fix a security holes
-if (!is_dir('./'.substr($ChatPath, 0, -1))) exit();
-
-require("./${ChatPath}config/config.lib.php3");
-require("./${ChatPath}lib/database/".C_DB_TYPE.".lib.php3");
-require("./${ChatPath}lib/clean.lib.php3");
-
-function display_connected($Private,$Full,$String1,$String2)
-{
-	$List = "";
-
-	if ($Private)
-	{
-		$query = "SELECT DISTINCT username, latin1 FROM ".C_USR_TBL;
-	}
-	else
-	{
-		$query = "SELECT DISTINCT u.username, u.latin1 FROM ".C_USR_TBL." u, ".C_MSG_TBL." m WHERE u.room = m.room AND m.type = 1 ORDER BY username";
-	}
-
-	$DbLink = new DB;
-	$DbLink->query($query);
-	$NbUsers = $DbLink->num_rows();
-
-	if ($NbUsers > 0)
-	{
-		if ($Full)
-		{
-			echo($String1."<BR>");
-			while(list($User,$Latin1) = $DbLink->next_record())
-			{
-				if ($Latin1) $User = htmlentities($User);
-				$List .= ($List == "" ? $User : ", ".$User);
-			}
-			echo($List);
-		}
-		else
-		{
-			echo($NbUsers." ".$String1);
-		}
-	}
-	else
-	{
-		echo($String2);
-	}
-
-	$DbLink->clean_results();
-	$DbLink->Close();
-}
-
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/connectStateH.js 0.15.0/chat/lib/connectStateH.js
--- 0.14.5/chat/lib/connectStateH.js	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/lib/connectStateH.js	2004-04-01 03:06:35.000000000 -0600
@@ -1,83 +1,83 @@
-/* ***************************************************************
-**     Stuff for displaying connection state in "H" version     **
-**************************************************************** */
-
-// Images & misc vars
-imgConnectOff = new Image(13,13); imgConnectOff.src = path2Chat + 'images/connectOff.gif';
-imgConnectOn = new Image(13,13); imgConnectOn.src = path2Chat + 'images/connectOn.gif';
-imgConnectErr = new Image(13,13); imgConnectErr.src = path2Chat + 'images/connectError.gif';
-imgConnect = new Image(13,13);
-var leaveChat = false;
-var connect = 0;
-var imgCon_disp = null;
-
-// Tries to connect and to reconnect once if the first connection failed.
-// Also modifies the 'connection status' icon at the exit frame.
-function Connecting(numTry)
-{
-	if (imgCon_disp) clearTimeout(imgCon_disp);
-	connect = numTry;
-	if (numTry == 1 || numTry == 2)
-	{
-		imgConnect.src = imgConnectOn.src;
-	}
-	else if (numTry == 3)
-	{
-		imgConnect.src = imgConnectErr.src;
-	};
-
-	if (document.all)
-	{
-		window.frames['exit'].window.document.all['ConState'].src = imgConnect.src;
-	}
-	else if (document.images)
-	{
-		window.frames['exit'].window.document.images['ConState'].src = imgConnect.src;
-	}
-	else return;
-
-	if (numTry < 3)
-	{
-		numTry = numTry + 1;
-		imgCon_disp = setTimeout('Connecting(' + numTry + ')', 30000);
-	}
-	else
-	{
-		clearTimeout(imgCon_disp);
-		connect = 0;
-	};
-};
-
-// Kill the timeout defined in the 'Connecting' function to reconnect once if the first
-// connection failed, and set the 'connection status' icon to 'done' in the exit frame.
-function ConnectDone()
-{
-	connect = 0;
-	if (imgCon_disp) clearTimeout(imgCon_disp);
-
-	if (document.all)
-	{
-		if (window.frames['exit'].window.document.all['ConState']) window.frames['exit'].window.document.all['ConState'].src = imgConnectOff.src;
-	}
-	else if (document.images)
-	{
-		if (window.frames['exit'].window.document.images['ConState']) window.frames['exit'].window.document.images['ConState'].src = imgConnectOff.src;
-	}
-	else return;
-};
-
-// Used when the user click on the 'connection status' icon in the exit frame. 
-function reConnect()
-{
-	if (connect != 1 && connect != 2)
-	{
-		Connecting(1);
-		force_refresh();
-		with (window.parent.frames['input'].window.document.forms['MsgForm'])
-		{
-			elements['sent'].value				= '0';
-			if (document.all)
-				elements['sendForm'].disabled	= false;
-		}	
-	};
+/* ***************************************************************
+**     Stuff for displaying connection state in "H" version     **
+**************************************************************** */
+
+// Images & misc vars
+imgConnectOff = new Image(13,13); imgConnectOff.src = path2Chat + 'images/connectOff.gif';
+imgConnectOn = new Image(13,13); imgConnectOn.src = path2Chat + 'images/connectOn.gif';
+imgConnectErr = new Image(13,13); imgConnectErr.src = path2Chat + 'images/connectError.gif';
+imgConnect = new Image(13,13);
+var leaveChat = false;
+var connect = 0;
+var imgCon_disp = null;
+
+// Tries to connect and to reconnect once if the first connection failed.
+// Also modifies the 'connection status' icon at the exit frame.
+function Connecting(numTry)
+{
+	if (imgCon_disp) clearTimeout(imgCon_disp);
+	connect = numTry;
+	if (numTry == 1 || numTry == 2)
+	{
+		imgConnect.src = imgConnectOn.src;
+	}
+	else if (numTry == 3)
+	{
+		imgConnect.src = imgConnectErr.src;
+	};
+
+	if (document.all)
+	{
+		window.frames['exit'].window.document.all['ConState'].src = imgConnect.src;
+	}
+	else if (document.images)
+	{
+		window.frames['exit'].window.document.images['ConState'].src = imgConnect.src;
+	}
+	else return;
+
+	if (numTry < 3)
+	{
+		numTry = numTry + 1;
+		imgCon_disp = setTimeout('Connecting(' + numTry + ')', 30000);
+	}
+	else
+	{
+		clearTimeout(imgCon_disp);
+		connect = 0;
+	};
+};
+
+// Kill the timeout defined in the 'Connecting' function to reconnect once if the first
+// connection failed, and set the 'connection status' icon to 'done' in the exit frame.
+function ConnectDone()
+{
+	connect = 0;
+	if (imgCon_disp) clearTimeout(imgCon_disp);
+
+	if (document.all)
+	{
+		if (window.frames['exit'].window.document.all['ConState']) window.frames['exit'].window.document.all['ConState'].src = imgConnectOff.src;
+	}
+	else if (document.images)
+	{
+		if (window.frames['exit'].window.document.images['ConState']) window.frames['exit'].window.document.images['ConState'].src = imgConnectOff.src;
+	}
+	else return;
+};
+
+// Used when the user click on the 'connection status' icon in the exit frame. 
+function reConnect()
+{
+	if (connect != 1 && connect != 2)
+	{
+		Connecting(1);
+		force_refresh();
+		with (window.parent.frames['input'].window.document.forms['MsgForm'])
+		{
+			elements['sent'].value				= '0';
+			if (document.all)
+				elements['sendForm'].disabled	= false;
+		}	
+	};
 };
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/database/mysql.lib.php 0.15.0/chat/lib/database/mysql.lib.php
--- 0.14.5/chat/lib/database/mysql.lib.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/lib/database/mysql.lib.php	2004-04-01 03:06:39.000000000 -0600
@@ -0,0 +1,96 @@
+<?php
+class DB
+{
+	var $Host = C_DB_HOST;			// Hostname of our MySQL server
+	var $Database = C_DB_NAME;		// Logical database name on that server
+	var $User = C_DB_USER;			// Database user
+	var $Password = C_DB_PASS;		// Database user's password
+	var $Link_ID = 0;				// Result of mysql_connect()
+	var $Query_ID = 0;				// Result of most recent mysql_query()
+	var $Record	= array();			// Current mysql_fetch_array()-result
+	var $Row;						// Current row number
+	var $Errno = 0;					// Error state of query
+	var $Error = "";
+
+	function halt($msg)
+	{
+		echo("</TD></TR></TABLE><B>Database error:</B> $msg<BR>\n");
+		echo("<B>MySQL error</B>: $this->Errno ($this->Error)<BR>\n");
+		die("Session halted.");
+	}
+
+	function connect()
+	{
+		if($this->Link_ID == 0)
+		{
+			$this->Link_ID = mysql_connect($this->Host, $this->User, $this->Password);
+			if (!$this->Link_ID)
+			{
+				$this->halt("Link_ID == false, connect failed");
+			}
+			$SelectResult = mysql_select_db($this->Database, $this->Link_ID);
+			if(!$SelectResult)
+			{
+				$this->Errno = mysql_errno($this->Link_ID);
+				$this->Error = mysql_error($this->Link_ID);
+				$this->halt("cannot select database <I>".$this->Database."</I>");
+			}
+		}
+	}
+
+	function query($Query_String)
+	{
+		$this->connect();
+		$this->Query_ID = mysql_query($Query_String,$this->Link_ID);
+		$this->Row = 0;
+		$this->Errno = mysql_errno();
+		$this->Error = mysql_error();
+		if (!$this->Query_ID)
+		{
+			$this->halt("Invalid SQL: ".$Query_String);
+		}
+		return $this->Query_ID;
+	}
+
+	function next_record()
+	{
+		$this->Record = mysql_fetch_array($this->Query_ID);
+		$this->Row += 1;
+		$this->Errno = mysql_errno();
+		$this->Error = mysql_error();
+		$stat = is_array($this->Record);
+		if (!$stat)
+		{
+			mysql_free_result($this->Query_ID);
+			$this->Query_ID = 0;
+		}
+		return $this->Record;
+	}
+
+	function num_rows()
+	{
+		return mysql_num_rows($this->Query_ID);
+	}
+
+	function affected_rows()
+	{
+		return mysql_affected_rows($this->Link_ID);
+	}
+
+	function optimize($tbl_name)
+	{
+		$this->connect();
+		$this->Query_ID = @mysql_query("OPTIMIZE TABLE $tbl_name",$this->Link_ID);
+	}
+
+	function clean_results()
+	{
+		if($this->Query_ID != 0) mysql_freeresult($this->Query_ID);
+	}
+
+	function close()
+	{
+		if($this->Link_ID != 0) mysql_close($this->Link_ID);
+	}
+}
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/database/mysql.lib.php3 0.15.0/chat/lib/database/mysql.lib.php3
--- 0.14.5/chat/lib/database/mysql.lib.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/lib/database/mysql.lib.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,96 +0,0 @@
-<?php
-class DB
-{
-	var $Host = C_DB_HOST;			// Hostname of our MySQL server
-	var $Database = C_DB_NAME;		// Logical database name on that server
-	var $User = C_DB_USER;			// Database user
-	var $Password = C_DB_PASS;		// Database user's password
-	var $Link_ID = 0;				// Result of mysql_connect()
-	var $Query_ID = 0;				// Result of most recent mysql_query()
-	var $Record	= array();			// Current mysql_fetch_array()-result
-	var $Row;						// Current row number
-	var $Errno = 0;					// Error state of query
-	var $Error = "";
-
-	function halt($msg)
-	{
-		echo("</TD></TR></TABLE><B>Database error:</B> $msg<BR>\n");
-		echo("<B>MySQL error</B>: $this->Errno ($this->Error)<BR>\n");
-		die("Session halted.");
-	}
-
-	function connect()
-	{
-		if($this->Link_ID == 0)
-		{
-			$this->Link_ID = mysql_connect($this->Host, $this->User, $this->Password);
-			if (!$this->Link_ID)
-			{
-				$this->halt("Link_ID == false, connect failed");
-			}
-			$SelectResult = mysql_select_db($this->Database, $this->Link_ID);
-			if(!$SelectResult)
-			{
-				$this->Errno = mysql_errno($this->Link_ID);
-				$this->Error = mysql_error($this->Link_ID);
-				$this->halt("cannot select database <I>".$this->Database."</I>");
-			}
-		}
-	}
-
-	function query($Query_String)
-	{
-		$this->connect();
-		$this->Query_ID = mysql_query($Query_String,$this->Link_ID);
-		$this->Row = 0;
-		$this->Errno = mysql_errno();
-		$this->Error = mysql_error();
-		if (!$this->Query_ID)
-		{
-			$this->halt("Invalid SQL: ".$Query_String);
-		}
-		return $this->Query_ID;
-	}
-
-	function next_record()
-	{
-		$this->Record = mysql_fetch_array($this->Query_ID);
-		$this->Row += 1;
-		$this->Errno = mysql_errno();
-		$this->Error = mysql_error();
-		$stat = is_array($this->Record);
-		if (!$stat)
-		{
-			mysql_free_result($this->Query_ID);
-			$this->Query_ID = 0;
-		}
-		return $this->Record;
-	}
-
-	function num_rows()
-	{
-		return mysql_num_rows($this->Query_ID);
-	}
-
-	function affected_rows()
-	{
-		return mysql_affected_rows($this->Link_ID);
-	}
-
-	function optimize($tbl_name)
-	{
-		$this->connect();
-		$this->Query_ID = @mysql_query("OPTIMIZE TABLE $tbl_name",$this->Link_ID);
-	}
-
-	function clean_results()
-	{
-		if($this->Query_ID != 0) mysql_freeresult($this->Query_ID);
-	}
-
-	function close()
-	{
-		if($this->Link_ID != 0) mysql_close($this->Link_ID);
-	}
-}
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/database/odbc.lib.php 0.15.0/chat/lib/database/odbc.lib.php
--- 0.14.5/chat/lib/database/odbc.lib.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/lib/database/odbc.lib.php	2004-04-01 03:06:40.000000000 -0600
@@ -0,0 +1,202 @@
+<?php
+// ODBC library for phpMyChat by J. "Guli" Mikulas <guli1@email.cz>
+
+class DB
+{
+	var $Host = C_DB_HOST;			// Hostname of our MySQL server
+	var $Database = C_DB_NAME;		// Logical database name on that server
+	var $User = C_DB_USER;			// Database user
+	var $Password = C_DB_PASS;		// Database user's password
+	var $UseODBCCursor = 0;
+	var $Link_ID = 0;			// Result of mysql_connect()
+	var $Query_ID = 0;			// Result of most recent mysql_query()
+	var $Record	= array();		// Current mysql_fetch_array()-result
+	var $Row    = 0;			// Current row number
+	var $Errno = 0;				// Error state of query
+	var $Error = "";
+
+	var $Auto_Free = 1;     ## set this to 1 to automatically free results, 0 else
+
+
+	function halt($msg)
+	{
+		printf("</td></tr></table><b>Database error:</b> %s<br>\n", $msg);
+		printf("<b>ODBC Error</b>: %s (%s)<br>\n",
+		$this->Errno,
+		$this->Error);
+		die("Session halted.");
+	}
+
+
+	function connect()
+	{
+		if (0 == $this->Link_ID)
+		{
+			$this->Link_ID = odbc_connect($this->Database, $this->User, $this->Password, $this->UseODBCCursor);
+			if (!$this->Link_ID)
+			{
+				$this->halt("Link-ID == false, connect failed");
+			}
+		}
+	}
+  
+	function query($Query_String)
+	{
+		// remove the 'LIMIT' clause from the query
+		$pos = strpos($Query_String, " LIMIT ");
+		if ($pos) $Query_String = substr($Query_String, 0, $pos);
+		unset($pos);
+
+		$this->connect();
+
+		# printf("<br>Debug: query = %s<br>\n", $Query_String);
+
+		# rei@netone.com.br suggested that we use this instead of the odbc_exec().
+		# He is on NT, connecting to a Unix MySQL server with ODBC. -- KK
+		# $this->Query_ID = odbc_prepare($this->Link_ID,$Query_String);
+		# $this->Query_Ok = odbc_execute($this->Query_ID);
+        
+		$this->Query_ID = odbc_exec($this->Link_ID,$Query_String);
+		$this->Row = 0;
+		odbc_binmode($this->Query_ID, 1);
+		odbc_longreadlen($this->Query_ID, 4096);
+    
+		if (!$this->Query_ID)
+		{
+			$this->Errno = 1;
+			$this->Error = "General Error (The ODBC interface cannot return detailed error messages).";
+			$this->halt("Invalid SQL: ".$Query_String);
+		}
+		return $this->Query_ID;
+	}
+  
+	function next_record()
+	{
+		$this->Record = array();
+		$this->$stat = odbc_fetch_into($this->Query_ID, ++$this->Row, &$this->Record);
+		if (!$this->$stat)
+		{
+			if ($this->Auto_Free)
+			{
+				odbc_free_result($this->Query_ID);
+				$this->Query_ID = 0;
+			};
+		}
+		else
+		{
+			// add to Record[<key>]
+			$count = odbc_num_fields($this->Query_ID);
+			for ($i=1; $i<=$count; $i++)
+			$this->Record[strtolower(odbc_field_name ($this->Query_ID, $i)) ] = $this->Record[ $i - 1 ];
+		}
+		return $this->Record;
+	}
+  
+	function seek($pos)
+	{
+		$this->Row = $pos;
+	}
+
+	function metadata($table)
+	{
+		$count = 0;
+		$id    = 0;
+		$res   = array();
+
+		$this->connect();
+		$id = odbc_exec($this->Link_ID, "select * from $table");
+		if (!$id)
+		{
+			$this->Errno = 1;
+			$this->Error = "General Error (The ODBC interface cannot return detailed error messages).";
+			$this->halt("Metadata query failed.");
+		}
+		$count = odbc_num_fields($id);
+    
+		for ($i=1; $i<=$count; $i++)
+		{
+			$res[$i]["table"] = $table;
+			$name             = odbc_field_name ($id, $i);
+			$res[$i]["name"]  = $name;
+			$res[$i]["type"]  = odbc_field_type ($id, $name);
+			$res[$i]["len"]   = 0;  // can we determine the width of this column?
+			$res[$i]["flags"] = ""; // any optional flags to report?
+		}
+    
+		odbc_free_result($id);
+		return $res;
+	}
+  
+	function num_rows()
+	{
+		# Many ODBC drivers don't support odbc_num_rows() on SELECT statements.
+		$num_rows = odbc_num_rows($this->Query_ID);
+		//printf ($num_rows."<br>");
+
+		# This is a workaround. It is intended to be ugly.
+		if ($num_rows < 0)
+		{
+			$i=10;
+			while (odbc_fetch_row($this->Query_ID, $i)) $i*=10;
+
+			$j=0;
+			while ($i!=$j)
+			{
+				$k= $j+intval(($i-$j)/2);
+				if (odbc_fetch_row($this->Query_ID, $k))
+					$j=$k;
+				else 
+					$i=$k;
+				if (($i-$j)==1)
+				{
+					if (odbc_fetch_row($this->Query_ID, $i)) 
+						$j=$i;
+					else 
+						$i=$j; 
+				};
+				//printf("$i $j $k <br>");
+			};
+			$num_rows=$i;
+		}
+
+		return $num_rows;
+	}
+  
+
+	function num_fields()
+	{
+		return count($this->Record)/2;
+	}
+  
+	function field_value($Field_Name)
+	{
+		return $this->Record[strtolower($Field_Name)];
+	}
+  
+	function f($Field_Name)
+	{
+		return $this->Record[strtolower($Field_Name)];
+	}
+
+	function affected_rows()
+	{
+		return odbc_num_rows($this->Query_ID);
+	}  
+
+	function optimize($tbl_name)
+	{
+		// TODO...
+		return false;
+	}
+
+	function clean_results()
+	{
+		if($this->Query_ID != 0) odbc_freeresult($this->Query_ID);
+	}
+
+	function close()
+	{
+		if($this->Link_ID != 0) odbc_close($this->Link_ID);
+	}
+}
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/database/odbc.lib.php3 0.15.0/chat/lib/database/odbc.lib.php3
--- 0.14.5/chat/lib/database/odbc.lib.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/lib/database/odbc.lib.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,202 +0,0 @@
-<?php
-// ODBC library for phpMyChat by J. "Guli" Mikulas <guli1@email.cz>
-
-class DB
-{
-	var $Host = C_DB_HOST;			// Hostname of our MySQL server
-	var $Database = C_DB_NAME;		// Logical database name on that server
-	var $User = C_DB_USER;			// Database user
-	var $Password = C_DB_PASS;		// Database user's password
-	var $UseODBCCursor = 0;
-	var $Link_ID = 0;			// Result of mysql_connect()
-	var $Query_ID = 0;			// Result of most recent mysql_query()
-	var $Record	= array();		// Current mysql_fetch_array()-result
-	var $Row    = 0;			// Current row number
-	var $Errno = 0;				// Error state of query
-	var $Error = "";
-
-	var $Auto_Free = 1;     ## set this to 1 to automatically free results, 0 else
-
-
-	function halt($msg)
-	{
-		printf("</td></tr></table><b>Database error:</b> %s<br>\n", $msg);
-		printf("<b>ODBC Error</b>: %s (%s)<br>\n",
-		$this->Errno,
-		$this->Error);
-		die("Session halted.");
-	}
-
-
-	function connect()
-	{
-		if (0 == $this->Link_ID)
-		{
-			$this->Link_ID = odbc_connect($this->Database, $this->User, $this->Password, $this->UseODBCCursor);
-			if (!$this->Link_ID)
-			{
-				$this->halt("Link-ID == false, connect failed");
-			}
-		}
-	}
-  
-	function query($Query_String)
-	{
-		// remove the 'LIMIT' clause from the query
-		$pos = strpos($Query_String, " LIMIT ");
-		if ($pos) $Query_String = substr($Query_String, 0, $pos);
-		unset($pos);
-
-		$this->connect();
-
-		# printf("<br>Debug: query = %s<br>\n", $Query_String);
-
-		# rei@netone.com.br suggested that we use this instead of the odbc_exec().
-		# He is on NT, connecting to a Unix MySQL server with ODBC. -- KK
-		# $this->Query_ID = odbc_prepare($this->Link_ID,$Query_String);
-		# $this->Query_Ok = odbc_execute($this->Query_ID);
-        
-		$this->Query_ID = odbc_exec($this->Link_ID,$Query_String);
-		$this->Row = 0;
-		odbc_binmode($this->Query_ID, 1);
-		odbc_longreadlen($this->Query_ID, 4096);
-    
-		if (!$this->Query_ID)
-		{
-			$this->Errno = 1;
-			$this->Error = "General Error (The ODBC interface cannot return detailed error messages).";
-			$this->halt("Invalid SQL: ".$Query_String);
-		}
-		return $this->Query_ID;
-	}
-  
-	function next_record()
-	{
-		$this->Record = array();
-		$this->$stat = odbc_fetch_into($this->Query_ID, ++$this->Row, &$this->Record);
-		if (!$this->$stat)
-		{
-			if ($this->Auto_Free)
-			{
-				odbc_free_result($this->Query_ID);
-				$this->Query_ID = 0;
-			};
-		}
-		else
-		{
-			// add to Record[<key>]
-			$count = odbc_num_fields($this->Query_ID);
-			for ($i=1; $i<=$count; $i++)
-			$this->Record[strtolower(odbc_field_name ($this->Query_ID, $i)) ] = $this->Record[ $i - 1 ];
-		}
-		return $this->Record;
-	}
-  
-	function seek($pos)
-	{
-		$this->Row = $pos;
-	}
-
-	function metadata($table)
-	{
-		$count = 0;
-		$id    = 0;
-		$res   = array();
-
-		$this->connect();
-		$id = odbc_exec($this->Link_ID, "select * from $table");
-		if (!$id)
-		{
-			$this->Errno = 1;
-			$this->Error = "General Error (The ODBC interface cannot return detailed error messages).";
-			$this->halt("Metadata query failed.");
-		}
-		$count = odbc_num_fields($id);
-    
-		for ($i=1; $i<=$count; $i++)
-		{
-			$res[$i]["table"] = $table;
-			$name             = odbc_field_name ($id, $i);
-			$res[$i]["name"]  = $name;
-			$res[$i]["type"]  = odbc_field_type ($id, $name);
-			$res[$i]["len"]   = 0;  // can we determine the width of this column?
-			$res[$i]["flags"] = ""; // any optional flags to report?
-		}
-    
-		odbc_free_result($id);
-		return $res;
-	}
-  
-	function num_rows()
-	{
-		# Many ODBC drivers don't support odbc_num_rows() on SELECT statements.
-		$num_rows = odbc_num_rows($this->Query_ID);
-		//printf ($num_rows."<br>");
-
-		# This is a workaround. It is intended to be ugly.
-		if ($num_rows < 0)
-		{
-			$i=10;
-			while (odbc_fetch_row($this->Query_ID, $i)) $i*=10;
-
-			$j=0;
-			while ($i!=$j)
-			{
-				$k= $j+intval(($i-$j)/2);
-				if (odbc_fetch_row($this->Query_ID, $k))
-					$j=$k;
-				else 
-					$i=$k;
-				if (($i-$j)==1)
-				{
-					if (odbc_fetch_row($this->Query_ID, $i)) 
-						$j=$i;
-					else 
-						$i=$j; 
-				};
-				//printf("$i $j $k <br>");
-			};
-			$num_rows=$i;
-		}
-
-		return $num_rows;
-	}
-  
-
-	function num_fields()
-	{
-		return count($this->Record)/2;
-	}
-  
-	function field_value($Field_Name)
-	{
-		return $this->Record[strtolower($Field_Name)];
-	}
-  
-	function f($Field_Name)
-	{
-		return $this->Record[strtolower($Field_Name)];
-	}
-
-	function affected_rows()
-	{
-		return odbc_num_rows($this->Query_ID);
-	}  
-
-	function optimize($tbl_name)
-	{
-		// TODO...
-		return false;
-	}
-
-	function clean_results()
-	{
-		if($this->Query_ID != 0) odbc_freeresult($this->Query_ID);
-	}
-
-	function close()
-	{
-		if($this->Link_ID != 0) odbc_close($this->Link_ID);
-	}
-}
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/database/pgsql.lib.php 0.15.0/chat/lib/database/pgsql.lib.php
--- 0.14.5/chat/lib/database/pgsql.lib.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/lib/database/pgsql.lib.php	2004-04-01 03:06:40.000000000 -0600
@@ -0,0 +1,108 @@
+<?php
+// PostgreSQL library for phpMyChat by Martin Dvorak <jezek2@penguin.cz>
+
+class DB
+{
+	var $Host = C_DB_HOST;		// Hostname of our PostgreSQL server
+	var $Database = C_DB_NAME;		// Logical database name on that server
+	var $User = C_DB_USER;		// Database user
+	var $Password = C_DB_PASS;		// Database user's password
+	var $Link_ID = 0;			// Result of pg_Connect()
+	var $Query_ID = 0;			// Result of most recent pg_Exec()
+	var $Record	= array();		// Current pg_fetch_array()-result
+	var $Row;				// Current row number
+	var $Errno = 0;			// Error state of query (not supported)
+	var $Error = "";
+
+	function halt($msg)
+	{
+		echo("</TD></TR></TABLE><B>Database error:</B> $msg<BR>\n");
+		echo("<B>PostgreSQL error</B>: $this->Errno ($this->Error)<BR>\n");
+		die("Session halted.");
+	}
+
+	function connect()
+	{
+		if($this->Link_ID == 0)
+		{
+			$options = '';
+			if ($this->Host)
+			{
+				$tmp = split(':', $this->Host);
+				$options .= 'host=' . $tmp[0];
+				if ($tmp[1])
+				{
+					$options .= ' port=' . $tmp[1];
+				}
+			}
+			$options .= ' dbname=' . $this->Database;
+			if ($this->User)
+			{
+				$options .= ' user=' . $this->User;
+			}
+			if ($this->Password)
+			{
+				$options .= ' password=' . $this->Password;
+			}
+			$this->Link_ID = @pg_Connect($options);
+			if (!$this->Link_ID)
+			{
+				$this->halt("Link_ID == false, connect failed");
+			}
+		}
+	}
+
+	function query($Query_String)
+	{
+		$this->connect();
+		$this->Query_ID = @pg_exec($this->Link_ID,$Query_String);
+		$this->Row = 0;
+		$this->Error = pg_errormessage();
+		if (!$this->Query_ID)
+		{
+			$this->halt("Invalid SQL: ".$Query_String);
+		}
+		return $this->Query_ID;
+	}
+
+	function next_record()
+	{
+		$this->Record = @pg_fetch_array($this->Query_ID, $this->Row);
+		$this->Row += 1;
+		$this->Error = pg_errormessage();
+		$stat = is_array($this->Record);
+		if (!$stat)
+		{
+			pg_freeresult($this->Query_ID);
+			$this->Query_ID = 0;
+		}
+		return $this->Record;
+	}
+
+	function num_rows()
+	{
+		return pg_numrows($this->Query_ID);
+	}
+
+	function affected_rows()
+	{
+		return pg_cmdtuples($this->Query_ID);
+	}
+
+	function optimize($tbl_name)
+	{
+		$this->connect();
+		$this->Query_ID =  @pg_exec($this->Link_ID, "VACUUM $tbl_name");
+	}
+
+	function clean_results()
+	{
+		if($this->Query_ID != 0) pg_FreeResult($this->Query_ID);
+	}
+
+	function close()
+	{
+		if($this->Link_ID != 0) pg_close($this->Link_ID);
+	}
+}
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/database/pgsql.lib.php3 0.15.0/chat/lib/database/pgsql.lib.php3
--- 0.14.5/chat/lib/database/pgsql.lib.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/lib/database/pgsql.lib.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,101 +0,0 @@
-<?php
-// PostgreSQL library for phpMyChat by Martin Dvorak <jezek2@penguin.cz>
-
-class DB
-{
-	var $Host = C_DB_HOST;		// Hostname of our PostgreSQL server
-	var $Database = C_DB_NAME;		// Logical database name on that server
-	var $User = C_DB_USER;		// Database user
-	var $Password = C_DB_PASS;		// Database user's password
-	var $Link_ID = 0;			// Result of pg_Connect()
-	var $Query_ID = 0;			// Result of most recent pg_Exec()
-	var $Record	= array();		// Current pg_fetch_array()-result
-	var $Row;				// Current row number
-	var $Errno = 0;			// Error state of query (not supported)
-	var $Error = "";
-
-	function halt($msg)
-	{
-		echo("</TD></TR></TABLE><B>Database error:</B> $msg<BR>\n");
-		echo("<B>PostgreSQL error</B>: $this->Errno ($this->Error)<BR>\n");
-		die("Session halted.");
-	}
-
-	function connect()
-	{
-		if($this->Link_ID == 0)
-		{
-			$options = "dbname=".$this->Database;
-			if ($this->Host)
-			{
-				$tmp = split(":", $this->Host);
-				if ($tmp[0])
-				{
-					$options .= " host=".$tmp[0];
-					if ($tmp[1]) $options .= " port=".$tmp[1];
-				}
-			}
-			if ($this->User) $options .= " user=".$this->User;
-			if ($this->Password) $options .= " password=".$this->Password;
-			$this->Link_ID = @pg_Connect($options);
-			if (!$this->Link_ID)
-			{
-				$this->halt("Link_ID == false, connect failed");
-			}
-		}
-	}
-
-	function query($Query_String)
-	{
-		$this->connect();
-		$this->Query_ID = @pg_exec($this->Link_ID,$Query_String);
-		$this->Row = 0;
-		$this->Error = pg_errormessage();
-		if (!$this->Query_ID)
-		{
-			$this->halt("Invalid SQL: ".$Query_String);
-		}
-		return $this->Query_ID;
-	}
-
-	function next_record()
-	{
-		$this->Record = @pg_fetch_array($this->Query_ID, $this->Row);
-		$this->Row += 1;
-		$this->Error = pg_errormessage();
-		$stat = is_array($this->Record);
-		if (!$stat)
-		{
-			pg_freeresult($this->Query_ID);
-			$this->Query_ID = 0;
-		}
-		return $this->Record;
-	}
-
-	function num_rows()
-	{
-		return pg_numrows($this->Query_ID);
-	}
-
-	function affected_rows()
-	{
-		return pg_cmdtuples($this->Query_ID);
-	}
-
-	function optimize($tbl_name)
-	{
-		$this->connect();
-		$this->Query_ID =  @pg_exec($this->Link_ID, "VACUUM $tbl_name");
-	}
-
-	function clean_results()
-	{
-		if($this->Query_ID != 0) pg_FreeResult($this->Query_ID);
-	}
-
-	function close()
-	{
-		if($this->Link_ID != 0) pg_close($this->Link_ID);
-	}
-}
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/frameset_def.lib.php 0.15.0/chat/lib/frameset_def.lib.php
--- 0.14.5/chat/lib/frameset_def.lib.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/lib/frameset_def.lib.php	2004-04-01 03:06:35.000000000 -0600
@@ -0,0 +1,62 @@
+<?php
+/* --------------------------------------------------------------------------------
+   Define the frameset to be used depending on the javascript version implemened in
+   the bowser.
+   This library is called by the 'chat/lib/index.lib.php' script
+   -------------------------------------------------------------------------------- */
+
+// Fix some security holes
+if (!is_dir('./'.substr($ChatPath, 0, -1))) exit();
+
+$U1 = urlencode(stripslashes($U));
+$R1 = urlencode(stripslashes($R));
+
+// ** Define the Frameset for the chat depending on the browser capacities for DHTML **
+
+// With DHTML : 3 imbricated framesets to have a true hidden frame for the loader (fix for a NN4+ bug)
+if ($Ver1 == "H")
+{
+	?>
+	<FRAMESET COLS="100%,*,*" FRAMEBORDER="0" BORDER="0" FRAMESPACING="0" OnResize="if (document.layers) window.location = '<?php echo("$From?L=$L&Ver=$Ver&U=$U1$AddPwd2Url&R=$R1&T=$T&D=$D&N=$N&Reload=NNResize"); ?>';">
+
+		<!-- Visible framesets -->
+		<FRAMESET COLS="*,130" FRAMEBORDER="0" BORDER="0" FRAMESPACING="0">
+			<FRAMESET ROWS="*,50" FRAMEBORDER="0" BORDER="0" FRAMESPACING="0">
+				<FRAME SRC="<?php echo($ChatPath); ?>blank.php?<?php echo("L=$L"); ?>" NAME="messages" FRAMEBORDER="0" BORDER="0" FRAMESPACING="0" MARGINWIDTH="3" MARGINHEIGHT="3">
+				<FRAME SRC="<?php echo($ChatPath); ?>input.php?<?php echo("From=$From&Ver=$Ver&L=$L&U=$U1&R=$R1&T=$T&D=$D&N=$N&O=$O&ST=$ST&NT=$NT$AddPwd2Url"); ?>" NAME="input" FRAMEBORDER="0" BORDER="0" FRAMESPACING="0" MARGINWIDTH=0 MARGINHEIGHT=0 SCROLLING="NO" NORESIZE>
+			</FRAMESET>
+			<FRAMESET ROWS="80,*,50" FRAMEBORDER="0" BORDER="0" FRAMESPACING="0">
+				<FRAME SRC="<?php echo($ChatPath); ?>exit.php?<?php echo("From=$From&Ver=$Ver&L=$L&U=$U1&R=$R1&T=$T"); ?>" NAME="exit" FRAMEBORDER="0" BORDER="0" FRAMESPACING="0" MARGINWIDTH=3 MARGINHEIGHT=3 SCROLLING="NO">
+				<FRAME SRC="<?php echo($ChatPath); ?>usersH.php?<?php echo("From=$From&L=$L&U=$U1$AddPwd2Url&R=$R1&T=$T&D=$D&N=$N"); ?>" NAME="users" FRAMEBORDER="0" BORDER="0" FRAMESPACING="0" MARGINWIDTH=3 MARGINHEIGHT=3>
+				<FRAME SRC="<?php echo($ChatPath); ?>link.htm" NAME="link" FRAMEBORDER="0" BORDER="0" FRAMESPACING="0" MARGINWIDTH=0 MARGINHEIGHT=0 SCROLLING="NO">
+			</FRAMESET>
+		</FRAMESET>
+
+		<!-- Hidden frame for the input work when something has been sent -->
+		<FRAME SRC="<?php echo($ChatPath); ?>blank.php?<?php echo("L=$L"); ?>" NAME="input_sent" FRAMEBORDER="0" BORDER="0" FRAMESPACING="0" MARGINHEIGHT="0" MARGINWIDTH="0" SCROLLING="NO">
+
+		<!-- Hidden frame for the loader -->
+		<FRAME SRC="<?php echo($ChatPath); ?>loader.php?<?php echo("From=$From&L=$L&Ver=$Ver&U=$U1&R=$R1&T=$T&D=$D&N=$N&ST=$ST&NT=$NT$AddPwd2Url&First=1"); ?>" NAME="loader" FRAMEBORDER="0" BORDER="0" FRAMESPACING="0" MARGINHEIGHT="0" MARGINWIDTH="0" SCROLLING="NO">
+	</FRAMESET>
+	<?php
+}
+
+// Without DHTML : 2 imbricated framesets
+else
+{
+	?>
+	<FRAMESET COLS="*,130" FRAMEBORDER="0" BORDER="0" FRAMESPACING="0" OnResize="if (document.layers) window.location = '<?php echo("$From?L=$L&Ver=$Ver&U=$U1$AddPwd2Url&R=$R1&T=$T&D=$D&N=$N&Reload=NNResize"); ?>';">
+		<FRAMESET ROWS="*,50" BORDER=0>
+			<FRAME SRC="<?php echo($ChatPath); ?>messagesL.php?<?php echo("From=$From&L=$L&U=$U1&R=$R1&T=$T&D=$D&N=$N&O=$O&ST=$ST&NT=$NT$AddPwd2Url"); ?>" NAME="messages" MARGINWIDTH=3 MARGINHEIGHT=3>
+			<FRAME SRC="<?php echo($ChatPath); ?>input.php?<?php echo("From=$From&Ver=$Ver&L=$L&U=$U1&R=$R1&T=$T&D=$D&N=$N&O=$O&ST=$ST&NT=$NT$AddPwd2Url"); ?>" NAME="input" MARGINWIDTH=0 MARGINHEIGHT=0 SCROLLING="NO" NORESIZE>
+		</FRAMESET>
+		<FRAMESET ROWS="80,*,50" BORDER=0>
+			<FRAME SRC="<?php echo($ChatPath); ?>exit.php?<?php echo("From=$From&Ver=$Ver&L=$L&U=$U1&R=$R1&T=$T"); ?>" NAME="exit" MARGINWIDTH=3 MARGINHEIGHT=3 SCROLLING="NO">
+			<FRAME SRC="<?php echo($ChatPath); ?>usersL.php?<?php echo("From=$From&L=$L&U=$U1$AddPwd2Url&R=$R1&T=$T&D=$D&N=$N"); ?>" NAME="users" MARGINWIDTH=3 MARGINHEIGHT=3>
+			<FRAME SRC="<?php echo($ChatPath); ?>link.htm" NAME="link" MARGINWIDTH=0 MARGINHEIGHT=0 SCROLLING="NO">
+		</FRAMESET>
+	</FRAMESET>
+	<?php
+}
+
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/frameset_def.lib.php3 0.15.0/chat/lib/frameset_def.lib.php3
--- 0.14.5/chat/lib/frameset_def.lib.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/lib/frameset_def.lib.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,62 +0,0 @@
-<?php
-/* --------------------------------------------------------------------------------
-   Define the frameset to be used depending on the javascript version implemened in
-   the bowser.
-   This library is called by the 'chat/lib/index.lib.php3' script
-   -------------------------------------------------------------------------------- */
-
-// Fix some security holes
-if (!is_dir('./'.substr($ChatPath, 0, -1))) exit();
-
-$U1 = urlencode(stripslashes($U));
-$R1 = urlencode(stripslashes($R));
-
-// ** Define the Frameset for the chat depending on the browser capacities for DHTML **
-
-// With DHTML : 3 imbricated framesets to have a true hidden frame for the loader (fix for a NN4+ bug)
-if ($Ver1 == "H")
-{
-	?>
-	<FRAMESET COLS="100%,*,*" FRAMEBORDER="0" BORDER="0" FRAMESPACING="0" OnResize="if (document.layers) window.location = '<?php echo("$From?L=$L&Ver=$Ver&U=$U1$AddPwd2Url&R=$R1&T=$T&D=$D&N=$N&Reload=NNResize"); ?>';">
-
-		<!-- Visible framesets -->
-		<FRAMESET COLS="*,130" FRAMEBORDER="0" BORDER="0" FRAMESPACING="0">
-			<FRAMESET ROWS="*,50" FRAMEBORDER="0" BORDER="0" FRAMESPACING="0">
-				<FRAME SRC="<?php echo($ChatPath); ?>blank.php3?<?php echo("L=$L"); ?>" NAME="messages" FRAMEBORDER="0" BORDER="0" FRAMESPACING="0" MARGINWIDTH="3" MARGINHEIGHT="3">
-				<FRAME SRC="<?php echo($ChatPath); ?>input.php3?<?php echo("From=$From&Ver=$Ver&L=$L&U=$U1&R=$R1&T=$T&D=$D&N=$N&O=$O&ST=$ST&NT=$NT$AddPwd2Url"); ?>" NAME="input" FRAMEBORDER="0" BORDER="0" FRAMESPACING="0" MARGINWIDTH=0 MARGINHEIGHT=0 SCROLLING="NO" NORESIZE>
-			</FRAMESET>
-			<FRAMESET ROWS="80,*,50" FRAMEBORDER="0" BORDER="0" FRAMESPACING="0">
-				<FRAME SRC="<?php echo($ChatPath); ?>exit.php3?<?php echo("From=$From&Ver=$Ver&L=$L&U=$U1&R=$R1&T=$T"); ?>" NAME="exit" FRAMEBORDER="0" BORDER="0" FRAMESPACING="0" MARGINWIDTH=3 MARGINHEIGHT=3 SCROLLING="NO">
-				<FRAME SRC="<?php echo($ChatPath); ?>usersH.php3?<?php echo("From=$From&L=$L&U=$U1$AddPwd2Url&R=$R1&T=$T&D=$D&N=$N"); ?>" NAME="users" FRAMEBORDER="0" BORDER="0" FRAMESPACING="0" MARGINWIDTH=3 MARGINHEIGHT=3>
-				<FRAME SRC="<?php echo($ChatPath); ?>link.htm" NAME="link" FRAMEBORDER="0" BORDER="0" FRAMESPACING="0" MARGINWIDTH=0 MARGINHEIGHT=0 SCROLLING="NO">
-			</FRAMESET>
-		</FRAMESET>
-
-		<!-- Hidden frame for the input work when something has been sent -->
-		<FRAME SRC="<?php echo($ChatPath); ?>blank.php3?<?php echo("L=$L"); ?>" NAME="input_sent" FRAMEBORDER="0" BORDER="0" FRAMESPACING="0" MARGINHEIGHT="0" MARGINWIDTH="0" SCROLLING="NO">
-
-		<!-- Hidden frame for the loader -->
-		<FRAME SRC="<?php echo($ChatPath); ?>loader.php3?<?php echo("From=$From&L=$L&Ver=$Ver&U=$U1&R=$R1&T=$T&D=$D&N=$N&ST=$ST&NT=$NT$AddPwd2Url&First=1"); ?>" NAME="loader" FRAMEBORDER="0" BORDER="0" FRAMESPACING="0" MARGINHEIGHT="0" MARGINWIDTH="0" SCROLLING="NO">
-	</FRAMESET>
-	<?php
-}
-
-// Without DHTML : 2 imbricated framesets
-else
-{
-	?>
-	<FRAMESET COLS="*,130" FRAMEBORDER="0" BORDER="0" FRAMESPACING="0" OnResize="if (document.layers) window.location = '<?php echo("$From?L=$L&Ver=$Ver&U=$U1$AddPwd2Url&R=$R1&T=$T&D=$D&N=$N&Reload=NNResize"); ?>';">
-		<FRAMESET ROWS="*,50" BORDER=0>
-			<FRAME SRC="<?php echo($ChatPath); ?>messagesL.php3?<?php echo("From=$From&L=$L&U=$U1&R=$R1&T=$T&D=$D&N=$N&O=$O&ST=$ST&NT=$NT"); ?>" NAME="messages" MARGINWIDTH=3 MARGINHEIGHT=3>
-			<FRAME SRC="<?php echo($ChatPath); ?>input.php3?<?php echo("From=$From&Ver=$Ver&L=$L&U=$U1&R=$R1&T=$T&D=$D&N=$N&O=$O&ST=$ST&NT=$NT$AddPwd2Url"); ?>" NAME="input" MARGINWIDTH=0 MARGINHEIGHT=0 SCROLLING="NO" NORESIZE>
-		</FRAMESET>
-		<FRAMESET ROWS="80,*,50" BORDER=0>
-			<FRAME SRC="<?php echo($ChatPath); ?>exit.php3?<?php echo("From=$From&Ver=$Ver&L=$L&U=$U1&R=$R1&T=$T"); ?>" NAME="exit" MARGINWIDTH=3 MARGINHEIGHT=3 SCROLLING="NO">
-			<FRAME SRC="<?php echo($ChatPath); ?>usersL.php3?<?php echo("From=$From&L=$L&U=$U1$AddPwd2Url&R=$R1&T=$T&D=$D&N=$N"); ?>" NAME="users" MARGINWIDTH=3 MARGINHEIGHT=3>
-			<FRAME SRC="<?php echo($ChatPath); ?>link.htm" NAME="link" MARGINWIDTH=0 MARGINHEIGHT=0 SCROLLING="NO">
-		</FRAMESET>
-	</FRAMESET>
-	<?php
-}
-
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/get_IP.lib.php 0.15.0/chat/lib/get_IP.lib.php
--- 0.14.5/chat/lib/get_IP.lib.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/lib/get_IP.lib.php	2004-04-01 03:06:35.000000000 -0600
@@ -0,0 +1,56 @@
+<?
+
+/******************************************************************************
+*                                                                             *
+* This library will try to get the most probable IP address of an user. It is *
+*   based on a the free of use 'identifier' script written by Marc Meurrens   *
+*                          (http://www.cgsa.net/php)                          *
+*                                                                             *
+******************************************************************************/
+
+
+// Get some headers that may contain the IP address
+$SimpleIP = (isset($REMOTE_ADDR) ? $REMOTE_ADDR : getenv("REMOTE_ADDR"));
+
+$TrueIP = (isset($HTTP_X_FORWARDED_FOR) ? $HTTP_X_FORWARDED_FOR : getenv("HTTP_X_FORWARDED_FOR"));
+if ($TrueIP == "") $TrueIP = (isset($HTTP_X_FORWARDED) ? $HTTP_X_FORWARDED : getenv("HTTP_X_FORWARDED"));
+if ($TrueIP == "") $TrueIP = (isset($HTTP_FORWARDED_FOR) ? $HTTP_FORWARDED_FOR : getenv("HTTP_FORWARDED_FOR"));
+if ($TrueIP == "") $TrueIP = (isset($HTTP_FORWARDED) ? $HTTP_FORWARDED : getenv("HTTP_FORWARDED"));
+$GetProxy = ($TrueIP == "" ? "0":"1");
+
+if ($GetProxy == "0")
+{
+	$TrueIP = (isset($HTTP_VIA) ? $HTTP_VIA : getenv("HTTP_VIA"));
+	if ($TrueIP == "") $TrueIP = (isset($HTTP_X_COMING_FROM) ? $HTTP_X_COMING_FROM : getenv("HTTP_X_COMING_FROM"));
+	if ($TrueIP == "") $TrueIP = (isset($HTTP_COMING_FROM) ? $HTTP_COMING_FROM : getenv("HTTP_COMING_FROM"));
+	if ($TrueIP != "") $GetProxy = "2";
+};
+
+if ($TrueIP == $SimpleIP) $GetProxy = "0";
+
+// Return the true IP if found, else the proxy IP with a 'p' at the begining
+switch ($GetProxy)
+{
+	case '0':
+		// True IP without proxy
+		$IP = $SimpleIP;
+		break;
+	case '1':
+		$b = ereg ("^([0-9]{1,3}\.){3,3}[0-9]{1,3}", $TrueIP, $IP_array);
+		if ($b && (count($IP_array)>0))
+		{
+			// True IP behind a proxy
+			$IP = $IP_array[0];
+		}
+		else
+		{
+			// Proxy IP
+			$IP = "p".$SimpleIP;
+		};
+		break;
+	case '2':
+		// Proxy IP
+		$IP = "p".$SimpleIP;
+};
+
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/get_IP.lib.php3 0.15.0/chat/lib/get_IP.lib.php3
--- 0.14.5/chat/lib/get_IP.lib.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/lib/get_IP.lib.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,56 +0,0 @@
-<?
-
-/******************************************************************************
-*                                                                             *
-* This library will try to get the most probable IP address of an user. It is *
-*   based on a the free of use 'identifier' script written by Marc Meurrens   *
-*                          (http://www.cgsa.net/php)                          *
-*                                                                             *
-******************************************************************************/
-
-
-// Get some headers that may contain the IP address
-$SimpleIP = (isset($REMOTE_ADDR) ? $REMOTE_ADDR : getenv("REMOTE_ADDR"));
-
-$TrueIP = (isset($HTTP_X_FORWARDED_FOR) ? $HTTP_X_FORWARDED_FOR : getenv("HTTP_X_FORWARDED_FOR"));
-if ($TrueIP == "") $TrueIP = (isset($HTTP_X_FORWARDED) ? $HTTP_X_FORWARDED : getenv("HTTP_X_FORWARDED"));
-if ($TrueIP == "") $TrueIP = (isset($HTTP_FORWARDED_FOR) ? $HTTP_FORWARDED_FOR : getenv("HTTP_FORWARDED_FOR"));
-if ($TrueIP == "") $TrueIP = (isset($HTTP_FORWARDED) ? $HTTP_FORWARDED : getenv("HTTP_FORWARDED"));
-$GetProxy = ($TrueIP == "" ? "0":"1");
-
-if ($GetProxy == "0")
-{
-	$TrueIP = (isset($HTTP_VIA) ? $HTTP_VIA : getenv("HTTP_VIA"));
-	if ($TrueIP == "") $TrueIP = (isset($HTTP_X_COMING_FROM) ? $HTTP_X_COMING_FROM : getenv("HTTP_X_COMING_FROM"));
-	if ($TrueIP == "") $TrueIP = (isset($HTTP_COMING_FROM) ? $HTTP_COMING_FROM : getenv("HTTP_COMING_FROM"));
-	if ($TrueIP != "") $GetProxy = "2";
-};
-
-if ($TrueIP == $SimpleIP) $GetProxy = "0";
-
-// Return the true IP if found, else the proxy IP with a 'p' at the begining
-switch ($GetProxy)
-{
-	case '0':
-		// True IP without proxy
-		$IP = $SimpleIP;
-		break;
-	case '1':
-		$b = ereg ("^([0-9]{1,3}\.){3,3}[0-9]{1,3}", $TrueIP, $IP_array);
-		if ($b && (count($IP_array)>0))
-		{
-			// True IP behind a proxy
-			$IP = $IP_array[0];
-		}
-		else
-		{
-			// Proxy IP
-			$IP = "p".$SimpleIP;
-		};
-		break;
-	case '2':
-		// Proxy IP
-		$IP = "p".$SimpleIP;
-};
-
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/index.lib.php 0.15.0/chat/lib/index.lib.php
--- 0.14.5/chat/lib/index.lib.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/lib/index.lib.php	2004-04-01 03:06:37.000000000 -0600
@@ -0,0 +1,1175 @@
+<?php
+/* ----------------------------------------------------------------------------------
+   This is the main library called by the start screen of phpMyChat. It contains:
+   - the common work at the beginning;
+   - all what have to be done once the user has submit the form (part I);
+   - the 'send_headers' function that is used.... to send some HTTP headers and
+		to define the <HEAD> part of the starting page;
+   - the 'layout' function that creates the start page.
+
+   The mains PHP variables used inside this script are:
+   - $L -> the current language;
+   - $Charset -> the name of the charset associated to the current language; 
+   - $Ver -> the JavaScript abilities of the browser of the user ('H' when DHTML
+		enabled, 'M' when JavaScript1.1, 'L' else).
+   - $U -> the login nick of the user;
+   - $pmc_password -> the password of the user in clear mode;
+   - $PWD_Hash -> the md5 hash of '$pmc_password';
+   - $N -> the number of messages to be shown each time the 'messages' frame is
+		reloaded;
+   - $D -> the timeout between each update of the 'messages' frame;
+   - $T -> the type of the room the user wants to enter in;
+   - $R0 -> the name of the default public room the user wants to enter in (not
+		defined if he doesn't choose to enter one of the default public rooms);
+   - $R1 -> the name of the 'other' public room the user wants to enter in (not
+		defined if he doesn't choose to enter one of the 'other' public rooms);
+   - $R2 -> the name of the room the user wants to create (not defined if he
+		doesn't choose to create a room);
+   - $E -> the name of the room the user just leaves. When $E is defined, the $EN
+		boolean variable may also be defined and requires this script to insert
+		an exit message to the 'messages' table;
+   - $Reload -> when the user runs some specific actions inside the chat (he uses
+		the '/join' command, clicks on a room name at the 'users' frame or resizes
+		the window for the browser inside netscape 4+), this variable is defined
+		to skip some tests that aren't necessary;
+   - $perms -> permission level of the user for the room he wants to enter in.
+   ---------------------------------------------------------------------------------- /*
+
+
+
+/*********** COMMON WORK ***********/
+
+// Get the names and values for vars sent to index.lib.php
+if (isset($HTTP_GET_VARS))
+{
+	while(list($name,$value) = each($HTTP_GET_VARS))
+	{
+		$$name = $value;
+	};
+};
+
+// Get the names and values for vars posted from the form bellow
+if (isset($HTTP_POST_VARS))
+{
+	while(list($name,$value) = each($HTTP_POST_VARS))
+	{
+		$$name = $value;
+	};
+};
+
+// Fix some security holes
+if (!is_dir('./'.substr($ChatPath, 0, -1))) exit();
+
+require("./${ChatPath}config/config.lib.php");
+require("./${ChatPath}lib/release.lib.php");
+require("./${ChatPath}localization/languages.lib.php");
+require("./${ChatPath}localization/".$L."/localized.chat.php");
+require("./${ChatPath}lib/database/".C_DB_TYPE.".lib.php");
+require("./${ChatPath}lib/clean.lib.php");
+include("./${ChatPath}lib/get_IP.lib.php");
+
+// Special cache instructions for IE5+
+$CachePlus	= "";
+if (ereg("MSIE [56789]", (isset($HTTP_USER_AGENT)) ? $HTTP_USER_AGENT : getenv("HTTP_USER_AGENT"))) $CachePlus = ", pre-check=0, post-check=0, max-age=0";
+$now		= gmdate('D, d M Y H:i:s') . ' GMT';
+
+header("Expires: $now");
+header("Last-Modified: $now");
+header("Cache-Control: no-cache, must-revalidate".$CachePlus);
+header("Pragma: no-cache");
+header("Content-Type: text/html; charset=${Charset}");
+
+// avoid server configuration for magic quotes
+set_magic_quotes_runtime(0);
+
+// Get the relative path to the script that called this one
+if (!isset($PHP_SELF)) $PHP_SELF = $HTTP_SERVER_VARS["PHP_SELF"];
+$Action = basename($PHP_SELF);
+$From = urlencode(ereg_replace("[^/]+/","../",$ChatPath).$Action);
+
+// For translations with a real iso code
+if (!isset($FontFace)) $FontFace = "";
+// For others translations
+$DisplayFontMsg = !(isset($U) && $U != "");
+
+// Translate to html special characters, and entities if message was sent with a latin 1 charset
+$Latin1 = ($Charset == "iso-8859-1");
+function special_char($str,$lang)
+{
+	return addslashes($lang ? htmlentities(stripslashes($str)) : htmlspecialchars(stripslashes($str)));
+};
+
+// Ensure a room ($what) is include in a rooms list ($in)
+function room_in($what, $in)
+{
+	$rooms = explode(",",$in);
+	for (reset($rooms); $room_name=current($rooms); next($rooms))
+	{
+		if (strcasecmp($what, $room_name) == 0) return true;
+	};
+	return false;
+};
+
+
+
+/*********** PART I ***********/
+
+// Define the message to display if user comes here because he has been kicked
+if (isset($KICKED))
+{
+	switch ($KICKED)
+	{
+		case '1':
+			$Error = L_REG_18;
+			break;
+		case '2':
+			$Error = L_REG_39;
+			break;
+		case '3':
+			$Error = L_ERR_USR_19;
+			break;
+		case '4':
+			$Error = L_ERR_USR_20;
+			break;
+		default:
+	};
+};
+
+$DbLink = new DB;
+
+// Fix some security issues
+if (isset($Reload))
+{
+	$isHacking = false;
+	if (($Reload == 'JoinCmd')
+	 	&& (empty($E) || empty($Ver) || empty($L) || empty($U) || (empty($R0) && empty($R1) && empty($R2)) || empty($D)))
+	{
+		$isHacking = true;
+	}
+	else if (($Reload == 'NNResize')
+	 	&& (empty($Ver) || empty($L) || empty($U) || empty($R) || empty($T) || empty($D) || empty($N)))
+	{
+		$isHacking = true;
+	}
+	else
+	{
+		$DbLink->query("SELECT password FROM ".C_REG_TBL." WHERE username='$U' LIMIT 1");
+		list($user_password) = $DbLink->next_record();
+		$DbLink->clean_results();
+		if (!empty($user_password) && (empty($PWD_Hash) || $PWD_Hash != $user_password))
+			$isHacking = true;
+		unset($user_password);
+	}
+
+	if ($isHacking)
+	{
+		unset($Reload);
+		if (isset($U)) unset($U);
+		if (isset($PWD_Hash)) unset($PWD_Hash);
+		if (isset($T)) unset($T);
+		if (isset($R)) unset($R);
+		if (isset($R0)) unset($R0);
+		if (isset($R1)) unset($R1);
+		if (isset($R2)) unset($R2);
+		if (isset($E)) unset($E);
+		$Error = L_ERR_USR_10;
+	}
+}
+
+// Removes user from users table and if necessary add a notication message for him
+if(isset($E) && $E != "")
+{
+	// Fix a security issue
+	$DbLink->query("SELECT COUNT(*) FROM " . C_USR_TBL . " WHERE username='$U' AND ip='$IP' AND room='$E'");
+	list($isHacking) = $DbLink->next_record();
+	$isHacking = 1 - $isHacking;
+	$DbLink->clean_results();
+	if ($isHacking)
+	{
+		// HACKERS Atack !!!
+		unset($E);
+		if (isset($U)) unset($U);
+		$Error = L_ERR_USR_10;
+	}
+	else
+	{	
+		$DbLink->query("DELETE FROM ".C_USR_TBL." WHERE username='$U' AND room='$E'");
+		if (isset($EN))
+		{
+			$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ($EN, '$E', 'SYS exit', '', ".time().", '', 'sprintf(L_EXIT_ROM, \"".special_char($U,$Latin1)."\")')");
+		}
+	}
+}
+
+// If no room is specified but the main form has been posted, define the room to enter
+// in as the first among default ones
+if ((isset($Form_Send) && $Form_Send) && (((C_VERSION == 0) || ((!isset($R0) || $R0 == "") && (!isset($R1) || $R1 == "") && (!isset($R2) || $R2 == ""))))) $R0 = $DefaultChatRooms[0];
+
+// Optimize some of the tables when the user logs in
+if(isset($U) && (isset($N) && $N != ""))
+{
+	$DbLink->optimize(C_MSG_TBL);
+	$DbLink->optimize(C_USR_TBL);
+}
+
+
+//**	Ensures the nick is a valid one except if the frameset is reloaded because of the
+//		NN4+ resize bug or because the user runs a join command.	**
+if(!isset($Reload) && isset($U) && (isset($N) && $N != ""))
+{
+	$relog = false;
+	if (C_NO_SWEAR == 1) include("./${ChatPath}lib/swearing.lib.php");
+	// Check for no nick entered in
+	if ($U == "")
+	{
+		$Error = L_ERR_USR_2;
+	}
+	// Check for invalid characters or empty nick
+	elseif (trim($U) == "" || ereg("[\, ]", stripslashes($U)))
+	{
+		$Error = L_ERR_USR_16;
+	}
+	// Check for swear words in the nick
+	elseif (C_NO_SWEAR == 1 && checkwords($U, true))
+	{
+		$Error = L_ERR_USR_18;
+	}
+	else
+	{
+		$DbLink->query("SELECT room FROM ".C_USR_TBL." WHERE username='$U' LIMIT 1");
+		$Nb = $DbLink->num_rows();
+		// If the same nick is already in use and the user is not registered deny access
+		if($Nb != 0 && $pmc_password == "" && !isset($PWD_Hash))
+		{
+			$Error = L_ERR_USR_1;
+			$DbLink->clean_results();
+		}
+		else
+		{
+			list($room) = $DbLink->next_record();
+			$DbLink->clean_results();
+			$DbLink->query("SELECT password,perms,rooms FROM ".C_REG_TBL." WHERE username='$U' LIMIT 1");
+			$reguser = ($DbLink->num_rows() != 0);
+			if ($reguser) list($user_password,$perms,$rooms) = $DbLink->next_record();
+			$DbLink->clean_results();
+
+			if (!(isset($E) && $E != ""))
+			{
+				// Check for password if the nick exist in registered users table
+				if ($reguser)
+				{
+					if ($pmc_password == "" && !isset($PWD_Hash))
+					{
+						$Error = L_ERR_USR_3;
+					}
+					else
+					{
+						if (md5(stripslashes($pmc_password)) != $user_password && (!isset($PWD_Hash) || $PWD_Hash != $user_password)) $Error = L_ERR_USR_4;
+					}
+					if (!isset($Error)) $DbLink->query("UPDATE ".C_REG_TBL." SET reg_time=".time()." WHERE username='$U'");
+				}
+				// If users isn't a registered one and phpMyChat require registration deny access
+				else if (C_REQUIRE_REGISTER)
+				{
+					$Error = L_ERR_USR_14;
+				}
+			}
+
+			// The var bellow is set to 1 when a registered user is allowed to log using a nick
+			// that already exist in the users table
+			$relog = ($Nb != 0 && !isset($Error));
+
+			$CookieUsername = urlencode(stripslashes($U));
+			setcookie("CookieUsername", $CookieUsername, time() + 60*60*24*365);        // cookie expires in one year
+		}
+	}
+}
+
+
+// **	Get perms of the user if the script is called by a join command	**
+if (isset($Reload) && $Reload == "JoinCmd")
+{
+	$DbLink->query("SELECT perms,rooms FROM ".C_REG_TBL." WHERE username='$U' LIMIT 1");
+	$reguser = ($DbLink->num_rows() != 0);
+	if ($reguser) list($perms,$rooms) = $DbLink->next_record();
+	$DbLink->clean_results();
+};
+
+
+// ** Ensure the user is not banished from the room he wants to enter in **
+if(!isset($Error) && (isset($N) && $N != "") && !isset($Reload))
+{
+	if (C_BANISH != "0" && (!isset($perms) || $perms != "admin"))
+	{
+		include("./${ChatPath}lib/banish.lib.php");
+		if ($IsBanished) $Error = L_ERR_USR_20;
+	};
+};
+
+
+// **	Ensures the user can create a room and the room name is a valid one (bypassed test
+//		when the frameset is reloaded because of the NN4+ resize bug).	**
+if(!isset($Error) && (isset($R2) && $R2 != ""))
+{
+	// Skipped when the script is called by a join command.
+	if (!isset($Reload))
+	{
+		// User is not registered -> Deny room creation
+		if (!$reguser)
+		{
+			$Error = L_ERR_USR_13;
+		}
+		// Check for invalid characters or empty room name
+		else if (trim($R2) == "" || ereg("[,\]", stripslashes($R2)))
+		{
+			$Error = L_ERR_ROM_1;
+		}
+		// Check for swear words in room name
+		else if(C_NO_SWEAR == 1 && checkwords($R2, true))
+		{
+			$Error = L_ERR_ROM_2;
+		}
+		// Ensure there is no existing room with the same name but a different type...
+		else
+		{
+			// ...among reserved name for private/public (default) rooms
+			$ToCheck = ($T == "1" ? $DefaultPrivateRooms : $DefaultChatRooms);
+			for ($i = 0; $i < count($ToCheck); $i++)
+			{
+				if (strcasecmp($R2,$ToCheck[$i]) == "0")
+				{
+					$Error = ($T == 0 ? L_ERR_ROM_3:L_ERR_ROM_4);
+					break;
+				};
+			};
+			unset($ToCheck);
+
+			// ...among other rooms created by users
+			if (!isset($Error))
+			{
+				$T1 = 1 - $T;
+				$DbLink->query("SELECT count(*) FROM ".C_MSG_TBL." WHERE room = '$R2' AND type = '$T1' LIMIT 1");
+				list($Nb) = $DbLink->next_record();
+				$DbLink->clean_results();
+				if($Nb != 0) $Error = ($T == 0 ? L_ERR_ROM_3:L_ERR_ROM_4);
+			};
+		};
+	};
+
+	// Define the user status
+	if (!isset($Error))
+	{
+		$register_room = true;
+		// If the name of the room to be created is a reserved one for private/public (default) rooms,
+		// status will be 'user'. Skipped when the script is called by a join command.
+		if (!isset($Reload))
+		{
+			$ToCheck = ($T == "1" ? $DefaultChatRooms : $DefaultPrivateRooms);
+			for ($i = 0; $i < count($ToCheck); $i++)
+			{
+				if (strcasecmp($R2,$ToCheck[$i]) == "0") $register_room = false;
+			};
+			unset($ToCheck);
+		};
+
+		// If room name is the same than one of an existing room containing "true" messages
+		// (not only notifications of users entrance/exit) or containing only "system"
+		// message but an other user is already logged in, status will be 'user'
+		if ($register_room)
+		{
+			$DbLink->query("SELECT Count(*) FROM ".C_MSG_TBL." WHERE room='$R2' AND username NOT LIKE 'SYS %' LIMIT 1");
+			list($count) = $DbLink->next_record();
+			$register_room = ($count == "0");
+			$DbLink->clean_results();
+		};
+
+		if ($register_room)
+		{
+			$DbLink->query("SELECT count(*) FROM ".C_USR_TBL." WHERE room='$R2' AND username != '$U' LIMIT 1");
+			list($anybody) = $DbLink->next_record();
+			$register_room = ($anybody == 0);
+			$DbLink->clean_results();
+		};
+
+		if ($register_room)
+		{
+			// If an other registered user is already moderator for the room to be created but
+			// there is no "true" message in this room then set his status to user for this room
+			$UpdLink = new DB;
+			$DbLink->query("SELECT username,rooms FROM ".C_REG_TBL." WHERE perms = 'moderator' AND username != '$U'");
+			while (list($mod_un,$mod_rooms) = $DbLink->next_record())
+			{
+				$changed = false;
+				$roomTab = explode(",",$mod_rooms);
+				for ($i = 0; $i < count($roomTab); $i++)
+				{
+					if (strcasecmp(stripslashes($R2), $roomTab[$i]) == 0)
+					{
+						$roomTab[$i] = "";
+						$changed = true;
+						break;
+					};
+				};
+				if ($changed)
+				{
+					$mod_rooms = str_replace(",,",",",ereg_replace("^,|,$","",implode(",",$roomTab)));
+					$UpdLink->query("UPDATE ".C_REG_TBL." SET rooms='".addslashes($mod_rooms)."' WHERE username='".addslashes($mod_un)."'");
+					$UpdLink->query("UPDATE ".C_USR_TBL." SET status='r' WHERE room='$R2' AND username='".addslashes($mod_un)."'");
+				};
+				unset($roomTab);
+			};
+			$DbLink->clean_results();
+
+			// Update the current user status for the room to be created in registered users table
+			$changed = false;
+			if (!room_in(stripslashes($R2), $rooms))
+			{
+				if ($rooms != "") $rooms .= ",";
+				$rooms .= stripslashes($R2);
+				$changed = true;
+			}
+			if ($perms == "user" || $perms == "")
+			{
+				$perms = "moderator";
+				$changed = true;
+			}
+			if (($changed)&&($perms != "admin"))
+			{
+				$DbLink->query("UPDATE ".C_REG_TBL." SET perms='$perms', rooms='".addslashes($rooms)."' WHERE username='$U'");
+			}
+		}
+	}
+}
+
+
+// ** Enter the chat **
+if(!isset($Error) && (isset($N) && $N != ""))
+{
+	if(isset($R2) && $R2 != "")
+	{
+		$R = $R2;
+	}
+	elseif (!isset($R))		// $R is set when the frameset is reloaded because of the NN4+ resize bug.
+	{
+		$T = 1;
+		$R = (isset($R0) && $R0 != "")? $R0 : $R1;
+	};
+
+	$CookieRoom = urlencode(stripslashes($R));
+	setcookie("CookieRoom", $CookieRoom, time() + 60*60*24*365);        // cookie expires in one year
+	setcookie("CookieRoomType", $T, time() + 60*60*24*365);        // cookie expires in one year
+	if (isset($HTTP_COOKIE_VARS))
+	{
+		if (isset($HTTP_COOKIE_VARS["CookieMsgOrder"])) $CookieMsgOrder = $HTTP_COOKIE_VARS["CookieMsgOrder"];
+		if (isset($HTTP_COOKIE_VARS["CookieShowTimestamp"])) $CookieShowTimestamp = $HTTP_COOKIE_VARS["CookieShowTimestamp"];
+		if (isset($HTTP_COOKIE_VARS["CookieNotify"])) $CookieNotify = $HTTP_COOKIE_VARS["CookieNotify"];
+	};
+	if (!isset($O)) $O = isset($CookieMsgOrder) ? $CookieMsgOrder : C_MSG_ORDER;
+	if (!isset($ST)) $ST = isset($CookieShowTimestamp) ? $CookieShowTimestamp : C_SHOW_TIMESTAMP;
+	if (!isset($NT)) $NT = isset($CookieNotify) ? $CookieNotify : C_NOTIFY;
+	if (!isset($PWD_Hash)) $PWD_Hash = (isset($reguser) && $reguser ?  md5(stripslashes($pmc_password)) : "");
+
+	// Define the user status to be put in the users table if necessary. Skipped when the
+	// frameset is reloaded because of the NN4+ resize bug.
+	if (!isset($Reload) || $Reload != "NNResize")
+	{
+		if (!isset($perms)) $perms = ((isset($reguser) && $reguser) ? "" : "noreg");
+		switch ($perms)
+		{
+			case 'admin':
+				$status = "a";
+				break;
+			case 'moderator':
+				$status = (room_in(stripslashes($R), $rooms) ? "m" : "r");
+				break;
+			case 'noreg':
+				$status = "u";
+				break;
+			default:
+				$status = "r";
+		};
+	};
+
+	// Udpates the IP address and the last log. time of the user in the regsistered users table if necessary
+	if (isset($reguser) && $reguser) $DbLink->query("UPDATE ".C_REG_TBL." SET reg_time='".time()."', ip='$IP' WHERE username='$U'");
+
+	// In the case of a registered user that logs again...
+	// ...in the same room update his logging time and update his IP address;
+	// ...in an other room kick him from the other room, put a notification message of
+	// 		exit for this room, update the users table and put a notification message of
+	// 		entrance for the room he log in.
+	$current_time = time();
+	if (isset($relog) && $relog)
+	{
+		if (stripslashes($R) == $room)
+		{
+			$DbLink->query("UPDATE ".C_USR_TBL." SET u_time='$current_time', ip='$IP' WHERE username='$U'");
+		}
+		else
+		{
+			$DbLink->query("SELECT type FROM ".C_MSG_TBL." WHERE room='".addslashes($room)."' LIMIT 1");
+			list($type) = $DbLink->next_record();
+			$DbLink->clean_results();
+			$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ('$type', '".addslashes($room)."', 'SYS exit', '', '$current_time', '', 'sprintf(L_EXIT_ROM, \"".special_char($U,$Latin1)."\")')");
+			$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ($T, '$R', 'SYS enter', '', '$current_time', '', 'sprintf(L_ENTER_ROM, \"".special_char($U,$Latin1)."\")')");
+			$DbLink->query("UPDATE ".C_USR_TBL." SET room='$R',u_time='$current_time', status='$status', ip='$IP' WHERE username='$U'");
+			if (C_WELCOME)
+			{
+				// Delete old welcome messages sent to the current user
+				$DbLink->query("DELETE FROM ".C_MSG_TBL." WHERE username = 'SYS welcome' AND address = '$U'");
+				// Insert a new welcome message in the messages table
+				include("./${ChatPath}lib/welcome.lib.php");
+				$current_time_plus = $current_time + 1;	// ensures the welcome msg is the last one
+				$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ($T, '$R', 'SYS welcome', '', '$current_time_plus', '$U', 'sprintf(\"".WELCOME_MSG."\")')");
+			};
+		};
+	}
+	// In the case of an user that logs again in the same room because of the resize bug of NN4+ 
+	// update his logging time and his IP address
+	elseif (isset($Reload) && $Reload == "NNResize")
+	{
+		$DbLink->query("UPDATE ".C_USR_TBL." SET room='$R',u_time='$current_time', ip='$IP' WHERE username='$U'");
+	}
+	// For all other case of users entering in, set user infos. in users table and put a
+	// notification message of entrance in the messages table
+	else
+	{
+		$DbLink->query("INSERT INTO ".C_USR_TBL." VALUES ('$R', '$U', '$Latin1', '$current_time', '$status','$IP')");
+		$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ($T, '$R', 'SYS enter', '', '$current_time', '', 'sprintf(L_ENTER_ROM, \"".special_char($U,$Latin1)."\")')");
+		if (C_WELCOME)
+		{
+			// Delete old welcome messages sent to the current user
+			$DbLink->query("DELETE FROM ".C_MSG_TBL." WHERE username = 'SYS welcome' AND address = '$U'");
+			// Insert a new welcome message in the messages table
+			include("./${ChatPath}lib/welcome.lib.php");
+			$current_time_plus = $current_time + 1;	// ensures the welcome msg is the last one
+			$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ($T, '$R', 'SYS welcome', '', '$current_time_plus', '$U', 'sprintf(\"".WELCOME_MSG."\")')");
+		};
+	};
+
+	// Delete invite messages sent to the user for the room he will enter in
+	$DbLink->query("SELECT m_time FROM ".C_MSG_TBL." WHERE username='SYS inviteTo' AND address='$U' AND room='$R'");
+	if($DbLink->num_rows() != 0)
+	{
+		$DelLink = new DB;
+		while(list($sent_time) = $DbLink->next_record())
+		{
+			$DelLink->query("DELETE FROM ".C_MSG_TBL." WHERE m_time='$sent_time' AND (username='SYS inviteFrom' OR (username='SYS inviteTo' AND address='$U'))");
+		};
+	};
+	?>
+	<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
+	<HTML>
+	<HEAD>
+	<TITLE><?php echo(APP_NAME); ?></TITLE>
+	<LINK REL="SHORTCUT ICON" HREF="<?php echo($ChatPath); ?>favicon.ico">
+	<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript">
+	<!--
+	// Display & remove the server time at the status bas
+	function clock(gap)
+	{
+		cur_date = new Date();
+		calc_date = new Date(cur_date - gap);
+		calc_hours = calc_date.getHours();
+		calc_minuts = calc_date.getMinutes();
+		calc_seconds = calc_date.getSeconds();
+		if (calc_hours < 10) calc_hours = "0" + calc_hours;
+		if (calc_minuts < 10) calc_minuts = "0" + calc_minuts;
+		if (calc_seconds < 10) calc_seconds = "0" + calc_seconds;
+		calc_time = calc_hours + ":" + calc_minuts + ":" + calc_seconds;
+		window.status = "<?php echo(L_SVR_TIME); ?>" + calc_time;
+
+		clock_disp = setTimeout('clock(' + gap + ')', 1000);
+	}
+
+	function stop_clock()
+	{
+		clearTimeout(clock_disp);
+		window.status = '';
+	}
+
+	function calc_gap(serv_date)
+	{
+		server_date = new Date(serv_date);
+		local_date = new Date();
+		return local_date - server_date;
+	}
+
+	<?php
+	if ($ST == 1)
+	{
+		$CorrectedDate = mktime(date("H") + C_TMZ_OFFSET,date("i"),date("s"),date("m"),date("d"),date("Y"));
+		?>
+		gap = calc_gap("<?php echo(date("F d, Y H:i:s", $CorrectedDate)); ?>");
+		clock(gap);
+		<?php
+	}
+	?>
+
+	// Automatically submit a command
+	function runCmd(CmdName,infos)
+	{
+		if (window.frames['input'] && window.frames['input'].window.document.forms['MsgForm'])
+		{
+			var inputForm = window.frames['input'].window.document.forms['MsgForm'];
+			if (infos != "") infos = " " + infos;
+			inputForm.elements['M'].value = "/" + CmdName + infos;
+			inputForm.elements['sent'].value = '1';
+			if (document.all) inputForm.elements['sendForm'].disabled = true;
+			inputForm.submit();
+		};
+	};
+
+	// Misc vars
+	var is_ignored_popup = null;
+	var path2Chat = "<?php echo($ChatPath); ?>";
+
+	<?php
+	if ($Ver == "H")
+	{
+		?>
+		// Forced reload of the loader frame, function called by the input frame
+		var time4LastLoadedMsg = null;
+		var time4LastCheckedUser = null;
+		var refresh_query = "<?php echo("From=$From&L=$L&U=".urlencode(stripslashes($U))."&R=".urlencode(stripslashes($R))."&T=$T&D=$D&N=$N&ST=$ST&NT=$NT&First=1"); ?>";
+		function force_refresh()
+		{
+			query = refresh_query + "&LastLoad=" + time4LastLoadedMsg + "&LastCheck=" + time4LastCheckedUser;
+			window.frames['loader'].window.location.replace("loader.php?" + query);
+		}
+		<?php
+	}
+	else
+	{
+		?>
+		ver4 = false;
+		<?php
+	};
+	?>
+
+	// Launch the help popup
+	var is_help_popup = null;
+
+	function help_popup()
+	{
+		if (is_help_popup && !is_help_popup.closed)
+		{
+			is_help_popup.focus();
+		}
+		else
+		{
+			var scrTop = mouseY-400;
+			var scrLeft = mouseX-<?php echo($Charset == "windows-1256" ? "610" : "10"); ?>;
+			var scrPos = "top=" + scrTop + ",screenY=" + scrTop + ",left=" + scrLeft + ",screenX=" + scrLeft + ",";
+			is_help_popup = window.open("help_popup.php?<?php echo("L=$L&Ver=$Ver"); ?>","help_popup",scrPos + "width=600,height=350,scrollbars=yes,resizable=yes");
+		};
+	};
+	// -->
+	</SCRIPT>
+	<SCRIPT TYPE="text/javascript" LANGUAGE="javascript1.1">
+	<!--
+	// Misc vars
+	imgHelpOff = new Image(15,15); imgHelpOff.src = path2Chat + "images/helpOff.gif";
+	imgHelpOn = new Image(15,15); imgHelpOn.src = path2Chat + "images/helpOn.gif";
+
+	// Put the nick of the user who was clicked on in the messages or the users frames
+	// to the message box in the input frame;
+	function userClick(user,privMsg)
+	{
+		if (window.frames['input'] && window.frames['input'].window.document.forms['MsgForm'].elements['MsgTo'])
+		{
+			window.frames['input'].window.document.forms['MsgForm'].elements['MsgTo'].value = user;
+			var msgbox = window.frames['input'].window.document.forms['MsgForm'].elements['M'];
+			if (privMsg)
+			{
+				var oldStr = msgbox.value;
+				if (oldStr == "" || oldStr.substring(0,1) != " ") oldStr = " " + oldStr;
+				msgbox.value = "/TO " + user + oldStr;
+			}
+			else
+			{
+				msgbox.value += user;
+				if (msgbox.value == user) msgbox.value += "> ";
+			};
+			msgbox.focus();
+		};
+	};
+
+	// Color choice at the input frame; 
+	isModerator = <?php echo((isset($status) && ($status == "a" || $status == "m")) ? 1 : 0); ?>;
+	imgColor1 = new Image(4,20); imgColor1.src = path2Chat + "images/unselColor.gif";
+	imgColor2 = new Image(4,20); imgColor2.src = path2Chat + "images/selColor.gif";
+	var SelColor = null;
+
+	function ChangeColor(ColorVal,ColorRank)
+	{
+		if (SelColor != ColorRank)
+		{
+			if (document.all)
+			{
+				obj1 = window.frames['input'].window.document.all[SelColor];
+				obj2 = window.frames['input'].window.document.all[ColorRank];
+			}
+			else if (document.images)
+			{
+				obj1 = window.frames['input'].window.document.images[SelColor];
+				obj2 = window.frames['input'].window.document.images[ColorRank];
+			}
+			else return;
+
+			if (SelColor != null)
+			{
+				obj1.src = imgColor1.src;
+			};
+			SelColor = ColorRank;
+			window.frames['input'].window.document.forms['MsgForm'].elements['C'].value = ColorVal;
+			obj2.src = imgColor2.src;
+		};
+		window.frames['input'].window.document.forms['MsgForm'].elements['M'].focus();
+	};
+
+	// Set the focus to the message box at the input frame; 
+	function get_focus()
+	{
+		window.frames['input'].window.focus();
+		window.frames['input'].window.document.forms['MsgForm'].elements['M'].focus();
+	};
+	// -->
+	</SCRIPT>
+	<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript1.2">
+	<!--
+	// Get the position for the help popup
+	var mouseX = 0;
+	var mouseY = 0;
+
+	function displayLocation(e)
+	{
+		if (ver4)
+		{
+			if (IE4) e = window.frames['input'].window.event;
+			mouseX = e.screenX;
+			mouseY = e.screenY;
+		}
+		return;
+	}
+
+	// Quick validation of the message or the command submited at the input frame
+	function validateSubmission()
+	{
+		inputFrameForm = window.frames['input'].window.document.forms['MsgForm'];
+
+		// Submission looks like a command?
+		isCmd	= (inputFrameForm.elements['M'].value.substring(0,1) == '/');
+		// RegExp to quick check for valid commands
+		re = /^\/(!$|announce .+|ban .+|clear$|help$|\?$|ignore|invite .+|join .+|kick .+|me .+|msg .+|to .+|notify$|order$|profile$|promote .+|quit|exit|bye|refresh|save|show|last|timestamp$|whois .+)/i;
+
+		// Ensure the message box isn't empty
+		if (inputFrameForm.elements['M'].value == '')
+		{
+			inputFrameForm.elements['M'].focus();
+			return false;
+		}
+		// It looks like a command but's not a valid one -> display error message
+		else if (isCmd && !re.test(inputFrameForm.elements['M'].value))
+		{
+			inputFrameForm.elements['M'].select();
+			alert("<?php echo(str_replace("\"","\\\"",L_BAD_CMD)); ?>");
+			return false;
+		}
+		// It doesn't look like a command -> it's a message, then ensure a message
+		// isn't currently being submitted...
+		else if (!isCmd && inputFrameForm.elements['sent'].value == '1')
+		{
+			inputFrameForm.elements['M'].focus();
+			return false;
+		}
+		// ... and that the same message hasn't been submitted the last time
+ 		else if (!isCmd && inputFrameForm.elements['M'].value == inputFrameForm.elements['M0'].value)
+		{
+			inputFrameForm.elements['M'].value = '';
+			inputFrameForm.elements['M'].focus();
+			return false;
+		}
+		// All the tests have been succesfully passed -> submit the from
+		else
+		{
+			inputFrameForm.elements['sent'].value = '1';
+			if (document.all) inputFrameForm.elements['sendForm'].disabled = true;
+			return true;
+		};
+	}
+	// -->
+	</SCRIPT>
+	<?php
+	if ($Ver == "H")
+	{
+		?>
+		<SCRIPT SRC="<?php echo($ChatPath); ?>lib/usersH.js" TYPE="text/javascript" LANGUAGE="JavaScript1.2"></SCRIPT>
+		<SCRIPT SRC="<?php echo($ChatPath); ?>lib/connectStateH.js" TYPE="text/javascript" LANGUAGE="JavaScript1.2"></SCRIPT>
+		<?php
+	};
+	$Ver1 = ($Ver == "H" ? $Ver : "L");
+	$AddPwd2Url = ($PWD_Hash != "" ? "&PWD_Hash=$PWD_Hash" : "");
+	include("./${ChatPath}lib/frameset_def.lib.php");
+	?>
+	</HTML>
+	<?php
+	$DbLink->close();
+	exit;
+
+} // end of entering the chat work
+
+
+
+/*********** 'send_headers' FUNCTION ***********/
+
+/* ------------------------------------------------------------------------------------------
+   The send_headers function add lines at the head part of your html file.
+
+   $title var allows to show "phpMyChat" as the title for your window when sets to 1/true.
+   $icon var allows to set phpMyChat icon as the icon for favorites when sets to 1/true.
+   --------------------------------------------------------------------------------------- */
+
+function send_headers($title, $icon)
+{
+	global $ChatPath, $From, $L;
+	global $Charset, $FontName, $FontSize;
+
+	if ($title)
+		echo("\t" . '<TITLE>' . APP_NAME . '</TITLE>' . "\n");
+	?>
+	<!--
+	The lines below are usefull for debugging purpose, please do not remove them!
+	Release: phpMyChat 0.14.5
+	 2000-2001 The phpHeaven Team  (http://www.phpheaven.net/)
+	-->
+	<META NAME="description" CONTENT="phpMyChat">
+	<META NAME="keywords" CONTENT="phpMyChat">
+	<?php
+	if ($icon) echo("<LINK REL=\"SHORTCUT ICON\" HREF=\"${ChatPath}favicon.ico\">\n");
+
+	// For translations with an explicit charset (not the 'x-user-defined' one)
+	if (!isset($FontName)) $FontName = "";
+	?>
+	<LINK REL="stylesheet" HREF="<?php echo($ChatPath); ?>config/start_page.css.php?<?php echo("Charset=${Charset}&medium=${FontSize}&FontName=".urlencode($FontName)); ?>" TYPE="text/css">
+	<SCRIPT TYPE="text/javascript" LANGUAGE="javascript">
+	<!--
+	var NS4 = (document.layers) ? 1 : 0;
+	var IE4 = ((document.all) && (parseInt(navigator.appVersion)>=4)) ? 1 : 0;
+	var ver4 = (NS4 || IE4) ? "H" : "L";
+
+	// Will update the "Ver" field in the form below according to the javascript abilities of
+	// the browser the users surf with
+	function defineVerField()
+	{
+		if (document.images && ver4 == 'L')
+			document.forms['Params'].elements['Ver'].value = 'M';	// js1.1 enabled browser
+		else document.forms['Params'].elements['Ver'].value = ver4;
+	}
+
+	// Open the tutorial popup
+	function tutorial_popup()
+	{
+		window.focus();
+		tutorial_popupWin = window.open("<?php echo($ChatPath); ?>tutorial_popup.php?<?php echo("L=$L&Ver="); ?>"+ver4,"tutorial_popup","resizable=yes,scrollbars=yes,toolbar=yes,menubar=yes,status=yes");
+		tutorial_popupWin.focus();
+	}
+
+	// Open the users popup according to the DHTML capacities of the browser
+	function users_popup()
+	{
+		window.focus();
+		users_popupWin = window.open("<?php echo($ChatPath); ?>users_popup"+ver4+".php?<?php echo("From=$From&L=$L"); ?>","users_popup_<?php echo(md5(uniqid(""))); ?>","width=180,height=300,resizable=yes,scrollbars=yes");
+		users_popupWin.focus();
+	}
+
+	// Open popups for registration stuff
+	function reg_popup(name)
+	{
+		window.focus();
+		url = "<?php echo($ChatPath); ?>" + name + ".php?L=<?php echo($L); ?>&Link=1";
+		pop_width = (name != 'admin'? 350:510);
+		pop_height = (name != 'deluser'? 470:190);
+		param = "width=" + pop_width + ",height=" + pop_height + ",resizable=yes,scrollbars=yes";
+		name += "_popup";
+		window.open(url,name,param);
+	}
+
+	// The three functions bellow allows to ensure an unique choice among rooms
+	function reset_R0()
+	{
+		<?php
+		if (C_VERSION == 2)
+		{
+			?>
+			document.forms['Params'].elements['R1'].options[0].selected = true;
+			document.forms['Params'].elements['T'].options[0].selected = true;
+			document.forms['Params'].elements['R2'].value = '';
+			<?php
+		}
+		?>
+	}
+
+	function reset_R1()
+	{
+		document.forms['Params'].elements['R0'].options[0].selected = true;
+		document.forms['Params'].elements['T'].options[0].selected = true;
+		document.forms['Params'].elements['R2'].value = '';
+	}
+
+	function reset_R2()
+	{
+		document.forms['Params'].elements['R0'].options[0].selected = true;
+		document.forms['Params'].elements['R1'].options[0].selected = true;
+	}
+	// -->
+	</SCRIPT>
+	<?php
+
+} // end of send_headers function;
+
+
+
+/*********** 'layout' FUNCTION ***********/
+
+/* ----------------------------------------------------------------------------------
+   The layout function draw the initial table/form. It will define three way to go
+   into the chat (the $Ver et $Ver1 var) dependent of the browser capacities:
+   - those that accept DHTML will use "H" (for highest) named scripts, the others
+    	will run "L" (for lowest) named scripts;
+   - those that support JavaScript1.1 stuff will use a color picker to choose
+    	messages colors in the chat/input.php script ($Ver is set to "M" for medium
+    	if the browser can not support DHTML, else "H"), others a drop down list.
+   ---------------------------------------------------------------------------------- */
+
+function layout($Err, $U, $R, $T)
+{
+	global $DbLink;
+	global $ChatPath, $From, $Action, $L;
+	global $Charset, $DisplayFontMsg, $FontPack, $FontName;
+	global $AvailableLanguages;
+	global $DefaultChatRooms;
+	if ($Err) global $Error;
+	?>
+
+<TABLE ALIGN="center" CELLPADDING=5 CLASS="ChatBody"><TR><TD CLASS="ChatBody">
+
+<CENTER>
+<FORM ACTION="<?php echo("$Action"); ?>" METHOD="POST" AUTOCOMPLETE="OFF" NAME="Params" onSubmit="defineVerField();">
+<SPAN CLASS="ChatTitle"><?php echo(APP_NAME." ".APP_VERSION); ?></SPAN>
+<?php
+// Msg for translations with no real iso code
+if (isset($FontPack) && $FontPack != "" && file_exists($ChatPath."localization/${L}/${FontPack}"))
+{
+	if (!isset($Error) && $DisplayFontMsg) echo("<P CLASS=\"ChatError\">This translation of ".APP_NAME." requires <A HREF=\"${ChatPath}localization/${L}/${FontPack}\" CLASS=\"ChatFonts\" title=\"" . str_replace('"', '', $FontName) . "\">these font faces</A></P>");
+}
+?>
+<P>
+<A HREF="<?php echo($ChatPath); ?>tutorial_popup.php?<?php echo("L=$L&Ver=L"); ?>" onClick="tutorial_popup(); return false" CLASS="ChatLink" TARGET="_blank"><?php echo(L_TUTORIAL); ?></A>
+</P>
+<P CLASS="ChatP1">
+<?php echo(L_WEL_1." ".C_MSG_DEL." ".L_WEL_2." ".C_USR_DEL." ".L_WEL_3); ?>
+</P>
+<?php
+$DefaultRoomFound = 0;
+if($DbLink->query("SELECT DISTINCT u.username FROM ".C_USR_TBL." u, ".C_MSG_TBL." m WHERE u.room = m.room AND m.type = 1"))
+{
+	$Nb = $DbLink->num_rows();
+	$link = " <A HREF=\"${ChatPath}users_popupL.php?From=$From&L=$L\" CLASS=\"ChatLink\" onClick=\"users_popup(); return false\" TARGET=\"_blank\">";
+	echo("<P CLASS=\"ChatP1\">".L_CUR_1.$link.$Nb." ".($Nb > 1 ? L_USERS : L_USER)."</A> ".L_CUR_2."</P>");
+}
+if(isset($Error))
+{
+	echo("<P CLASS=\"ChatError\">$Error</P>");
+}
+if (!isset($Ver)) $Ver = "L";
+?>
+
+<INPUT TYPE="hidden" NAME="Ver" VALUE="<?php echo($Ver); ?>">
+<INPUT TYPE="hidden" NAME="Form_Send" VALUE="1">
+<INPUT TYPE="hidden" NAME="L" VALUE="<?php echo($L); ?>">
+<INPUT TYPE="hidden" NAME="N" VALUE="<?php echo(C_MSG_NB); ?>">
+<INPUT TYPE="hidden" NAME="D" VALUE="<?php echo(C_MSG_REFRESH); ?>">
+
+<TABLE BORDER=0 CELLPADDING=3 CLASS="ChatTable">
+<TR CLASS="ChatCell">
+	<TD ALIGN="CENTER" CLASS="ChatCell">
+		<TABLE BORDER=0 CLASS="ChatTable">
+		<?php
+		// Display flags if necessary
+		if (C_MULTI_LANG == 1)
+		{
+		?>
+		<TR CLASS="ChatCell">
+			<TD COLSPAN=2 ALIGN="CENTER" CLASS="ChatCell">
+				<SPAN CLASS="ChatFlags">
+				<?php
+				asort($AvailableLanguages);
+				reset($AvailableLanguages);
+				$i = 0;
+				while(list($key, $name) = each($AvailableLanguages))
+				{
+					$i++;
+					echo("<A HREF=\"$Action?L=${name}\">");
+					echo("<IMG SRC=\"${ChatPath}localization/${name}/flag.gif\" BORDER=0 WIDTH=24 HEIGHT=16 ALT=\"".ucfirst(str_replace("_"," ",$name))."\"></A>&nbsp;");
+					if ($i % 15 == 0) echo ("<BR>");
+				};
+				unset($AvailableLanguages);
+				?>
+				</SPAN>
+			</TD>
+		</TR>
+		<?php
+		};
+
+		// Horizontal alignement for cells topic
+		$CellAlign = ($Charset == "windows-1256" ? "LEFT" : "RIGHT");
+		?>
+		<TR CLASS="ChatCell">
+			<TH COLSPAN=2 CLASS="ChatTabTitle"><?php echo(L_SET_1); ?></TH>
+		</TR>
+		<TR CLASS="ChatCell">
+			<TD ALIGN="<?php echo($CellAlign); ?>" VALIGN="TOP" CLASS="ChatCell" NOWRAP><?php echo(L_SET_2); ?> :</TD>
+			<TD VALIGN="TOP" CLASS="ChatCell">
+				<INPUT TYPE="text" NAME="U" SIZE=11 MAXLENGTH=10 VALUE="<?php echo(htmlspecialchars(urldecode($U))); ?>" CLASS="ChatBox">
+			</TD>
+		</TR>
+		<TR CLASS="ChatCell">
+			<TD ALIGN="<?php echo($CellAlign); ?>" VALIGN="TOP" CLASS="ChatCell" NOWRAP><?php echo(L_REG_1); ?> :</TD>
+			<TD VALIGN="TOP" CLASS="ChatCell" NOWRAP>
+				<INPUT TYPE="password" NAME="pmc_password" SIZE=11 MAXLENGTH=16 CLASS="ChatBox">
+				<?php if (!C_REQUIRE_REGISTER) echo("&nbsp;<U>".L_REG_1r."</U>"); ?>
+			</TD>
+		</TR>
+
+		<TR CLASS="ChatCell"><TD CLASS="ChatCell">&nbsp;</TD></TR>
+
+		<TR CLASS="ChatCell">
+			<TH COLSPAN=2 CLASS="ChatTabTitle"><?php echo(L_REG_2); ?></TH>
+		</TR>
+		<TR CLASS="ChatCell">
+			<TD ALIGN="center" COLSPAN=2 CLASS="ChatCell">
+				<BR>
+				<A HREF="<?php echo($ChatPath); ?>register.php?L=<?php echo($L); ?>" CLASS="ChatReg" onClick="reg_popup('register'); return false" TARGET="_blank"><?php echo(L_REG_3); ?></A>
+				| <A HREF="<?php echo($ChatPath); ?>edituser.php?L=<?php echo($L); ?>" CLASS="ChatReg" onClick="reg_popup('edituser'); return false" TARGET="_blank"><?php echo(L_REG_4); ?></A>
+				<?php
+				if (C_SHOW_DEL_PROF != 0)
+				{
+					?>
+					| <A HREF="<?php echo($ChatPath); ?>deluser.php?L=<?php echo($L); ?>" CLASS="ChatReg" onClick="reg_popup('deluser'); return false" TARGET="_blank"><?php echo(L_REG_5); ?></A>
+					<?php
+				}
+				if (C_SHOW_ADMIN != 0)
+				{
+					?>
+					|| <A HREF="<?php echo($ChatPath); ?>admin.php?L=<?php echo($L); ?>&Link=1" CLASS="ChatReg" onClick="reg_popup('admin'); return false" TARGET="_blank"><?php echo(L_REG_35); ?></A>
+					<?php
+				}
+				?>
+			</TD>
+		</TR>
+		<?php
+		if (C_VERSION > 0)
+		{
+			?>
+			<TR CLASS="ChatCell">
+				<TD COLSPAN=2 CLASS="ChatCell">&nbsp;</TD>
+			</TR>
+			<TR CLASS="ChatCell">
+				<TH COLSPAN=2 CLASS="ChatTabTitle"><?php echo(L_SET_5); ?></TH>
+			</TR>
+			</TABLE>
+			<TABLE BORDER=0 CLASS="ChatTable">
+			<TR CLASS="ChatCell">
+				<TD ALIGN="<?php echo($CellAlign); ?>" VALIGN="TOP" CLASS="ChatCell" NOWRAP><?php echo(L_SET_6); ?> :</TD>
+				<TD VALIGN="TOP" CLASS="ChatCell">
+					<SELECT NAME="R0" CLASS="ChatBox" onChange="reset_R0();">
+						<OPTION VALUE=""><?php echo(L_SET_7); ?></OPTION>
+						<?php
+						// Display default rooms in the drop down list
+						$PrevRoom = "";
+						if($R != "") $PrevRoom = urldecode($R);
+
+						$DefaultRoomsString = "";
+						for($i = 0; $i < count($DefaultChatRooms); $i++)
+						{
+							$tmpRoom = stripslashes($DefaultChatRooms[$i]);
+							$DefaultRoomsString .= ($DefaultRoomsString == "" ? "" : ",").$tmpRoom;
+							echo("<OPTION VALUE=\"".htmlspecialchars($tmpRoom)."\"");
+							if(strcasecmp($tmpRoom, $PrevRoom) == 0)
+							{
+								echo(" SELECTED");
+								$DefaultRoomFound = 1;
+							}
+							echo(">".$tmpRoom."</OPTION>");
+						}
+						?>
+					</SELECT>
+				</TD>
+			</TR>
+			<?php
+		}
+		if (C_VERSION == 2)
+		{
+			?>
+			<TR CLASS="ChatCell">
+				<TD ALIGN="<?php echo($CellAlign); ?>" VALIGN="TOP" CLASS="ChatCell" NOWRAP><?php echo(L_SET_8); ?> :</TD>
+				<TD VALIGN="TOP" CLASS="ChatCell">
+					<SELECT NAME="R1" CLASS="ChatBox" onChange="reset_R1();">
+						<OPTION VALUE=""><?php echo(L_SET_7); ?></OPTION>
+						<?php
+						// Display other public rooms in the drop down list
+						$DbLink->query("SELECT DISTINCT room FROM ".C_MSG_TBL." WHERE type = 1 AND username NOT LIKE 'SYS %' ORDER BY room");
+						while(list($Room) = $DbLink->next_record())
+						{
+							if (!room_in($Room, $DefaultRoomsString))
+							{
+								echo("<OPTION VALUE=\"".htmlspecialchars($Room)."\"");
+								if(strcasecmp($Room, $PrevRoom) == 0 && $DefaultRoomFound == 0)
+								{
+									echo(" SELECTED");
+									$DefaultRoomFound = 1;
+								}
+								echo(">${Room}</OPTION>");
+							}
+						}
+						$DbLink->clean_results();
+						?>
+					</SELECT>
+				</TD>
+			</TR>
+			<TR CLASS="ChatCell">
+				<TD ALIGN="<?php echo($CellAlign); ?>" VALIGN="TOP" CLASS="ChatCell" NOWRAP>
+					<?php echo(L_SET_9." "); ?>
+					<SELECT NAME="T" CLASS="ChatBox">
+						<OPTION VALUE="1" <?php if($T == 1 && $DefaultRoomFound == 0) echo("SELECTED"); ?>><?php echo(L_SET_10); ?></OPTION>
+						<OPTION VALUE="0" <?php if($T == 0 && $DefaultRoomFound == 0) echo("SELECTED"); ?>><?php echo(L_SET_11); ?></OPTION>
+					</SELECT>
+					<?php echo(" ".L_SET_12); ?> :
+				</TD>
+				<TD VALIGN="TOP" CLASS="ChatCell">
+					<INPUT TYPE="text" NAME="R2" SIZE=11 MAXLENGTH=10 <?php if($DefaultRoomFound == 0 && $R != "") echo("VALUE=\"".htmlspecialchars(urldecode($R))."\""); ?> CLASS="ChatBox" onChange="reset_R2();">
+				</TD>
+			</TR>
+			<?php
+		}
+		?>
+		</TABLE>
+		<P CLASS="ChatP2">
+		<?php echo(L_SET_13." "); ?>
+		<INPUT TYPE="submit" VALUE="<?php echo(L_SET_14); ?>" CLASS="ChatBox"> ...
+		</P>
+	</TD>
+</TR>
+</TABLE>
+<SPAN CLASS="ChatCopy" dir="LTR">
+&copy; 2000-2001 <A HREF="http://www.phpheaven.net/" CLASS="ChatLink">The phpHeaven Team</A>
+</SPAN>
+</FORM>
+</CENTER>
+
+</TD></TR></TABLE>
+
+<?php
+} // end of the layout function
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/index.lib.php3 0.15.0/chat/lib/index.lib.php3
--- 0.14.5/chat/lib/index.lib.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/lib/index.lib.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,1173 +0,0 @@
-<?php
-/* ----------------------------------------------------------------------------------
-   This is the main library called by the start screen of phpMyChat. It contains:
-   - the common work at the beginning;
-   - all what have to be done once the user has submit the form (part I);
-   - the 'send_headers' function that is used.... to send some HTTP headers and
-		to define the <HEAD> part of the starting page;
-   - the 'layout' function that creates the start page.
-
-   The mains PHP variables used inside this script are:
-   - $L -> the current language;
-   - $Charset -> the name of the charset associated to the current language; 
-   - $Ver -> the JavaScript abilities of the browser of the user ('H' when DHTML
-		enabled, 'M' when JavaScript1.1, 'L' else).
-   - $U -> the login nick of the user;
-   - $PASSWORD -> the password of the user in clear mode;
-   - $PWD_Hash -> the md5 hash of '$PASSWORD';
-   - $N -> the number of messages to be shown each time the 'messages' frame is
-		reloaded;
-   - $D -> the timeout between each update of the 'messages' frame;
-   - $T -> the type of the room the user wants to enter in;
-   - $R0 -> the name of the default public room the user wants to enter in (not
-		defined if he doesn't choose to enter one of the default public rooms);
-   - $R1 -> the name of the 'other' public room the user wants to enter in (not
-		defined if he doesn't choose to enter one of the 'other' public rooms);
-   - $R2 -> the name of the room the user wants to create (not defined if he
-		doesn't choose to create a room);
-   - $E -> the name of the room the user just leaves. When $E is defined, the $EN
-		boolean variable may also be defined and requires this script to insert
-		an exit message to the 'messages' table;
-   - $Reload -> when the user runs some specific actions inside the chat (he uses
-		the '/join' command, clicks on a room name at the 'users' frame or resizes
-		the window for the browser inside netscape 4+), this variable is defined
-		to skip some tests that aren't necessary;
-   - $perms -> permission level of the user for the room he wants to enter in.
-   ---------------------------------------------------------------------------------- /*
-
-
-
-/*********** COMMON WORK ***********/
-
-// Get the names and values for vars sent to index.lib.php3
-if (isset($HTTP_GET_VARS))
-{
-	while(list($name,$value) = each($HTTP_GET_VARS))
-	{
-		$$name = $value;
-	};
-};
-
-// Get the names and values for vars posted from the form bellow
-if (isset($HTTP_POST_VARS))
-{
-	while(list($name,$value) = each($HTTP_POST_VARS))
-	{
-		$$name = $value;
-	};
-};
-
-// Fix some security holes
-if (!is_dir('./'.substr($ChatPath, 0, -1))) exit();
-
-require("./${ChatPath}config/config.lib.php3");
-require("./${ChatPath}lib/release.lib.php3");
-require("./${ChatPath}localization/languages.lib.php3");
-require("./${ChatPath}localization/".$L."/localized.chat.php3");
-require("./${ChatPath}lib/database/".C_DB_TYPE.".lib.php3");
-require("./${ChatPath}lib/clean.lib.php3");
-include("./${ChatPath}lib/get_IP.lib.php3");
-
-// Special cache instructions for IE5+
-$CachePlus	= "";
-if (ereg("MSIE [56789]", (isset($HTTP_USER_AGENT)) ? $HTTP_USER_AGENT : getenv("HTTP_USER_AGENT"))) $CachePlus = ", pre-check=0, post-check=0, max-age=0";
-$now		= gmdate('D, d M Y H:i:s') . ' GMT';
-
-header("Expires: $now");
-header("Last-Modified: $now");
-header("Cache-Control: no-cache, must-revalidate".$CachePlus);
-header("Pragma: no-cache");
-header("Content-Type: text/html; charset=${Charset}");
-
-// avoid server configuration for magic quotes
-set_magic_quotes_runtime(0);
-
-// Get the relative path to the script that called this one
-if (!isset($PHP_SELF)) $PHP_SELF = $HTTP_SERVER_VARS["PHP_SELF"];
-$Action = basename($PHP_SELF);
-$From = urlencode(ereg_replace("[^/]+/","../",$ChatPath).$Action);
-
-// For translations with a real iso code
-if (!isset($FontFace)) $FontFace = "";
-// For others translations
-$DisplayFontMsg = !(isset($U) && $U != "");
-
-// Translate to html special characters, and entities if message was sent with a latin 1 charset
-$Latin1 = ($Charset == "iso-8859-1");
-function special_char($str,$lang)
-{
-	return addslashes($lang ? htmlentities(stripslashes($str)) : htmlspecialchars(stripslashes($str)));
-};
-
-// Ensure a room ($what) is include in a rooms list ($in)
-function room_in($what, $in)
-{
-	$rooms = explode(",",$in);
-	for (reset($rooms); $room_name=current($rooms); next($rooms))
-	{
-		if (strcasecmp($what, $room_name) == 0) return true;
-	};
-	return false;
-};
-
-
-
-/*********** PART I ***********/
-
-// Define the message to display if user comes here because he has been kicked
-if (isset($KICKED))
-{
-	switch ($KICKED)
-	{
-		case '1':
-			$Error = L_REG_18;
-			break;
-		case '2':
-			$Error = L_REG_39;
-			break;
-		case '3':
-			$Error = L_ERR_USR_19;
-			break;
-		case '4':
-			$Error = L_ERR_USR_20;
-	};
-};
-
-$DbLink = new DB;
-
-// Fix some security issues
-if (isset($Reload))
-{
-	$isHacking = false;
-	if (($Reload == 'JoinCmd')
-	 	&& (empty($E) || empty($Ver) || empty($L) || empty($U) || (empty($R0) && empty($R1) && empty($R2)) || empty($D)))
-	{
-		$isHacking = true;
-	}
-	else if (($Reload == 'NNResize')
-	 	&& (empty($Ver) || empty($L) || empty($U) || empty($R) || empty($T) || empty($D) || empty($N)))
-	{
-		$isHacking = true;
-	}
-	else
-	{
-		$DbLink->query("SELECT password FROM ".C_REG_TBL." WHERE username='$U' LIMIT 1");
-		list($user_password) = $DbLink->next_record();
-		$DbLink->clean_results();
-		if (!empty($user_password) && (empty($PWD_Hash) || $PWD_Hash != $user_password))
-			$isHacking = true;
-		unset($user_password);
-	}
-
-	if ($isHacking)
-	{
-		unset($Reload);
-		if (isset($U)) unset($U);
-		if (isset($PWD_Hash)) unset($PWD_Hash);
-		if (isset($T)) unset($T);
-		if (isset($R)) unset($R);
-		if (isset($R0)) unset($R0);
-		if (isset($R1)) unset($R1);
-		if (isset($R2)) unset($R2);
-		if (isset($E)) unset($E);
-		$Error = L_ERR_USR_10;
-	}
-}
-
-// Removes user from users table and if necessary add a notication message for him
-if(isset($E) && $E != "")
-{
-	// Fix a security issue
-	$DbLink->query("SELECT COUNT(*) FROM " . C_USR_TBL . " WHERE username='$U' AND ip='$IP' AND room='$E'");
-	list($isHacking) = $DbLink->next_record();
-	$isHacking = 1 - $isHacking;
-	$DbLink->clean_results();
-	if ($isHacking)
-	{
-		// HACKERS Atack !!!
-		unset($E);
-		if (isset($U)) unset($U);
-		$Error = L_ERR_USR_10;
-	}
-	else
-	{	
-		$DbLink->query("DELETE FROM ".C_USR_TBL." WHERE username='$U' AND room='$E'");
-		if (isset($EN))
-		{
-			$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ($EN, '$E', 'SYS exit', '', ".time().", '', 'sprintf(L_EXIT_ROM, \"".special_char($U,$Latin1)."\")')");
-		}
-	}
-}
-
-// If no room is specified but the main form has been posted, define the room to enter
-// in as the first among default ones
-if ((isset($Form_Send) && $Form_Send) && (((C_VERSION == 0) || ((!isset($R0) || $R0 == "") && (!isset($R1) || $R1 == "") && (!isset($R2) || $R2 == ""))))) $R0 = $DefaultChatRooms[0];
-
-// Optimize some of the tables when the user logs in
-if(isset($U) && (isset($N) && $N != ""))
-{
-	$DbLink->optimize(C_MSG_TBL);
-	$DbLink->optimize(C_USR_TBL);
-}
-
-
-//**	Ensures the nick is a valid one except if the frameset is reloaded because of the
-//		NN4+ resize bug or because the user runs a join command.	**
-if(!isset($Reload) && isset($U) && (isset($N) && $N != ""))
-{
-	$relog = false;
-	if (C_NO_SWEAR == 1) include("./${ChatPath}lib/swearing.lib.php3");
-	// Check for no nick entered in
-	if ($U == "")
-	{
-		$Error = L_ERR_USR_2;
-	}
-	// Check for invalid characters or empty nick
-	elseif (trim($U) == "" || ereg("[\, ]", stripslashes($U)))
-	{
-		$Error = L_ERR_USR_16;
-	}
-	// Check for swear words in the nick
-	elseif (C_NO_SWEAR == 1 && checkwords($U, true))
-	{
-		$Error = L_ERR_USR_18;
-	}
-	else
-	{
-		$DbLink->query("SELECT room FROM ".C_USR_TBL." WHERE username='$U' LIMIT 1");
-		$Nb = $DbLink->num_rows();
-		// If the same nick is already in use and the user is not registered deny access
-		if($Nb != 0 && $PASSWORD == "" && !isset($PWD_Hash))
-		{
-			$Error = L_ERR_USR_1;
-			$DbLink->clean_results();
-		}
-		else
-		{
-			list($room) = $DbLink->next_record();
-			$DbLink->clean_results();
-			$DbLink->query("SELECT password,perms,rooms FROM ".C_REG_TBL." WHERE username='$U' LIMIT 1");
-			$reguser = ($DbLink->num_rows() != 0);
-			if ($reguser) list($user_password,$perms,$rooms) = $DbLink->next_record();
-			$DbLink->clean_results();
-
-			if (!(isset($E) && $E != ""))
-			{
-				// Check for password if the nick exist in registered users table
-				if ($reguser)
-				{
-					if ($PASSWORD == "" && !isset($PWD_Hash))
-					{
-						$Error = L_ERR_USR_3;
-					}
-					else
-					{
-						if (md5(stripslashes($PASSWORD)) != $user_password && (!isset($PWD_Hash) || $PWD_Hash != $user_password)) $Error = L_ERR_USR_4;
-					}
-					if (!isset($Error)) $DbLink->query("UPDATE ".C_REG_TBL." SET reg_time=".time()." WHERE username='$U'");
-				}
-				// If users isn't a registered one and phpMyChat require registration deny access
-				else if (C_REQUIRE_REGISTER)
-				{
-					$Error = L_ERR_USR_14;
-				}
-			}
-
-			// The var bellow is set to 1 when a registered user is allowed to log using a nick
-			// that already exist in the users table
-			$relog = ($Nb != 0 && !isset($Error));
-
-			$CookieUsername = urlencode(stripslashes($U));
-			setcookie("CookieUsername", $CookieUsername, time() + 60*60*24*365);        // cookie expires in one year
-		}
-	}
-}
-
-
-// **	Get perms of the user if the script is called by a join command	**
-if (isset($Reload) && $Reload == "JoinCmd")
-{
-	$DbLink->query("SELECT perms,rooms FROM ".C_REG_TBL." WHERE username='$U' LIMIT 1");
-	$reguser = ($DbLink->num_rows() != 0);
-	if ($reguser) list($perms,$rooms) = $DbLink->next_record();
-	$DbLink->clean_results();
-};
-
-
-// ** Ensure the user is not banished from the room he wants to enter in **
-if(!isset($Error) && (isset($N) && $N != "") && !isset($Reload))
-{
-	if (C_BANISH != "0" && (!isset($perms) || $perms != "admin"))
-	{
-		include("./${ChatPath}lib/banish.lib.php3");
-		if ($IsBanished) $Error = L_ERR_USR_20;
-	};
-};
-
-
-// **	Ensures the user can create a room and the room name is a valid one (bypassed test
-//		when the frameset is reloaded because of the NN4+ resize bug).	**
-if(!isset($Error) && (isset($R2) && $R2 != ""))
-{
-	// Skipped when the script is called by a join command.
-	if (!isset($Reload))
-	{
-		// User is not registered -> Deny room creation
-		if (!$reguser)
-		{
-			$Error = L_ERR_USR_13;
-		}
-		// Check for invalid characters or empty room name
-		else if (trim($R2) == "" || ereg("[,\]", stripslashes($R2)))
-		{
-			$Error = L_ERR_ROM_1;
-		}
-		// Check for swear words in room name
-		else if(C_NO_SWEAR == 1 && checkwords($R2, true))
-		{
-			$Error = L_ERR_ROM_2;
-		}
-		// Ensure there is no existing room with the same name but a different type...
-		else
-		{
-			// ...among reserved name for private/public (default) rooms
-			$ToCheck = ($T == "1" ? $DefaultPrivateRooms : $DefaultChatRooms);
-			for ($i = 0; $i < count($ToCheck); $i++)
-			{
-				if (strcasecmp($R2,$ToCheck[$i]) == "0")
-				{
-					$Error = ($T == 0 ? L_ERR_ROM_3:L_ERR_ROM_4);
-					break;
-				};
-			};
-			unset($ToCheck);
-
-			// ...among other rooms created by users
-			if (!isset($Error))
-			{
-				$T1 = 1 - $T;
-				$DbLink->query("SELECT count(*) FROM ".C_MSG_TBL." WHERE room = '$R2' AND type = '$T1' LIMIT 1");
-				list($Nb) = $DbLink->next_record();
-				$DbLink->clean_results();
-				if($Nb != 0) $Error = ($T == 0 ? L_ERR_ROM_3:L_ERR_ROM_4);
-			};
-		};
-	};
-
-	// Define the user status
-	if (!isset($Error))
-	{
-		$register_room = true;
-		// If the name of the room to be created is a reserved one for private/public (default) rooms,
-		// status will be 'user'. Skipped when the script is called by a join command.
-		if (!isset($Reload))
-		{
-			$ToCheck = ($T == "1" ? $DefaultChatRooms : $DefaultPrivateRooms);
-			for ($i = 0; $i < count($ToCheck); $i++)
-			{
-				if (strcasecmp($R2,$ToCheck[$i]) == "0") $register_room = false;
-			};
-			unset($ToCheck);
-		};
-
-		// If room name is the same than one of an existing room containing "true" messages
-		// (not only notifications of users entrance/exit) or containing only "system"
-		// message but an other user is already logged in, status will be 'user'
-		if ($register_room)
-		{
-			$DbLink->query("SELECT Count(*) FROM ".C_MSG_TBL." WHERE room='$R2' AND username NOT LIKE 'SYS %' LIMIT 1");
-			list($count) = $DbLink->next_record();
-			$register_room = ($count == "0");
-			$DbLink->clean_results();
-		};
-
-		if ($register_room)
-		{
-			$DbLink->query("SELECT count(*) FROM ".C_USR_TBL." WHERE room='$R2' AND username != '$U' LIMIT 1");
-			list($anybody) = $DbLink->next_record();
-			$register_room = ($anybody == 0);
-			$DbLink->clean_results();
-		};
-
-		if ($register_room)
-		{
-			// If an other registered user is already moderator for the room to be created but
-			// there is no "true" message in this room then set his status to user for this room
-			$UpdLink = new DB;
-			$DbLink->query("SELECT username,rooms FROM ".C_REG_TBL." WHERE perms = 'moderator' AND username != '$U'");
-			while (list($mod_un,$mod_rooms) = $DbLink->next_record())
-			{
-				$changed = false;
-				$roomTab = explode(",",$mod_rooms);
-				for ($i = 0; $i < count($roomTab); $i++)
-				{
-					if (strcasecmp(stripslashes($R2), $roomTab[$i]) == 0)
-					{
-						$roomTab[$i] = "";
-						$changed = true;
-						break;
-					};
-				};
-				if ($changed)
-				{
-					$mod_rooms = str_replace(",,",",",ereg_replace("^,|,$","",implode(",",$roomTab)));
-					$UpdLink->query("UPDATE ".C_REG_TBL." SET rooms='".addslashes($mod_rooms)."' WHERE username='".addslashes($mod_un)."'");
-					$UpdLink->query("UPDATE ".C_USR_TBL." SET status='r' WHERE room='$R2' AND username='".addslashes($mod_un)."'");
-				};
-				unset($roomTab);
-			};
-			$DbLink->clean_results();
-
-			// Update the current user status for the room to be created in registered users table
-			$changed = false;
-			if (!room_in(stripslashes($R2), $rooms))
-			{
-				if ($rooms != "") $rooms .= ",";
-				$rooms .= stripslashes($R2);
-				$changed = true;
-			}
-			if ($perms == "user" || $perms == "")
-			{
-				$perms = "moderator";
-				$changed = true;
-			}
-			if (($changed)&&($perms != "admin"))
-			{
-				$DbLink->query("UPDATE ".C_REG_TBL." SET perms='$perms', rooms='".addslashes($rooms)."' WHERE username='$U'");
-			}
-		}
-	}
-}
-
-
-// ** Enter the chat **
-if(!isset($Error) && (isset($N) && $N != ""))
-{
-	if(isset($R2) && $R2 != "")
-	{
-		$R = $R2;
-	}
-	elseif (!isset($R))		// $R is set when the frameset is reloaded because of the NN4+ resize bug.
-	{
-		$T = 1;
-		$R = (isset($R0) && $R0 != "")? $R0 : $R1;
-	};
-
-	$CookieRoom = urlencode(stripslashes($R));
-	setcookie("CookieRoom", $CookieRoom, time() + 60*60*24*365);        // cookie expires in one year
-	setcookie("CookieRoomType", $T, time() + 60*60*24*365);        // cookie expires in one year
-	if (isset($HTTP_COOKIE_VARS))
-	{
-		if (isset($HTTP_COOKIE_VARS["CookieMsgOrder"])) $CookieMsgOrder = $HTTP_COOKIE_VARS["CookieMsgOrder"];
-		if (isset($HTTP_COOKIE_VARS["CookieShowTimestamp"])) $CookieShowTimestamp = $HTTP_COOKIE_VARS["CookieShowTimestamp"];
-		if (isset($HTTP_COOKIE_VARS["CookieNotify"])) $CookieNotify = $HTTP_COOKIE_VARS["CookieNotify"];
-	};
-	if (!isset($O)) $O = isset($CookieMsgOrder) ? $CookieMsgOrder : C_MSG_ORDER;
-	if (!isset($ST)) $ST = isset($CookieShowTimestamp) ? $CookieShowTimestamp : C_SHOW_TIMESTAMP;
-	if (!isset($NT)) $NT = isset($CookieNotify) ? $CookieNotify : C_NOTIFY;
-	if (!isset($PWD_Hash)) $PWD_Hash = (isset($reguser) && $reguser ?  md5(stripslashes($PASSWORD)) : "");
-
-	// Define the user status to be put in the users table if necessary. Skipped when the
-	// frameset is reloaded because of the NN4+ resize bug.
-	if (!isset($Reload) || $Reload != "NNResize")
-	{
-		if (!isset($perms)) $perms = ((isset($reguser) && $reguser) ? "" : "noreg");
-		switch ($perms)
-		{
-			case 'admin':
-				$status = "a";
-				break;
-			case 'moderator':
-				$status = (room_in(stripslashes($R), $rooms) ? "m" : "r");
-				break;
-			case 'noreg':
-				$status = "u";
-				break;
-			default:
-				$status = "r";
-		};
-	};
-
-	// Udpates the IP address and the last log. time of the user in the regsistered users table if necessary
-	if (isset($reguser) && $reguser) $DbLink->query("UPDATE ".C_REG_TBL." SET reg_time='".time()."', ip='$IP' WHERE username='$U'");
-
-	// In the case of a registered user that logs again...
-	// ...in the same room update his logging time and update his IP address;
-	// ...in an other room kick him from the other room, put a notification message of
-	// 		exit for this room, update the users table and put a notification message of
-	// 		entrance for the room he log in.
-	$current_time = time();
-	if (isset($relog) && $relog)
-	{
-		if (stripslashes($R) == $room)
-		{
-			$DbLink->query("UPDATE ".C_USR_TBL." SET u_time='$current_time', ip='$IP' WHERE username='$U'");
-		}
-		else
-		{
-			$DbLink->query("SELECT type FROM ".C_MSG_TBL." WHERE room='".addslashes($room)."' LIMIT 1");
-			list($type) = $DbLink->next_record();
-			$DbLink->clean_results();
-			$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ('$type', '".addslashes($room)."', 'SYS exit', '', '$current_time', '', 'sprintf(L_EXIT_ROM, \"".special_char($U,$Latin1)."\")')");
-			$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ($T, '$R', 'SYS enter', '', '$current_time', '', 'sprintf(L_ENTER_ROM, \"".special_char($U,$Latin1)."\")')");
-			$DbLink->query("UPDATE ".C_USR_TBL." SET room='$R',u_time='$current_time', status='$status', ip='$IP' WHERE username='$U'");
-			if (C_WELCOME)
-			{
-				// Delete old welcome messages sent to the current user
-				$DbLink->query("DELETE FROM ".C_MSG_TBL." WHERE username = 'SYS welcome' AND address = '$U'");
-				// Insert a new welcome message in the messages table
-				include("./${ChatPath}lib/welcome.lib.php3");
-				$current_time_plus = $current_time + 1;	// ensures the welcome msg is the last one
-				$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ($T, '$R', 'SYS welcome', '', '$current_time_plus', '$U', 'sprintf(\"".WELCOME_MSG."\")')");
-			};
-		};
-	}
-	// In the case of an user that logs again in the same room because of the resize bug of NN4+ 
-	// update his logging time and his IP address
-	elseif (isset($Reload) && $Reload == "NNResize")
-	{
-		$DbLink->query("UPDATE ".C_USR_TBL." SET room='$R',u_time='$current_time', ip='$IP' WHERE username='$U'");
-	}
-	// For all other case of users entering in, set user infos. in users table and put a
-	// notification message of entrance in the messages table
-	else
-	{
-		$DbLink->query("INSERT INTO ".C_USR_TBL." VALUES ('$R', '$U', '$Latin1', '$current_time', '$status','$IP')");
-		$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ($T, '$R', 'SYS enter', '', '$current_time', '', 'sprintf(L_ENTER_ROM, \"".special_char($U,$Latin1)."\")')");
-		if (C_WELCOME)
-		{
-			// Delete old welcome messages sent to the current user
-			$DbLink->query("DELETE FROM ".C_MSG_TBL." WHERE username = 'SYS welcome' AND address = '$U'");
-			// Insert a new welcome message in the messages table
-			include("./${ChatPath}lib/welcome.lib.php3");
-			$current_time_plus = $current_time + 1;	// ensures the welcome msg is the last one
-			$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ($T, '$R', 'SYS welcome', '', '$current_time_plus', '$U', 'sprintf(\"".WELCOME_MSG."\")')");
-		};
-	};
-
-	// Delete invite messages sent to the user for the room he will enter in
-	$DbLink->query("SELECT m_time FROM ".C_MSG_TBL." WHERE username='SYS inviteTo' AND address='$U' AND room='$R'");
-	if($DbLink->num_rows() != 0)
-	{
-		$DelLink = new DB;
-		while(list($sent_time) = $DbLink->next_record())
-		{
-			$DelLink->query("DELETE FROM ".C_MSG_TBL." WHERE m_time='$sent_time' AND (username='SYS inviteFrom' OR (username='SYS inviteTo' AND address='$U'))");
-		};
-	};
-	?>
-	<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
-	<HTML>
-	<HEAD>
-	<TITLE><?php echo(APP_NAME); ?></TITLE>
-	<LINK REL="SHORTCUT ICON" HREF="<?php echo($ChatPath); ?>favicon.ico">
-	<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript">
-	<!--
-	// Display & remove the server time at the status bas
-	function clock(gap)
-	{
-		cur_date = new Date();
-		calc_date = new Date(cur_date - gap);
-		calc_hours = calc_date.getHours();
-		calc_minuts = calc_date.getMinutes();
-		calc_seconds = calc_date.getSeconds();
-		if (calc_hours < 10) calc_hours = "0" + calc_hours;
-		if (calc_minuts < 10) calc_minuts = "0" + calc_minuts;
-		if (calc_seconds < 10) calc_seconds = "0" + calc_seconds;
-		calc_time = calc_hours + ":" + calc_minuts + ":" + calc_seconds;
-		window.status = "<?php echo(L_SVR_TIME); ?>" + calc_time;
-
-		clock_disp = setTimeout('clock(' + gap + ')', 1000);
-	}
-
-	function stop_clock()
-	{
-		clearTimeout(clock_disp);
-		window.status = '';
-	}
-
-	function calc_gap(serv_date)
-	{
-		server_date = new Date(serv_date);
-		local_date = new Date();
-		return local_date - server_date;
-	}
-
-	<?php
-	if ($ST == 1)
-	{
-		$CorrectedDate = mktime(date("H") + C_TMZ_OFFSET,date("i"),date("s"),date("m"),date("d"),date("Y"));
-		?>
-		gap = calc_gap("<?php echo(date("F d, Y H:i:s", $CorrectedDate)); ?>");
-		clock(gap);
-		<?php
-	}
-	?>
-
-	// Automatically submit a command
-	function runCmd(CmdName,infos)
-	{
-		if (window.frames['input'] && window.frames['input'].window.document.forms['MsgForm'])
-		{
-			var inputForm = window.frames['input'].window.document.forms['MsgForm'];
-			if (infos != "") infos = " " + infos;
-			inputForm.elements['M'].value = "/" + CmdName + infos;
-			inputForm.elements['sent'].value = '1';
-			if (document.all) inputForm.elements['sendForm'].disabled = true;
-			inputForm.submit();
-		};
-	};
-
-	// Misc vars
-	var is_ignored_popup = null;
-	var path2Chat = "<?php echo($ChatPath); ?>";
-
-	<?php
-	if ($Ver == "H")
-	{
-		?>
-		// Forced reload of the loader frame, function called by the input frame
-		var time4LastLoadedMsg = null;
-		var time4LastCheckedUser = null;
-		var refresh_query = "<?php echo("From=$From&L=$L&U=".urlencode(stripslashes($U))."&R=".urlencode(stripslashes($R))."&T=$T&D=$D&N=$N&ST=$ST&NT=$NT&First=1"); ?>";
-		function force_refresh()
-		{
-			query = refresh_query + "&LastLoad=" + time4LastLoadedMsg + "&LastCheck=" + time4LastCheckedUser;
-			window.frames['loader'].window.location.replace("loader.php3?" + query);
-		}
-		<?php
-	}
-	else
-	{
-		?>
-		ver4 = false;
-		<?php
-	};
-	?>
-
-	// Launch the help popup
-	var is_help_popup = null;
-
-	function help_popup()
-	{
-		if (is_help_popup && !is_help_popup.closed)
-		{
-			is_help_popup.focus();
-		}
-		else
-		{
-			var scrTop = mouseY-400;
-			var scrLeft = mouseX-<?php echo($Charset == "windows-1256" ? "610" : "10"); ?>;
-			var scrPos = "top=" + scrTop + ",screenY=" + scrTop + ",left=" + scrLeft + ",screenX=" + scrLeft + ",";
-			is_help_popup = window.open("help_popup.php3?<?php echo("L=$L&Ver=$Ver"); ?>","help_popup",scrPos + "width=600,height=350,scrollbars=yes,resizable=yes");
-		};
-	};
-	// -->
-	</SCRIPT>
-	<SCRIPT TYPE="text/javascript" LANGUAGE="javascript1.1">
-	<!--
-	// Misc vars
-	imgHelpOff = new Image(15,15); imgHelpOff.src = path2Chat + "images/helpOff.gif";
-	imgHelpOn = new Image(15,15); imgHelpOn.src = path2Chat + "images/helpOn.gif";
-
-	// Put the nick of the user who was clicked on in the messages or the users frames
-	// to the message box in the input frame;
-	function userClick(user,privMsg)
-	{
-		if (window.frames['input'] && window.frames['input'].window.document.forms['MsgForm'].elements['MsgTo'])
-		{
-			window.frames['input'].window.document.forms['MsgForm'].elements['MsgTo'].value = user;
-			var msgbox = window.frames['input'].window.document.forms['MsgForm'].elements['M'];
-			if (privMsg)
-			{
-				var oldStr = msgbox.value;
-				if (oldStr == "" || oldStr.substring(0,1) != " ") oldStr = " " + oldStr;
-				msgbox.value = "/TO " + user + oldStr;
-			}
-			else
-			{
-				msgbox.value += user;
-				if (msgbox.value == user) msgbox.value += "> ";
-			};
-			msgbox.focus();
-		};
-	};
-
-	// Color choice at the input frame; 
-	isModerator = <?php echo((isset($status) && ($status == "a" || $status == "m")) ? 1 : 0); ?>;
-	imgColor1 = new Image(4,20); imgColor1.src = path2Chat + "images/unselColor.gif";
-	imgColor2 = new Image(4,20); imgColor2.src = path2Chat + "images/selColor.gif";
-	var SelColor = null;
-
-	function ChangeColor(ColorVal,ColorRank)
-	{
-		if (SelColor != ColorRank)
-		{
-			if (document.all)
-			{
-				obj1 = window.frames['input'].window.document.all[SelColor];
-				obj2 = window.frames['input'].window.document.all[ColorRank];
-			}
-			else if (document.images)
-			{
-				obj1 = window.frames['input'].window.document.images[SelColor];
-				obj2 = window.frames['input'].window.document.images[ColorRank];
-			}
-			else return;
-
-			if (SelColor != null)
-			{
-				obj1.src = imgColor1.src;
-			};
-			SelColor = ColorRank;
-			window.frames['input'].window.document.forms['MsgForm'].elements['C'].value = ColorVal;
-			obj2.src = imgColor2.src;
-		};
-		window.frames['input'].window.document.forms['MsgForm'].elements['M'].focus();
-	};
-
-	// Set the focus to the message box at the input frame; 
-	function get_focus()
-	{
-		window.frames['input'].window.focus();
-		window.frames['input'].window.document.forms['MsgForm'].elements['M'].focus();
-	};
-	// -->
-	</SCRIPT>
-	<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript1.2">
-	<!--
-	// Get the position for the help popup
-	var mouseX = 0;
-	var mouseY = 0;
-
-	function displayLocation(e)
-	{
-		if (ver4)
-		{
-			if (IE4) e = window.frames['input'].window.event;
-			mouseX = e.screenX;
-			mouseY = e.screenY;
-		}
-		return;
-	}
-
-	// Quick validation of the message or the command submited at the input frame
-	function validateSubmission()
-	{
-		inputFrameForm = window.frames['input'].window.document.forms['MsgForm'];
-
-		// Submission looks like a command?
-		isCmd	= (inputFrameForm.elements['M'].value.substring(0,1) == '/');
-		// RegExp to quick check for valid commands
-		re = /^\/(!$|announce .+|ban .+|clear$|help$|\?$|ignore|invite .+|join .+|kick .+|me .+|msg .+|to .+|notify$|order$|profile$|promote .+|quit|exit|bye|refresh|save|show|last|timestamp$|whois .+)/i;
-
-		// Ensure the message box isn't empty
-		if (inputFrameForm.elements['M'].value == '')
-		{
-			inputFrameForm.elements['M'].focus();
-			return false;
-		}
-		// It looks like a command but's not a valid one -> display error message
-		else if (isCmd && !re.test(inputFrameForm.elements['M'].value))
-		{
-			inputFrameForm.elements['M'].select();
-			alert("<?php echo(str_replace("\"","\\\"",L_BAD_CMD)); ?>");
-			return false;
-		}
-		// It doesn't look like a command -> it's a message, then ensure a message
-		// isn't currently being submitted...
-		else if (!isCmd && inputFrameForm.elements['sent'].value == '1')
-		{
-			inputFrameForm.elements['M'].focus();
-			return false;
-		}
-		// ... and that the same message hasn't been submitted the last time
- 		else if (!isCmd && inputFrameForm.elements['M'].value == inputFrameForm.elements['M0'].value)
-		{
-			inputFrameForm.elements['M'].value = '';
-			inputFrameForm.elements['M'].focus();
-			return false;
-		}
-		// All the tests have been succesfully passed -> submit the from
-		else
-		{
-			inputFrameForm.elements['sent'].value = '1';
-			if (document.all) inputFrameForm.elements['sendForm'].disabled = true;
-			return true;
-		};
-	}
-	// -->
-	</SCRIPT>
-	<?php
-	if ($Ver == "H")
-	{
-		?>
-		<SCRIPT SRC="<?php echo($ChatPath); ?>lib/usersH.js" TYPE="text/javascript" LANGUAGE="JavaScript1.2"></SCRIPT>
-		<SCRIPT SRC="<?php echo($ChatPath); ?>lib/connectStateH.js" TYPE="text/javascript" LANGUAGE="JavaScript1.2"></SCRIPT>
-		<?php
-	};
-	$Ver1 = ($Ver == "H" ? $Ver : "L");
-	$AddPwd2Url = ($PWD_Hash != "" ? "&PWD_Hash=$PWD_Hash" : "");
-	include("./${ChatPath}lib/frameset_def.lib.php3");
-	?>
-	</HTML>
-	<?php
-	$DbLink->close();
-	exit;
-
-} // end of entering the chat work
-
-
-
-/*********** 'send_headers' FUNCTION ***********/
-
-/* ------------------------------------------------------------------------------------------
-   The send_headers function add lines at the head part of your html file.
-
-   $title var allows to show "phpMyChat" as the title for your window when sets to 1/true.
-   $icon var allows to set phpMyChat icon as the icon for favorites when sets to 1/true.
-   --------------------------------------------------------------------------------------- */
-
-function send_headers($title, $icon)
-{
-	global $ChatPath, $From, $L;
-	global $Charset, $FontName, $FontSize;
-
-	if ($title)
-		echo("\t" . '<TITLE>' . APP_NAME . '</TITLE>' . "\n");
-	?>
-	<!--
-	The lines below are usefull for debugging purpose, please do not remove them!
-	Release: phpMyChat 0.14.5
-	 2000-2001 The phpHeaven Team  (http://www.phpheaven.net/)
-	-->
-	<META NAME="description" CONTENT="phpMyChat">
-	<META NAME="keywords" CONTENT="phpMyChat">
-	<?php
-	if ($icon) echo("<LINK REL=\"SHORTCUT ICON\" HREF=\"${ChatPath}favicon.ico\">\n");
-
-	// For translations with an explicit charset (not the 'x-user-defined' one)
-	if (!isset($FontName)) $FontName = "";
-	?>
-	<LINK REL="stylesheet" HREF="<?php echo($ChatPath); ?>config/start_page.css.php3?<?php echo("Charset=${Charset}&medium=${FontSize}&FontName=${FontName}"); ?>" TYPE="text/css">
-	<SCRIPT TYPE="text/javascript" LANGUAGE="javascript">
-	<!--
-	var NS4 = (document.layers) ? 1 : 0;
-	var IE4 = ((document.all) && (parseInt(navigator.appVersion)>=4)) ? 1 : 0;
-	var ver4 = (NS4 || IE4) ? "H" : "L";
-
-	// Will update the "Ver" field in the form below according to the javascript abilities of
-	// the browser the users surf with
-	function defineVerField()
-	{
-		if (document.images && ver4 == 'L')
-			document.forms['Params'].elements['Ver'].value = 'M';	// js1.1 enabled browser
-		else document.forms['Params'].elements['Ver'].value = ver4;
-	}
-
-	// Open the tutorial popup
-	function tutorial_popup()
-	{
-		window.focus();
-		tutorial_popupWin = window.open("<?php echo($ChatPath); ?>tutorial_popup.php3?<?php echo("L=$L&Ver="); ?>"+ver4,"tutorial_popup","resizable=yes,scrollbars=yes,toolbar=yes,menubar=yes,status=yes");
-		tutorial_popupWin.focus();
-	}
-
-	// Open the users popup according to the DHTML capacities of the browser
-	function users_popup()
-	{
-		window.focus();
-		users_popupWin = window.open("<?php echo($ChatPath); ?>users_popup"+ver4+".php3?<?php echo("From=$From&L=$L"); ?>","users_popup_<?php echo(md5(uniqid(""))); ?>","width=180,height=300,resizable=yes,scrollbars=yes");
-		users_popupWin.focus();
-	}
-
-	// Open popups for registration stuff
-	function reg_popup(name)
-	{
-		window.focus();
-		url = "<?php echo($ChatPath); ?>" + name + ".php3?L=<?php echo($L); ?>&Link=1";
-		pop_width = (name != 'admin'? 350:510);
-		pop_height = (name != 'deluser'? 470:190);
-		param = "width=" + pop_width + ",height=" + pop_height + ",resizable=yes,scrollbars=yes";
-		name += "_popup";
-		window.open(url,name,param);
-	}
-
-	// The three functions bellow allows to ensure an unique choice among rooms
-	function reset_R0()
-	{
-		<?php
-		if (C_VERSION == 2)
-		{
-			?>
-			document.forms['Params'].elements['R1'].options[0].selected = true;
-			document.forms['Params'].elements['T'].options[0].selected = true;
-			document.forms['Params'].elements['R2'].value = '';
-			<?php
-		}
-		?>
-	}
-
-	function reset_R1()
-	{
-		document.forms['Params'].elements['R0'].options[0].selected = true;
-		document.forms['Params'].elements['T'].options[0].selected = true;
-		document.forms['Params'].elements['R2'].value = '';
-	}
-
-	function reset_R2()
-	{
-		document.forms['Params'].elements['R0'].options[0].selected = true;
-		document.forms['Params'].elements['R1'].options[0].selected = true;
-	}
-	// -->
-	</SCRIPT>
-	<?php
-
-} // end of send_headers function;
-
-
-
-/*********** 'layout' FUNCTION ***********/
-
-/* ----------------------------------------------------------------------------------
-   The layout function draw the initial table/form. It will define three way to go
-   into the chat (the $Ver et $Ver1 var) dependent of the browser capacities:
-   - those that accept DHTML will use "H" (for highest) named scripts, the others
-    	will run "L" (for lowest) named scripts;
-   - those that support JavaScript1.1 stuff will use a color picker to choose
-    	messages colors in the chat/input.php3 script ($Ver is set to "M" for medium
-    	if the browser can not support DHTML, else "H"), others a drop down list.
-   ---------------------------------------------------------------------------------- */
-
-function layout($Err, $U, $R, $T)
-{
-	global $DbLink;
-	global $ChatPath, $From, $Action, $L;
-	global $Charset, $DisplayFontMsg, $FontName;
-	global $AvailableLanguages;
-	global $DefaultChatRooms;
-	if ($Err) global $Error;
-	?>
-
-<TABLE ALIGN="center" CELLPADDING=5 CLASS="ChatBody"><TR><TD CLASS="ChatBody">
-
-<CENTER>
-<FORM ACTION="<?php echo("$Action"); ?>" METHOD="POST" AUTOCOMPLETE="OFF" NAME="Params" onSubmit="defineVerField();">
-<SPAN CLASS="ChatTitle"><?php echo(APP_NAME." ".APP_VERSION); ?></SPAN>
-<?php
-// Msg for translations with no real iso code
-if (isset($FontName) && $FontName != "" && file_exists($ChatPath."localization/${L}/${FontName}.zip"))
-{
-	if (!isset($Error) && $DisplayFontMsg) echo("<P CLASS=\"ChatError\">This translation of ".APP_NAME." requires the <A HREF=\"${ChatPath}localization/${L}/${FontName}.zip\" CLASS=\"ChatFonts\">${FontName} font face</A></P>");
-}
-?>
-<P>
-<A HREF="<?php echo($ChatPath); ?>tutorial_popup.php3?<?php echo("L=$L&Ver=L"); ?>" onClick="tutorial_popup(); return false" CLASS="ChatLink" TARGET="_blank"><?php echo(L_TUTORIAL); ?></A>
-</P>
-<P CLASS="ChatP1">
-<?php echo(L_WEL_1." ".C_MSG_DEL." ".L_WEL_2." ".C_USR_DEL." ".L_WEL_3); ?>
-</P>
-<?php
-$DefaultRoomFound = 0;
-if($DbLink->query("SELECT DISTINCT u.username FROM ".C_USR_TBL." u, ".C_MSG_TBL." m WHERE u.room = m.room AND m.type = 1"))
-{
-	$Nb = $DbLink->num_rows();
-	$link = " <A HREF=\"${ChatPath}users_popupL.php3?From=$From&L=$L\" CLASS=\"ChatLink\" onClick=\"users_popup(); return false\" TARGET=\"_blank\">";
-	echo("<P CLASS=\"ChatP1\">".L_CUR_1.$link.$Nb." ".($Nb > 1 ? L_USERS : L_USER)."</A> ".L_CUR_2."</P>");
-}
-if(isset($Error))
-{
-	echo("<P CLASS=\"ChatError\">$Error</P>");
-}
-if (!isset($Ver)) $Ver = "L";
-?>
-
-<INPUT TYPE="hidden" NAME="Ver" VALUE="<?php echo($Ver); ?>">
-<INPUT TYPE="hidden" NAME="Form_Send" VALUE="1">
-<INPUT TYPE="hidden" NAME="L" VALUE="<?php echo($L); ?>">
-<INPUT TYPE="hidden" NAME="N" VALUE="<?php echo(C_MSG_NB); ?>">
-<INPUT TYPE="hidden" NAME="D" VALUE="<?php echo(C_MSG_REFRESH); ?>">
-
-<TABLE BORDER=0 CELLPADDING=3 CLASS="ChatTable">
-<TR CLASS="ChatCell">
-	<TD ALIGN="CENTER" CLASS="ChatCell">
-		<TABLE BORDER=0 CLASS="ChatTable">
-		<?php
-		// Display flags if necessary
-		if (C_MULTI_LANG == 1)
-		{
-		?>
-		<TR CLASS="ChatCell">
-			<TD COLSPAN=2 ALIGN="CENTER" CLASS="ChatCell">
-				<SPAN CLASS="ChatFlags">
-				<?php
-				asort($AvailableLanguages);
-				reset($AvailableLanguages);
-				$i = 0;
-				while(list($key, $name) = each($AvailableLanguages))
-				{
-					$i++;
-					echo("<A HREF=\"$Action?L=${name}\">");
-					echo("<IMG SRC=\"${ChatPath}localization/${name}/flag.gif\" BORDER=0 WIDTH=24 HEIGHT=16 ALT=\"".ucfirst(str_replace("_"," ",$name))."\"></A>&nbsp;");
-					if ($i % 15 == 0) echo ("<BR>");
-				};
-				unset($AvailableLanguages);
-				?>
-				</SPAN>
-			</TD>
-		</TR>
-		<?php
-		};
-
-		// Horizontal alignement for cells topic
-		$CellAlign = ($Charset == "windows-1256" ? "LEFT" : "RIGHT");
-		?>
-		<TR CLASS="ChatCell">
-			<TH COLSPAN=2 CLASS="ChatTabTitle"><?php echo(L_SET_1); ?></TH>
-		</TR>
-		<TR CLASS="ChatCell">
-			<TD ALIGN="<?php echo($CellAlign); ?>" VALIGN="TOP" CLASS="ChatCell" NOWRAP><?php echo(L_SET_2); ?> :</TD>
-			<TD VALIGN="TOP" CLASS="ChatCell">
-				<INPUT TYPE="text" NAME="U" SIZE=11 MAXLENGTH=10 VALUE="<?php echo(htmlspecialchars(urldecode($U))); ?>" CLASS="ChatBox">
-			</TD>
-		</TR>
-		<TR CLASS="ChatCell">
-			<TD ALIGN="<?php echo($CellAlign); ?>" VALIGN="TOP" CLASS="ChatCell" NOWRAP><?php echo(L_REG_1); ?> :</TD>
-			<TD VALIGN="TOP" CLASS="ChatCell" NOWRAP>
-				<INPUT TYPE="password" NAME="PASSWORD" SIZE=11 MAXLENGTH=16 CLASS="ChatBox">
-				<?php if (!C_REQUIRE_REGISTER) echo("&nbsp;<U>".L_REG_1r."</U>"); ?>
-			</TD>
-		</TR>
-
-		<TR CLASS="ChatCell"><TD CLASS="ChatCell">&nbsp;</TD></TR>
-
-		<TR CLASS="ChatCell">
-			<TH COLSPAN=2 CLASS="ChatTabTitle"><?php echo(L_REG_2); ?></TH>
-		</TR>
-		<TR CLASS="ChatCell">
-			<TD ALIGN="center" COLSPAN=2 CLASS="ChatCell">
-				<BR>
-				<A HREF="<?php echo($ChatPath); ?>register.php3?L=<?php echo($L); ?>" CLASS="ChatReg" onClick="reg_popup('register'); return false" TARGET="_blank"><?php echo(L_REG_3); ?></A>
-				| <A HREF="<?php echo($ChatPath); ?>edituser.php3?L=<?php echo($L); ?>" CLASS="ChatReg" onClick="reg_popup('edituser'); return false" TARGET="_blank"><?php echo(L_REG_4); ?></A>
-				<?php
-				if (C_SHOW_DEL_PROF != 0)
-				{
-					?>
-					| <A HREF="<?php echo($ChatPath); ?>deluser.php3?L=<?php echo($L); ?>" CLASS="ChatReg" onClick="reg_popup('deluser'); return false" TARGET="_blank"><?php echo(L_REG_5); ?></A>
-					<?php
-				}
-				if (C_SHOW_ADMIN != 0)
-				{
-					?>
-					|| <A HREF="<?php echo($ChatPath); ?>admin.php3?L=<?php echo($L); ?>&Link=1" CLASS="ChatReg" onClick="reg_popup('admin'); return false" TARGET="_blank"><?php echo(L_REG_35); ?></A>
-					<?php
-				}
-				?>
-			</TD>
-		</TR>
-		<?php
-		if (C_VERSION > 0)
-		{
-			?>
-			<TR CLASS="ChatCell">
-				<TD COLSPAN=2 CLASS="ChatCell">&nbsp;</TD>
-			</TR>
-			<TR CLASS="ChatCell">
-				<TH COLSPAN=2 CLASS="ChatTabTitle"><?php echo(L_SET_5); ?></TH>
-			</TR>
-			</TABLE>
-			<TABLE BORDER=0 CLASS="ChatTable">
-			<TR CLASS="ChatCell">
-				<TD ALIGN="<?php echo($CellAlign); ?>" VALIGN="TOP" CLASS="ChatCell" NOWRAP><?php echo(L_SET_6); ?> :</TD>
-				<TD VALIGN="TOP" CLASS="ChatCell">
-					<SELECT NAME="R0" CLASS="ChatBox" onChange="reset_R0();">
-						<OPTION VALUE=""><?php echo(L_SET_7); ?></OPTION>
-						<?php
-						// Display default rooms in the drop down list
-						$PrevRoom = "";
-						if($R != "") $PrevRoom = urldecode($R);
-
-						$DefaultRoomsString = "";
-						for($i = 0; $i < count($DefaultChatRooms); $i++)
-						{
-							$tmpRoom = stripslashes($DefaultChatRooms[$i]);
-							$DefaultRoomsString .= ($DefaultRoomsString == "" ? "" : ",").$tmpRoom;
-							echo("<OPTION VALUE=\"".htmlspecialchars($tmpRoom)."\"");
-							if(strcasecmp($tmpRoom, $PrevRoom) == 0)
-							{
-								echo(" SELECTED");
-								$DefaultRoomFound = 1;
-							}
-							echo(">".$tmpRoom."</OPTION>");
-						}
-						?>
-					</SELECT>
-				</TD>
-			</TR>
-			<?php
-		}
-		if (C_VERSION == 2)
-		{
-			?>
-			<TR CLASS="ChatCell">
-				<TD ALIGN="<?php echo($CellAlign); ?>" VALIGN="TOP" CLASS="ChatCell" NOWRAP><?php echo(L_SET_8); ?> :</TD>
-				<TD VALIGN="TOP" CLASS="ChatCell">
-					<SELECT NAME="R1" CLASS="ChatBox" onChange="reset_R1();">
-						<OPTION VALUE=""><?php echo(L_SET_7); ?></OPTION>
-						<?php
-						// Display other public rooms in the drop down list
-						$DbLink->query("SELECT DISTINCT room FROM ".C_MSG_TBL." WHERE type = 1 AND username NOT LIKE 'SYS %' ORDER BY room");
-						while(list($Room) = $DbLink->next_record())
-						{
-							if (!room_in($Room, $DefaultRoomsString))
-							{
-								echo("<OPTION VALUE=\"".htmlspecialchars($Room)."\"");
-								if(strcasecmp($Room, $PrevRoom) == 0 && $DefaultRoomFound == 0)
-								{
-									echo(" SELECTED");
-									$DefaultRoomFound = 1;
-								}
-								echo(">${Room}</OPTION>");
-							}
-						}
-						$DbLink->clean_results();
-						?>
-					</SELECT>
-				</TD>
-			</TR>
-			<TR CLASS="ChatCell">
-				<TD ALIGN="<?php echo($CellAlign); ?>" VALIGN="TOP" CLASS="ChatCell" NOWRAP>
-					<?php echo(L_SET_9." "); ?>
-					<SELECT NAME="T" CLASS="ChatBox">
-						<OPTION VALUE="1" <?php if($T == 1 && $DefaultRoomFound == 0) echo("SELECTED"); ?>><?php echo(L_SET_10); ?></OPTION>
-						<OPTION VALUE="0" <?php if($T == 0 && $DefaultRoomFound == 0) echo("SELECTED"); ?>><?php echo(L_SET_11); ?></OPTION>
-					</SELECT>
-					<?php echo(" ".L_SET_12); ?> :
-				</TD>
-				<TD VALIGN="TOP" CLASS="ChatCell">
-					<INPUT TYPE="text" NAME="R2" SIZE=11 MAXLENGTH=10 <?php if($DefaultRoomFound == 0 && $R != "") echo("VALUE=\"".htmlspecialchars(urldecode($R))."\""); ?> CLASS="ChatBox" onChange="reset_R2();">
-				</TD>
-			</TR>
-			<?php
-		}
-		?>
-		</TABLE>
-		<P CLASS="ChatP2">
-		<?php echo(L_SET_13." "); ?>
-		<INPUT TYPE="submit" VALUE="<?php echo(L_SET_14); ?>" CLASS="ChatBox"> ...
-		</P>
-	</TD>
-</TR>
-</TABLE>
-<SPAN CLASS="ChatCopy" dir="LTR">
-&copy; 2000-2001 <A HREF="http://www.phpheaven.net/" CLASS="ChatLink">The phpHeaven Team</A>
-</SPAN>
-</FORM>
-</CENTER>
-
-</TD></TR></TABLE>
-
-<?php
-} // end of the layout function
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/login.lib.php 0.15.0/chat/lib/login.lib.php
--- 0.14.5/chat/lib/login.lib.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/lib/login.lib.php	2004-04-01 03:06:37.000000000 -0600
@@ -0,0 +1,132 @@
+<?php
+if ((isset($pmc_username) && $pmc_username != "") && (isset($pmc_password) && $pmc_password != ""))
+{
+	// Ensure the password is a correct one
+	$do_not_login = false;
+	$DbLink4Login = new DB;
+	$DbLink4Login->query("SELECT password,perms FROM ".C_REG_TBL." WHERE username='$pmc_username' LIMIT 1");
+	if ($DbLink4Login->num_rows() != 0)
+	{
+		list($PWD_Hash, $perms) = $DbLink4Login->next_record();
+		if ($PWD_Hash == md5($pmc_password) || $PWD_Hash == $pmc_password)
+		{
+			// Ensure the one who lauch the admin.php script is really admin 
+			if (isset($MUST_BE_ADMIN) && $perms != "admin")
+			{
+				$Error = L_ERR_USR_11;
+			}
+			else
+			{
+				$do_not_login = true;
+			}
+		}
+	}
+	else if (isset($perms))
+	{
+		unset($perms);
+	}
+	$DbLink4Login->clean_results();
+	$DbLink4Login->close();
+}
+
+// If no login yet entered
+if (!isset($do_not_login) || !$do_not_login)
+{
+
+// Special cache instructions for IE5+
+$CachePlus	= "";
+if (ereg("MSIE [56789]", (isset($HTTP_USER_AGENT)) ? $HTTP_USER_AGENT : getenv("HTTP_USER_AGENT"))) $CachePlus = ", pre-check=0, post-check=0, max-age=0";
+$now		= gmdate('D, d M Y H:i:s') . ' GMT';
+
+header("Expires: $now");
+header("Last-Modified: $now");
+header("Cache-Control: no-cache, must-revalidate".$CachePlus);
+header("Pragma: no-cache");
+header("Content-Type: text/html; charset=${Charset}");
+
+// avoid server configuration for magic quotes
+set_magic_quotes_runtime(0);
+
+if (isset($login_form))
+{
+	if (!isset($Error)) $Error = L_ERR_USR_10;
+	unset($pmc_password);
+}
+
+// If this script is lauch by a profile command, put focus to the password field
+$Focus = (isset($LIMIT) && $LIMIT == 1 ) ? "pmc_password" : "pmc_username";
+
+// For translations with an explicit charset (not the 'x-user-defined' one)
+if (!isset($FontName)) $FontName = "";
+?>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML dir="<?php echo(($Charset == "windows-1256") ? "RTL" : "LTR"); ?>">
+
+<HEAD>
+<TITLE><?php echo(APP_NAME); ?></TITLE>
+<LINK REL="stylesheet" HREF="config/style.css.php?<?php echo("Charset=${Charset}&medium=${FontSize}&FontName=".urlencode($FontName)); ?>" TYPE="text/css">
+<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript1.1">
+<!--
+function get_focus()
+{
+	window.focus();
+	document.forms['LoginForm'].elements['<?php echo($Focus); ?>'].focus();
+}
+// -->
+</SCRIPT>
+</HEAD>
+
+<BODY onLoad="if (window.focus) get_focus();">
+<CENTER>
+<BR>
+<?php
+// Get the name of the script that called the login library
+if (!isset($PHP_SELF)) $PHP_SELF = $HTTP_SERVER_VARS["PHP_SELF"];
+$From = basename($PHP_SELF);
+?>
+<FORM ACTION="<?php echo($From); ?>" METHOD="POST" AUTOCOMPLETE="OFF" NAME="LoginForm">
+<P></P>
+<?php
+if(isset($Error))
+{
+	echo("<P><SPAN CLASS=\"error\">$Error</SPAN></P>");
+}
+?>
+<INPUT TYPE="hidden" NAME="L" VALUE="<?php echo($L); ?>">
+<INPUT TYPE="hidden" NAME="Link" VALUE="<?php if (isset($Link)) echo($Link); ?>">
+<INPUT TYPE="hidden" NAME="LIMIT" VALUE="<?php if (isset($LIMIT)) echo($LIMIT); ?>">
+<TABLE BORDER=0 CELLPADDING=3 CLASS="table">
+<TR>
+	<TD ALIGN="CENTER">
+		<TABLE BORDER=0>
+		<TR>
+			<TH COLSPAN=2 CLASS="tabtitle"><?php echo(L_REG_14); ?></TH>
+		</TR>
+		<TR>
+			<TD ALIGN="RIGHT" VALIGN="TOP" NOWRAP><?php echo(L_SET_2); ?> :</TD>
+			<TD VALIGN="TOP">
+				<INPUT TYPE="text" NAME="pmc_username" SIZE=11 MAXLENGTH=10 VALUE="<?php if (isset($pmc_username)) echo(htmlspecialchars(stripslashes($pmc_username))); ?>">
+			</TD>
+		</TR>
+		<TR>
+			<TD ALIGN="RIGHT" VALIGN="TOP" NOWRAP><?php echo(L_REG_7); ?> :</TD>
+			<TD VALIGN="TOP">
+				<INPUT TYPE="password" NAME="pmc_password" SIZE=11 MAXLENGTH=16 VALUE="<?php if (isset($pmc_password)) echo(htmlspecialchars(stripslashes($pmc_password))); ?>">
+			</TD>
+		</TR>
+		</TABLE>
+		<P>
+		<INPUT TYPE="submit" NAME="login_form" VALUE="<?php echo(L_REG_15); ?>">
+	</TD>
+</TR>
+</TABLE>
+</FORM>
+</CENTER>
+</BODY>
+
+</HTML>
+<?php
+exit;
+
+} // if(!isset($do_not_login))
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/login.lib.php3 0.15.0/chat/lib/login.lib.php3
--- 0.14.5/chat/lib/login.lib.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/lib/login.lib.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,126 +0,0 @@
-<?php
-if ((isset($AUTH_USERNAME) && $AUTH_USERNAME != "") && (isset($AUTH_PASSWORD) && $AUTH_PASSWORD != ""))
-{
-	// Ensure the password is a correct one
-	$DbLink4Login = new DB;
-	$DbLink4Login->query("SELECT password,perms FROM ".C_REG_TBL." WHERE username='$AUTH_USERNAME' LIMIT 1");
-	if ($DbLink4Login->num_rows() != 0)
-	{
-		list($PWD_Hash, $perms) = $DbLink4Login->next_record();
-		if ($PWD_Hash == md5($AUTH_PASSWORD) || $PWD_Hash == $AUTH_PASSWORD)
-		{
-			// Ensure the one who lauch the admin.php3 script is really admin 
-			if (isset($MUST_BE_ADMIN) && $perms != "admin")
-			{
-				$Error = L_ERR_USR_11;
-			}
-			else
-			{
-				$do_not_login = true;
-			}
-		}
-	}
-	$DbLink4Login->clean_results();
-	$DbLink4Login->close();
-}
-
-// If no login yet entered
-if (!isset($do_not_login))
-{
-
-// Special cache instructions for IE5+
-$CachePlus	= "";
-if (ereg("MSIE [56789]", (isset($HTTP_USER_AGENT)) ? $HTTP_USER_AGENT : getenv("HTTP_USER_AGENT"))) $CachePlus = ", pre-check=0, post-check=0, max-age=0";
-$now		= gmdate('D, d M Y H:i:s') . ' GMT';
-
-header("Expires: $now");
-header("Last-Modified: $now");
-header("Cache-Control: no-cache, must-revalidate".$CachePlus);
-header("Pragma: no-cache");
-header("Content-Type: text/html; charset=${Charset}");
-
-// avoid server configuration for magic quotes
-set_magic_quotes_runtime(0);
-
-if (isset($AUTH_PASSWORD))
-{
-	if (!isset($Error)) $Error = L_ERR_USR_10;
-}
-
-// If this script is lauch by a profile command, put focus to the password field
-$Focus = (isset($LIMIT) && $LIMIT == 1 ) ? "AUTH_PASSWORD" : "AUTH_USERNAME";
-
-// For translations with an explicit charset (not the 'x-user-defined' one)
-if (!isset($FontName)) $FontName = "";
-?>
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<HTML dir="<?php echo(($Charset == "windows-1256") ? "RTL" : "LTR"); ?>">
-
-<HEAD>
-<TITLE><?php echo(APP_NAME); ?></TITLE>
-<LINK REL="stylesheet" HREF="config/style.css.php3?<?php echo("Charset=${Charset}&medium=${FontSize}&FontName=${FontName}"); ?>" TYPE="text/css">
-<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript1.1">
-<!--
-function get_focus()
-{
-	window.focus();
-	document.forms['LoginForm'].elements['<?php echo($Focus); ?>'].focus();
-}
-// -->
-</SCRIPT>
-</HEAD>
-
-<BODY onLoad="if (window.focus) get_focus();">
-<CENTER>
-<BR>
-<?php
-// Get the name of the script that called the login library
-if (!isset($PHP_SELF)) $PHP_SELF = $HTTP_SERVER_VARS["PHP_SELF"];
-$From = basename($PHP_SELF);
-?>
-<FORM ACTION="<?php echo($From); ?>" METHOD="POST" AUTOCOMPLETE="OFF" NAME="LoginForm">
-<P></P>
-<?php
-if(isset($Error))
-{
-	echo("<P><SPAN CLASS=\"error\">$Error</SPAN></P>");
-}
-?>
-<INPUT TYPE="hidden" NAME="L" VALUE="<?php echo($L); ?>">
-<INPUT TYPE="hidden" NAME="Link" VALUE="<?php if (isset($Link)) echo($Link); ?>">
-<INPUT TYPE="hidden" NAME="LIMIT" VALUE="<?php if (isset($LIMIT)) echo($LIMIT); ?>">
-<TABLE BORDER=0 CELLPADDING=3 CLASS="table">
-<TR>
-	<TD ALIGN="CENTER">
-		<TABLE BORDER=0>
-		<TR>
-			<TH COLSPAN=2 CLASS="tabtitle"><?php echo(L_REG_14); ?></TH>
-		</TR>
-		<TR>
-			<TD ALIGN="RIGHT" VALIGN="TOP" NOWRAP><?php echo(L_SET_2); ?> :</TD>
-			<TD VALIGN="TOP">
-				<INPUT TYPE="text" NAME="AUTH_USERNAME" SIZE=11 MAXLENGTH=10 VALUE="<?php if (isset($AUTH_USERNAME)) echo(htmlspecialchars(stripslashes($AUTH_USERNAME))); ?>">
-			</TD>
-		</TR>
-		<TR>
-			<TD ALIGN="RIGHT" VALIGN="TOP" NOWRAP><?php echo(L_REG_7); ?> :</TD>
-			<TD VALIGN="TOP">
-				<INPUT TYPE="password" NAME="AUTH_PASSWORD" SIZE=11 MAXLENGTH=16 VALUE="<?php if (isset($AUTH_PASSWORD)) echo(htmlspecialchars(stripslashes($AUTH_PASSWORD))); ?>">
-			</TD>
-		</TR>
-		</TABLE>
-		<P>
-		<INPUT TYPE="submit" VALUE="<?php echo(L_REG_15); ?>">
-	</TD>
-</TR>
-</TABLE>
-</FORM>
-</CENTER>
-</BODY>
-
-</HTML>
-<?php
-exit;
-
-} // if(!isset($do_not_login))
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/mail_validation.lib.php 0.15.0/chat/lib/mail_validation.lib.php
--- 0.14.5/chat/lib/mail_validation.lib.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/lib/mail_validation.lib.php	2004-04-01 03:06:37.000000000 -0600
@@ -0,0 +1,128 @@
+<?php
+// This libray is used during the registration process. It generates a random
+// password (function gen_password) then send it by email to the user (function
+// send_email).
+// Note that the php mail function must be enabled to run this functionality. If
+// an other function has been developed by your ISP to send PHP mail, just modify
+// the send_email function to make in runable.
+
+
+// -- SETTINGS BELLOW MUST BE COMPLETED --
+
+$Paswd_Length = '8';					// Length of the password to be generated
+$Sender_Name = 'your true name';		// May also be the name of your site 
+$Sender_email = 'your e-mail';			// For the reply address
+$Chat_URL = 'http://url_of_your_chat';	// To be send as a signature
+
+
+
+// -- FUNCTIONS --
+
+// Define in_array-like function for php
+if (!function_exists("in_array"))
+{
+	function in_array($needle,$haystack) 
+	{ 
+		for($i=0;$i<count($haystack) && $haystack[$i] !=$needle;$i++); 
+		return ($i!=count($haystack)); 
+	};
+};
+
+// Credit for the function that generate password goes to halcyon_42.
+// http://www.zend.com/codex.php?id=149&single=1
+function gen_password()
+{
+	global $Paswd_Length;
+
+	// set ASCII range for random character generation
+	$lower_ascii_bound = 50;          // "2"
+	$upper_ascii_bound = 122;       // "z"
+
+	// Exclude special characters and some confusing alphanumerics
+	// o,O,0,I,1,l etc
+	$notuse = array (58,59,60,61,62,63,64,73,79,91,92,93,94,95,96,108,111);
+
+	$i = 0;
+	$password = '';
+	while ($i < $Paswd_Length)
+	{
+		mt_srand((double)microtime() * 1000000);
+		// random limits within ASCII table
+		$randnum = mt_rand($lower_ascii_bound, $upper_ascii_bound);
+		if (!in_array($randnum, $notuse))
+		{
+			$password = $password.chr($randnum);
+			$i++;
+		};
+	};
+
+	return $password;
+} ;
+
+
+function quote_printable($str,$WithCharset) 
+{
+	$str = str_replace("%","=",rawurlencode($str));
+	return "=?${WithCharset}?Q?${str}?=";
+};
+
+// Credits for this function goes to fwancho <fwancho@whc.net>
+// It can be found at the URL: http://www.zend.com/codex.php?id=307&single=1
+function rfcDate()
+{
+	// Translated from imap-4.7c/src/osdep/unix/env_unix.c
+	// env-unix.c is Copyright 2000 by the University of Washington
+	// localtime() not available in php...
+
+	$tn = time(0);
+	$zone = gmdate("H", $tn) * 60 + gmdate("i", $tn);
+	$julian = gmdate("z", $tn);
+	$t = getdate($tn);
+	$zone = $t["hours"] * 60 + $t["minutes"] - $zone;
+
+	// julian can be one of:
+	//  36x  local time is December 31, UTC is January 1, offset -24 hours
+	//    1  local time is 1 day ahead of UTC, offset +24 hours
+	//    0  local time is same day as UTC, no offset
+	//   -1  local time is 1 day behind UTC, offset -24 hours
+	// -36x  local time is January 1, UTC is December 31, offset +24 hours
+	if ($julian = $t["yday"] - $julian)
+	{
+		$zone += (($julian < 0) == (abs($julian) == 1)) ? -24*60 : 24*60;
+   	};
+
+	$zone_sign = ($zone > 0 ? "+" : "-");
+
+	return date('D, d M Y H:i:s ', $tn).$zone_sign.sprintf("%02d%02d", abs($zone)/60, abs($zone)%60)." (".strftime("%Z").")"; 
+}
+
+$mail_date = rfcDate();
+
+function send_email($subject,$userString,$pswdString,$welcomeString)
+{
+	global $Charset;
+	global $EMAIL, $U, $pmc_password;
+	global $Chat_URL;
+	global $Sender_Name, $Sender_email;
+	global $mail_date;
+
+	$subject = quote_printable($subject,$Charset);
+
+	$body =  $userString.": $U\n";
+	$body .= $pswdString.": $pmc_password\n\n";
+	$body .= $welcomeString."\n";
+	$body .= $Chat_URL."\n";
+
+	$Sender_Name = quote_printable($Sender_Name,$Charset);
+	$headers = "From: ${Sender_Name} <${Sender_email}> \r\n";
+	$headers .= "X-Sender: <${Sender_email}> \r\n";
+	$headers .= "X-Mailer: PHP/".phpversion()." \r\n";
+	$headers .= "Return-Path: <${Sender_email}> \r\n";
+	$headers .= "Date: ${mail_date} \r\n";
+	$headers .= "Mime-Version: 1.0 \r\n";
+	$headers .= "Content-Type: text/plain; charset=${Charset} \r\n";
+	$headers .= "Content-Transfer-Encoding: 8bit \r\n";
+
+	return @mail($EMAIL, $subject, $body, $headers);
+};
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/mail_validation.lib.php3 0.15.0/chat/lib/mail_validation.lib.php3
--- 0.14.5/chat/lib/mail_validation.lib.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/lib/mail_validation.lib.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,128 +0,0 @@
-<?php
-// This libray is used during the registration process. It generates a random
-// password (function gen_password) then send it by email to the user (function
-// send_email).
-// Note that the php mail function must be enabled to run this functionality. If
-// an other function has been developed by your ISP to send PHP mail, just modify
-// the send_email function to make in runable.
-
-
-// -- SETTINGS BELLOW MUST BE COMPLETED --
-
-$Paswd_Length = '8';					// Length of the password to be generated
-$Sender_Name = 'your true name';		// May also be the name of your site 
-$Sender_email = 'your e-mail';			// For the reply address
-$Chat_URL = 'http://url_of_your_chat';	// To be send as a signature
-
-
-
-// -- FUNCTIONS --
-
-// Define in_array-like function for PHP3
-if (!function_exists("in_array"))
-{
-	function in_array($needle,$haystack) 
-	{ 
-		for($i=0;$i<count($haystack) && $haystack[$i] !=$needle;$i++); 
-		return ($i!=count($haystack)); 
-	};
-};
-
-// Credit for the function that generate password goes to halcyon_42.
-// http://www.zend.com/codex.php?id=149&single=1
-function gen_password()
-{
-	global $Paswd_Length;
-
-	// set ASCII range for random character generation
-	$lower_ascii_bound = 50;          // "2"
-	$upper_ascii_bound = 122;       // "z"
-
-	// Exclude special characters and some confusing alphanumerics
-	// o,O,0,I,1,l etc
-	$notuse = array (58,59,60,61,62,63,64,73,79,91,92,93,94,95,96,108,111);
-
-	$i = 0;
-	$password = '';
-	while ($i < $Paswd_Length)
-	{
-		mt_srand((double)microtime() * 1000000);
-		// random limits within ASCII table
-		$randnum = mt_rand($lower_ascii_bound, $upper_ascii_bound);
-		if (!in_array($randnum, $notuse))
-		{
-			$password = $password.chr($randnum);
-			$i++;
-		};
-	};
-
-	return $password;
-} ;
-
-
-function quote_printable($str,$WithCharset) 
-{
-	$str = str_replace("%","=",rawurlencode($str));
-	return "=?${WithCharset}?Q?${str}?=";
-};
-
-// Credits for this function goes to fwancho <fwancho@whc.net>
-// It can be found at the URL: http://www.zend.com/codex.php?id=307&single=1
-function rfcDate()
-{
-	// Translated from imap-4.7c/src/osdep/unix/env_unix.c
-	// env-unix.c is Copyright 2000 by the University of Washington
-	// localtime() not available in PHP3...
-
-	$tn = time(0);
-	$zone = gmdate("H", $tn) * 60 + gmdate("i", $tn);
-	$julian = gmdate("z", $tn);
-	$t = getdate($tn);
-	$zone = $t["hours"] * 60 + $t["minutes"] - $zone;
-
-	// julian can be one of:
-	//  36x  local time is December 31, UTC is January 1, offset -24 hours
-	//    1  local time is 1 day ahead of UTC, offset +24 hours
-	//    0  local time is same day as UTC, no offset
-	//   -1  local time is 1 day behind UTC, offset -24 hours
-	// -36x  local time is January 1, UTC is December 31, offset +24 hours
-	if ($julian = $t["yday"] - $julian)
-	{
-		$zone += (($julian < 0) == (abs($julian) == 1)) ? -24*60 : 24*60;
-   	};
-
-	$zone_sign = ($zone > 0 ? "+" : "-");
-
-	return date('D, d M Y H:i:s ', $tn).$zone_sign.sprintf("%02d%02d", abs($zone)/60, abs($zone)%60)." (".strftime("%Z").")"; 
-}
-
-$mail_date = rfcDate();
-
-function send_email($subject,$userString,$pswdString,$welcomeString)
-{
-	global $Charset;
-	global $EMAIL, $U, $PASSWORD;
-	global $Chat_URL;
-	global $Sender_Name, $Sender_email;
-	global $mail_date;
-
-	$subject = quote_printable($subject,$Charset);
-
-	$body =  $userString.": $U\n";
-	$body .= $pswdString.": $PASSWORD\n\n";
-	$body .= $welcomeString."\n";
-	$body .= $Chat_URL."\n";
-
-	$Sender_Name = quote_printable($Sender_Name,$Charset);
-	$headers = "From: ${Sender_Name} <${Sender_email}> \r\n";
-	$headers .= "X-Sender: <${Sender_email}> \r\n";
-	$headers .= "X-Mailer: PHP/".phpversion()." \r\n";
-	$headers .= "Return-Path: <${Sender_email}> \r\n";
-	$headers .= "Date: ${mail_date} \r\n";
-	$headers .= "Mime-Version: 1.0 \r\n";
-	$headers .= "Content-Type: text/plain; charset=${Charset} \r\n";
-	$headers .= "Content-Transfer-Encoding: 8bit \r\n";
-
-	return @mail($EMAIL, $subject, $body, $headers);
-};
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/release.lib.php 0.15.0/chat/lib/release.lib.php
--- 0.14.5/chat/lib/release.lib.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/lib/release.lib.php	2004-04-01 03:06:37.000000000 -0600
@@ -0,0 +1,4 @@
+<?php
+define("APP_NAME", "phpMyChat");    // Application name
+define("APP_VERSION", "0.14.6-dev");    // Application version number
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/release.lib.php3 0.15.0/chat/lib/release.lib.php3
--- 0.14.5/chat/lib/release.lib.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/lib/release.lib.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,4 +0,0 @@
-<?php
-define("APP_NAME", "phpMyChat");    // Application name
-define("APP_VERSION", "0.14.5");    // Application version number
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/smilies.lib.php 0.15.0/chat/lib/smilies.lib.php
--- 0.14.5/chat/lib/smilies.lib.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/lib/smilies.lib.php	2004-04-01 03:06:38.000000000 -0600
@@ -0,0 +1,96 @@
+<?
+/* ------------------------------------------------------------------
+	This library allows to transform text codes to graphical smilies.
+	It is called by 'chat/input.php'.
+   ------------------------------------------------------------------ */
+
+
+// The table below define smilies code and associated gif names, width and height.
+// You can add your own collection of smilies inside but be aware that codes may
+// need to be slashed in some way because they are used as POSIX 1003.2 regular
+// expressions (see the Check4Smilies function below). Moreover these codes are
+// case sensitives.
+
+$SmiliesTbl = Array(
+	":\)"	=> array("smile1.gif", "15", "15"),
+	":D"	=> array("smile2.gif", "15", "15"),
+	":o"	=> array("smile3.gif", "15", "15"),
+	":\("	=> array("smile4.gif", "15", "15"),
+	";\)"	=> array("smile5.gif", "15", "15"),
+	":p"	=> array("smile6.gif", "15", "15"),
+	"8\)"	=> array("smile7.gif", "15", "15"),
+	":\["	=> array("smile8.gif", "15", "15"),
+	":kill:"	=> array("smile9.gif", "50", "15")
+);
+
+$MaxWidth = "50";		// Set the maximum width among similes
+$MaxHeight = "15";		// Set the maximum height among similes
+
+
+// ---- DO NOT MODIFY BELOW ----
+
+// Slashes ' and " characters
+function SpecialSlash(&$Str)
+{
+	return str_replace("\"","&quot;",str_replace("'","\\'",$Str));
+}
+
+// Replace smilies code by gif URLs in messages
+function Check4Smilies(&$string,&$Table)
+{
+	$tmp_tbl = split("<a href|</a>", " ".$string." ");
+	$i = "0";
+
+	for (reset($tmp_tbl); $substring=current($tmp_tbl); next($tmp_tbl))
+	{
+		// $substring is one of the trailing spaces added above -> do nothing
+		if($substring == " ")
+		{
+		}
+		// $substring is not an HTTP link -> do the work for smilies
+		elseif (($i % 2) == "0")
+		{
+			while(list($key, $prop) = each($Table))
+			{
+				$substring = ereg_replace($key, " <IMG SRC=\"images/smilies/$prop[0]\" WIDTH=$prop[1] HEIGHT=$prop[2] ALT=\"".str_replace("\"","&quot;", stripslashes($key))."\"> ", $substring);
+			};
+			$tmp_tbl[$i] = $substring;
+		}
+		// $substring is an HTTP link -> just restore HTML tags for links
+		else
+		{
+			$tmp_tbl[$i] = "<a href".$substring."</a>";
+		}
+		$i++;
+	};
+	$string = trim(join("",$tmp_tbl));
+	unset($tmp_tbl);
+}
+
+// Display smilies in the help popup and in the tutorials
+function DisplaySmilies(&$ToDisplay,&$Table,&$TblSize,$Target)
+{
+	global $MaxWidth, $MaxHeight;
+
+	$i = 0;
+	$Str1 = "";
+	$Str2 = "";
+	$PerLines = floor(600/$MaxWidth);
+	
+	while(list($key, $prop) = each($Table))
+	{
+		$i++;
+		if ($Target == "help") $Str1 .= "\t\t<TD ALIGN=\"CENTER\" WIDTH=$MaxWidth HEIGHT=$MaxHeight><A HREF=\"#\" onClick=\"smiley2Input('".SpecialSlash($key)."'); return false\"><IMG SRC=\"images/smilies/$prop[0]\" WIDTH=$prop[1] HEIGHT=$prop[2] BORDER=0 ALT=\"".str_replace("\"","&quot;", stripslashes($key))."\"></A></TD>\n";
+		else $Str1 .= "\t\t<TD ALIGN=CENTER WIDTH=$MaxWidth HEIGHT=$MaxHeight><IMG SRC=\"images/smilies/$prop[0]\" WIDTH=$prop[1] HEIGHT=$prop[2] BORDER=0 ALT=\"".str_replace("\"","&quot;", stripslashes($key))."\"></TD>\n";
+		$Str2 .= "\t\t<TD ALIGN=\"CENTER\" NOWRAP>".stripslashes($key)."</TD>\n";
+		if (is_integer($i/$PerLines) || $i == $TblSize)
+		{
+			$ToDisplay[] = $Str1;
+			$ToDisplay[] = $Str2;
+			$Str1 = "";
+			$Str2 = "";
+		};
+	};
+};
+
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/smilies.lib.php3 0.15.0/chat/lib/smilies.lib.php3
--- 0.14.5/chat/lib/smilies.lib.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/lib/smilies.lib.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,96 +0,0 @@
-<?
-/* ------------------------------------------------------------------
-	This library allows to transform text codes to graphical smilies.
-	It is called by 'chat/input.php3'.
-   ------------------------------------------------------------------ */
-
-
-// The table below define smilies code and associated gif names, width and height.
-// You can add your own collection of smilies inside but be aware that codes may
-// need to be slashed in some way because they are used as POSIX 1003.2 regular
-// expressions (see the Check4Smilies function below). Moreover these codes are
-// case sensitives.
-
-$SmiliesTbl = Array(
-	":\)"	=> array("smile1.gif", "15", "15"),
-	":D"	=> array("smile2.gif", "15", "15"),
-	":o"	=> array("smile3.gif", "15", "15"),
-	":\("	=> array("smile4.gif", "15", "15"),
-	";\)"	=> array("smile5.gif", "15", "15"),
-	":p"	=> array("smile6.gif", "15", "15"),
-	"8\)"	=> array("smile7.gif", "15", "15"),
-	":\["	=> array("smile8.gif", "15", "15"),
-	":kill:"	=> array("smile9.gif", "50", "15")
-);
-
-$MaxWidth = "50";		// Set the maximum width among similes
-$MaxHeight = "15";		// Set the maximum height among similes
-
-
-// ---- DO NOT MODIFY BELOW ----
-
-// Slashes ' and " characters
-function SpecialSlash(&$Str)
-{
-	return str_replace("\"","&quot;",str_replace("'","\\'",$Str));
-}
-
-// Replace smilies code by gif URLs in messages
-function Check4Smilies(&$string,&$Table)
-{
-	$tmp_tbl = split("<a href|</a>", " ".$string." ");
-	$i = "0";
-
-	for (reset($tmp_tbl); $substring=current($tmp_tbl); next($tmp_tbl))
-	{
-		// $substring is one of the trailing spaces added above -> do nothing
-		if($substring == " ")
-		{
-		}
-		// $substring is not an HTTP link -> do the work for smilies
-		elseif (($i % 2) == "0")
-		{
-			while(list($key, $prop) = each($Table))
-			{
-				$substring = ereg_replace($key, " <IMG SRC=\"images/smilies/$prop[0]\" WIDTH=$prop[1] HEIGHT=$prop[2] ALT=\"".str_replace("\"","&quot;", stripslashes($key))."\"> ", $substring);
-			};
-			$tmp_tbl[$i] = $substring;
-		}
-		// $substring is an HTTP link -> just restore HTML tags for links
-		else
-		{
-			$tmp_tbl[$i] = "<a href".$substring."</a>";
-		}
-		$i++;
-	};
-	$string = trim(join("",$tmp_tbl));
-	unset($tmp_tbl);
-}
-
-// Display smilies in the help popup and in the tutorials
-function DisplaySmilies(&$ToDisplay,&$Table,&$TblSize,$Target)
-{
-	global $MaxWidth, $MaxHeight;
-
-	$i = 0;
-	$Str1 = "";
-	$Str2 = "";
-	$PerLines = floor(600/$MaxWidth);
-	
-	while(list($key, $prop) = each($Table))
-	{
-		$i++;
-		if ($Target == "help") $Str1 .= "\t\t<TD ALIGN=\"CENTER\" WIDTH=$MaxWidth HEIGHT=$MaxHeight><A HREF=\"#\" onClick=\"smiley2Input('".SpecialSlash($key)."'); return false\"><IMG SRC=\"images/smilies/$prop[0]\" WIDTH=$prop[1] HEIGHT=$prop[2] BORDER=0 ALT=\"".str_replace("\"","&quot;", stripslashes($key))."\"></A></TD>\n";
-		else $Str1 .= "\t\t<TD ALIGN=CENTER WIDTH=$MaxWidth HEIGHT=$MaxHeight><IMG SRC=\"images/smilies/$prop[0]\" WIDTH=$prop[1] HEIGHT=$prop[2] BORDER=0 ALT=\"".str_replace("\"","&quot;", stripslashes($key))."\"></TD>\n";
-		$Str2 .= "\t\t<TD ALIGN=\"CENTER\" NOWRAP>".stripslashes($key)."</TD>\n";
-		if (is_integer($i/$PerLines) || $i == $TblSize)
-		{
-			$ToDisplay[] = $Str1;
-			$ToDisplay[] = $Str2;
-			$Str1 = "";
-			$Str2 = "";
-		};
-	};
-};
-
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/swearing.lib.php 0.15.0/chat/lib/swearing.lib.php
--- 0.14.5/chat/lib/swearing.lib.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/lib/swearing.lib.php	2004-04-01 03:06:38.000000000 -0600
@@ -0,0 +1,45 @@
+<?
+// This library allows to check for "swear words". Users cannot login or create a room with such words,
+// in messages they are replaced by the "@#$*!" string or the one you choose. 
+// Credit for this lib goes to Gustavo Iwamoto <iwamoto@zaz.com.br> and Fabiano R. Prestes <zoso@post.com>
+
+function checkwords ($String, $TestOnly)
+{
+
+	// You can add the words you don't want users to use in the $BadWords array bellow. As an eregi
+	// function is called to find them in strings, you may use valid POSIX 1003.2 regular expressions
+	// (see second line of the array for an example).
+	// Note that search is not case sensitive, except for special characters such as accentued ones.
+
+	$BadWords = array (
+				"shit",
+				"fuck([[:alpha:]]*)"
+	);
+
+	$ReplaceString = "@#$*!";	// String that will replace "swear words"
+
+
+	// Don't modify lines bellow 
+
+	$Found = false;
+	for (reset($BadWords); $ToFind = current($BadWords); next($BadWords))
+	{
+		$Found = eregi(addslashes($ToFind), $String);
+		if ($Found)
+		{
+			if ($TestOnly)
+			{
+				break;
+			}
+			else
+			{
+				$String = eregi_replace(addslashes($ToFind), $ReplaceString, $String);
+			};
+		};
+	};
+
+	unset($BadWords);
+	return ($TestOnly ? $Found : $String);
+}
+
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/swearing.lib.php3 0.15.0/chat/lib/swearing.lib.php3
--- 0.14.5/chat/lib/swearing.lib.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/lib/swearing.lib.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,45 +0,0 @@
-<?
-// This library allows to check for "swear words". Users cannot login or create a room with such words,
-// in messages they are replaced by the "@#$*!" string or the one you choose. 
-// Credit for this lib goes to Gustavo Iwamoto <iwamoto@zaz.com.br> and Fabiano R. Prestes <zoso@post.com>
-
-function checkwords ($String, $TestOnly)
-{
-
-	// You can add the words you don't want users to use in the $BadWords array bellow. As an eregi
-	// function is called to find them in strings, you may use valid POSIX 1003.2 regular expressions
-	// (see second line of the array for an example).
-	// Note that search is not case sensitive, except for special characters such as accentued ones.
-
-	$BadWords = array (
-				"shit",
-				"fuck([[:alpha:]]*)"
-	);
-
-	$ReplaceString = "@#$*!";	// String that will replace "swear words"
-
-
-	// Don't modify lines bellow 
-
-	$Found = false;
-	for (reset($BadWords); $ToFind = current($BadWords); next($BadWords))
-	{
-		$Found = eregi(addslashes($ToFind), $String);
-		if ($Found)
-		{
-			if ($TestOnly)
-			{
-				break;
-			}
-			else
-			{
-				$String = eregi_replace(addslashes($ToFind), $ReplaceString, $String);
-			};
-		};
-	};
-
-	unset($BadWords);
-	return ($TestOnly ? $Found : $String);
-}
-
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/usersH.js 0.15.0/chat/lib/usersH.js
--- 0.14.5/chat/lib/usersH.js	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/lib/usersH.js	2004-04-01 03:06:38.000000000 -0600
@@ -1,269 +1,269 @@
-/* ******************************************************************
-**     Collapsible Rooms for IE & NN 4+ Browsers (DHTML stuff)     **
-**          Based on the 'Expandable Outlines' script from         **
-**             WebReference (http://webreference.com/)             **
-****************************************************************** */
-
-/* Define some vars */
-NS4 = (document.layers) ? 1 : 0;
-IE4 = ((document.all) && (parseInt(navigator.appVersion)>=4)) ? 1 : 0;
-ver4 = (NS4 || IE4) ? 1 : 0;
-
-var usersFrame = null;
-var exitFrame = null;
-
-var isExpanded = false;
-var opened_room = new Array;
-var rooms_number = 0;
-var opened_rooms_number = 0;
-var Y = null;
-
-bigOpened = new Image(13,13); bigOpened.src = path2Chat + 'images/open_big.gif';
-bigClosed = new Image(13,13); bigClosed.src = path2Chat + 'images/closed_big.gif';
-Opened = new Image(9,9); Opened.src = path2Chat + 'images/open.gif';
-Closed = new Image(9,9); Closed.src = path2Chat + 'images/closed.gif';
-
-
-/* Misc. functions used to alter memory of room's status (opened/closed) */
-function ResetRoomTable()
-{
-	for (var test in opened_room)
-	{
-		opened_room[test] = (opened_room[test] == 1 ? "+" : "-");
-	};
-};
-
-function CheckRoomState(room)
-{
-	if (opened_room[room])
-	{
-		opened_room[room] = (opened_room[room] == "+" ? 1 : -1);
-		return opened_room[room];
-	}
-	else return 0;
-};
-
-function CleanRoom()
-{
-	temp = new Array();
-	for (var test in opened_room)
-	{
-		if (opened_room[test] == 1 || opened_room[test] == -1) temp[test] = opened_room[test];
-	};
-	opened_room = temp;
-	temp = null;
-};
-
-function ModifyRoomState(room, action)
-{
-	opened_room[room] = (action == "add" ? 1 : -1);
-};
-
-
-/* Main functions for collapsible rooms */
-
-// Get the ID of the first collapsible room;
-function getIndex(el)
-{
-	ind = null;
-	for (i=0; i<usersFrame.document.layers.length; i++)
-	{
-		whichEl = usersFrame.document.layers[i];
-		if (whichEl.id == el) {
-			ind = i;
-			break;
-		};
-	};
-	return ind;
-};
-
-// Position layers under NN4+;
-function arrange()
-{
-	if (usersFrame.firstInd != null)
-	{
-		nextY = usersFrame.document.layers[usersFrame.firstInd].pageY + usersFrame.document.layers[usersFrame.firstInd].document.height;
-		for (i=usersFrame.firstInd+1; i<usersFrame.document.layers.length; i++)
-		{
-			whichEl = usersFrame.document.layers[i];
-			if (whichEl.visibility != 'hide') {
-				whichEl.pageY = nextY;
-				nextY += whichEl.document.height;
-			}
-		}
-	}
-}
-
-// Define the state of the big +/- icon
-function big_icon()
-{
-	if (rooms_number == 0) return;
-	bigImg = (NS4 > 0) ? exitFrame.document.images['imEx_big'] : exitFrame.document.images.item('imEx_big');
-	if (opened_rooms_number == rooms_number)
-	{
-		isExpanded = true;
-		bigImg.src = bigOpened.src;
-	}
-	else if (isExpanded)
-	{
-		isExpanded = false;
-		bigImg.src = bigClosed.src;
-	};
-};
-
-// Collapse/expand rooms (depends on rooms' status before the page reloads) each time the web page is loaded;
-function initIt()
-{
-	if (!ver4) return;
-	ResetRoomTable();
-	var parentEl_tab = new Array();
-	opened_rooms_number = 0;
-	if (NS4)
-	{
-		for (i=0; i<usersFrame.document.layers.length; i++)
-		{
-			whichEl = usersFrame.document.layers[i];
-			if (whichEl.id.indexOf('Parent') != -1) parentEl = whichEl;
-			if (whichEl.id.indexOf('Child') != -1) {
-				currentID = whichEl.id.substring(5);
-				roomState = CheckRoomState(whichEl.id);
-				if (roomState == 1 || (roomState == 0 && ChildNb[currentID] < 10)) {
-					opened_rooms_number++;
-					whichEl.visibility = 'show';
-					if (!parentEl_tab[parentEl.id]) {
-						parentEl_tab[parentEl.id] = 1;
-						parentEl.document.images['imEx'].src = Opened.src;
-					};
-				} else {
-					whichEl.visibility = 'hide';
-				};
-			};
-		};
-		arrange();
-	}
-	else
-	{
-		divColl = usersFrame.document.all.tags('DIV');
-		for (i=0; i<divColl.length; i++)
-		{
-			whichEl = divColl(i);
-			if (whichEl.className == 'parent') parentEl = whichEl;
-			if (whichEl.className == 'child') {
-				currentID = whichEl.id.substring(5);
-				roomState = CheckRoomState(whichEl.id);
-				if (roomState == 1 || (roomState == 0 && ChildNb[currentID] < 10)) {
-					opened_rooms_number++;
-					whichEl.style.display = 'block';
-					if (!parentEl_tab[parentEl.id]) {
-						parentEl_tab[parentEl.id] = 1;
-						parentEl.all.tags('IMG').item('imEx').src = Opened.src;
-					};
-				} else {
-					whichEl.style.display = 'none';
-				};
-			};
-		};
-	};
-	parentEl_tab = null;
-	ChildNb = null;
-	CleanRoom();
-	big_icon();
-};
-
-// Collapse/expand a room when the user require for it and store this status;
-function expandIt(el)
-{
-	if (!ver4) return;
-	if (IE4)
-	{
-		whichEl = usersFrame.document.all('Child' + el);
-		whichIm = usersFrame.event.srcElement;
-		if (whichEl.style.display == 'none') {
-			opened_rooms_number++;
-			whichEl.style.display = 'block';
-			whichIm.src = Opened.src;
-			ModifyRoomState(whichEl.id, 'add');
-		} else {
-			opened_rooms_number--;
-			whichEl.style.display = 'none';
-			whichIm.src = Closed.src;
-			ModifyRoomState(whichEl.id, 'del');
-		};
-	}
-	else
-	{
-		whichEl = usersFrame.document.layers['Child' + el];
-		whichIm = usersFrame.document.layers['Parent' + el].document.images['imEx'];
-		if (whichEl.visibility == 'hide') {
-			opened_rooms_number++;
-			whichEl.visibility = 'show';
-			whichIm.src = Opened.src;
-			ModifyRoomState(whichEl.id, 'add');
-		} else {
-			opened_rooms_number--;
-			whichEl.visibility = 'hide';
-			whichIm.src = Closed.src;
-			ModifyRoomState(whichEl.id, 'del');
-		};
-		arrange();
-	};
-	big_icon();
-	if (window.frames['input'] && window.frames['input'].window.document.forms['MsgForm'].elements['M'])
-		window.frames['input'].window.document.forms['MsgForm'].elements['M'].focus();
-};
-
-// Collapse/expand all rooms when the user require for it and store the status of each of the rooms;
-function expandAll()
-{
-	if (!ver4) return;
-	newSrc_big = (isExpanded) ? bigClosed.src : bigOpened.src;
-	newSrc = (isExpanded) ? Closed.src : Opened.src;
-	what = (isExpanded) ? 'del' : 'add';
-	opened_rooms_number = (isExpanded) ? 0 : rooms_number;
-	
-	if (NS4)
-	{
-		exitFrame.document.images['imEx_big'].src = newSrc_big;
-		if (usersFrame.firstInd != null) {
-			if (usersFrame.document.layers.length) {
-				for (i=usersFrame.firstInd; i<usersFrame.document.layers.length; i++)
-				{
-					whichEl = usersFrame.document.layers[i];
-					if (whichEl.id.indexOf('Parent') != -1
-						&& typeof(whichEl.document.images['imEx']) != 'undefined')
-						whichEl.document.images['imEx'].src = newSrc;
-					if (whichEl.id.indexOf('Child') != -1) {
-						whichEl.visibility = (isExpanded) ? 'hide' : 'show';
-						ModifyRoomState(whichEl.id, what);
-					};
-				};
-			};
-			arrange();
-			if (isExpanded) usersFrame.scrollTo(0,usersFrame.document.layers[usersFrame.firstInd].pageY);
-		};
-	}
-	else
-	{
-		divColl = usersFrame.document.all.tags('DIV');
-		for (i=0; i<divColl.length; i++)
-		{
-			if (divColl(i).className == 'child') {
-				divColl(i).style.display = (isExpanded) ? 'none' : 'block';
-				ModifyRoomState(divColl(i).id, what);
-			};
-		};
-		exitFrame.document.images.item('imEx_big').src = newSrc_big;
-		imColl = usersFrame.document.images.item('imEx');
-		if (imColl)
-		{
-			for (i=0; i<imColl.length; i++)
-			{
-				imColl(i).src = newSrc;
-			}
-			if(!imColl.length) usersFrame.document.imEx.src = newSrc;
-		};
-	};
-	isExpanded = !isExpanded;
-	if (window.frames['input'] && window.frames['input'].window.document.forms['MsgForm'].elements['M'])
-		window.frames['input'].window.document.forms['MsgForm'].elements['M'].focus();
+/* ******************************************************************
+**     Collapsible Rooms for IE & NN 4+ Browsers (DHTML stuff)     **
+**          Based on the 'Expandable Outlines' script from         **
+**             WebReference (http://webreference.com/)             **
+****************************************************************** */
+
+/* Define some vars */
+NS4 = (document.layers) ? 1 : 0;
+IE4 = ((document.all) && (parseInt(navigator.appVersion)>=4)) ? 1 : 0;
+ver4 = (NS4 || IE4) ? 1 : 0;
+
+var usersFrame = null;
+var exitFrame = null;
+
+var isExpanded = false;
+var opened_room = new Array;
+var rooms_number = 0;
+var opened_rooms_number = 0;
+var Y = null;
+
+bigOpened = new Image(13,13); bigOpened.src = path2Chat + 'images/open_big.gif';
+bigClosed = new Image(13,13); bigClosed.src = path2Chat + 'images/closed_big.gif';
+Opened = new Image(9,9); Opened.src = path2Chat + 'images/open.gif';
+Closed = new Image(9,9); Closed.src = path2Chat + 'images/closed.gif';
+
+
+/* Misc. functions used to alter memory of room's status (opened/closed) */
+function ResetRoomTable()
+{
+	for (var test in opened_room)
+	{
+		opened_room[test] = (opened_room[test] == 1 ? "+" : "-");
+	};
+};
+
+function CheckRoomState(room)
+{
+	if (opened_room[room])
+	{
+		opened_room[room] = (opened_room[room] == "+" ? 1 : -1);
+		return opened_room[room];
+	}
+	else return 0;
+};
+
+function CleanRoom()
+{
+	temp = new Array();
+	for (var test in opened_room)
+	{
+		if (opened_room[test] == 1 || opened_room[test] == -1) temp[test] = opened_room[test];
+	};
+	opened_room = temp;
+	temp = null;
+};
+
+function ModifyRoomState(room, action)
+{
+	opened_room[room] = (action == "add" ? 1 : -1);
+};
+
+
+/* Main functions for collapsible rooms */
+
+// Get the ID of the first collapsible room;
+function getIndex(el)
+{
+	ind = null;
+	for (i=0; i<usersFrame.document.layers.length; i++)
+	{
+		whichEl = usersFrame.document.layers[i];
+		if (whichEl.id == el) {
+			ind = i;
+			break;
+		};
+	};
+	return ind;
+};
+
+// Position layers under NN4+;
+function arrange()
+{
+	if (usersFrame.firstInd != null)
+	{
+		nextY = usersFrame.document.layers[usersFrame.firstInd].pageY + usersFrame.document.layers[usersFrame.firstInd].document.height;
+		for (i=usersFrame.firstInd+1; i<usersFrame.document.layers.length; i++)
+		{
+			whichEl = usersFrame.document.layers[i];
+			if (whichEl.visibility != 'hide') {
+				whichEl.pageY = nextY;
+				nextY += whichEl.document.height;
+			}
+		}
+	}
+}
+
+// Define the state of the big +/- icon
+function big_icon()
+{
+	if (rooms_number == 0) return;
+	bigImg = (NS4 > 0) ? exitFrame.document.images['imEx_big'] : exitFrame.document.images.item('imEx_big');
+	if (opened_rooms_number == rooms_number)
+	{
+		isExpanded = true;
+		bigImg.src = bigOpened.src;
+	}
+	else if (isExpanded)
+	{
+		isExpanded = false;
+		bigImg.src = bigClosed.src;
+	};
+};
+
+// Collapse/expand rooms (depends on rooms' status before the page reloads) each time the web page is loaded;
+function initIt()
+{
+	if (!ver4) return;
+	ResetRoomTable();
+	var parentEl_tab = new Array();
+	opened_rooms_number = 0;
+	if (NS4)
+	{
+		for (i=0; i<usersFrame.document.layers.length; i++)
+		{
+			whichEl = usersFrame.document.layers[i];
+			if (whichEl.id.indexOf('Parent') != -1) parentEl = whichEl;
+			if (whichEl.id.indexOf('Child') != -1) {
+				currentID = whichEl.id.substring(5);
+				roomState = CheckRoomState(whichEl.id);
+				if (roomState == 1 || (roomState == 0 && ChildNb[currentID] < 10)) {
+					opened_rooms_number++;
+					whichEl.visibility = 'show';
+					if (!parentEl_tab[parentEl.id]) {
+						parentEl_tab[parentEl.id] = 1;
+						parentEl.document.images['imEx'].src = Opened.src;
+					};
+				} else {
+					whichEl.visibility = 'hide';
+				};
+			};
+		};
+		arrange();
+	}
+	else
+	{
+		divColl = usersFrame.document.all.tags('DIV');
+		for (i=0; i<divColl.length; i++)
+		{
+			whichEl = divColl(i);
+			if (whichEl.className == 'parent') parentEl = whichEl;
+			if (whichEl.className == 'child') {
+				currentID = whichEl.id.substring(5);
+				roomState = CheckRoomState(whichEl.id);
+				if (roomState == 1 || (roomState == 0 && ChildNb[currentID] < 10)) {
+					opened_rooms_number++;
+					whichEl.style.display = 'block';
+					if (!parentEl_tab[parentEl.id]) {
+						parentEl_tab[parentEl.id] = 1;
+						parentEl.all.tags('IMG').item('imEx').src = Opened.src;
+					};
+				} else {
+					whichEl.style.display = 'none';
+				};
+			};
+		};
+	};
+	parentEl_tab = null;
+	ChildNb = null;
+	CleanRoom();
+	big_icon();
+};
+
+// Collapse/expand a room when the user require for it and store this status;
+function expandIt(el)
+{
+	if (!ver4) return;
+	if (IE4)
+	{
+		whichEl = usersFrame.document.all('Child' + el);
+		whichIm = usersFrame.event.srcElement;
+		if (whichEl.style.display == 'none') {
+			opened_rooms_number++;
+			whichEl.style.display = 'block';
+			whichIm.src = Opened.src;
+			ModifyRoomState(whichEl.id, 'add');
+		} else {
+			opened_rooms_number--;
+			whichEl.style.display = 'none';
+			whichIm.src = Closed.src;
+			ModifyRoomState(whichEl.id, 'del');
+		};
+	}
+	else
+	{
+		whichEl = usersFrame.document.layers['Child' + el];
+		whichIm = usersFrame.document.layers['Parent' + el].document.images['imEx'];
+		if (whichEl.visibility == 'hide') {
+			opened_rooms_number++;
+			whichEl.visibility = 'show';
+			whichIm.src = Opened.src;
+			ModifyRoomState(whichEl.id, 'add');
+		} else {
+			opened_rooms_number--;
+			whichEl.visibility = 'hide';
+			whichIm.src = Closed.src;
+			ModifyRoomState(whichEl.id, 'del');
+		};
+		arrange();
+	};
+	big_icon();
+	if (window.frames['input'] && window.frames['input'].window.document.forms['MsgForm'].elements['M'])
+		window.frames['input'].window.document.forms['MsgForm'].elements['M'].focus();
+};
+
+// Collapse/expand all rooms when the user require for it and store the status of each of the rooms;
+function expandAll()
+{
+	if (!ver4) return;
+	newSrc_big = (isExpanded) ? bigClosed.src : bigOpened.src;
+	newSrc = (isExpanded) ? Closed.src : Opened.src;
+	what = (isExpanded) ? 'del' : 'add';
+	opened_rooms_number = (isExpanded) ? 0 : rooms_number;
+	
+	if (NS4)
+	{
+		exitFrame.document.images['imEx_big'].src = newSrc_big;
+		if (usersFrame.firstInd != null) {
+			if (usersFrame.document.layers.length) {
+				for (i=usersFrame.firstInd; i<usersFrame.document.layers.length; i++)
+				{
+					whichEl = usersFrame.document.layers[i];
+					if (whichEl.id.indexOf('Parent') != -1
+						&& typeof(whichEl.document.images['imEx']) != 'undefined')
+						whichEl.document.images['imEx'].src = newSrc;
+					if (whichEl.id.indexOf('Child') != -1) {
+						whichEl.visibility = (isExpanded) ? 'hide' : 'show';
+						ModifyRoomState(whichEl.id, what);
+					};
+				};
+			};
+			arrange();
+			if (isExpanded) usersFrame.scrollTo(0,usersFrame.document.layers[usersFrame.firstInd].pageY);
+		};
+	}
+	else
+	{
+		divColl = usersFrame.document.all.tags('DIV');
+		for (i=0; i<divColl.length; i++)
+		{
+			if (divColl(i).className == 'child') {
+				divColl(i).style.display = (isExpanded) ? 'none' : 'block';
+				ModifyRoomState(divColl(i).id, what);
+			};
+		};
+		exitFrame.document.images.item('imEx_big').src = newSrc_big;
+		imColl = usersFrame.document.images.item('imEx');
+		if (imColl)
+		{
+			for (i=0; i<imColl.length; i++)
+			{
+				imColl(i).src = newSrc;
+			}
+			if(!imColl.length) usersFrame.document.imEx.src = newSrc;
+		};
+	};
+	isExpanded = !isExpanded;
+	if (window.frames['input'] && window.frames['input'].window.document.forms['MsgForm'].elements['M'])
+		window.frames['input'].window.document.forms['MsgForm'].elements['M'].focus();
 };
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/users_popupH.js 0.15.0/chat/lib/users_popupH.js
--- 0.14.5/chat/lib/users_popupH.js	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/lib/users_popupH.js	2004-04-01 03:06:38.000000000 -0600
@@ -1,225 +1,225 @@
-/* ***************************************************************************
-**  Collapsible Rooms in users popup for IE & NN 4+ Browsers (DHTML stuff)  **
-**        Based on the 'Expandable Outlines' script from WebReference       **
-**                         (http://webreference.com/)                       **
-*************************************************************************** */
-
-bigOpened = new Image(13,13); bigOpened.src = 'images/open_big.gif';
-bigClosed = new Image(13,13); bigClosed.src = 'images/closed_big.gif';
-Opened = new Image(9,9); Opened.src = 'images/open.gif';
-Closed = new Image(9,9); Closed.src = 'images/closed.gif';
-
-// Positioned element resize bug under NN;
-if (NS4) {origWidth = innerWidth; origHeight = innerHeight; };
-
-function reDo()
-{
-	if (innerWidth != origWidth || innerHeight != origHeight) location.reload(true);
-}
-
-if (NS4) onresize = reDo;
-
-// Add styles for positioned layers;
-if (ver4) {
-	with (document)
-	{
-		write('<STYLE TYPE=\"text/css\">');
-		if (NS4) {
-			write('.parent {position:absolute; visibility:visible}');
-			write('.child {position:absolute; visibility:visible}');
-			write('.regular {position:absolute; visibility:visible}')
-		} else {
-			write('.child {display:none}')
-		};
-		write('<\/STYLE>');
-	}
-}
-
-var isExpanded = false;
-var rooms_number = 0;
-var opened_rooms_number = 0;
-
-
-// Get the ID of the first collapsible room;
-function getIndex(el)
-{
-	ind = null;
-	for (i=0; i<document.layers.length; i++)
-	{
-		whichEl = document.layers[i];
-		if (whichEl.id == el) {
-			ind = i;
-			break;
-		};
-	};
-	return ind;
-}
-
-// Position layers under NN4+;
-function arrange()
-{
-	if (firstInd != null)
-	{
-		nextY = document.layers[firstInd].pageY + document.layers[firstInd].document.height;
-		for (i=firstInd+1; i<document.layers.length; i++)
-		{
-			whichEl = document.layers[i];
-			if (whichEl.visibility != 'hide') {
-				whichEl.pageY = nextY;
-				nextY += whichEl.document.height;
-			};
-		};
-	};
-}
-
-// Define the state of the big +/- icon
-function big_icon()
-{
-	if (rooms_number == 0) return;
-	bigImg = (NS4 > 0) ? document.images['imEx_big'] : document.images.item('imEx_big');
-	if (opened_rooms_number == rooms_number)
-	{
-		isExpanded = true;
-		bigImg.src = bigOpened.src;
-	}
-	else if (isExpanded)
-	{
-		isExpanded = false;
-		bigImg.src = bigClosed.src;
-	};
-};
-
-// Collapse rooms each time the web page is loaded;
-function initIt()
-{
-	if (!ver4) return;
-	var parentEl_tab = new Array();
-	opened_rooms_number = 0;
-	if (NS4)
-	{
-		for (i=0; i<document.layers.length; i++)
-		{
-			whichEl = document.layers[i];
-			if (whichEl.id.indexOf('Parent') != -1) parentEl = whichEl;
-			if (whichEl.id.indexOf('Child') != -1) {
-				currentID = whichEl.id.replace(/Child/,'');
-				if (ChildNb[currentID] > 10) {
-					whichEl.visibility = 'hide';
-				} else {
-					opened_rooms_number++;
-					whichEl.visibility = 'show';
-					if (!parentEl_tab[parentEl.id]) {
-						parentEl_tab[parentEl.id] = 1;
-						parentEl.document.images['imEx'].src = Opened.src;
-					};
-				};
-			};
-		};
-		arrange();
-	} else {
-		divColl = document.all.tags('DIV');
-		for (i=0; i<divColl.length; i++)
-		{
-			whichEl = divColl(i);
-			if (whichEl.className == 'parent') parentEl = whichEl;
-			if (whichEl.className == 'child') {
-				currentID = whichEl.id.replace(/Child/,'');
-				if (ChildNb[currentID] > 10) {
-					whichEl.style.display = 'none';
-				} else {
-					opened_rooms_number++;
-					whichEl.style.display = 'block';
-					if (!parentEl_tab[parentEl.id]) {
-						parentEl_tab[parentEl.id] = 1;
-						parentEl.all.tags('IMG').item('imEx').src = Opened.src;
-					};
-				};
-			};
-		};
-	};
-	parentEl_tab = null;
-	ChildNb = null;
-	big_icon();
-};
-
-// Collapse/expand a room when the user require for it;
-function expandIt(el)
-{
-	if (!ver4) return;
-	if (IE4)
-	{
-		whichEl = document.all(el + 'Child');
-		whichIm = event.srcElement;
-		if (whichEl.style.display == 'none') {
-			opened_rooms_number++;
-			whichEl.style.display = 'block';
-			whichIm.src = Opened.src;
-		} else {
-			opened_rooms_number--;
-			whichEl.style.display = 'none';
-			whichIm.src = Closed.src;
-		};
-	}
-	else
-	{
-		whichEl = document.layers[el + 'Child'];
-		whichIm = document.layers[el + 'Parent'].document.images['imEx'];
-		if (whichEl.visibility == 'hide') {
-			opened_rooms_number++;
-			whichEl.visibility = 'show';
-			whichIm.src = Opened.src;
-		} else {
-			opened_rooms_number--;
-			whichEl.visibility = 'hide';
-			whichIm.src = Closed.src;
-		};
-		arrange();
-	};
-	big_icon();
-};
-
-function expandAll()
-{
-	if (!ver4) return;
-	newSrc_big = (isExpanded) ? bigClosed.src : bigOpened.src;
-	newSrc = (isExpanded) ? Closed.src : Opened.src;
-	opened_rooms_number = (isExpanded) ? 0 : rooms_number;
-
-	if (NS4)
-	{
-		document.images['imEx_big'].src = newSrc_big;
-		if (firstInd != null) {
-			if (document.layers.length) {
-				for (i=firstInd; i<document.layers.length; i++)
-				{
-					whichEl = document.layers[i];
-					if (whichEl.id.indexOf('Parent') != -1)
-						whichEl.document.images['imEx'].src = newSrc;
-					if (whichEl.id.indexOf('Child') != -1)
-						whichEl.visibility = (isExpanded) ? 'hide' : 'show';
-				};
-			};
-			arrange();
-			if (isExpanded) scrollTo(0,document.layers[firstInd].pageY);
-		};
-	} else {
-		divColl = document.all.tags('DIV');
-		for (i=0; i<divColl.length; i++)
-		{
-			if (divColl(i).className == 'child')
-				divColl(i).style.display = (isExpanded) ? 'none' : 'block';
-		};
-		document.images.item('imEx_big').src = newSrc_big;
-		imColl = document.images.item('imEx');
-		if (imColl) {
-			for (i=0; i<imColl.length; i++)
-			{
-				imColl(i).src = newSrc;
-			}
-			if(!imColl.length) document.imEx.src = newSrc;
-		};
-	};
-	isExpanded = !isExpanded;
-}
-
+/* ***************************************************************************
+**  Collapsible Rooms in users popup for IE & NN 4+ Browsers (DHTML stuff)  **
+**        Based on the 'Expandable Outlines' script from WebReference       **
+**                         (http://webreference.com/)                       **
+*************************************************************************** */
+
+bigOpened = new Image(13,13); bigOpened.src = 'images/open_big.gif';
+bigClosed = new Image(13,13); bigClosed.src = 'images/closed_big.gif';
+Opened = new Image(9,9); Opened.src = 'images/open.gif';
+Closed = new Image(9,9); Closed.src = 'images/closed.gif';
+
+// Positioned element resize bug under NN;
+if (NS4) {origWidth = innerWidth; origHeight = innerHeight; };
+
+function reDo()
+{
+	if (innerWidth != origWidth || innerHeight != origHeight) location.reload(true);
+}
+
+if (NS4) onresize = reDo;
+
+// Add styles for positioned layers;
+if (ver4) {
+	with (document)
+	{
+		write('<STYLE TYPE=\"text/css\">');
+		if (NS4) {
+			write('.parent {position:absolute; visibility:visible}');
+			write('.child {position:absolute; visibility:visible}');
+			write('.regular {position:absolute; visibility:visible}')
+		} else {
+			write('.child {display:none}')
+		};
+		write('<\/STYLE>');
+	}
+}
+
+var isExpanded = false;
+var rooms_number = 0;
+var opened_rooms_number = 0;
+
+
+// Get the ID of the first collapsible room;
+function getIndex(el)
+{
+	ind = null;
+	for (i=0; i<document.layers.length; i++)
+	{
+		whichEl = document.layers[i];
+		if (whichEl.id == el) {
+			ind = i;
+			break;
+		};
+	};
+	return ind;
+}
+
+// Position layers under NN4+;
+function arrange()
+{
+	if (firstInd != null)
+	{
+		nextY = document.layers[firstInd].pageY + document.layers[firstInd].document.height;
+		for (i=firstInd+1; i<document.layers.length; i++)
+		{
+			whichEl = document.layers[i];
+			if (whichEl.visibility != 'hide') {
+				whichEl.pageY = nextY;
+				nextY += whichEl.document.height;
+			};
+		};
+	};
+}
+
+// Define the state of the big +/- icon
+function big_icon()
+{
+	if (rooms_number == 0) return;
+	bigImg = (NS4 > 0) ? document.images['imEx_big'] : document.images.item('imEx_big');
+	if (opened_rooms_number == rooms_number)
+	{
+		isExpanded = true;
+		bigImg.src = bigOpened.src;
+	}
+	else if (isExpanded)
+	{
+		isExpanded = false;
+		bigImg.src = bigClosed.src;
+	};
+};
+
+// Collapse rooms each time the web page is loaded;
+function initIt()
+{
+	if (!ver4) return;
+	var parentEl_tab = new Array();
+	opened_rooms_number = 0;
+	if (NS4)
+	{
+		for (i=0; i<document.layers.length; i++)
+		{
+			whichEl = document.layers[i];
+			if (whichEl.id.indexOf('Parent') != -1) parentEl = whichEl;
+			if (whichEl.id.indexOf('Child') != -1) {
+				currentID = whichEl.id.replace(/Child/,'');
+				if (ChildNb[currentID] > 10) {
+					whichEl.visibility = 'hide';
+				} else {
+					opened_rooms_number++;
+					whichEl.visibility = 'show';
+					if (!parentEl_tab[parentEl.id]) {
+						parentEl_tab[parentEl.id] = 1;
+						parentEl.document.images['imEx'].src = Opened.src;
+					};
+				};
+			};
+		};
+		arrange();
+	} else {
+		divColl = document.all.tags('DIV');
+		for (i=0; i<divColl.length; i++)
+		{
+			whichEl = divColl(i);
+			if (whichEl.className == 'parent') parentEl = whichEl;
+			if (whichEl.className == 'child') {
+				currentID = whichEl.id.replace(/Child/,'');
+				if (ChildNb[currentID] > 10) {
+					whichEl.style.display = 'none';
+				} else {
+					opened_rooms_number++;
+					whichEl.style.display = 'block';
+					if (!parentEl_tab[parentEl.id]) {
+						parentEl_tab[parentEl.id] = 1;
+						parentEl.all.tags('IMG').item('imEx').src = Opened.src;
+					};
+				};
+			};
+		};
+	};
+	parentEl_tab = null;
+	ChildNb = null;
+	big_icon();
+};
+
+// Collapse/expand a room when the user require for it;
+function expandIt(el)
+{
+	if (!ver4) return;
+	if (IE4)
+	{
+		whichEl = document.all(el + 'Child');
+		whichIm = event.srcElement;
+		if (whichEl.style.display == 'none') {
+			opened_rooms_number++;
+			whichEl.style.display = 'block';
+			whichIm.src = Opened.src;
+		} else {
+			opened_rooms_number--;
+			whichEl.style.display = 'none';
+			whichIm.src = Closed.src;
+		};
+	}
+	else
+	{
+		whichEl = document.layers[el + 'Child'];
+		whichIm = document.layers[el + 'Parent'].document.images['imEx'];
+		if (whichEl.visibility == 'hide') {
+			opened_rooms_number++;
+			whichEl.visibility = 'show';
+			whichIm.src = Opened.src;
+		} else {
+			opened_rooms_number--;
+			whichEl.visibility = 'hide';
+			whichIm.src = Closed.src;
+		};
+		arrange();
+	};
+	big_icon();
+};
+
+function expandAll()
+{
+	if (!ver4) return;
+	newSrc_big = (isExpanded) ? bigClosed.src : bigOpened.src;
+	newSrc = (isExpanded) ? Closed.src : Opened.src;
+	opened_rooms_number = (isExpanded) ? 0 : rooms_number;
+
+	if (NS4)
+	{
+		document.images['imEx_big'].src = newSrc_big;
+		if (firstInd != null) {
+			if (document.layers.length) {
+				for (i=firstInd; i<document.layers.length; i++)
+				{
+					whichEl = document.layers[i];
+					if (whichEl.id.indexOf('Parent') != -1)
+						whichEl.document.images['imEx'].src = newSrc;
+					if (whichEl.id.indexOf('Child') != -1)
+						whichEl.visibility = (isExpanded) ? 'hide' : 'show';
+				};
+			};
+			arrange();
+			if (isExpanded) scrollTo(0,document.layers[firstInd].pageY);
+		};
+	} else {
+		divColl = document.all.tags('DIV');
+		for (i=0; i<divColl.length; i++)
+		{
+			if (divColl(i).className == 'child')
+				divColl(i).style.display = (isExpanded) ? 'none' : 'block';
+		};
+		document.images.item('imEx_big').src = newSrc_big;
+		imColl = document.images.item('imEx');
+		if (imColl) {
+			for (i=0; i<imColl.length; i++)
+			{
+				imColl(i).src = newSrc;
+			}
+			if(!imColl.length) document.imEx.src = newSrc;
+		};
+	};
+	isExpanded = !isExpanded;
+}
+
 onload = initIt;
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/welcome.lib.php 0.15.0/chat/lib/welcome.lib.php
--- 0.14.5/chat/lib/welcome.lib.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/lib/welcome.lib.php	2004-04-01 03:06:38.000000000 -0600
@@ -0,0 +1,33 @@
+<?php
+// Define the welcome message to be used when the 'C_WELCOME' switch is set
+// to 1 inside the 'chat/config/config.lib.php' file
+
+switch ($L)
+{
+   case 'argentinian_spanish':   // Para usuarios en Espaol para Argentina
+		define('WELCOME_MSG', "Bienvenidos a nuestro chat. El objetivo es conocernos, intercambiar ideas y <I>especialmente, pasar un momento agradable</I>.");
+		break;
+	case 'danish':	// For danish users
+		define('WELCOME_MSG', "Velkommen til chatten. Oprethold venligst en sober tone mens du chatter: <i>forsg at vre venlig, rar og imdekommende</i>.");
+		break;
+	case 'english':	// For english users
+		define('WELCOME_MSG', "Welcome to our chat. Please obey the net etiquette while chatting: <I>try to be pleasant and polite</I>.");
+		break;
+	case 'french':	// For french users
+		define('WELCOME_MSG', "Bienvenu(e) sur notre chat. N\'oubliez pas les <I>rgles de politesse lmentaire</I> au cours de vos discussions.");
+		break;
+	case 'greek':	// For greek users
+		define('WELCOME_MSG', "    .  <I>     </I>    .");
+		break;
+	case 'japanese':	// For japan users
+		define('WELCOME_MSG', "åȤؤ褦 ¾Υ桼Ǥ򤫤ˡڤǤäƤ͡");
+		break;
+	case 'spanish':	// Para usuarios en Espaol
+		define('WELCOME_MSG', "Bienvenidos a nuestro chat. El objetivo es conocernos, intercambiar ideas y <I>especialmente, pasar un momento agradable</I>.");
+	case 'portuguese':	// Para utilizadores portugueses
+		define('WELCOME_MSG', "Bem vindos ao nosso chat. Agradecemos que cumpra a <I>net etiquette</I> enquanto conversa.");
+	default:		// When there is no translation for the language of the user
+		define('WELCOME_MSG', "Welcome to our chat. Please obey the net etiquette while chatting: <I>try to be pleasant and polite</I>.");
+};
+
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/lib/welcome.lib.php3 0.15.0/chat/lib/welcome.lib.php3
--- 0.14.5/chat/lib/welcome.lib.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/lib/welcome.lib.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,28 +0,0 @@
-<?php
-// Define the welcome message to be used when the 'C_WELCOME' switch is set
-// to 1 inside the 'chat/config/config.lib.php3' file
-
-switch ($L)
-{
-   case 'argentinian_spanish':   // Para usuarios en Espaol para Argentina
-		define('WELCOME_MSG', "Bienvenidos a nuestro chat. El objetivo es conocernos, intercambiar ideas y <I>especialmente, pasar un momento agradable</I>.");
-		break;
-	case 'danish':	// For danish users
-		define('WELCOME_MSG', "Velkommen til chatten. Oprethold venligst en sober tone mens du chatter: <i>forsg at vre venlig, rar og imdekommende</i>.");
-		break;
-	case 'english':	// For english users
-		define('WELCOME_MSG', "Welcome to our chat. Please obey the net etiquette while chatting: <I>try to be pleasant and polite</I>.");
-		break;
-	case 'french':	// For french users
-		define('WELCOME_MSG', "Bienvenu(e) sur notre chat. N\'oubliez pas les <I>rgles de politesse lmentaire</I> au cours de vos discussions.");
-		break;
-	case 'japanese':	// For japan users
-		define('WELCOME_MSG', "åȤؤ褦 ¾Υ桼Ǥ򤫤ˡڤǤäƤ͡");
-		break;
-	case 'spanish':	// Para usuarios en Espaol
-		define('WELCOME_MSG', "Bienvenidos a nuestro chat. El objetivo es conocernos, intercambiar ideas y <I>especialmente, pasar un momento agradable</I>.");
-	default:		// When there is no translation for the language of the user
-		define('WELCOME_MSG', "Welcome to our chat. Please obey the net etiquette while chatting: <I>try to be pleasant and polite</I>.");
-};
-
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/link.htm 0.15.0/chat/link.htm
--- 0.14.5/chat/link.htm	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/link.htm	2004-04-01 03:06:25.000000000 -0600
@@ -1,11 +1,11 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<HTML>
-<HEAD>
-<LINK REL="stylesheet" HREF="config/style.css.php3" TYPE="text/css">
-</HEAD>
-<BODY CLASS="frame">
-<CENTER>
-<A HREF="http://www.phpheaven.net/" TARGET="_blank"><IMG SRC="images/icon.gif" WIDTH=88 HEIGHT=31 BORDER=0></A>
-</CENTER>
-</BODY>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+<HEAD>
+<LINK REL="stylesheet" HREF="config/style.css.php" TYPE="text/css">
+</HEAD>
+<BODY CLASS="frame">
+<CENTER>
+<A HREF="http://www.phpheaven.net/" TARGET="_blank"><IMG SRC="images/icon.gif" WIDTH=88 HEIGHT=31 BORDER=0></A>
+</CENTER>
+</BODY>
 </HTML>
\ No newline at end of file
diff -ruN 0.14.5/chat/loader.php 0.15.0/chat/loader.php
--- 0.14.5/chat/loader.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/loader.php	2004-04-01 03:06:25.000000000 -0600
@@ -0,0 +1,370 @@
+<?php
+// Get the names and values for vars sent to this script
+if (isset($HTTP_GET_VARS))
+{
+	while(list($name,$value) = each($HTTP_GET_VARS))
+	{
+		$$name = $value;
+	};
+};
+
+// Fix a security hole
+if (isset($L) && !is_dir('./localization/'.$L)) exit();
+	
+require("./config/config.lib.php");
+require("./localization/".$L."/localized.chat.php");
+require("./lib/database/".C_DB_TYPE.".lib.php");
+require("./lib/clean.lib.php");
+
+header("Content-Type: text/html; charset=${Charset}");
+
+// avoid server configuration for magic quotes
+set_magic_quotes_runtime(0);
+
+// Translate to html special characters, and entities if message was sent with a latin 1 charset
+$Latin1 = ($Charset == "iso-8859-1");
+function special_char($str,$lang,$slash_on)
+{
+	$str = ($lang ? htmlentities(stripslashes($str)) : htmlspecialchars(stripslashes($str)));
+	return ($slash_on ? addslashes($str) : $str);
+};
+
+// Text direction
+$textDirection = ($Charset == "windows-1256") ? "RTL" : "LTR";
+
+$DbLink = new DB;
+
+
+// Get IP address
+require("./lib/get_IP.lib.php");		// Set the $IP var
+
+// ** Updates user info in connected users tables **;
+// Fixed a security issue thanks to SeazoN
+if (C_REQUIRE_REGISTER && (!isset($PWD_Hash) || $PWD_Hash == ''))
+{
+	exit(); // hack attack
+}
+else if (isset($PWD_Hash) && $PWD_Hash != '')
+{
+	$DbLink->query(	'SELECT ' . C_USR_TBL . '.room, ' . C_USR_TBL . '.status, ' . C_USR_TBL . '.ip'
+					. ' FROM ' . C_USR_TBL . ', ' . C_REG_TBL
+					. ' WHERE ' . C_USR_TBL . '.username = \'' . $U . '\''
+					.   ' AND ' . C_REG_TBL . '.username = \'' . $U . '\''
+					.   ' AND ' . C_REG_TBL . '.password = \'' . $PWD_Hash . '\''
+					. ' LIMIT 1');
+}
+else // C_REQUIRE_REGISTER == 0 && $PWD_Hash is empty
+{
+	$DbLink->query('SELECT username FROM ' . C_REG_TBL . ' WHERE username = \'' . $U . '\' LIMIT 1');
+	if ($DbLink->num_rows() == 0)
+	{
+		$DbLink->query('SELECT room, status, ip FROM ' . C_USR_TBL . ' WHERE username = \'' . $U . '\' LIMIT 1');
+	}
+	else
+	{
+		$DbLink->clean_results();
+		$DbLink->close();
+		exit(); // hack attack
+	}
+}
+// End of SeazoN Fix
+if($DbLink->num_rows() != 0)
+{
+	// There is a row for the user in the users table
+	list($room,$status,$knownIp) = $DbLink->next_record();
+	$DbLink->clean_results();
+	$kicked = 0;
+	if ($room != stripslashes($R))	// Same nick in another room
+	{
+		$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ($T, '$R', 'SYS exit', '', ".time().", '', 'sprintf(L_EXIT_ROM, \"".special_char($U,$Latin1,1)."\")')");
+		$kicked = 3;
+	}
+	elseif ($status == "k")			// Kicked by a moderator or the admin.
+	{
+		$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ($T, '$R', 'SYS exit', '', ".time().", '', 'sprintf(L_KICKED, \"".special_char($U,$Latin1,1)."\")')");
+		$kicked = 1;
+	}
+	elseif ($status == "d")			// The admin just deleted the room
+	{
+		$kicked = 2;
+	}
+	elseif ($status == "b")			// Banished by a moderator or the admin.
+	{
+		$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ($T, '$R', 'SYS exit', '', ".time().", '', 'sprintf(L_BANISHED, \"".special_char($U,$Latin1,1)."\")')");
+		$kicked = 4;
+	}
+	else if ($knownIp != $IP)
+	{
+		$kicked = 5;
+	}
+	if (!$kicked)
+	{
+		// Updates the time to ensure the user won't be cleaned from the users table
+		$DbLink->query("UPDATE ".C_USR_TBL." SET u_time = ".time()." WHERE room = '$R' AND username = '$U'");
+	}
+}
+else
+{
+	// User hasn't been found in the users table -> add a row if he is registered
+	$DbLink->clean_results();
+	$DbLink->query("SELECT latin1,perms,rooms FROM ".C_REG_TBL." WHERE username='$U' LIMIT 1");
+	$reguser = (list($fake,$perms, $rooms) = $DbLink->next_record());
+	$DbLink->clean_results();
+	// Kick unreg users
+	if (!$reguser)
+	{
+		$kicked = 6;
+	}
+	// Add reg users
+	else
+	{
+		// Get user status
+		switch ($perms)
+		{
+			case 'admin':
+				$status = "a";
+				break;
+			case 'moderator':
+				$roomsTab = explode(",",$rooms);
+				for (reset($roomsTab); $room_name=current($roomsTab); next($roomsTab))
+				{
+					if (strcasecmp(stripslashes($R), $room_name) == 0) 
+					{
+						$status = "m";
+						break;
+					};
+				};
+			default:
+				$status = "r";
+		};
+		$DbLink->query("INSERT INTO ".C_USR_TBL." VALUES ('$R', '$U', '$Latin1', ".time().", '$status', '$IP')");
+	}
+}
+
+if (!empty($kicked))
+{
+	// Kick the user from the current room
+	$kickedUrl = "$From?L=$L&U=" . urlencode(stripslashes($U));
+	if ($kicked < 5) $kickedUrl .= "&E=$R&$KICKED=$kicked";
+	?>
+	<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript">
+	<!--
+	window.parent.window.location = '<?php echo($kickedUrl); ?>';
+	// -->
+	</SCRIPT>
+	<?php
+	$DbLink->close();
+	exit;
+}
+
+
+// ** Check for updates in users list **
+if ($First) $LastCheck = 0;
+if ($CleanUsrTbl)
+{
+	$Users_Refresh = "1";
+}
+else
+{
+	$QueryRoom = " AND (type = 1".($T == "0" ? " OR (type = 0 AND room = '$R')" : "").") ";
+	$DbLink->query("SELECT DISTINCT m_time FROM ".C_MSG_TBL." WHERE m_time > '$LastCheck' AND username IN ('SYS enter','SYS exit','SYS promote','SYS delreg')".$QueryRoom."ORDER BY m_time DESC LIMIT 1");
+	$Users_Refresh = ($DbLink->num_rows() > 0);
+	if ($Users_Refresh) list($LastCheck) = $DbLink->next_record();
+	$DbLink->clean_results();
+};
+
+		 
+// ** Check for updates in messages list and get new messages **
+if ($First) $LastLoad = 0;
+
+// Define the SQL query (depends on values for ignored users list and on whether to display
+// notification messages or not
+$CondForQuery		 = "";
+$IgnoreList			 = "";
+if (isset($Ign))
+	$IgnoreList		 = "'".str_replace(",","','",addslashes(urldecode($Ign)))."'";
+if ($NT == "0")
+	$IgnoreList		.= ($IgnoreList != "" ? ",":"")."'SYS enter','SYS exit'";
+if ($IgnoreList != "")
+	$CondForQuery	 = "username NOT IN (${IgnoreList}) AND ";
+$CondForQuery		.= "(address = ' *' OR (address = '$U' AND (room = '$R' OR username = 'SYS inviteTo')) OR (room = '$R' AND (address = '' OR username = '$U')))";
+$LimitForQuery		 = ($First ? " LIMIT $N" : "");
+
+$DbLink->query("SELECT m_time, username, latin1, address, message FROM ".C_MSG_TBL." WHERE m_time > '$LastLoad' AND ".$CondForQuery." ORDER BY m_time DESC".$LimitForQuery);
+
+// Format and store new messages
+$Messages = Array();
+if($DbLink->num_rows() > 0)
+{
+	$i = "1";
+	$today = date('j', time() +  C_TMZ_OFFSET*60*60);
+	while(list($Time, $User, $Latin1, $Dest, $Message) = $DbLink->next_record())
+	{
+		// Skip the oldest message if the day seperator has been added
+		if (isset($day_separator) && $First && $i == $N) continue;
+
+		// Separator between messages sent before today and other ones
+		if (!isset($day_separator) && date("j", $Time +  C_TMZ_OFFSET*60*60) != $today)
+		{
+			$Messages[] = "<P CLASS=\"msg\"><SPAN CLASS=\"notify\">--------- ".L_TODAY_DWN." ---------<\/SPAN><\/P>";
+			$day_separator = "1";
+		};
+
+		$NewMsg = "<P CLASS=\"msg\">";
+		if ($ST == 1) $NewMsg .= "<SPAN CLASS=\"time\">".date("H:i:s", $Time +  C_TMZ_OFFSET*60*60)."<\/SPAN> ";
+
+		// "Standard" messages
+		if (substr($User,0,4) != "SYS ")
+		{
+			$User = "<A HREF=\"#\" onClick=\"window.parent.userClick('".special_char($User,$Latin1,1)."',true); return false\" CLASS=\"sender\">".special_char($User,$Latin1,0)."<\/A>";
+			if ($Dest != "") $Dest = "]<BDO dir=\"${textDirection}\"><\/BDO>>[".htmlspecialchars(stripslashes($Dest));
+			$Message = str_replace("</FONT>","<\\/FONT>",$Message);	// slashes the closing HTML font tag
+			$NewMsg .= "<B>[${User}${Dest}]<BDO dir=\"${textDirection}\"><\/BDO><\/B> $Message<\/P>";
+		}
+		// "System" messages
+		else
+		{
+			if ($Dest == " *")
+			{
+				$Message = "[".L_ANNOUNCE."]<BDO dir=\"${textDirection}\"><\/BDO> ".$Message;
+			}
+			else
+			{
+				if ($Dest != "") $NewMsg .= "<B>>[".htmlspecialchars(stripslashes($Dest))."]<BDO dir=\"${textDirection}\"><\/BDO><\/B> ";
+				$Message = str_replace("$","\\$",$Message);	// avoid '$' chars in nick to be parsed below
+				eval("\$Message = $Message;");
+			};
+			$NewMsg .= "<SPAN CLASS=\"notify\">".$Message."<\/SPAN><\/P>";
+		};
+		$Messages[] = $NewMsg;
+		if ($Time > $LastLoad) $LastLoad = $Time;
+		$i++;
+	};
+}
+else
+{
+	if ($First) $Messages[] = "<SPAN CLASS=\"notify\">".L_NO_MSG."<\/SPAN>";
+};
+
+$DbLink->clean_results();
+$DbLink->close();
+
+
+// ** Define the URL query part of the http refresh header **
+if ($First)
+{
+	$Refresh = str_replace("First=1","First=0", (isset($QUERY_STRING)) ? $QUERY_STRING : getenv("QUERY_STRING"))."&LastLoad=${LastLoad}&LastCheck=${LastCheck}";
+}
+else
+{
+	$Refresh = ereg_replace("&LastLoad=([0-9]+)&LastCheck=([0-9]+)","&LastLoad=".$LastLoad."&LastCheck=".$LastCheck, (isset($QUERY_STRING)) ? $QUERY_STRING : getenv("QUERY_STRING"));
+};
+
+
+// Special cache instructions for IE5+
+$CachePlus	= "";
+if (ereg("MSIE [56789]", (isset($HTTP_USER_AGENT)) ? $HTTP_USER_AGENT : getenv("HTTP_USER_AGENT"))) $CachePlus = ", pre-check=0, post-check=0, max-age=0";
+$now		= gmdate('D, d M Y H:i:s') . ' GMT';
+
+header("Expires: $now");
+header("Last-Modified: $now");
+header("Cache-Control: no-cache, must-revalidate".$CachePlus);
+header("Pragma: no-cache");
+?>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML dir="<?php echo($textDirection); ?>">
+<HEAD>
+<TITLE>Loader hidden frame</TITLE>
+<?php
+if ($D > 0)
+	echo('<meta HTTP-EQUIV="Refresh" CONTENT="' . $D . '; URL=loader.php?' . $Refresh . '">' . "\n");
+?>
+<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript">
+<!--
+// Update the time values for last check and last loaded message in the main page
+window.parent.time4LastLoadedMsg = "<?php echo($LastLoad); ?>";
+window.parent.time4LastCheckedUser = "<?php echo($LastCheck); ?>";
+
+<?php
+// ** Refresh users frame if necessary **
+if ($First || $Users_Refresh)
+{
+	?>
+	window.parent.frames['users'].window.location.replace("usersH.php?<?php echo( (isset($QUERY_STRING)) ? $QUERY_STRING : getenv("QUERY_STRING")); ?>");
+	<?php
+};
+
+
+// ** Refresh messages frame **
+
+// Set the stylesheet for the messages frame at first load
+if ($First)
+{
+	// For translations with an explicit charset (not the 'x-user-defined' one)
+	if (!isset($FontName)) $FontName = "";
+	?>
+	with (window.parent.frames['messages'].window.document)
+	{
+		open("text/html", "replace");
+		write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
+		write("<HTML dir=\"<?php echo($textDirection); ?>\">\n<HEAD>\n");
+		write("<TITLE>Dynamic messages frame<\/TITLE>\n");
+ 		write("<LINK REL=\"stylesheet\" HREF=\"config/style.css.php?<?php echo("Charset=${Charset}&medium=${FontSize}&FontName=".urlencode($FontName)); ?>\" TYPE=\"text/css\">\n");
+		write("<\/HEAD>\n\n");
+		write("<BODY CLASS=\"mainframe\">\n");
+	};
+	<?php
+};
+
+// Send new message(s) if there is at least one, else an empty string to ensure the message
+// frame isn't closed because of too long inactive delay
+$message_nb = count($Messages);
+for ($i = 0; $i < $message_nb; $i++)
+{
+	// doubles backslashes except the ones for closing HTML tags
+	$ToSend = ereg_replace("([^<]+)[\]","\\1\\\\",$Messages[$message_nb-1-$i]);
+	// slashes the quotes that should be displayed
+	$ToSend = str_replace("\"","\\\"",$ToSend);
+	?>
+	window.parent.frames['messages'].window.document.write("<?php echo($ToSend); ?>\n");
+	<?php
+};
+if ($message_nb < 1)
+{
+	?>
+	window.parent.frames['messages'].window.document.write("");
+	<?php
+}
+else
+{
+	?>
+	// Scrolls to the bottom of the message frame
+	with (window.parent.frames['messages'].window)
+	{
+		if (typeof(scrollBy) != 'undefined')
+		{
+			scrollBy(0, 65000);
+			scrollBy(0, 65000);
+		}
+		else if (typeof(scroll) != 'undefined')
+		{
+			scroll(0, 65000);
+			scroll(0, 65000);
+		};
+	}
+	<?php
+};
+?>
+// -->
+</SCRIPT>
+</HEAD>
+<BODY onUnload="if (typeof(window.parent.frames['exit']) != 'undefined' && typeof(window.parent.leaveChat) != 'undefined' && !window.parent.leaveChat) window.parent.Connecting(window.parent.connect + 1);">
+<SCRIPT TYPE="text/javascript" LANGUAGE="javascript1.1">
+<!--
+if (typeof(window.parent.frames['exit']) != 'undefined'
+	&& typeof(window.parent.ConnectDone) != 'undefined')
+	window.parent.ConnectDone();
+// -->
+</SCRIPT>
+</BODY>
+</HTML>
\ No newline at end of file
diff -ruN 0.14.5/chat/loader.php3 0.15.0/chat/loader.php3
--- 0.14.5/chat/loader.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/loader.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,327 +0,0 @@
-<?php
-// Get the names and values for vars sent to this script
-if (isset($HTTP_GET_VARS))
-{
-	while(list($name,$value) = each($HTTP_GET_VARS))
-	{
-		$$name = $value;
-	};
-};
-
-// Fix a security hole
-if (isset($L) && !is_dir('./localization/'.$L)) exit();
-	
-require("./config/config.lib.php3");
-require("./localization/".$L."/localized.chat.php3");
-require("./lib/database/".C_DB_TYPE.".lib.php3");
-require("./lib/clean.lib.php3");
-
-header("Content-Type: text/html; charset=${Charset}");
-
-// avoid server configuration for magic quotes
-set_magic_quotes_runtime(0);
-
-// Translate to html special characters, and entities if message was sent with a latin 1 charset
-$Latin1 = ($Charset == "iso-8859-1");
-function special_char($str,$lang,$slash_on)
-{
-	$str = ($lang ? htmlentities(stripslashes($str)) : htmlspecialchars(stripslashes($str)));
-	return ($slash_on ? addslashes($str) : $str);
-};
-
-// Text direction
-$textDirection = ($Charset == "windows-1256") ? "RTL" : "LTR";
-
-$DbLink = new DB;
-
-
-// ** Updates user info in connected users tables **;
-$DbLink->query("SELECT status,room FROM ".C_USR_TBL." WHERE username = '$U' LIMIT 1");
-if($DbLink->num_rows() != 0)
-{
-	// There is a row for the user in the users table
-	list($status,$room) = $DbLink->next_record();
-	$DbLink->clean_results();
-	$kicked = 0;
-	if ($room != stripslashes($R))	// Same nick in another room
-	{
-		$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ($T, '$R', 'SYS exit', '', ".time().", '', 'sprintf(L_EXIT_ROM, \"".special_char($U,$Latin1,1)."\")')");
-		$kicked = 3;
-	}
-	elseif ($status == "k")			// Kicked by a moderator or the admin.
-	{
-		$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ($T, '$R', 'SYS exit', '', ".time().", '', 'sprintf(L_KICKED, \"".special_char($U,$Latin1,1)."\")')");
-		$kicked = 1;
-	}
-	elseif ($status == "d")			// The admin just deleted the room
-	{
-		$kicked = 2;
-	}
-	elseif ($status == "b")			// Banished by a moderator or the admin.
-	{
-		$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ($T, '$R', 'SYS exit', '', ".time().", '', 'sprintf(L_BANISHED, \"".special_char($U,$Latin1,1)."\")')");
-		$kicked = 4;
-	};
-	if ($kicked > 0)
-	{
-		// Kick the user from the current room
-		?>
-		<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript">
-		<!--
-		window.parent.window.location = '<?php echo("$From?L=$L&U=".urlencode(stripslashes($U))."&E=$R&KICKED=${kicked}"); ?>';
-		// -->
-		</SCRIPT>
-		<?php
-		$DbLink->close();
-		exit;
-	}
-	// Updates the time to ensure the user won't be cleaned from the users table
-	$DbLink->query("UPDATE ".C_USR_TBL." SET u_time = ".time()." WHERE room = '$R' AND username = '$U'");
-}
-else
-{
-	// User hasn't been found in the users table -> add a row
-	$DbLink->clean_results();
-	$DbLink->query("SELECT perms,rooms FROM ".C_REG_TBL." WHERE username='$U' LIMIT 1");
-	$reguser = ($DbLink->num_rows() != 0);
-	if ($reguser) list($perms, $rooms) = $DbLink->next_record();
-	$DbLink->clean_results();
-	// Get user status
-	$status = "u";
-	if ($reguser)
-	{
-		switch ($perms)
-		{
-			case 'admin':
-				$status = "a";
-				break;
-			case 'moderator':
-				$roomsTab = explode(",",$rooms);
-				for (reset($roomsTab); $room_name=current($roomsTab); next($roomsTab))
-				{
-					if (strcasecmp(stripslashes($R), $room_name) == 0) 
-					{
-						$status = "m";
-						break;
-					};
-				};
-			default:
-				$status = "r";
-		};
-	};
-	// Get IP address
-	include("./lib/get_IP.lib.php3");		// Set the $IP var
-	$DbLink->query("INSERT INTO ".C_USR_TBL." VALUES ('$R', '$U', '$Latin1', ".time().", '$status', '$IP')");
-};
-
-
-// ** Check for updates in users list **
-if ($First) $LastCheck = 0;
-if ($CleanUsrTbl)
-{
-	$Users_Refresh = "1";
-}
-else
-{
-	$QueryRoom = " AND (type = 1".($T == "0" ? " OR (type = 0 AND room = '$R')" : "").") ";
-	$DbLink->query("SELECT DISTINCT m_time FROM ".C_MSG_TBL." WHERE m_time > '$LastCheck' AND username IN ('SYS enter','SYS exit','SYS promote','SYS delreg')".$QueryRoom."ORDER BY m_time DESC LIMIT 1");
-	$Users_Refresh = ($DbLink->num_rows() > 0);
-	if ($Users_Refresh) list($LastCheck) = $DbLink->next_record();
-	$DbLink->clean_results();
-};
-
-		 
-// ** Check for updates in messages list and get new messages **
-if ($First) $LastLoad = 0;
-
-// Define the SQL query (depends on values for ignored users list and on whether to display
-// notification messages or not
-$CondForQuery		 = "";
-$IgnoreList			 = "";
-if (isset($Ign))
-	$IgnoreList		 = "'".str_replace(",","','",addslashes(urldecode($Ign)))."'";
-if ($NT == "0")
-	$IgnoreList		.= ($IgnoreList != "" ? ",":"")."'SYS enter','SYS exit'";
-if ($IgnoreList != "")
-	$CondForQuery	 = "username NOT IN (${IgnoreList}) AND ";
-$CondForQuery		.= "(address = ' *' OR (address = '$U' AND (room = '$R' OR username = 'SYS inviteTo')) OR (room = '$R' AND (address = '' OR username = '$U')))";
-$LimitForQuery		 = ($First ? " LIMIT $N" : "");
-
-$DbLink->query("SELECT m_time, username, latin1, address, message FROM ".C_MSG_TBL." WHERE m_time > '$LastLoad' AND ".$CondForQuery." ORDER BY m_time DESC".$LimitForQuery);
-
-// Format and store new messages
-$Messages = Array();
-if($DbLink->num_rows() > 0)
-{
-	$i = "1";
-	$today = date('j', time() +  C_TMZ_OFFSET*60*60);
-	while(list($Time, $User, $Latin1, $Dest, $Message) = $DbLink->next_record())
-	{
-		// Skip the oldest message if the day seperator has been added
-		if (isset($day_separator) && $First && $i == $N) continue;
-
-		// Separator between messages sent before today and other ones
-		if (!isset($day_separator) && date("j", $Time +  C_TMZ_OFFSET*60*60) != $today)
-		{
-			$Messages[] = "<P CLASS=\"msg\"><SPAN CLASS=\"notify\">--------- ".L_TODAY_DWN." ---------<\/SPAN><\/P>";
-			$day_separator = "1";
-		};
-
-		$NewMsg = "<P CLASS=\"msg\">";
-		if ($ST == 1) $NewMsg .= "<SPAN CLASS=\"time\">".date("H:i:s", $Time +  C_TMZ_OFFSET*60*60)."<\/SPAN> ";
-
-		// "Standard" messages
-		if (substr($User,0,4) != "SYS ")
-		{
-			$User = "<A HREF=\"#\" onClick=\"window.parent.userClick('".special_char($User,$Latin1,1)."',true); return false\" CLASS=\"sender\">".special_char($User,$Latin1,0)."<\/A>";
-			if ($Dest != "") $Dest = "]<BDO dir=\"${textDirection}\"><\/BDO>>[".htmlspecialchars(stripslashes($Dest));
-			$Message = str_replace("</FONT>","<\\/FONT>",$Message);	// slashes the closing HTML font tag
-			$NewMsg .= "<B>[${User}${Dest}]<BDO dir=\"${textDirection}\"><\/BDO><\/B> $Message<\/P>";
-		}
-		// "System" messages
-		else
-		{
-			if ($Dest == " *")
-			{
-				$Message = "[".L_ANNOUNCE."]<BDO dir=\"${textDirection}\"><\/BDO> ".$Message;
-			}
-			else
-			{
-				if ($Dest != "") $NewMsg .= "<B>>[".htmlspecialchars(stripslashes($Dest))."]<BDO dir=\"${textDirection}\"><\/BDO><\/B> ";
-				$Message = str_replace("$","\\$",$Message);	// avoid '$' chars in nick to be parsed below
-				eval("\$Message = $Message;");
-			};
-			$NewMsg .= "<SPAN CLASS=\"notify\">".$Message."<\/SPAN><\/P>";
-		};
-		$Messages[] = $NewMsg;
-		if ($Time > $LastLoad) $LastLoad = $Time;
-		$i++;
-	};
-}
-else
-{
-	if ($First) $Messages[] = "<SPAN CLASS=\"notify\">".L_NO_MSG."<\/SPAN>";
-};
-
-$DbLink->clean_results();
-$DbLink->close();
-
-
-// ** Define the URL query part of the http refresh header **
-if ($First)
-{
-	$Refresh = str_replace("First=1","First=0", (isset($QUERY_STRING)) ? $QUERY_STRING : getenv("QUERY_STRING"))."&LastLoad=${LastLoad}&LastCheck=${LastCheck}";
-}
-else
-{
-	$Refresh = ereg_replace("&LastLoad=([0-9]+)&LastCheck=([0-9]+)","&LastLoad=".$LastLoad."&LastCheck=".$LastCheck, (isset($QUERY_STRING)) ? $QUERY_STRING : getenv("QUERY_STRING"));
-};
-
-
-// Special cache instructions for IE5+
-$CachePlus	= "";
-if (ereg("MSIE [56789]", (isset($HTTP_USER_AGENT)) ? $HTTP_USER_AGENT : getenv("HTTP_USER_AGENT"))) $CachePlus = ", pre-check=0, post-check=0, max-age=0";
-$now		= gmdate('D, d M Y H:i:s') . ' GMT';
-
-header("Expires: $now");
-header("Last-Modified: $now");
-header("Cache-Control: no-cache, must-revalidate".$CachePlus);
-header("Pragma: no-cache");
-?>
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<HTML dir="<?php echo($textDirection); ?>">
-<HEAD>
-<TITLE>Loader hidden frame</TITLE>
-<?php
-if ($D > 0)
-	echo('<meta HTTP-EQUIV="Refresh" CONTENT="' . $D . '; URL=loader.php3?' . $Refresh . '">' . "\n");
-?>
-<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript">
-<!--
-// Update the time values for last check and last loaded message in the main page
-window.parent.time4LastLoadedMsg = "<?php echo($LastLoad); ?>";
-window.parent.time4LastCheckedUser = "<?php echo($LastCheck); ?>";
-
-<?php
-// ** Refresh users frame if necessary **
-if ($First || $Users_Refresh)
-{
-	?>
-	window.parent.frames['users'].window.location.replace("usersH.php3?<?php echo( (isset($QUERY_STRING)) ? $QUERY_STRING : getenv("QUERY_STRING")); ?>");
-	<?php
-};
-
-
-// ** Refresh messages frame **
-
-// Set the stylesheet for the messages frame at first load
-if ($First)
-{
-	// For translations with an explicit charset (not the 'x-user-defined' one)
-	if (!isset($FontName)) $FontName = "";
-	?>
-	with (window.parent.frames['messages'].window.document)
-	{
-		open("text/html", "replace");
-		write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
-		write("<HTML dir=\"<?php echo($textDirection); ?>\">\n<HEAD>\n");
-		write("<TITLE>Dynamic messages frame<\/TITLE>\n");
- 		write("<LINK REL=\"stylesheet\" HREF=\"config/style.css.php3?<?php echo("Charset=${Charset}&medium=${FontSize}&FontName=${FontName}"); ?>\" TYPE=\"text/css\">\n");
-		write("<\/HEAD>\n\n");
-		write("<BODY CLASS=\"mainframe\">\n");
-	};
-	<?php
-};
-
-// Send new message(s) if there is at least one, else an empty string to ensure the message
-// frame isn't closed because of too long inactive delay
-$message_nb = count($Messages);
-for ($i = 0; $i < $message_nb; $i++)
-{
-	// doubles backslashes except the ones for closing HTML tags
-	$ToSend = ereg_replace("([^<]+)[\]","\\1\\\\",$Messages[$message_nb-1-$i]);
-	// slashes the quotes that should be displayed
-	$ToSend = str_replace("\"","\\\"",$ToSend);
-	?>
-	window.parent.frames['messages'].window.document.write("<?php echo($ToSend); ?>\n");
-	<?php
-};
-if ($message_nb < 1)
-{
-	?>
-	window.parent.frames['messages'].window.document.write("");
-	<?php
-}
-else
-{
-	?>
-	// Scrolls to the bottom of the message frame
-	with (window.parent.frames['messages'].window)
-	{
-		if (typeof(scrollBy) != 'undefined')
-		{
-			scrollBy(0, 65000);
-			scrollBy(0, 65000);
-		}
-		else if (typeof(scroll) != 'undefined')
-		{
-			scroll(0, 65000);
-			scroll(0, 65000);
-		};
-	}
-	<?php
-};
-?>
-// -->
-</SCRIPT>
-</HEAD>
-<BODY onUnload="if (typeof(window.parent.frames['exit']) != 'undefined' && typeof(window.parent.leaveChat) != 'undefined' && !window.parent.leaveChat) window.parent.Connecting(window.parent.connect + 1);">
-<SCRIPT TYPE="text/javascript" LANGUAGE="javascript1.1">
-<!--
-if (typeof(window.parent.frames['exit']) != 'undefined'
-	&& typeof(window.parent.ConnectDone) != 'undefined')
-	window.parent.ConnectDone();
-// -->
-</SCRIPT>
-</BODY>
-</HTML>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/admin.lib.php 0.15.0/chat/localization/admin.lib.php
--- 0.14.5/chat/localization/admin.lib.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/admin.lib.php	2004-04-01 03:06:40.000000000 -0600
@@ -0,0 +1,65 @@
+<?php
+// Available languages for admin
+$AvailableAdmin = array();
+$languageDirectories = dir('./localization/');
+while($name = $languageDirectories->read())
+{
+	if(is_dir('./localization/'.$name)
+		&& file_exists('./localization/'.$name.'/regex.txt')
+		&& file_exists('./localization/'.$name.'/localized.admin.php'))
+	{
+		list($key) = file('./localization/'.$name.'/regex.txt');
+		$AvailableAdmin[$key] = $name;
+	};
+};
+$languageDirectories->close();
+if (!function_exists("krsort")) include("./localization/sort_languages.php");
+krsort($AvailableAdmin);
+
+function DetectAdmin($Str,$From)
+{
+	global $AvailableAdmin;
+	global $L;
+
+	$NotFound = true;
+	reset($AvailableAdmin);
+	while($NotFound && list($key, $name) = each($AvailableAdmin))
+	{
+		if (($From == 1 && eregi("^(".trim($key).")$",$Str)) || ($From == 2 && eregi("(\(|\[|;[[:space:]])(".trim($key).")(;|\]|\))",$Str)))
+		{
+			$L = $AvailableAdmin[$key];
+			$NotFound = false;
+		};
+	};
+};
+
+// finds the appropriate language file
+if (isset($HTTP_COOKIE_VARS["CookieLang"]))
+	$CookieLang = $HTTP_COOKIE_VARS["CookieLang"];
+if (!isset($HTTP_ACCEPT_LANGUAGE))
+	$HTTP_ACCEPT_LANGUAGE = getenv("HTTP_ACCEPT_LANGUAGE");
+if (!isset($HTTP_USER_AGENT))
+	$HTTP_USER_AGENT = getenv("HTTP_USER_AGENT");
+
+if (isset($CookieLang)
+	&& is_dir('./localization/'.$CookieLang)
+	&& file_exists("./localization/$CookieLang/localized.admin.php"))
+{
+	$L = $CookieLang;
+}
+elseif ($HTTP_ACCEPT_LANGUAGE != "")
+{	
+	$Accepted = explode(",", $HTTP_ACCEPT_LANGUAGE);
+	DetectAdmin($Accepted[0],1);
+}
+elseif ($HTTP_USER_AGENT != "")
+{	
+	DetectAdmin($HTTP_USER_AGENT,2);
+};
+
+//if no language detected set the english one
+if (!isset($L)) $L = "english";
+	
+// Clear the table
+unset($AvailableAdmin);
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/admin.lib.php3 0.15.0/chat/localization/admin.lib.php3
--- 0.14.5/chat/localization/admin.lib.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/localization/admin.lib.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,65 +0,0 @@
-<?php
-// Available languages for admin
-$AvailableAdmin = array();
-$languageDirectories = dir('./localization/');
-while($name = $languageDirectories->read())
-{
-	if(is_dir('./localization/'.$name)
-		&& file_exists('./localization/'.$name.'/regex.txt')
-		&& file_exists('./localization/'.$name.'/localized.admin.php3'))
-	{
-		list($key) = file('./localization/'.$name.'/regex.txt');
-		$AvailableAdmin[$key] = $name;
-	};
-};
-$languageDirectories->close();
-if (!function_exists("krsort")) include("./localization/sort_languages.php3");
-krsort($AvailableAdmin);
-
-function DetectAdmin($Str,$From)
-{
-	global $AvailableAdmin;
-	global $L;
-
-	$NotFound = true;
-	reset($AvailableAdmin);
-	while($NotFound && list($key, $name) = each($AvailableAdmin))
-	{
-		if (($From == 1 && eregi("^(".$key.")$",$Str)) || ($From == 2 && eregi("(\(|\[|;[[:space:]])(".$key.")(;|\]|\))",$Str)))
-		{
-			$L = $AvailableAdmin[$key];
-			$NotFound = false;
-		};
-	};
-};
-
-// finds the appropriate language file
-if (isset($HTTP_COOKIE_VARS["CookieLang"]))
-	$CookieLang = $HTTP_COOKIE_VARS["CookieLang"];
-if (!isset($HTTP_ACCEPT_LANGUAGE))
-	$HTTP_ACCEPT_LANGUAGE = getenv("HTTP_ACCEPT_LANGUAGE");
-if (!isset($HTTP_USER_AGENT))
-	$HTTP_USER_AGENT = getenv("HTTP_USER_AGENT");
-
-if (isset($CookieLang)
-	&& is_dir('./localization/'.$CookieLang)
-	&& file_exists("./localization/$CookieLang/localized.admin.php3"))
-{
-	$L = $CookieLang;
-}
-elseif ($HTTP_ACCEPT_LANGUAGE != "")
-{	
-	$Accepted = explode(",", $HTTP_ACCEPT_LANGUAGE);
-	DetectAdmin($Accepted[0],1);
-}
-elseif ($HTTP_USER_AGENT != "")
-{	
-	DetectAdmin($HTTP_USER_AGENT,2);
-};
-
-//if no language detected set the english one
-if (!isset($L)) $L = "english";
-	
-// Clear the table
-unset($AvailableAdmin);
-?>
\ No newline at end of file
Binary files 0.14.5/chat/localization/arabic/flag.gif and 0.15.0/chat/localization/arabic/flag.gif differ
diff -ruN 0.14.5/chat/localization/arabic/localized.admin.php 0.15.0/chat/localization/arabic/localized.admin.php
--- 0.14.5/chat/localization/arabic/localized.admin.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/arabic/localized.admin.php	2004-04-01 03:06:40.000000000 -0600
@@ -0,0 +1,61 @@
+<?php
+// File : arabic.admin.php
+// Translation by Khalid Aljabri <webksa@yahoo.com>
+
+// extra header for charset
+$Charset = "windows-1256";
+
+// medium font size in pt.
+$FontSize = 12;
+
+// Top frame
+define("A_MENU_0", "  %s");
+define("A_MENU_1", " ");
+define("A_MENU_2", " ");
+define("A_MENU_3", "  ");
+define("A_MENU_4", " ");
+
+// Frame for registered users
+define("A_SHEET1_1", "  ");
+define("A_SHEET1_2", " ");
+define("A_SHEET1_3", "");
+define("A_SHEET1_4", "   ");
+define("A_SHEET1_5", "     (,) ");
+define("A_SHEET1_6", "  ");
+define("A_SHEET1_7", " ");
+define("A_SHEET1_8", "     ");
+define("A_SHEET1_9", "  ");
+define("A_SHEET1_10", "     ");
+define("A_SHEET1_11", " ");
+define("A_USER", "");
+define("A_MODER", "");
+define("A_PAGE_CNT", " %s  %s");
+
+// Frame for banished users
+define("A_SHEET2_1", "      ");
+define("A_SHEET2_2", " ");
+define("A_SHEET2_3", "  ");
+define("A_SHEET2_4", "");
+define("A_SHEET2_5", "  ");
+define("A_SHEET2_6", "       (,)        '<B>&nbsp;*&nbsp;</B>'  `T<BR>  ");
+define("A_SHEET2_7", "  ");
+define("A_SHEET2_8", "   ");
+
+// Frame for cleaning rooms
+define("A_SHEET3_1", "   ");
+define("A_SHEET3_2", " \"\"      <BR>  ");
+define("A_SHEET3_3", "  ");
+define("A_SHEET3_4", "   ..  ");
+
+// Frame for sending mails
+define("A_SHEET4_0", "        <BR>'chat/admin/mail4admin.php' .");
+define("A_SHEET4_1", " ");
+define("A_SHEET4_2", ":");
+define("A_SHEET4_3", " ");
+define("A_SHEET4_4", ":");
+define("A_SHEET4_5", ":");
+define("A_SHEET4_6", "");
+define("A_SHEET4_7", "    ");
+define("A_SHEET4_8", "    ");
+define("A_SHEET4_9", "        ");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/arabic/localized.chat.php 0.15.0/chat/localization/arabic/localized.chat.php
--- 0.14.5/chat/localization/arabic/localized.chat.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/arabic/localized.chat.php	2004-04-01 03:06:41.000000000 -0600
@@ -0,0 +1,220 @@
+<?php
+// File : arabic.lang.php
+// Translation by Khalid Aljabri <webksa@yahoo.com>
+
+// extra header for charset
+$Charset = "windows-1256";
+
+// medium font size in pt.
+$FontSize = 12;
+
+// welcome page
+define("L_TUTORIAL", "");
+
+define("L_WEL_1", "    ");
+define("L_WEL_2", " ...        ");
+define("L_WEL_3", "");
+
+define("L_CUR_1", "   .");
+define("L_CUR_2", "  ");
+define("L_CUR_3", "   ");
+define("L_CUR_4", "   ");
+
+define("L_SET_1", " ");
+define("L_SET_2", " ");
+define("L_SET_3", "    ");
+define("L_SET_4", " ");
+define("L_SET_5", "   ");
+define("L_SET_6", "  ");
+define("L_SET_7", " ");
+define("L_SET_8", "   ");
+define("L_SET_9", "   ");
+define("L_SET_10", "");
+define("L_SET_11", "");
+define("L_SET_12", " ");
+define("L_SET_13", "");
+define("L_SET_14", "");
+
+define("L_SRC", "is freely available on");
+
+define("L_SECS", "");
+define("L_MIN", "");
+define("L_MINS", "");
+
+// registration stuff:
+define("L_REG_1", " ");
+define("L_REG_1r", "(    )");
+define("L_REG_2", "  ");
+define("L_REG_3", "");
+define("L_REG_4", "  ");
+define("L_REG_5", "  ");
+define("L_REG_6", " ");
+define("L_REG_7", " ");
+define("L_REG_8", " ");
+define("L_REG_9", "   ");
+define("L_REG_10", "");
+define("L_REG_11", "");
+define("L_REG_12", "  ");
+define("L_REG_13", "  ");
+define("L_REG_14", " ");
+define("L_REG_15", "");
+define("L_REG_16", "");
+define("L_REG_17", "   .");
+define("L_REG_18", "      .");
+define("L_REG_19", "      ..");
+define("L_REG_20", "");
+define("L_REG_21", "   .");
+define("L_REG_22", "");
+define("L_REG_25", "");
+define("L_REG_30", "");
+define("L_REG_31", "");
+define("L_REG_32", " ");
+define("L_REG_33", "   ");
+define("L_REG_34", "  ");
+define("L_REG_35", " ");
+define("L_REG_36", " ");
+define("L_REG_37", "    <span class=\"error\">*</span>  ");
+define("L_REG_39", "     .");
+define("L_REG_45", "");
+define("L_REG_46", "");
+define("L_REG_47", "");
+
+// e-mail validation stuff
+define("L_EMAIL_VAL_1", "     ");
+define("L_EMAIL_VAL_2", "    ");
+define("L_EMAIL_VAL_Err", "...  ...  <a href=\"mailto:%s\">%s</a>.");
+define("L_EMAIL_VAL_Done", "     <BR> ");
+
+// admin stuff
+define("L_ADM_1", "%s      ");
+define("L_ADM_2", "     ");
+
+// error messages
+define("L_ERR_USR_1", " ..      ...    ");
+define("L_ERR_USR_2", " ..  ");
+define("L_ERR_USR_3", "   .....  ..");
+define("L_ERR_USR_4", "  .. ");
+define("L_ERR_USR_5", "  .. ");
+define("L_ERR_USR_6", "  .. ");
+define("L_ERR_USR_7", "  .. .");
+define("L_ERR_USR_8", "      ");
+define("L_ERR_USR_9", ".... ");
+define("L_ERR_USR_10", "...       ");
+define("L_ERR_USR_11", "    ..     .");
+define("L_ERR_USR_12", " ..  ..   ");
+define("L_ERR_USR_13", "   ..   ");
+define("L_ERR_USR_14", "...   ..    ");
+define("L_ERR_USR_15", "   .");
+define("L_ERR_USR_16", "      (\\).  ");
+define("L_ERR_USR_17", "..   .. .");
+define("L_ERR_USR_18", "     ");
+define("L_ERR_USR_19", "...         ");
+define("L_ERR_USR_20", "         .");
+define("L_ERR_ROM_1", "    (\\).");
+define("L_ERR_ROM_2", "     .");
+define("L_ERR_ROM_3", "...        ");
+define("L_ERR_ROM_4", "   ");
+
+// users frame or popup
+define("L_EXIT", "");
+define("L_DETACH", " ");
+define("L_EXPCOL_ALL", "  ");
+define("L_CONN_STATE", " ");
+define("L_CHAT", "   ");
+define("L_USER", "");
+define("L_USERS", "");
+define("L_NO_USER", "   ");
+define("L_ROOM", "");
+define("L_ROOMS", "");
+define("L_EXPCOL", " /   ");
+define("L_BEEP", " /      ");
+define("L_PROFILE", "  ");
+define("L_NO_PROFILE", "No profile");
+
+// input frame
+define("L_HLP", "");
+define("L_BAD_CMD", "..   ");
+define("L_ADMIN", "%s   ..!");
+define("L_IS_MODERATOR", "%s     ..!");
+define("L_NO_MODERATOR", "      ...   .");
+define("L_MODERATOR", "%s      ");
+define("L_NONEXIST_USER", " %s    ");
+define("L_NONREG_USER", " %s     ");
+define("L_NONREG_USER_IP", "   : %s.");
+define("L_NO_KICKED", " %s      ");
+define("L_KICKED", " %s    ");
+define("L_NO_BANISHED", " %s     ..   ");
+define("L_BANISHED", " %s   ");
+define("L_SVR_TIME", " : ");
+define("L_NO_SAVE", "    ");
+define("L_NO_ADMIN", " :        ");
+define("L_ANNOUNCE", "");
+define("L_INVITE", "%s            <a href=\"#\" onClick=\"window.parent.runCmd('%s','%s')\">%s</a>");
+define("L_INVITE_REG", "         .");
+define("L_INVITE_DONE", "     %s.");
+define("L_OK", "");
+
+// help popup
+define("L_HELP_TIT_1", " ");
+define("L_HELP_TIT_2", " ");
+define("L_HELP_FMT_1", "            &lt;B&gt; &lt;/B&gt;, &lt;I&gt; &lt;/I&gt;  &lt;U&gt; &lt;/U&gt; .<BR>: &lt;B&gt;&lt;/B&gt;  <B></B>.");
+define("L_HELP_FMT_2", "           .");
+define("L_HELP_TIT_3", "");
+define("L_HELP_USR", "");
+define("L_HELP_MSG", "");
+define("L_HELP_ROOM", "");
+define("L_HELP_CMD_0", "{}  , []  .");
+define("L_HELP_CMD_1a", "      ɡ     5");
+define("L_HELP_CMD_1b", "    \"\"          5");
+define("L_HELP_CMD_2a", "   .<BR>      ."); 
+define("L_HELP_CMD_2b", "   .<BR>      .");
+define("L_HELP_CMD_3", "         .");
+define("L_HELP_CMD_4", "   .<BR> ()    (0) =    (1) =    .");
+define("L_HELP_CMD_5", "      .");
+define("L_HELP_CMD_6", "   <BR>              (- )   <BR>      .");
+define("L_HELP_CMD_7", "     (  ).");
+define("L_HELP_CMD_8", " /    ");
+define("L_HELP_CMD_9", "    ..      .");
+define("L_HELP_CMD_10", "  .");
+define("L_HELP_CMD_11", "  .");
+define("L_HELP_CMD_12", "    .");
+define("L_HELP_CMD_13", " ..   /   .");
+define("L_HELP_CMD_14", "        .");
+define("L_HELP_CMD_15", "       .");
+define("L_HELP_CMD_16", "   ..     .");
+define("L_HELP_CMD_17", "         .");
+define("L_HELP_CMD_18", "       .");
+define("L_HELP_CMD_19", "      \"\"           .<BR>             '<B>&nbsp;*&nbsp;</B>'   \"   \"      ..");
+define("L_HELP_CMD_20", "Describe what you're doing without refer yourself.");
+
+// messages frame
+define("L_NO_MSG", "   ...");
+define("L_TODAY_DWN", "      ");
+define("L_TODAY_UP", "      ");
+
+// message colors
+$TextColors = array(	"" => "#000000",
+				"" => "#FF0000",
+				"" => "#009900",
+				"" => "#0000FF",
+				"" => "#9900FF",
+				"" => "#990000",
+				"" => "#006600",
+				"" => "#000099",
+				"" => "#996633",
+				" " => "#006699",
+				" " => "#FF6600");
+
+// ignored popup
+define("L_IGNOR_TIT", "");
+define("L_IGNOR_NON", "     ");
+
+// whois popup
+define("L_WHOIS_ADMIN", " ");
+define("L_WHOIS_MODER", "");
+define("L_WHOIS_USER", "");
+
+// Notification messages of user entrance/exit
+define("L_ENTER_ROM", "%s    ");
+define("L_EXIT_ROM", "%s   ");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/arabic/localized.tutorial.php 0.15.0/chat/localization/arabic/localized.tutorial.php
--- 0.14.5/chat/localization/arabic/localized.tutorial.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/arabic/localized.tutorial.php	2004-04-01 03:06:44.000000000 -0600
@@ -0,0 +1,676 @@
+<?php
+// File : arabic.tutorial.php
+// Translation by Khalid Aljabri <webksa@yahoo.com>
+
+// Get the names and values for vars sent by the script that called this one
+if (isset($HTTP_GET_VARS))
+{
+	while(list($name,$value) = each($HTTP_GET_VARS))
+	{
+		$$name = $value;
+	};
+};
+?>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML dir="RTL">
+
+<HEAD>
+<TITLE>  <?php echo(APP_NAME." - ".APP_VERSION); ?></TITLE>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1256">
+<STYLE>
+A.topLink
+{
+	text-decoration: underline;
+	color: #0000C0;
+}
+
+A.topLink:hover, A.topLink:active
+{
+	color: #FF9900;
+	text-decoration: none;
+	font-weight: 800;
+}
+
+.redText
+{
+	font-weight: 800;
+	color: #FF0000;
+}
+</STYLE>
+</HEAD>
+
+<BODY BGCOLOR="#CCCCFF">
+<P><A NAME="top"></P>
+<TABLE BORDER="5" CELLPADDING="5">
+<TR>
+	<TD><FONT SIZE="+2"> </FONT></TD>
+</TR>
+</TABLE><BR>
+
+<!-- Do not translate the  below -->
+<P CLASS="redText" dir="LTR">
+Warning: Mozilla and Netscape users can't use <?php echo(APP_NAME); ?> with arabic language 
+because these browsers seem not to accept languages written from the right to the left.
+</P>
+<!-- End of the  that must not be translated -->
+
+<?php
+if (C_MULTI_LANG == "1") 
+{
+	?>
+	<A HREF="#language" CLASS="topLink"> </A><BR>
+	<?php
+}
+?>
+<A HREF="#login" CLASS="topLink">  </A><BR>
+<A HREF="#register" CLASS="topLink"></A><BR>
+<A HREF="#modProfile" CLASS="topLink"><?php if (C_SHOW_DEL_PROF == "1") echo(" "); ?>  </A><BR>
+<?php
+if (C_VERSION == "2") 
+{
+	?>
+	<A HREF="#create_room" CLASS="topLink">   </A><BR>
+	<?php
+};
+if ($Ver == "H") 
+{
+	?>
+	<A HREF="#connection_state" CLASS="topLink"> </A><BR>
+	<?php
+};
+?>
+<A HREF="#sending" CLASS="topLink">  </A><BR>
+<A HREF="#users_list" CLASS="topLink"> </A><BR>
+<A HREF="#exit" CLASS="topLink">  </A><BR>
+<A HREF="#users_popup" CLASS="topLink">     </A><BR>
+<P>
+<A HREF="#customize" CLASS="topLink">   </A><BR>
+<P>
+<A HREF="#commands" CLASS="topLink">   :</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#help" CLASS="topLink"> </A><BR>
+<?php
+if (C_USE_SMILIES == "1")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#smilies" CLASS="topLink"> </A><BR>
+	<?php
+};
+if (C_HTML_TAGS_KEEP != "none")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#text" CLASS="topLink"> </A><BR>
+	<?php
+};
+?>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#invite" CLASS="topLink">      </A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#changeroom" CLASS="topLink">   </A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#private" CLASS="topLink"> </A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#actions" CLASS="topLink">Actions</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#ignore" CLASS="topLink"> </A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#whois" CLASS="topLink">    </A><BR>
+<?php
+if (C_SAVE != "0")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#save" CLASS="topLink"> </A><BR>
+	<?php
+};
+?>
+<P>
+<A HREF="#moderator" CLASS="topLink">    ....  </A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#announce" CLASS="topLink"> </A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#kick" CLASS="topLink"> </A><BR>
+<?php
+if (C_BANISH != "0")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#banish" CLASS="topLink">  </A><BR>
+	<?php
+};
+?>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#promote" CLASS="topLink">    </A><BR>
+<P>
+<HR>
+<HR>
+
+
+<?php
+if (C_MULTI_LANG == "1") 
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="language"><B> </B></A></FONT>
+	<P>
+	        <?php echo(APP_NAME); ?>                    :
+	<P ALIGN="center">
+	<IMG SRC="images/tutorials/flags.gif" HEIGHT="44" WIDTH="424" ALT="   ">
+	<BR><P ALIGN="right"><A HREF="#top">   </A></P>
+	<HR>
+	<?php
+}
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="login"><B>   </B></A></FONT>
+<P>
+                     .
+<BR>
+<?php
+if (C_REQUIRE_REGISTER == "1")
+{
+	?>
+	<P>
+	     <A HREF="#register"></A> 
+	<?php
+}
+else
+{
+	?>
+	<P>
+	    <A HREF="#register"></A>               .
+	<?php
+}
+?>
+<BR><P ALIGN="right"><A HREF="#top">   </A></P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="register"><B> :</B></A></FONT> 
+<P>
+<?php
+if (C_REQUIRE_REGISTER == "1")
+{
+	?>
+	            .
+	<?php
+}
+else
+{
+	?>
+	      .        .
+	<?php
+};
+?>
+<P>	
+<UL>
+	<LI> :   <?php if (!C_EMAIL_PASWD) echo("  "); ?>  ߡ                  (\).
+<?php if (C_BAD_WORDS == "1") echo("         \" \"."); ?>
+	<LI> :        
+	<LI>         .
+	<LI> :  ..          .
+	<LI> :              .
+	<LI>   .. 
+</UL>
+<P>
+<A NAME="modProfile"></A>
+<?php
+if (C_SHOW_DEL_PROF == "0")
+{
+	?>
+	           .
+	<?php
+}
+else
+{
+	?>
+	             .
+	<?php
+};
+?>
+<BR>
+<BR><P ALIGN="right"><A HREF="#top">   </A></P>
+<P>
+<HR>
+
+<?php
+if (C_VERSION == "2") 
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="create_room"><B>    :</B></A></FONT> 
+	<P>
+	..       ( )                 .<BR>
+	<P>
+	        (  ԡ) (\).<?php if (C_NO_SWEAR == "1") echo("         \" \"."); ?>
+	<BR><P ALIGN="right"><A HREF="#top">   </A></P>
+	<P>
+	<HR>
+	<?php
+};
+if ($Ver == "H")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="connection_state"><B>  :</B></A></FONT> 
+	<P>
+	              :
+	<P>	
+	<UL>
+		<LI><IMG SRC="images/connectOff.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT=" ">   .
+		<LI><IMG SRC="images/connectOn.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="">  .
+		<LI><IMG SRC="images/connectError.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT=" ">   .
+	</UL>
+	<P>
+	        .
+	<BR><P ALIGN="right"><A HREF="#top">   </A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="sending"><B>  :</B></A></FONT> 
+<P>
+                         .<BR>
+<?php if (C_NO_SWEAR == "1") echo(" : \"   \"    ."); ?>
+<P>
+           .
+<BR><P ALIGN="right"><A HREF="#top">   </A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="users_list"><B>  </B></A></FONT> 
+<P>
+<OL>
+	     :<BR>
+	<!-- To update
+	<LI>  (<IMG SRC="images/whoisOff.gif" WIDTH=5 HEIGHT=9 BORDER=0 ALT="   ѿ">)            . <A HREF="#whois"> </A> ;<BR>
+	-->
+	<LI>a little icon that shows gender is displayed before the nick of a registered user (clicking on it will launch the <A HREF="#whois">whois popup</A> for this user), while unregistered users have nothing but blank spaces displayed before their nick;<BR>
+	<LI>        .
+</OL>
+<P><I></I>,   :
+<TABLE BORDER=0 CELLSPACING=10>
+<TR>
+	<TD>
+		<IMG SRC="images/tutorials/usersList.gif" WIDTH=99 HEIGHT=131 BORDER=0 ALT=" ">
+	</TD>
+	<TD>
+	<UL>
+		<LI>Nicolas   <BR><BR>
+		<!-- To update
+		<LI>lolo  Jezek2  <BR>
+		<LI>Mary .
+		-->
+		<LI>alien (whose gender is unknown), Jezek2 and Caridad are registered users with no extra "power" for the phpMyChat room;<BR><BR>
+		<LI>lolo is a simple unregistered user.
+	</UL>
+	</TD>
+</TR>
+</TABLE>
+<BR><P ALIGN="right"><A HREF="#top">   </A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="exit"><B>   </B></A></FONT>
+<P>
+         ""         :<BR>
+/exit<BR>
+/bye<BR>
+/quit
+<P>
+          
+<P>
+<I> :</I> /quit  
+<BR><P ALIGN="right"><A HREF="#top">   </A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="users_popup"><B>        </B></A></FONT> 
+<P>
+             <IMG SRC="images/popup.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="  "> <BR>
+<P>
+     <IMG SRC="images/sound.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT=" ">             
+<BR><P ALIGN="right"><A HREF="#top">   </A></P>
+<P>
+<HR>
+<HR>
+
+
+<P>
+<FONT SIZE="+1"><A NAME="customize"><B>    :</B></A></FONT>
+<P>
+             
+<P>
+<UL>
+	<?php
+	if ($Ver == "H")
+	{
+		?>
+		<LI> <B>Clear </B>       <BR> "/clear" 	
+		<P>
+		<?php
+	}
+	else
+	{
+		?>
+		<LI> <B>Order </B>          <BR> "/order" 
+		<P>
+		<?php
+	};
+
+	if (C_NOTIFY)
+	{
+		?>
+		<LI> <B>Notify </B>             . 
+  (  ) .
+		<?php
+	}
+	else
+	{
+		?>
+		<LI> <B>Notify </B>             . 
+  (  ) .
+		<?php
+	};
+	?>
+	<BR>  "/notify"    .	<P>
+	<LI> <B>Timestamp </B>       ..   : <?php echo(C_SHOW_TIMESTAMP ? "" : " "); ?>.<BR> "/timestamp"
+	<P>
+	<LI> <B>Refresh </B>  <?php echo(C_MSG_REFRESH); ?> .  "/refresh n"        "n"
+	<P>
+	<I>:</I> /refresh 5
+	<P>
+	<?php
+	if ($Ver == "L")
+	{
+		?>
+		<LI> <B>Show </B>         "/show n" (n)     .
+		<P>
+		<I>:</I> /show 50
+		<P>
+		   50      .
+		<?php
+	}
+	else
+	{
+		?>
+		<LI> <B>Show  Last </B>            <I>n</I> 
+       .   "/show n"  "/last n"      (n)     .
+		<P>
+		<I>:</I> /show 50  /last 50
+		<?php
+	};
+	?>
+	<BR><P ALIGN="right"><A HREF="#top">   </A></P>
+	<P>
+</UL>
+<HR>
+<HR>
+
+
+<P>
+<FONT SIZE="+2"><A NAME="commands"><B><U> </U></B></A></FONT> 
+<P>
+
+<FONT SIZE="+1"><A NAME="help"><B>  :</B></A></FONT>
+<P>
+      <IMG SRC="images/helpOff.gif" WIDTH=15 HEIGHT=15 BORDER=0 ALT="?">    : <B>"/help"  "/?" </B>   
+<BR><P ALIGN="right"><A HREF="#top">   </A></P>
+<P>
+<P>
+<HR>
+
+<?php
+if (C_USE_SMILIES == "1")
+{
+	include("./lib/smilies.lib.php");
+	$Nb = count($SmiliesTbl);
+	$ResultTbl = Array();
+	DisplaySmilies($ResultTbl,$SmiliesTbl,$Nb,"tutorial");
+	unset($SmiliesTbl);
+	?>
+	<FONT SIZE="+1"><A NAME="smilies"><B>  :</B></A></FONT>
+	<P>                            . 
+	<P ALIGN="center">
+	<TABLE BORDER=0 CELLPADDING=3 CELLSPACING=5>
+	<?php
+	$i = "0";
+	$Nb = count($ResultTbl);
+	while($i < $Nb)
+	{
+		if ($i > 0) echo("\t");
+		echo("<TR VALIGN=\"BOTTOM\">\n");
+		echo("$ResultTbl[$i]");
+		echo("\t</TR>\n\t<TR>\n");
+		$i++;
+		echo("$ResultTbl[$i]");
+		echo("\t</TR>\n");
+		$i++;
+	};
+	unset($ResultTbl);
+	?>
+	</TABLE>
+	<P>
+	<I></I>,  "  :)"  :   <IMG SRC="images/smilies/smile1.gif" WIDTH=15 HEIGHT=15 ALT=":)">   
+	<BR><P ALIGN="right"><A HREF="#top">   </A></P>
+	<P>
+	<HR>
+	<?php
+};
+
+if (C_HTML_TAGS_KEEP != "none")
+{
+	?>
+	<FONT SIZE="+1"><A NAME="text"><B>  :</B></A></FONT>
+	<P>
+	         . <BDO dir="RTL">&LT;B&GT; &LT;/B&GT; &LT;I&GT; &LT;/I&GT;</BDO>  <BDO dir="RTL">&LT;U&GT; &LT;/U&GT;</BDO>              .
+	<P>
+	<I></I>, &LT;B&GT;  &LT;/B&GT;  <B>  </B>.
+	<P>
+	          .
+	<BR><P ALIGN="right"><A HREF="#top">   </A></P>
+	<P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="invite"><B>        :</B></A></FONT>
+<P>
+   <B>invite </B>        
+<P>
+<I>:</I> /invite  
+<P>
+:         : ( "/invite ,,").      (,)  
+<BR><P ALIGN="right"><A HREF="#top">   </A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="changeroom"><B>   :</B></A></FONT>
+<P>
+                    <B> "/join # "</B> 
+<P>
+<I>:</I> /join #  
+<P>
+     .
+<?php
+if (C_VERSION == "2")
+{
+	if (C_REQUIRE_REGISTER == "0")
+	{
+		?>
+		<P>            .   (0)       (1)       (   ).
+		<?php
+	}
+	else
+	{
+		?>
+		<P>        .   (0)       (1)       (   ).
+		<?php
+	};
+	?>
+	<P>
+	<I>:</I> /join 0 #  
+	<P>
+	    (                .)      +        .
+	<P>
+	        (\).<?php if (C_NO_SWEAR == "1") echo("  \" \"."); ?>
+	<?php
+}
+?>
+<BR><P ALIGN="right"><A HREF="#top">   </A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B>      :</B></FONT>
+<P>
+ <B>  </B>         +      :<BR> /profile
+<BR><P ALIGN="right"><A HREF="#top">   </A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B>   :</B></FONT>
+<P>
+ <B></B> <BR> "/!"
+<BR><P ALIGN="right"><A HREF="#top">   </A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B>   :</B></FONT>
+<P>
+                      .
+<BR><P ALIGN="right"><A HREF="#top">   </A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="private"><B> </B></A></FONT>
+<P>
+        :
+<B> "/msg   "  "/to   "</B>   .
+<P>
+<I>,          :</I> /msg    <P>
+      .
+<P>
+ :                .
+<BR><P ALIGN="right"><A HREF="#top">   </A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="actions"><B>Actions:</B></A></FONT>
+<P>
+To describe what you're doing you can use the <B>command "/me action"</B> without quotes.
+<P>
+<I>For example:</I> If Jack sends the message "/me is smoking a cigarette" the message frame will shown "<B>* Jack</B>" is smoking a cigarette".
+<BR><P ALIGN="right"><A HREF="#top">   </A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="ignore"><B>  :</B></A></FONT>
+<P>
+       : <B> "/ignore  "</B> 
+<P>
+<I> :</I> /ignore 
+<P>
+         ""
+<P>
+      ..   <B>"/ignore"</B>  
+<P>
+             : <B> "/ignore -  "</B>  <P> 
+<P>
+<I>:</I> /ignore -  
+<P>
+         ""         .
+<P>
+       ""            : ( "/ignore ,,"  "/ignore - ,").    "" (,)  .
+<BR><P ALIGN="right"><A HREF="#top">   </A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="whois"><B>     :</B></A></FONT>
+<P>
+         : <B>"/whois  "</B> 
+<P>
+<I> :</I> /whois 
+<BR><P ALIGN="right"><A HREF="#top">   </A></P>
+<P>
+<HR>
+
+<?php
+if (C_SAVE != "0")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="save"><B>  :</B></A></FONT>
+	<P>
+	           ..   : <B> "/save n"</B> 
+	<P>
+	<I></I> /save 5
+	<P>
+	5        .. .
+	<BR><P ALIGN="right"><A HREF="#top">   </A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+<HR>
+
+
+<P>
+<FONT SIZE="+2"><A NAME="moderator"><B><U>         :</U></B></A></FONT> 
+
+<P>
+<FONT SIZE="+1"><A NAME="announce"><B> </B></A></FONT>
+<P>
+             : <B>/announce </B>.
+<P>
+<I> :</I> /announce     
+<BR><P ALIGN="right"><A HREF="#top">   </A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="kick"><B>  :</B></FONT>
+<P>
+      ()             :   <B>/kick </B>
+<P>
+<I> :</I>,          </I> /kick </I>
+<BR><P ALIGN="right"><A HREF="#top">   </A></P>
+<P>
+<HR>
+
+<?php
+if (C_BANISH != "0")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="banish"><B>  </B></A></FONT>
+	<P>
+	      ()                       :   <B>/ban </B>.<BR>
+	               : '<B>&nbsp;*&nbsp;</B>'      
+	<P>
+	<I> :</I>,   ""        <I>/ban </I>  <I>/ban * </I>
+	<BR><P ALIGN="right"><A HREF="#top">   </A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="promote"><B>     :</B></A></FONT>
+<P>
+      ()            :  <B> /promote </B>.
+<P>
+<I> :</I>,    ""     :<I> /promote </I>
+<BR><P ALIGN="right"><A HREF="#top">   </A></P>
+<P>
+
+
+</BODY>
+</HTML>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/arabic/regex.txt 0.15.0/chat/localization/arabic/regex.txt
--- 0.14.5/chat/localization/arabic/regex.txt	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/arabic/regex.txt	2004-04-01 03:06:44.000000000 -0600
@@ -0,0 +1 @@
+ar|arabic
\ No newline at end of file
Binary files 0.14.5/chat/localization/argentinian_spanish/flag.gif and 0.15.0/chat/localization/argentinian_spanish/flag.gif differ
diff -ruN 0.14.5/chat/localization/argentinian_spanish/localized.admin.php 0.15.0/chat/localization/argentinian_spanish/localized.admin.php
--- 0.14.5/chat/localization/argentinian_spanish/localized.admin.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/argentinian_spanish/localized.admin.php	2004-04-01 03:06:44.000000000 -0600
@@ -0,0 +1,62 @@
+<?php
+// File : argentinian_spanish/localized.admin.php
+// Traducido y Adaptado al espaol de uso corriente en Argentina 
+//   por Jorge Colaccini <jrc@informas.com>
+
+// extra header for charset
+$Charset = "iso-8859-1";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// Top frame
+define("A_MENU_0", "Administracin para %s");
+define("A_MENU_1", "Usuarios registrados");
+define("A_MENU_2", "Usuarios bloqueados");
+define("A_MENU_3", "Limpiar salones");
+define("A_MENU_4", "Enviar e-mails");
+
+// Frame for registered users
+define("A_SHEET1_1", "Listado de usuarios registrados y sus permisos");
+define("A_SHEET1_2", "Usuario");
+define("A_SHEET1_3", "Permisos");
+define("A_SHEET1_4", "Salones moderados");
+define("A_SHEET1_5", "Salones moderados son separados por coma (,) sin espacios.");
+define("A_SHEET1_6", "Remover perfiles marcados");
+define("A_SHEET1_7", "Cambiar");
+define("A_SHEET1_8", "No hay usuarios registrados excepto vos.");
+define("A_SHEET1_9", "Bloquear los perfiles marcados");
+define("A_SHEET1_10", "Ahora tens que ir a <b>Usuarios bloqueados</b> para ajustar la lista.");
+define("A_SHEET1_11", "Ultima conexin");
+define("A_USER", "Usuario");
+define("A_MODER", "Moderador");
+define("A_PAGE_CNT", "Pgina %s de %s");
+
+// Frame for banished users
+define("A_SHEET2_1", "Listado de usuarios bloqueados y salones correspondientes");
+define("A_SHEET2_2", "IP");
+define("A_SHEET2_3", "Salones correspondientes");
+define("A_SHEET2_4", "Hasta");
+define("A_SHEET2_5", "no termina");
+define("A_SHEET2_6", "Los salones son separados por comas sin espacios (,) si hay menos de 4, ms '<B>&nbsp;*&nbsp;</B>' sealar<BR>bloqueados para todos los salones.");
+define("A_SHEET2_7", "Remover <b>bloqueo</B> para usuario/s marcado/s");
+define("A_SHEET2_8", "No hay usuarios bloqueados.");
+
+// Frame for cleaning rooms
+define("A_SHEET3_1", "Listado de salones existentes");
+define("A_SHEET3_2", "Al limpiar cualquier saln que no sea el \"predeterminado\" se remover tambin<BR>la condicin de moderador para cualquier usuario asignado al mismo como tal.");
+define("A_SHEET3_3", "Limpiar salones seleccionados");
+define("A_SHEET3_4", "No hay salones para limpiar.");
+
+// Frame for sending mails
+define("A_SHEET4_0", "No ingresaste las variables requeridas en<BR>'chat/admin/mail4admin.php' script.");
+define("A_SHEET4_1", "Enviar e-mails");
+define("A_SHEET4_2", "A:");
+define("A_SHEET4_3", "Seleccionar todo");
+define("A_SHEET4_4", "Detalle:");
+define("A_SHEET4_5", "Mensaje:");
+define("A_SHEET4_6", "Comenzar a enviar");
+define("A_SHEET4_7", "Todos los e-mails han sido enviados.");
+define("A_SHEET4_8", "Error interno al enviar los e-mails.");
+define("A_SHEET4_9", "Direccin/es, detalle o mensaje perdido!");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/argentinian_spanish/localized.chat.php 0.15.0/chat/localization/argentinian_spanish/localized.chat.php
--- 0.14.5/chat/localization/argentinian_spanish/localized.chat.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/argentinian_spanish/localized.chat.php	2004-04-01 03:06:44.000000000 -0600
@@ -0,0 +1,221 @@
+<?php
+// File : argentinian_spanish/localized.chat.php
+// Traducido y Adaptado al espaol de uso corriente en Argentina 
+//   por Jorge Colaccini <jrc@informas.com>
+
+// extra header for charset
+$Charset = "iso-8859-1";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// welcome page
+define("L_TUTORIAL", "Tutorial");
+
+define("L_WEL_1", "Los mensajes se borrarn despus de");
+define("L_WEL_2", "horas y los usuarios despus de");
+define("L_WEL_3", "minutos ...");
+
+define("L_CUR_1", "Hay actualmente");
+define("L_CUR_2", "en el chat.");
+define("L_CUR_3", "Usuarios en los salones de chat");
+define("L_CUR_4", "usuarios en salones privados");
+
+define("L_SET_1", "Por favor identificate...");
+define("L_SET_2", "tu nombre de usuario");
+define("L_SET_3", "el nmero de mensajes a mostrar");
+define("L_SET_4", "el tiempo entre cada actualizacin");
+define("L_SET_5", "Seleccion un saln de chat ...");
+define("L_SET_6", "Saln elegido la ltima vez");
+define("L_SET_7", "Hac tu eleccin ...");
+define("L_SET_8", "salones pblicos creados por usuarios");
+define("L_SET_9", "crear tu propio saln");
+define("L_SET_10", "pblico");
+define("L_SET_11", "privado");
+define("L_SET_12", "saln");
+define("L_SET_13", "Para chatear, hac click aqu");
+define("L_SET_14", "chat");
+
+define("L_SRC", "estn habilitados");
+
+define("L_SECS", "segundos");
+define("L_MIN", "minuto");
+define("L_MINS", "minutos");
+
+// registration stuff:
+define("L_REG_1", "tu contrasea");
+define("L_REG_1r", "(slo si ya ests registrado/a)");
+define("L_REG_2", "Administracin de cuenta");
+define("L_REG_3", "Registrate");
+define("L_REG_4", "Edit tus datos");
+define("L_REG_5", "Borrate como usuario");
+define("L_REG_6", "Registracin de usuario");
+define("L_REG_7", "tu contrasea");
+define("L_REG_8", "tu e-mail");
+define("L_REG_9", "Has sido registrado/a satisfactoriamente.");
+define("L_REG_10", "Atrs");
+define("L_REG_11", "Editando");
+define("L_REG_12", "Modificando informacin de usuarios");
+define("L_REG_13", "Borrando usuario");
+define("L_REG_14", "Identificacin");
+define("L_REG_15", "Acceder");
+define("L_REG_16", "Cambiar");
+define("L_REG_17", "Tus datos han sido ingresados satisfactoriamente.");
+define("L_REG_18", "Has ha sido echado/a fuera del saln por el moderador.");
+define("L_REG_19", "Realmente quiere ser eliminado/a?");
+define("L_REG_20", "Si");
+define("L_REG_21", "Has sido removido/a satisfactoriamente.");
+define("L_REG_22", "No");
+define("L_REG_25", "Cerrar");
+define("L_REG_30", "Nombre");
+define("L_REG_31", "Apellido");
+define("L_REG_32", "WEB");
+define("L_REG_33", "mostrar pblicamente tu e-mail");
+define("L_REG_34", "Editando datos del usuario");
+define("L_REG_35", "Administracin");
+define("L_REG_36", "idiomas posibles");
+define("L_REG_37", "Los campos con un <span class=\"error\">*</span> necesariamente deben ser completados.");
+define("L_REG_39", "El saln en el que te encontrabas ha sido removido por el administrador.");
+define("L_REG_45", "Sexo");
+define("L_REG_46", "Masculino");
+define("L_REG_47", "Femenino");
+
+// e-mail validation stuff
+define("L_EMAIL_VAL_1", "Tus datos para ingresar al chat");
+define("L_EMAIL_VAL_2", "Bienvenido(a) a nuestro servidor de chat.");
+define("L_EMAIL_VAL_Err", "Error interno, contactarse con el administrador a: <a href=\"mailto:%s\">%s</a>.");
+define("L_EMAIL_VAL_Done", "Tu contrasea ha sido enviada a la direccin de<BR>e-mail.");
+
+// admin stuff
+define("L_ADM_1", "%s no es un moderador para este saln.");
+define("L_ADM_2", "No sos un usuario registrado.");
+
+// error messages
+define("L_ERR_USR_1", "Este nombre de usuario ya est siendo utilizado. Eleg otro, por favor.");
+define("L_ERR_USR_2", "Debes elegir un nombre de usuario.");
+define("L_ERR_USR_3", "Este nombre de usuario est registrado. Escrib su contrasea o eleg otro nombre de usuario.");
+define("L_ERR_USR_4", "Has ingresado incorrectamente tu contrasea.");
+define("L_ERR_USR_5", "Debes ingresar tu nombre de usuario.");
+define("L_ERR_USR_6", "Debes ingresar tu contrasea.");
+define("L_ERR_USR_7", "Debes ingresar tu e-mail."); 
+define("L_ERR_USR_8", "Debes ingresar una direccin de e-mail vlida.");
+define("L_ERR_USR_9", "Este nombre de usuario est en uso.");
+define("L_ERR_USR_10", "Nombre de usuario o contrasea incorrectos.");
+define("L_ERR_USR_11", "Debes ser administrador.");
+define("L_ERR_USR_12", "Eres el administrador, por lo tanto no puedes ser removido.");
+define("L_ERR_USR_13", "Para crear tu propio saln, debes estar registrado como usuario.");
+define("L_ERR_USR_14", "Debes estar registrado como usuario antes de chatear.");
+define("L_ERR_USR_15", "Debes ingresar tu nombre completo.");
+define("L_ERR_USR_16", "El nombre de usuario no puede contener espacios, comas o barras (\\).");
+define("L_ERR_USR_17", "Este saln no existe, y no ests habilitado para crear uno.");
+define("L_ERR_USR_18", "Tu nombre de usuario est bloqueado."); 
+define("L_ERR_USR_19", "No puedes estar en ms de un saln al mismo tiempo.");
+define("L_ERR_USR_20", "Has sido bloqueado desde este saln o desde el chat.");
+define("L_ERR_ROM_1", "Los nombres de los salones no pueden contener comas o barras (\\).");
+define("L_ERR_ROM_2", "Hay palabras no vlidas en el nombre del saln que quieres crear.");
+define("L_ERR_ROM_3", "Este saln ya existe como pblico.");
+define("L_ERR_ROM_4", "Nombre de saln invlido.");
+
+// users frame or popup
+define("L_EXIT", "Salir");
+define("L_DETACH", "Desplegar");
+define("L_EXPCOL_ALL", "Desplegar/Replegar todas");
+define("L_CONN_STATE", "Conexin establecida");
+define("L_CHAT", "Chat");
+define("L_USER", "usuario");
+define("L_USERS", "usuarios");
+define("L_NO_USER", "No hay usuarios");
+define("L_ROOM", "saln");
+define("L_ROOMS", "salones");
+define("L_EXPCOL", "Desplegar/Replegar este saln");
+define("L_BEEP", "Beep/no beep cuando el usuario ingresa");
+define("L_PROFILE", "mostrar perfil de usuario (datos)");
+define("L_NO_PROFILE", "No hay perfil de usuario (datos)");
+
+// input frame
+define("L_HLP", "Ayuda");
+define("L_BAD_CMD", "Este no es un comando vlido!");
+define("L_ADMIN", "%s ya es el administrador!");
+define("L_IS_MODERATOR", "%s ya es el moderador!");
+define("L_NO_MODERATOR", "Solo un moderador de este saln puede utilizar este comando.");
+define("L_MODERATOR", "%s es ahora un moderador de este saln.");
+define("L_NONEXIST_USER", "El usuario %s no est en este saln.");
+define("L_NONREG_USER", "El usuario %s no est registrado.");
+define("L_NONREG_USER_IP", "Su direccin de IP es: %s.");
+define("L_NO_KICKED", "El usuario %s es un moderador o el administrador y no puede ser expulsado.");
+define("L_KICKED", "El usuario %s ha sido expulsado satisfactoriamente.");
+define("L_NO_BANISHED", "El usuario %s es un moderador o el administrador y no puede ser bloqueado.");
+define("L_BANISHED", "El usuario %s ha sido bloqueado satisfactoriamente.");
+define("L_SVR_TIME", "Hora del servidor: ");
+define("L_NO_SAVE", "No hay mensajes para guardar!");
+define("L_NO_ADMIN", "Solamente el administrador puede utilizar este comando.");
+define("L_ANNOUNCE", "ANUNCIO");
+define("L_INVITE", "%s solicitud para que ingrese al usuario a <a href=\"#\" onClick=\"window.parent.runCmd('%s','%s')\">%s</a> saln.");
+define("L_INVITE_REG", " Debes estar registrado para ingresar en este saln.");
+define("L_INVITE_DONE", "Su invitacin ha sido enviada a %s.");
+define("L_OK", "Enviar");
+
+// help popup
+define("L_HELP_TIT_1", "Caritas");
+define("L_HELP_TIT_2", "Formato de texto para mensajes");
+define("L_HELP_FMT_1", "Puedes poner negritas, itlicas o texto subrayado en mensajes utilizando &lt;B&gt; &lt;/B&gt;, &lt;I&gt; &lt;/I&gt; o &lt;U&gt; &lt;/U&gt; tags.<BR>Por ejemplo, &lt;B&gt;este texto&lt;/B&gt; producir <B>este texto</B>.");
+define("L_HELP_FMT_2", "Para crear un hipervnculo (para e-mail o URL) en tu mensaje, simplemente escribe la correspondiente direccin sin <i>tag</i>. El hipervnculo ser creado automticamente.");
+define("L_HELP_TIT_3", "Comandos");
+define("L_HELP_USR", "usuario");
+define("L_HELP_MSG", "mensaje");
+define("L_HELP_ROOM", "saln");
+define("L_HELP_CMD_0", "{} representa un dato requerido, [] uno opcional.");
+define("L_HELP_CMD_1a", "Establece el nmero de mensajes a mostrar. Mnimo y por defecto, son 5.");
+define("L_HELP_CMD_1b", "Recarga y muestra los n ltimos mensajes. Mnimo y por defecto, son 5.");
+define("L_HELP_CMD_2a", "Modifica el Tiempo de actualizacin de la lista de mensajes (en segundos).<BR>Si n no est especificado o es menor que 3, cambia entre <b>no actualizar</b> y <b>actualizar cada 10 seg.</b>.");
+define("L_HELP_CMD_2b", "Modifica el Tiempo de actualizacin de la lista de mensajes y lista de usuarios (en segundos).<BR>Si n no est especificado o es menor que 3, cambia entre <b>no actualizar</b> y <b>actualizar cada 10 seg.</b>.");
+define("L_HELP_CMD_3", "Inversin del orden de mensajes.");
+define("L_HELP_CMD_4", "Ingresar en otro saln, creando uno si no existe, siempre que ests habilitado/a para hacerlo.<BR><b>n</b> igual a <b>0</b> para privado, <b>1</b> para pblico. Si no se especifica asume <b>1</b>.");
+define("L_HELP_CMD_5", "Abandonar el chat despus de mostrar un mensaje opcional.");
+define("L_HELP_CMD_6", "Evita mostrar mensajes de un usuario, si se especifica su <i></b>nick</B></I>.<BR>Quita <b>ignorar</b> a un usuario cuando se especifica el <i><b>nick</b></I> precedido por un <b>-</b> (guin), y para todos los usuarios cuando se especifica <b>-</b> (guin) pero no se indica ningn <i>nick</I>.<BR>Si no se especifica ni <b>-</b> (guin) ni <i>nicks</I>, este comando abre una ventana que muestra todos los <i>nicks</I> ignorados.");
+define("L_HELP_CMD_7", "Vuelve a mostrar texto previamente ingresado (comando o mensaje).");
+define("L_HELP_CMD_8", "Muestra/Oculta la hora, antes de los mensajes.");
+define("L_HELP_CMD_9", "Expulsa a un usuario fuera del saln. Este comando solo puede ser utilizado por el moderador.");
+define("L_HELP_CMD_10", "Enviar un mensaje privado a un usuario especfico (otros usuarios no pueden verlo).");
+define("L_HELP_CMD_11", "Muestra informacin acerca de un usuario especfico.");
+define("L_HELP_CMD_12", "Abre la ventana para editar los perfiles (datos) de los usuarios");
+define("L_HELP_CMD_13", "Notificacin de entrada o salida de usuarios en o del saln actual.");
+define("L_HELP_CMD_14", "Permite al administrador o moderador(es) del saln actual promover a otro usuario registrado a moderador del mismo saln.");
+define("L_HELP_CMD_15", "Limpia de mensajes la ventana y muestra solamente los ltimos 5.");
+define("L_HELP_CMD_16", "Guarda los ltimos n mensajes en un archivo HTML (las notificaciones son excludas). Si n no est especificado, todos los mensajes de la cuenta sern guardados.");
+define("L_HELP_CMD_17", "Permite al administrador enviar un anuncio a todos los usuarios en todos los salones.");
+define("L_HELP_CMD_18", "Invita a un usuario que est chateando a tu saln.");
+define("L_HELP_CMD_19", "Permite al(los) moderador(es) de un saln o al administrador a \"<b>bloquear</b>\" un usuario de un saln por un tiempo determinado por el administrador.<BR>Este ltimo puede banear a un usuario de otro saln adonde l no est y utilizar '<B>&nbsp;*&nbsp;</B>' seteo para ban \"para siempre\" y el usuario es eliminado de todo el chat.");
+define("L_HELP_CMD_20", "Describe que ests haciendo, sin refererirte a ti mismo.");
+
+// messages frame
+define("L_NO_MSG", "En este momento no hay mensajes ...");
+define("L_TODAY_DWN", "Los mensajes que han sido enviados hoy, estn al final");
+define("L_TODAY_UP", "Los mensajes que han sido enviados hoy, estn al principio");
+
+// message colors
+$TextColors = array(	"Negro" => "#000000",
+				"Rojo" => "#FF0000",
+				"Verde" => "#009900",
+				"Azul" => "#0000FF",
+				"Morado" => "#9900FF",
+				"Oscuro rojo" => "#990000",
+				"Oscuro verde" => "#006600",
+				"Oscuro azul" => "#000099",
+				"Marrn" => "#996633",
+				"Azul agua" => "#006699",
+				"Naranja" => "#FF6600");
+
+// ignored popup
+define("L_IGNOR_TIT", "Ignorado");
+define("L_IGNOR_NON", "No hay usuarios ignorados");
+
+// whois popup
+define("L_WHOIS_ADMIN", "Administrador");
+define("L_WHOIS_MODER", "Moderador");
+define("L_WHOIS_USER", "Usuario");
+
+// Notification messages of user entrance/exit
+define("L_ENTER_ROM", "%s ingres a este saln");
+define("L_EXIT_ROM", "%s sali de este saln");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/argentinian_spanish/localized.tutorial.php 0.15.0/chat/localization/argentinian_spanish/localized.tutorial.php
--- 0.14.5/chat/localization/argentinian_spanish/localized.tutorial.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/argentinian_spanish/localized.tutorial.php	2004-04-01 03:06:45.000000000 -0600
@@ -0,0 +1,977 @@
+<?php
+// File : argentinian_spanish/localized.tutorial.php
+// Traducido y Adaptado al espaol de uso corriente en Argentina 
+//   por Jorge Colaccini <jrc@informas.com>
+
+// Get the names and values for vars sent by the script that called this one
+if (isset($HTTP_GET_VARS))
+{
+	while(list($name, $value) = each($HTTP_GET_VARS))
+	{
+		$$name = $value;
+	}
+}
+?>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+
+<HEAD>
+<TITLE>Tutorial en Espaol para <?php echo(APP_NAME." - ".APP_VERSION); ?></TITLE>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+<STYLE>
+A.topLink
+{
+	text-decoration: underline;
+	color: #0000C0;
+}
+
+A.topLink:hover, A.topLink:active
+{
+	color: #FF9900;
+	text-decoration: none;
+	font-weight: 800;
+}
+
+.redText
+{
+	font-weight: 800;
+	color: #FF0000;
+}
+</STYLE>
+</HEAD>
+
+<BODY BGCOLOR="#CCCCFF">
+
+<P><A NAME="top"></P>
+<TABLE BORDER="5" CELLPADDING="5">
+<TR>
+	<TD><FONT SIZE="+2">Contenidos del tutorial</FONT></TD>
+</TR>
+</TABLE><BR>
+
+<P CLASS="redText">
+<b>Atencin</b>: Los usuarios de Netscape, deben definir sus idiomas por omisin o cada carcter en los mensajes ser reemplazado por '?'.<BR>
+Esto puede realizarse de la siguiente manera: View/CharacterSet/your language
+Auto-Detect, entonces View/CharacterSet/SetDefault.
+</P>
+
+<?php
+if (C_MULTI_LANG == "1") 
+{
+	?>
+	<A HREF="#language" CLASS="topLink">Cambiar de idioma</A><BR>
+	<?php
+}
+?>
+<A HREF="#login" CLASS="topLink">Loguearse para el Chat</A><BR>
+<A HREF="#register" CLASS="topLink">Registrarse</A><BR>
+<A HREF="#modProfile" CLASS="topLink">Modificar<?php if (C_SHOW_DEL_PROF == "1") echo("/borrar "); ?> su perfil (datos)</A><BR>
+<?php
+if (C_VERSION == "2") 
+{
+	?>
+	<A HREF="#create_room" CLASS="topLink">Crear un saln de chat</A><BR>
+	<?php
+};
+if ($Ver == "H") 
+{
+	?>
+	<A HREF="#connection_state" CLASS="topLink"></A><BR>
+	<?php
+};
+?>
+<A HREF="#sending" CLASS="topLink">Enviar un mensaje</A><BR>
+<A HREF="#users_list" CLASS="topLink"></A><BR>
+<A HREF="#exit" CLASS="topLink">Salir de un saln de chat</A><BR>
+<A HREF="#users_popup" CLASS="topLink">Saber quien est chateando sin estar logueado</A><BR>
+<P>
+<A HREF="#customize" CLASS="topLink">Diagramar la vista del
+Chat</A><BR>
+<P>
+<A HREF="#commands" CLASS="topLink">Fisonoma y comandos:</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#help" CLASS="topLink">Comando Ayuda (help)</A><BR>
+<?php
+if (C_USE_SMILIES == "1")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#smilies" CLASS="topLink">Imgenes de caritas</A><BR>
+	<?php
+};
+if (C_HTML_TAGS_KEEP != "none")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#text" CLASS="topLink">Formato de texto</A><BR>
+	<?php
+};
+?>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#invite" CLASS="topLink">Invitar
+a un usuario a ingresar a su saln</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#changeroom" CLASS="topLink">Cambiar
+de un saln a otro</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#private" CLASS="topLink">Mensajes Privados</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#actions" CLASS="topLink">Acciones</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#ignore" CLASS="topLink">Ignorar a otros usuarios</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#whois" CLASS="topLink">Obtener
+informacin pblica de otros usuarios</A><BR>
+<?php
+if (C_SAVE != "0")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#save" CLASS="topLink">Salvar mensajes</A><BR>
+	<?php
+};
+?>
+<P>
+<A HREF="#moderator" CLASS="topLink">Comandos especiales para
+moderador(es) y/o el administrador:</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#announce" CLASS="topLink">Enviar
+un anuncio</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#kick" CLASS="topLink">Kickear a un usuario</A><BR>
+<?php
+if (C_BANISH != "0")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#banish" CLASS="topLink">Banear a un usuario</A><BR>
+	<?php
+};
+?>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#promote" CLASS="topLink">Promover
+a un usuario a moderador del saln</A><BR>
+<P>
+<HR>
+<HR>
+
+<p><a name=language><?php if (C_MULTI_LANG == "1")  {  ?><b><span
+style='font-size:13.5pt'>Cambiando de idioma:</span></b></a> </p>
+
+<p>Pods cambiar a un idioma al cual <?php echo(APP_NAME); ?> ha sido
+traducido haciendo click en una de las banderas de la pgina inicial. En el
+ejemplo de abajo, un usuario ha seleccionado el idioma Francs: </p>
+
+<p align=center style='text-align:center'><img border=0 width=424 height=44
+id="_x0000_i1027" src="images\tutorials\flags.gif"
+alt="Banderas para la seleccin de idiomas"></p>
+
+<p align=right style='text-align:right'><a href="#top">Volver al comienzo</a></p>
+
+
+<div class=MsoNormal align=center style='text-align:center'>
+
+<hr size=2 width="100%" align=center>
+
+</div>
+
+
+<p><a name=login><?php } ?><b><span style='font-size:13.5pt'>Login: </span></b></a>
+</p>
+
+<p>Si ya ests registrado, simplemente ingres tu nombre de usuario y
+contrasea. Luego seleccion el saln de chat al que deseas ingresar y despus presion el
+botn <b>Chat</b>.<br style='mso-special-character:line-break'>
+<![if !supportLineBreakNewLine]><br style='mso-special-character:line-break'>
+<![endif]><?php if (C_REQUIRE_REGISTER == "1") {  ?></p>
+
+<p>Tienes que <a href="#register">registrarte</a> primero. <?php } else {  ?></p>
+
+<p>Puedes <a href="#register">registrarte</a> primero o simplemente
+ingresar a un saln pero en ese caso tu <i>nick</i> (alias) no podr ser reservado (otro usuario puede
+utilizar ese mismo <i>nick</i> una vez que vos hayas salido del chat). <?php } ?></p>
+
+<p align=right style='text-align:right'><a href="#top">Volver al comienzo</a></p>
+
+
+<div class=MsoNormal align=center style='text-align:center'>
+
+<hr size=2 width="100%" align=center>
+
+</div>
+
+
+<p><a name=register><b><span style='font-size:13.5pt'>Registrndose:</span></b></a>
+</p>
+
+<p>Si todava no ests registrado <?php if (C_REQUIRE_REGISTER == "0") echo("y deseas hacerlo "); ?>,
+elije la opcin de registracin. Una pequea ventana se abrir. </p>
+
+<ul type=disc>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l3 level1 lfo1;tab-stops:list 36.0pt'>Primero, crear un nombre de
+     usuario<?php if (!C_EMAIL_PASWD) echo(" y una contrasea"); ?> para vos
+     ingresando en los lugares apropiados. El nombre de usuario que elijas,
+     ser, automticamente, mostrado en el saln de chat. No puede contener
+     espacios, comas o barras (\). <?php if (C_NO_SWEAR == "1") echo(" No puede contener \"malas palabras\"."); ?></li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l3 level1 lfo1;tab-stops:list 36.0pt'>Segundo, Ingres tu nombre,
+     apellido, y tu direccin de email. Para ser registrado como usuario
+     en el chat, toda esta informacin debe ser provista. La
+     informacin sobre sexo es opcional. </li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l3 level1 lfo1;tab-stops:list 36.0pt'>Si tens una pgina
+     Web, pods ingresar su URL en la casilla correspondiente. </li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l3 level1 lfo1;tab-stops:list 36.0pt'>El campo del idioma puede
+     ayudar a otros usuarios en futuras discusiones. Ellos sabrn los idiomas
+     que conocs. </li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l3 level1 lfo1;tab-stops:list 36.0pt'>Finalmente, si te interesa que
+     que tu direccin de email pueda ser vista por otros usuarios, marc la
+     casilla &quot;mostrar e-mail en informacin pblica&quot;. Si no
+     deseas que tu direccin de e-mail sea vista, dej la casilla sin marcar. </li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l3 level1 lfo1;tab-stops:list 36.0pt'>Luego presion el botn
+     de Registro y tu cuenta ser creada. Si deseas detener en algn
+     momento la registracin, presion el botn Cerrar. </li>
+</ul>
+
+<p style='margin-bottom:12.0pt'><a name=modProfile></a>Por supuesto, los
+usuarios registrados podrn modificar<?php if (C_SHOW_DEL_PROF == "1") echo("/borrar "); ?>
+sus propios datos haciendo click en el campo apropiado.</p>
+
+<p align=right style='text-align:right'><a href="#top">Volver al comienzo</a></p>
+
+
+<div class=MsoNormal align=center style='text-align:center'>
+
+<hr size=2 width="100%" align=center>
+
+</div>
+
+
+<p><a name="create_room"><?php if (C_VERSION == "2")  {  ?><b><span
+style='font-size:13.5pt'>Creando un saln:</span></b></a> </p>
+
+<p>Los usuarios registrados pueden crear salones. Los salones Privados pueden ser
+accedidos solamente por usuarios que conocen su nombre y nunca se muestran
+excepto para usuarios que estn registrados para el mismo.</p>
+
+<p>Los nombres de salones no pueden contener comas o barras (\).<?php if (C_NO_SWEAR == "1") echo(" No pueden contener \"malas palabras\"."); ?>
+</p>
+
+<p align=right style='text-align:right'><a href="#top">Volver al comienzo</a></p>
+
+
+<div class=MsoNormal align=center style='text-align:center'>
+
+<hr size=2 width="100%" align=center>
+
+</div>
+
+
+<p><a name="connection_state"><?php }; if ($Ver == "H") {  ?><b><span
+style='font-size:13.5pt'>Verificando estado de la conexin:</span></b></a> </p>
+
+<p>Un smbolo, arriba y a la derecha de la pantalla le muestra el estado de su
+conexin. Puede tomar 3 formas: </p>
+
+<ul type=disc>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l0 level1 lfo2;tab-stops:list 36.0pt'><img border=0 width=13
+     height=13 id="_x0000_i1032" src="images\connectOff.gif" alt="Sin conexin">cuando
+     la conexin no es requerida; </li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l0 level1 lfo2;tab-stops:list 36.0pt'><img border=0 width=13
+     height=13 id="_x0000_i1033" src="images\connectOn.gif" alt="Conectando">cuando
+     la conexin est en progreso; </li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l0 level1 lfo2;tab-stops:list 36.0pt'><img border=0 width=13
+     height=13 id="_x0000_i1034" src="images\connectError.gif"
+     alt="La conexin ha fallado">cuando hay una falla en la conexin. </li>
+</ul>
+
+<p>En el tercer caso, haciendo click en el botn rojo podr establecer una
+nueva conexin. </p>
+
+<p align=right style='text-align:right'><a href="#top">Volver al comienzo</a></p>
+
+
+<div class=MsoNormal align=center style='text-align:center'>
+
+<hr size=2 width="100%" align=center>
+
+</div>
+
+
+<p><a name=sending><?php }; ?><b><span style='font-size:13.5pt'>Enviando
+mensajes:</span></b></a> </p>
+
+<p>Para incluir un mensaje en el saln de chat, escrib adentro de la barra de
+abajo desde la izquierda y presione el Enter/Return para enviarlo. Mensajes de
+todos los usuarios pasan por la pantalla.<br style='mso-special-character:line-break'>
+<![if !supportLineBreakNewLine]><br style='mso-special-character:line-break'>
+<![endif]><?php if (C_NO_SWEAR == "1") echo("Notar que las \"malas palabras\" son salteadas en los mensajes."); ?></p>
+
+<p>Usted puede cambiar el color de texto de sus mensajes por otro color de la
+lista que se encuentra en la caja de la derecha. </p>
+
+<p align=right style='text-align:right'><a href="#top">Volver al comienzo</a></p>
+
+
+<div class=MsoNormal align=center style='text-align:center'>
+
+<hr size=2 width="100%" align=center>
+
+</div>
+
+
+<p><a name="users_list"><b><span style='font-size:13.5pt'>Verificando la lista
+de usuarios (no para usuarios de ventana activa):</span></b></a> </p>
+
+<p class=MsoNormal style='margin-left:36.0pt'>Dos reglas bsicas han sido
+definidas para la lista de usuarios:</p>
+
+<ol start=1 type=1>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l4 level1 lfo3;tab-stops:list 36.0pt'>Un pequeo icono (que
+     indica tambin su sexo) es mostrado antes del nick de un usuario registrado.
+     Haciendo click sobre l, se abrir <a href="#whois">la ventana de bsqueda</a>
+     para este usuario, mientras que para usuarios no registrados no se presenta
+     ningn signo o cono asociado a su <i>nick</i> (alias);</li>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l4 level1 lfo3;tab-stops:list 36.0pt'>El nick del administrador o
+     del moderador aparece con caracteres itlicos. </li>
+</ol>
+
+<p><i>Por ejemplo</i>, en la figura de abajo puedes observar: </p>
+
+<table border=0 cellspacing=10 cellpadding=0 style='mso-cellspacing:7.5pt'>
+ <tr>
+  <td style='padding:.75pt .75pt .75pt .75pt'>
+  <p class=MsoNormal><img border=0 width=128 height=145 id="_x0000_i1038"
+  src="images\tutorials\usersList.gif" alt="lista de usuarios"></p>
+  </td>
+  <td style='padding:.75pt .75pt .75pt .75pt'>
+  <ul type=disc>
+   <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
+       auto;mso-list:l1 level1 lfo4;tab-stops:list 36.0pt'>Nicolas es el administrador
+       o uno de los moderadores del saln phpMyChat;</li>
+   <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
+       auto;mso-list:l1 level1 lfo4;tab-stops:list 36.0pt'>alien (cuyo sexo
+       no se ha especificado), Jezek2 y Caridad son usuarios registrados sin
+       "atributos" especiales para el saln phpMyChat;</li>
+   <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
+       auto;mso-list:l1 level1 lfo4;tab-stops:list 36.0pt'>lolo es un simple
+       usuario no registrado.</li>
+  </ul>
+  </td>
+ </tr>
+</table>
+
+<p><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>
+
+<p align=right style='text-align:right'><a href="#top">Volver al comienzo</a></p>
+
+
+<div class=MsoNormal align=center style='text-align:center'>
+
+<hr size=2 width="100%" align=center>
+
+</div>
+
+
+<p><a name=exit><b><span style='font-size:13.5pt'>Dejando un saln de chat:</span></b></a>
+</p>
+
+<p>Para salir del chat, simplemente haga click sobre &quot;Salir&quot;.
+Alternativamente, usted puede tambin ingresar uno de los siguientes comandos
+en la barra de escritura:<br>
+/exit<br>
+/bye<br>
+/quit Estos comandos pueden ser complementados por mensajes antes de dejar el
+saln de chat. <i>Por ejemplo:</i> /quit CU pronto! </p>
+
+<p>Se enviar el mensaje &quot;CU pronto!&quot; en la pantalla general y
+entonces usted saldr del chat. </p>
+
+<p align=right style='text-align:right'><a href="#top">Volver al comienzo</a></p>
+
+
+<div class=MsoNormal align=center style='text-align:center'>
+
+<hr size=2 width="100%" align=center>
+
+</div>
+
+
+<p><a name="users_popup"><b><span style='font-size:13.5pt'>Conociendo quin
+esta chateando sin estar logueado:</span></b></a> </p>
+
+<p>Usted puede hacer click en el vnculo que muestra el nmero de usuarios
+conectados en el comienzo de la pgina, o, si usted est chateando, haga click
+en la imagen <img border=0 width=13 height=13 id="_x0000_i1041"
+src="images\popup.gif" alt="Ventana de usuarios">hacia arriba y a la derecha de la
+pantalla, para abrir una ventana independiente que mostrar la lista de usuarios
+conectados, los salones en que ellos estn, y casi en tiempo real.<br>
+El ttulo de esta ventana contiene el nombre de los usuarios, si ellos son
+menos que tres, el nmero de usuarios y salones abiertos. </p>
+
+<p>Haciendo click en el icono <img border=0 width=13 height=13 id="_x0000_i1042"
+src="images\sound.gif" alt=Beeps>arriba de esta imagen sern
+activados/desactivados los sonidos de los usuarios entrantes. </p>
+
+<p align=right style='text-align:right'><a href="#top">Volver al comienzo</a></p>
+
+
+<div class=MsoNormal align=center style='text-align:center'>
+
+<hr size=2 width="100%" align=center>
+
+</div>
+
+
+<div class=MsoNormal align=center style='text-align:center'>
+
+<hr size=2 width="100%" align=center>
+
+</div>
+
+
+<p><a name=customize><b><span style='font-size:13.5pt'>Diagramando la vista del
+Chat:</span></b></a> </p>
+
+<p>Hay varias formas de diagramar cmo se vern las ventanas del chat. Para
+cambiar las configuraciones, simplemente escribe el comando apropiado dentro de la caja
+de texto y presione Intro/Enter/Return. <o:p></o:p></p>
+
+<ul type=disc>
+ <?php  if ($Ver == "H")  {   ?>
+ <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
+     mso-list:l2 level1 lfo5;tab-stops:list 36.0pt'>El <b>comando Clear</b>
+     te permite limpiar la pantalla general y mostrar los ltimos 5
+     mensajes enviados a tu pantalla.<br>
+     Escrib &quot;/clear&quot; sin comillas. <o:p></o:p></li>
+</ul>
+
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo5;
+tab-stops:list 36.0pt'><?php  }  else  {   ?><![if !supportLists]><span
+style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol'><span
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span><![endif]>El <b>comando Order</b> te permite verificar
+nuevos mensajes que aparecen arriba o abajo de la pantalla.<br>
+Escrib &quot;/order&quot; sin comillas. <o:p></o:p></p>
+
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo5;
+tab-stops:list 36.0pt'><?php  };  ?><![if !supportLists]><span
+style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol'><span
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span><![endif]>El <b>comando Notify</b> te permite saber cundo
+otros usuarios estn adentro o afuera del saln de chat. Por omisin, esta
+opcin es <?php echo(C_NOTIFY ? "on" : "off"); ?>y las notas <?php echo(C_NOTIFY ? "" : "no "); ?>sern
+vistas.<br>
+Escrib &quot;/notify&quot; sin comillas. </p>
+
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo5;
+tab-stops:list 36.0pt'><![if !supportLists]><span style='font-size:10.0pt;
+mso-bidi-font-size:12.0pt;font-family:Symbol'><span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span><![endif]>El <b>comando Timestamp</b> te permite saber el
+tiempo (hora) en que un mensaje ha sido enviado, y la hora del servidor en la barra de
+estado. Por omisin esta opcin es <?php echo(C_SHOW_TIMESTAMP ? "on" : "off"); ?>.
+<br>
+Escrib &quot;/timestamp&quot; sin comillas. </p>
+
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo5;
+tab-stops:list 36.0pt'><![if !supportLists]><span style='font-size:10.0pt;
+mso-bidi-font-size:12.0pt;font-family:Symbol'><span style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span><![endif]>El <b>comando Refresh</b> te permite ajustar la
+frecuencia con la cual los mensajes son actualizados en tu pantalla. La frecuencia por omisino es, <?php echo(C_MSG_REFRESH); ?>segundos.
+Para cambiar esta frecuencia escrib &quot;/refresh n&quot; sin comillas donde n es el
+tiempo en segundos de la nueva frecuencia de actualizacin. </p>
+
+<p style='margin-left:36.0pt'><i>Por ejemplo:</i> /refresh 5 </p>
+
+<p style='margin-left:36.0pt'>cambiar la frecuencia a 5 segundos. *Advertencia, si n es
+menor que 3, no se efectuar actualizacin. (Esta opcin se usa generalmente cuando quers
+leer muchos mensajes viejos sin ser perturbado)!* <o:p></o:p></p>
+
+<p style='margin-left:36.0pt;text-indent:-18.0pt;mso-list:l2 level1 lfo5;
+tab-stops:list 36.0pt'><?php  if ($Ver == "L")  {   ?><![if !supportLists]><span
+style='font-size:10.0pt;mso-bidi-font-size:12.0pt;font-family:Symbol'><span
+style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+</span></span><![endif]>El <b>comando Show</b> te permite ajustar el nmero de
+mensajes mostrados en tu pantalla. Para cambiar el valor por
+omisin, escrib &quot;/show n&quot; sin comillas, donde n es el nmero de
+mensajes a ser mostrados. </p>
+
+<p style='margin-left:36.0pt'><i>Por ejemplo:</i> /show 50 </p>
+
+<p style='margin-left:36.0pt'>causar que 50 nuevos mensajes sean mostrados
+en tu pantalla. Si todos los mensajes no pueden ser mostrados a travs de la
+caja, una barra de scroll aparecer a la derecha de la misma.<o:p></o:p></p>
+
+<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><span
+style='font-family:Symbol;mso-ascii-font-family:"Times New Roman"'><?php  }  else  {   ?></span><span
+style="mso-spacerun: yes">&nbsp; </span>El <b>comandos Show y Last</b> te permiten
+a limpiar la pantalla y mostrar los <i>n</i> mensajes enviados a tu
+pantalla. Escrib &quot;/show n&quot; o &quot;/last n&quot; sin comillas, donde n
+es el nmero de mensajes a mostrar. </p>
+
+<p><i>Por ejemplo:</i> /show 50 o /last 50 </p>
+
+<p>limpiar la pantalla y provocar que 50 nuevos mensajes sean mostrados.
+Si todos los mensajes no pueden ser vistos en la caja, una barra de scroll
+aparecer a la derecha de la misma.<o:p></o:p></p>
+
+<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></p>
+
+<?php  };  ?>
+
+<p align=right style='text-align:right'><a href="#top">Volver al comienzo</a></p>
+
+
+<div class=MsoNormal align=center style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
+auto;text-align:center'>
+
+<hr size=2 width="100%" align=center>
+
+</div>
+
+
+<div class=MsoNormal align=center style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
+auto;text-align:center'>
+
+<hr size=2 width="100%" align=center>
+
+</div>
+
+
+<p><a name=commands><b><u><span style='font-size:18.0pt'>Fisonoma y comandos</span></u></b></a>
+</p>
+
+<p><a name=help><b><span style='font-size:13.5pt'>comando Help (Ayuda):</span></b></a> </p>
+
+<p>Una vez que ests en un saln, puedes acceder a la pantalla de ayuda (<i>help</i>)
+haciendo <i>click</i> en el cono <img border=0 width=15 height=15 id="_x0000_i1047" src="images\helpOff.gif" alt="?"> 
+situado justo antes de la caja de mensajes. Si no, pods escribir <b>&quot;/help&quot;
+o &quot;/?&quot; comandos</b> en la caja de mensajes. </p>
+
+<p align=right style='text-align:right'><a href="#top">Volver al comienzo</a></p>
+
+
+<div class=MsoNormal align=center style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
+auto;text-align:center'>
+
+<hr size=2 width="100%" align=center>
+
+</div>
+
+
+<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><a
+name=smilies><?php if (C_USE_SMILIES == "1") {  include("./lib/smilies.lib.php");  $Nb = count($SmiliesTbl);  $ResultTbl = Array();  DisplaySmilies($ResultTbl,$SmiliesTbl,$Nb,"tutorial");  unset($SmiliesTbl);  ?><b><span
+style='font-size:13.5pt'>Caritas (<i>emoticons</i>):</span></b></a> </p>
+
+<p>Pods insertar caritas en los mensajes. Observ abajo los cdigos que
+tens que escribir para obtener las diferentes caritas. <o:p></o:p></p>
+
+<P ALIGN="center">
+	<TABLE BORDER=0 CELLPADDING=3 CELLSPACING=5>
+	<?php
+	$i = "0";
+	$Nb = count($ResultTbl);
+	while($i < $Nb)
+	{
+		if ($i > 0) echo("\t");
+		echo("<TR VALIGN=\"BOTTOM\">\n");
+		echo("$ResultTbl[$i]");
+		echo("\t</TR>\n\t<TR>\n");
+		$i++;
+		echo("$ResultTbl[$i]");
+		echo("\t</TR>\n");
+		$i++;
+	};
+	unset($ResultTbl);
+	?>
+	</TABLE>
+	<P>
+
+<p><i>Por ejemplo</i>, enviando el texto &quot;Hola Jack :)&quot; sin comillas,
+se mostrar el mensaje completo as Hola Jack <img border=0 width=15 height=15
+id="_x0000_i1049" src="images\smilies\smile1.gif" alt=":)">en la pantalla
+general o principal. </p>
+
+<p align=right style='text-align:right'><a href="#top">Volver al comienzo</a></p>
+
+
+<div class=MsoNormal align=center style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
+auto;text-align:center'>
+
+<hr size=2 width="100%" align=center>
+
+</div>
+
+
+<p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'><a
+name=text><?php };  if (C_HTML_TAGS_KEEP != "none") {  ?><b><span
+style='font-size:13.5pt'>Formato de texto:</span></b></a> </p>
+
+<p>El texto puede ser con negritas, itlicas o subrayado aplicando &lt;B&gt;
+&lt;/B&gt;, &lt;I&gt; &lt;/I&gt; o &lt;U&gt; &lt;/U&gt; HTML tags. </p>
+
+<p><i>Por ejemplo</i>, &lt;B&gt;este texto&lt;/B&gt; producir <b>este texto</b>.
+</p>
+
+<p>Para crear un hipervnculo para una direccin de e-mail o URL, escrib la
+direccin (sin HTML tags). El hipervnculo ser creado automticamente. </p>
+
+<p align=right style='text-align:right'><a href="#top">Volver al comienzo</a></p>
+
+
+<div class=MsoNormal align=center style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
+auto;text-align:center'>
+
+<hr size=2 width="100%" align=center>
+
+</div>
+
+
+<p><a name=invite><?php }; ?><b><span style='font-size:13.5pt'>Invitando a un
+usuario a ingresar a su saln:</span></b></a> </p>
+
+<p>Usted puede utilizar el <b>comando invite</b> para invitar a un usuario a
+ingresar a su saln de chat. </p>
+
+<p><i>Por ejemplo:</i> /invite Jack </p>
+
+<p>enviar un mensaje privado a Jack sugirindole que entre a su saln. Este
+mensaje contiene el nombre del saln especfico, y este nombre aparece como un
+vnculo. </p>
+
+<p>Note que usted puede poner ms de un nombre de usuario en el comando invite
+(eg &quot;/invite Jack,Helen,Alf&quot;). Ellos tienen que estar separados por
+comas (,) pero sin espacios. </p>
+
+<p align=right style='text-align:right'><a href="#top">Volver al comienzo</a></p>
+
+
+<div class=MsoNormal align=center style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
+auto;text-align:center'>
+
+<hr size=2 width="100%" align=center>
+
+</div>
+
+
+<p><a name=changeroom><b><span style='font-size:13.5pt'>Cambiando de salones:</span></b></a>
+</p>
+
+<p>La lista a la derecha de la pantalla provee una lista de salones de chat y
+los usuarios que estn en esos salones. Para dejar un saln y pasar a otro,
+simplemente haga click en el saln adonde quiere ingresar. Salones vacos no
+aparecen en la lista. Usted puede moverse a un saln vaco tipeando <b>comando
+&quot;/join #nombresaln&quot;</b> sin comillas. </p>
+
+<p><i>Por ejemplo:</i> /join #Salnrojo </p>
+
+<p>lo llevar a usted al nuevo saln llamado Salnrojo. <?php if (C_VERSION == "2") {  echo(C_REQUIRE_REGISTER == "0" ? "<P>Si usted es un usuario registrado, usted" : "<BR><P>Usted");  ?> puede
+crear un nuevo saln con este comando. Pero entonces usted tiene que
+especificar el tipo: 0 para salones privados, 1 para salones pblicos (valor
+por defecto). </p>
+
+<p><i>Por ejemplo:</i> /join 0 #MiSaln </p>
+
+<p>crea un nuevo saln privado (asumiendo que no hay un saln pblico creado
+con ese mismo nombre) llamado MiSaln y usted ingresa a ese saln. </p>
+
+<p>Los nombres de los salones no pueden contener comas o barras (\).<?php if (C_NO_SWEAR == "1") echo(" No pueden contener \"malas palabras\"."); ?>
+<?php } ?></p>
+
+<p align=right style='text-align:right'><a href="#top">Volver al comienzo</a></p>
+
+
+<div class=MsoNormal align=center style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
+auto;text-align:center'>
+
+<hr size=2 width="100%" align=center>
+
+</div>
+
+
+<p><b><span style='font-size:13.5pt'>Modificando su perfil(datos) adentro del
+chat:</span></b> </p>
+
+<p>El <b>comando Profile</b> Crea una ventana separada con la que puede editar
+sus datos y modificarlos excepto el nick y la contrasea (usted tiene que utilizar
+el vnculo en el comienzo de la pgina para realizar esto).<br>
+Escrib /profile </p>
+
+<p align=right style='text-align:right'><a href="#top">Volver al comienzo</a></p>
+
+
+<div class=MsoNormal align=center style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
+auto;text-align:center'>
+
+<hr size=2 width="100%" align=center>
+
+</div>
+
+
+<p><b><span style='font-size:13.5pt'>Rellamando el ltimo mensaje o comando que
+has realizado:</span></b> </p>
+
+<p>El <b>comando ! </b>rellama el ltimo mensaje o comando que has 
+realizado.<br>
+Escrib /! </p>
+
+<p align=right style='text-align:right'><a href="#top">Volver al comienzo</a></p>
+
+
+<div class=MsoNormal align=center style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
+auto;text-align:center'>
+
+<hr size=2 width="100%" align=center>
+
+</div>
+
+
+<p><b><span style='font-size:13.5pt'>Respondiendo a un usuario especfico:</span></b>
+</p>
+
+<p>Haciendo click sobre el nombre de otro usuario de la lista (a la derecha de
+la pantalla) causar que su &quot;nombre de usuario&gt;&quot; aparezca en la
+caja de texto. Esta accin te permitir dirigirle un mensaje pblico a ese
+usuario. </p>
+
+<p align=right style='text-align:right'><a href="#top">Volver al comienzo</a></p>
+
+
+<div class=MsoNormal align=center style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
+auto;text-align:center'>
+
+<hr size=2 width="100%" align=center>
+
+</div>
+
+
+<p><a name=private><b><span style='font-size:13.5pt'>Mensajes Privados:</span></b></a>
+</p>
+
+<p>Para enviar un mensaje privado a otro usuario del saln, escrib el <b>comando
+&quot;/msg usuario texto&quot; o &quot;/to usuario texto&quot;</b>
+sin comillas. </p>
+
+<p><i>Por ejemplo, donde Jack es el nombre de usuario:</i> /msg Jack Hola,
+cmo ests? </p>
+
+<p>Este mensaje le aparecer a Jack y a vos, pero otros usuarios no podrn
+verlo. </p>
+
+<p>Not que haciendo click sobre el nick de un usuario en la
+pantalla general, automticamente, se aade este comando en el campo para mensajes.
+</p>
+
+<p align=right style='text-align:right'><a href="#top">Volver al comienzo</a></p>
+
+
+<div class=MsoNormal align=center style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
+auto;text-align:center'>
+
+<hr size=2 width="100%" align=center>
+
+</div>
+
+
+<p><a name=actions><b><span style='font-size:13.5pt'>Acciones:</span></b></a> </p>
+
+<p>Para describir lo que ests haciendo puede utilizar el <b>comando
+&quot;/me accin&quot;</b> sin comillas. </p>
+
+<p><i>Por ejemplo:</i> Si Jack enva el mensaje &quot;/me est fumando un
+cigarrillo&quot; en la pantalla se mostrar &quot;<b>* Jack</b>&quot; est
+fumando un cigarrillo&quot;. </p>
+
+<p align=right style='text-align:right'><a href="#top">Volver al comienzo</a></p>
+
+
+<div class=MsoNormal align=center style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
+auto;text-align:center'>
+
+<hr size=2 width="100%" align=center>
+
+</div>
+
+
+<p><a name=ignore><b><span style='font-size:13.5pt'>Ignorando a otros usuarios:</span></b></a>
+</p>
+
+<p>Para ignorar todos los mensajes de otro usuario, escrib el <b>comando
+&quot;/ignore usuario&quot;</b> sin comillas. </p>
+
+<p><i>Por ejemplo:</i> /ignore Jack </p>
+
+<p>Durante el tiempo en que ests chateando, no te aparecern mensajes de Jack. </p>
+
+<p>Para tener una lista de usuarios cuyos mensajes son ignorados, escrib el <b>comando
+&quot;/ignore&quot;</b> sin comillas. </p>
+
+<p>Para volver a recibir mensajes de un usuario al que previamente habas indicado ignorar, escrib el <b>comando
+&quot;/ignore - usuario&quot;</b> sin comillas, donde &quot;-&quot; es un
+guin. </p>
+
+<p><i>Por ejemplo:</i> /ignore - Jack </p>
+
+<p>Ahora todos los mensajes de Jack durante la sesin sern mostrados,
+incluyendo todos los mensajes enviados por Jack antes de escribir este
+comando. 
+<p>
+Si no especifics ningn nombre de usuario despus del guin,
+tu &quot;lista de usuarios ignorados&quot; ser limpiada. </p>
+
+<p>Not que pods poner ms de un usuario con el comando ignore (p.ej.
+&quot;/ignore Jack,Helen,Alf&quot; o &quot;/ignore - Jack,Alf&quot;). Ellos
+deben ser agregados separados por comas (,) sin espacios. </p>
+
+<p align=right style='text-align:right'><a href="#top">Volver al comienzo</a></p>
+
+
+<div class=MsoNormal align=center style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
+auto;text-align:center'>
+
+<hr size=2 width="100%" align=center>
+
+</div>
+
+
+<p><a name=whois><b><span style='font-size:13.5pt'>Obteniendo informacin
+acerca de otros usuarios:</span></b></a> </p>
+
+<p>Para ver la informacin pblica de otros usuarios, escrib el <b>comando
+&quot;/whois usuario&quot;</b> sin comillas. </p>
+
+<p><i>Por ejemplo:</i> /whois Jack </p>
+
+<p>donde 'Jack' es el nombre de usuario. Este comando abre una ventana
+separada que te mostrar la informacin pblica declarada por el usuario. </p>
+
+<p align=right style='text-align:right'><a href="#top">Volver al comienzo</a></p>
+
+
+<div class=MsoNormal align=center style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
+auto;text-align:center'>
+
+<hr size=2 width="100%" align=center>
+
+</div>
+
+
+<p><a name=save><?php if (C_SAVE != "0") {  ?><b><span style='font-size:13.5pt'>Salvando
+mensajes:</span></b></a> </p>
+
+<p>Para exportar mensajes (notificaciones excludas) a un archivo local HTML,
+escrib el <b>comando &quot;/save n&quot;</b> sin comillas. </p>
+
+<p><i>Por ejemplo:</i> /save 5 </p>
+
+<p>donde '5' es el nmero de mensajes a salvar. Si n no est especificado,
+todos los mensajes correspondientes al saln actual sern aadidos en la
+cuenta. </p>
+
+<p align=right style='text-align:right'><a href="#top">Volver al comienzo</a></p>
+
+
+<div class=MsoNormal align=center style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
+auto;text-align:center'>
+
+<hr size=2 width="100%" align=center>
+
+</div>
+
+
+<div class=MsoNormal align=center style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
+auto;text-align:center'>
+
+<hr size=2 width="100%" align=center>
+
+</div>
+
+<?php }; ?>
+
+<p><a name=moderator><b><u><span style='font-size:18.0pt'>Comandos para el
+administrador y/o moderadores solamente</span></u></b></a> </p>
+
+<P>
+<FONT SIZE="+1"><A NAME="announce"><B>Enviando un anuncio:</B></A></FONT>
+<P>
+
+<p>El administrador puede enviar un anuncio a todos los usuarios con el <b>comando
+announce</b>. </p>
+
+<p><i>Por ejemplo: /announce El sistema de chat quedar fuera de funcionamiento
+por mantenimiento a las 8 p.m..</i> </p>
+
+<p align=right style='text-align:right'><a href="#top">Volver al comienzo</a></p>
+
+
+<div class=MsoNormal align=center style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
+auto;text-align:center'>
+
+<hr size=2 width="100%" align=center>
+
+</div>
+
+
+<p><a name=kick><b><span style='font-size:13.5pt'>Expulsando (<i>Kickeando</i>) a un usuario:</span></b>
+</a></p>
+
+<p><span style='mso-bookmark:kick'>Los moderadores pueden <i>kickear</i> (expulsar) a un usuario, y el
+administrador puede <i>kickear</i> a un usuario o al moderador con el <b>comando kick</b>.
+Excepto para el administrador, el usuario a ser <i>kickeado</i> debe estar en el
+saln actual. </span></p>
+
+<p><span style='mso-bookmark:kick'><i>Por ejemplo</i>, si Jack es el nombre del
+usuario a <i>kickear</i>: /kick Jack </span></p>
+
+<span style='mso-bookmark:kick'></span>
+
+<p align=right style='text-align:right'><a href="#top">Volver al comienzo</a></p>
+
+
+<div class=MsoNormal align=center style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
+auto;text-align:center'>
+
+<hr size=2 width="100%" align=center>
+
+</div>
+
+
+<p><a name=banish><?php if (C_BANISH != "0") {  ?><b><span style='font-size:
+13.5pt'>Bloqueando <i>Baneando</i> a un usuario:</span></b></a> </p>
+
+<p>Los moderadores pueden <i>banear</i> (bloquear) a un usuario, o a un moderador con el <b>comando
+ban</b>.<br>
+El administrador puede <i>banear</i> a un usuario que est chateando en otro saln. 
+El administrador tambin puede <i>banear</i> a un usuario para siempre de un saln, o
+de <b>todos los salones<b> anteponiendo un '<b>&nbsp;*&nbsp;</b>'
+al nick del usuario que va a ser baneado. </p>
+
+<p><i>Por ejemplo</i>, si Jack es el nombre del usuario a ser baneado: <i>/ban
+Jack</i> o <i>/ban * Jack</i> </p>
+
+<p align=right style='text-align:right'><a href="#top">Volver al comienzo</a></p>
+
+
+<div class=MsoNormal align=center style='mso-margin-top-alt:auto;mso-margin-bottom-alt:
+auto;text-align:center'>
+
+<hr size=2 width="100%" align=center>
+
+</div>
+
+
+<p><a name=promote><?php }; ?><b><span style='font-size:13.5pt'>Promoviendo a un
+usuario al nivel de moderador:</span></b></a> </p>
+
+<p>Los Moderadores y el Administrador pueden promover a otros usuarios a
+moderadores con el <b>comando promote</b>. </p>
+
+<p><i>Por ejemplo</i>, si Jack es el nombre del usuario a ser promovido:<i>
+/promote Jack</i> </p>
+
+<p>Solamente el administrador puede oponerse a esta accin (reduce al moderador
+a un simple usuario) en una pgina dedicada. No hay comando para realizar esto.
+</p>
+
+<p align=right style='text-align:right'><a href="#top">Volver al comienzo</a></p>
+
+</div>
+
+</body>
+
+</html>
diff -ruN 0.14.5/chat/localization/argentinian_spanish/regex.txt 0.15.0/chat/localization/argentinian_spanish/regex.txt
--- 0.14.5/chat/localization/argentinian_spanish/regex.txt	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/argentinian_spanish/regex.txt	2004-04-01 03:06:45.000000000 -0600
@@ -0,0 +1 @@
+es[-_]ar
\ No newline at end of file
Binary files 0.14.5/chat/localization/azerbaijani/azeri_fonts.zip and 0.15.0/chat/localization/azerbaijani/azeri_fonts.zip differ
Binary files 0.14.5/chat/localization/azerbaijani/flag.gif and 0.15.0/chat/localization/azerbaijani/flag.gif differ
diff -ruN 0.14.5/chat/localization/azerbaijani/localized.chat.php 0.15.0/chat/localization/azerbaijani/localized.chat.php
--- 0.14.5/chat/localization/azerbaijani/localized.chat.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/azerbaijani/localized.chat.php	2004-04-01 03:07:07.000000000 -0600
@@ -0,0 +1,227 @@
+<?php
+// File : azeri.lang.php
+// Translated by Emin Huseynov www.azersoft.com
+
+// extra header for charset
+$Charset = "windows-1254";
+
+// Some Azeri characters weren't well defined with the official iso code. The
+// vars below define the name of the fonts to use and of a zip file containing
+// them. An english message suggesting the user to download the file will be
+// displayed at the top of the start page.
+$FontPack = "azeri_fonts.zip";
+$FontName = "\"Lucida Sans Unicode\", \"Palatino Linotype\", AzerWeb";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// welcome page
+define("L_TUTORIAL", "Yard&#305;m");
+
+define("L_WEL_1", "Yaz&#305;lar g&ouml;st&#601;ril&#601;n vaxt m&uuml;dd&#601;tind&#601;n sonra silin&#601;c&#601;k-");
+define("L_WEL_2", "saat. &#304;stifad&#601;&ccedil;i adlar&#305;&nbsp; g&ouml;st&#601;ril&#601;n m&uuml;dd&#601;tind&#601;n sonra silin&#601;c&#601;k:");
+define("L_WEL_3", "d&#601;qiq&#601; ...");
+
+define("L_CUR_1", "&#304;stifad&#601;&ccedil;il&#601;rin say&#305;:");
+define("L_CUR_2", ".");
+define("L_CUR_3", "&Uuml;mumi otaqlarda istifad&#601;&ccedil;ilrin say&#305;:");
+define("L_CUR_4", "&#350;&#601;xsi otaqlarda istifad&#601;&ccedil;ilrin say&#305;:");
+
+define("L_SET_1", "L&uuml;tf&#601;n &ouml;z&uuml;n&uuml;z&#601; ...");
+define("L_SET_2", "istifad&#601;&ccedil;i ad&#305; se&ccedil;in");
+define("L_SET_3", "G&ouml;st&#601;ril&#601;n ismar&#305;clar&#305;n say&#305;:");
+define("L_SET_4", "S&#601;hif&#601; yenil&#601;nm&#601;l&#601;lin m&uuml;dd&#601;ti-");
+define("L_SET_5", "Otaq se&ccedil;in ...");
+define("L_SET_6", "&#399;sas otaqlar-");
+define("L_SET_7", "Se&ccedil;iminizi edin ...");
+define("L_SET_8", "&#304;stifad&#601;&ccedil;il&#601;r t&#601;r&#601;find&#601;n yarad&#305;lm&#305;&#351; &#351;&#601;xsi otaqlar");
+define("L_SET_9", "Otaq yarad&#305;n:   ");
+define("L_SET_10", "&uuml;m&uuml;mi");
+define("L_SET_11", "&#351;&#601;xsi");
+define("L_SET_12", "otaq");
+define("L_SET_13", "S&ouml;hb&#601;t&#601; ");
+define("L_SET_14", "ba&#351;la");
+
+define("L_SRC", "bu &uuml;nvanda pulsuz &#601;ld&#601; edil&#601; bil&#601;r:");
+
+define("L_SECS", "saniy&#601;");
+define("L_MIN", "d&#601;qiq&#601;");
+define("L_MINS", "d&#601;qiq&#601;");
+
+// registration stuff:
+define("L_REG_1", "parolunuzu daxil edin");
+define("L_REG_1r", "<br>(parol yaln&#305;z qeydiyyatda olanlar &uuml;&ccedil;&uuml;n <br>laz&#305;md&#305;r, &#601;ks halda buran&#305; bo&#351; saxlay&#305;n)");
+define("L_REG_2", "Hesab&#305;n&#305;za daxil olun");
+define("L_REG_3", "Qeydiyyatdan ke&ccedil;");
+define("L_REG_4", "Profiliniz&#601; bax&#305;n");
+define("L_REG_5", "&#304;stifad&#601;&ccedil;ini sil");
+define("L_REG_6", "&#304;stifad&#601;&ccedil;inin qeydiyyat&#305;");
+define("L_REG_7", "parol");
+define("L_REG_8", "e-mail &uuml;nvan&#305;n&#305;z");
+define("L_REG_9", "Qeydiyyatdan u&#287;urla ke&ccedil;diniz");
+define("L_REG_10", "Geri");
+define("L_REG_11", "M&#601;lumat&#305;n d&#601;yi&#351;dirilm&#601;si");
+define("L_REG_12", "&#304;stifad&#601;&ccedil;i haqq&#305;nda m&#601;lumat&#305;n d&#601;yi&#351;dirilm&#601;si");
+define("L_REG_13", "&#304;stifad&#601;&ccedil;inin l&#601;&#287;v edilm&#601;si");
+define("L_REG_14", "&#304;stifad&#601;&ccedil;i ad&#305;:");
+define("L_REG_15", "Daxil olun");
+define("L_REG_16", "D&#601;yi&#351;in");
+define("L_REG_17", "&#304;stifad&#601;&ccedil;ini haqq&#305;nda m&#601;lumat d&#601;yi&#351;ildi.");
+define("L_REG_18", "Siz bu otaqdan moderator t&#601;r&#601;find&#601;n qovulmusuz!");
+define("L_REG_19", "Ad&#305;n&#305;z&#305; do&#287;urdanm&#305; silm&#601;k ist&#601;yirsiniz?");
+define("L_REG_20", " B&#601;li");
+define("L_REG_21", "Ad&#305;n&#305;z&#305; qeydiyyatdan silindi.");
+define("L_REG_22", "Xeyir");
+define("L_REG_25", "Ba&#287;la");
+define("L_REG_30", "ad");
+define("L_REG_31", "soyad");
+define("L_REG_32", "VEB");
+define("L_REG_33", "e-mail &uuml;nvan&#305;n&#305; ba&#351;qalar&#305;da g&ouml;rs&uuml;n");
+define("L_REG_34", "&#304;stifad&#601;&ccedil;ini haqq&#305;nda m&#601;lumat&#305;n d&#601;yi&#351;ilm&#601;si");
+define("L_REG_35", "&#304;nzibat");
+define("L_REG_36", "Dill&#601;r");
+define("L_REG_37", "Bel&#601; <span class=\"error\">*</span>  i&#351;ar&#601;li m&#601;lumat m&uuml;tl&#601;q daxil olunmal&#305;d&#305;r");
+define("L_REG_39", "Oldu&#287;unuz otaq Administrator t&#601;r&#601;find&#601;n ba&#287;land&#305;.");
+define("L_REG_45", "cins");
+define("L_REG_46", "ki&#351;i");
+define("L_REG_47", "qad&#305;n");
+
+// e-mail validation stuff
+define("L_EMAIL_VAL_1", "Daxil olmaq &uuml;&ccedil;&uuml;n parametrl&#601;r");
+define("L_EMAIL_VAL_2", "Xo&#351; g&#601;ldiniz!");
+define("L_EMAIL_VAL_Err", "Daxili x&#601;ta. Administratorla &#601;laq&#601; saxlay&#305;n.: <a href=\"mailto:%s\">%s</a>.");
+define("L_EMAIL_VAL_Done", "Parolunuz <br>&uuml;nvan&#305;n&#305;za g&ouml;nd&#601;rildi.");
+
+// admin stuff
+define("L_ADM_1", "%s bu otaqda moderator deyil");
+define("L_ADM_2", "Siz qeydiyyatda deyilsiz.");
+
+// error messages
+define("L_ERR_USR_1", "Bu ad art&#305;q istifad&#601; olunur. Ba&#351;qas&#305;n&#305; se&ccedil;in.");
+define("L_ERR_USR_2", "&#304;stifad&#601;&ccedil;i ad&#305; se&ccedil;m&#601;lisiniz.");
+define("L_ERR_USR_3", "Bu ad qeydiyyatdad&#305;r. Parolu bilirsinizs&#601; daxil edin v&#601; ya ba&#351;qa ad se&ccedil;in.");
+define("L_ERR_USR_4", "Parol s&#601;hv daxil olunub.");
+define("L_ERR_USR_5", "&#304;stifad&#601;&ccedil;i ad&#305; daxil olunmal&#305;d&#305;r.");
+define("L_ERR_USR_6", " Parol daxil olunmal&#305;d&#305;r.");
+define("L_ERR_USR_7", "E-mail &uuml;nvan&#305; daxil olunmal&#305;d&#305;r.");
+define("L_ERR_USR_8", "E-mail &uuml;nvan&#305; d&uuml;zg&uuml;n daxil olunmal&#305;d&#305;r.");
+define("L_ERR_USR_9", "&#304;stifad&#601;&ccedil;i ad&#305; art&#305;q istifad&#601; olunur.");
+define("L_ERR_USR_10", "&#304;stifad&#601;&ccedil;i ad&#305; v&#601; ya parol s&#601;hvdir.");
+define("L_ERR_USR_11", "Administrator olmal&#305;s&#305;n&#305;z.");
+define("L_ERR_USR_12", "Administratoru silm&#601;k olmaz.");
+define("L_ERR_USR_13", "&Ouml;z&uuml;n&uuml;z otaq yaratmaq ist&#601;s&#601;z, g&#601;r&#601;k qeydiyyatdan ke&ccedil;&#601;siz.");
+define("L_ERR_USR_14", "Daxil olmaqdan &#601;vv&#601;l qeydiyyatdan ke&ccedil;m&#601;lisiz.");
+define("L_ERR_USR_15", "Tam ad&#305;n&#305;z&#305; daxil edin.");
+define("L_ERR_USR_16", "&#304;stifad&#601;&ccedil;i ad&#305;nda f&#601;za (bo&#351;luq), verg&uuml;l v&#601; ya &#601;ks k&#601;sr i&#351;ar&#601;sind&#601;n istifad&#601; etm&#601;k qada&#287;and&#305;r (\).");
+define("L_ERR_USR_17", "Bu otaq m&ouml;vcud deyil, v&#601; sizin yeni otaq yaratmaq ixtiyar&#305;n&#305;z yoxdur.");
+define("L_ERR_USR_18", "Se&ccedil;diyiniz adda qada&#287;an olunmu&#351; s&ouml;z m&ouml;vcuddur.");
+define("L_ERR_USR_19", "Siz eyni zamanda iki otaqda s&ouml;hb&#601;t ed&#601; bilm&#601;zsiz.");
+define("L_ERR_USR_20", "Siz&#601; bu otaqa v&#601; ya  &uuml;mumiyy&#601;tl&#601; chata giri&#351; qada&#287;an olunub.");
+define("L_ERR_ROM_1", "Otaq ad&#305;nda verg&uuml;l v&#601; ya &#601;ks k&#601;sr i&#351;ar&#601;sind&#601;n istifad&#601; etm&#601;k qada&#287;and&#305;r.");
+define("L_ERR_ROM_2", "Yaratmaq ist&#601;diyiniz otaq ad&#305;nda qada&#287;an olunmu&#351; s&ouml;z m&ouml;vcuddur.");
+define("L_ERR_ROM_3", "Bu adla otaq art&#305;q m&ouml;vcuddur v&#601; &uuml;mumidir.");
+define("L_ERR_ROM_4", "Se&ccedil;diyiniz otaq ad&#305; s&#601;hvdir.");
+
+// users frame or popup
+define("L_EXIT", "&Ccedil;&#305;x&#305;&#351;.");
+define("L_DETACH", "Detach");
+define("L_EXPCOL_ALL", "Ham&#305;s&#305;n&#305; g&ouml;st&#601;r/gizl&#601;t.");
+define("L_CONN_STATE", "Ba&#287;lant&#305; statusu.");
+define("L_CHAT", "Chat");
+define("L_USER", "istifad&#601;&ccedil;i");
+define("L_USERS", "istifad&#601;&ccedil;i");
+define("L_NO_USER", "hal haz&#305;rda istifad&#601;&ccedil;i yoxdur");
+define("L_ROOM", "otaq");
+define("L_ROOMS", "otaqlar");
+define("L_EXPCOL", "Ota&#287;&#305; g&ouml;st&#601;r/gizl&#601;t.");
+define("L_BEEP", "&#304;stifad&#601;&ccedil;i daxil olduqda siqnal olsun v&#601; ya olmas&#305;n.");
+define("L_PROFILE", "&#350;&#601;xsi m&#601;lumat&#305; g&ouml;st&#601;r");
+define("L_NO_PROFILE", "&#350;&#601;xsi m&#601;lumat&#305; gizl&#601;t");
+
+// input frame
+define("L_HLP", "Yard&#305;m");
+define("L_BAD_CMD", "Bu c&uuml;r &#601;mr m&ouml;vcud deyil!");
+define("L_ADMIN", "%s art&#305;q administratordu!");
+define("L_IS_MODERATOR", "%s art&#305;q moderatodu!");
+define("L_NO_MODERATOR", "Bu &#601;mri yaln&#305;z bu ota&#287;&#305;n moderatoru istifad&#601; ed&#601; bil&#601;r!");
+define("L_MODERATOR", "%s indi bu otaqda moderatordu.");
+define("L_NONEXIST_USER", "Bu otaqda %s adl&#305; istifad&#601;&ccedil;i yoxdur.");
+define("L_NONREG_USER", "%s adl&#305; istifad&#601;&ccedil;i qeydiyyatdan ke&ccedil;m&#601;yib.");
+define("L_NONREG_USER_IP", "&#304;stifad&#601;&ccedil;inin IP &uuml;nvan&#305;: %s.");
+define("L_NO_KICKED", " %s moderator v&#601; ya administrator oldu&#287;undan qovula bilm&#601;z.");
+define("L_KICKED", "%s m&uuml;v&#601;ff&#601;qiyy&#601;tl&#601; qovuldu.");
+define("L_NO_BANISHED", " %s moderator v&#601; ya administrator oldu&#287;undan giri&#351;i qada&#287;an oluna bilm&#601;z.");
+define("L_BANISHED", "  %s  &uuml;&ccedil;&uuml;n giri&#351; qada&#287;an olundu.");
+define("L_SVR_TIME", "Cari vaxt: ");
+define("L_NO_SAVE", "Saxlamaq &uuml;&ccedil;&uuml;n he&ccedil; bir m&#601;`lumat yoxdur.!");
+define("L_NO_ADMIN", "Bu &#601;mr yaln&#305;z administrator t&#601;r&#601;find&#601;n istifad&#601; oluna bil&#601;r.");
+define("L_ANNOUNCE", " E'LAN ");
+define("L_INVITE", "%s bu otaqa  d&#601;`v&#601;t edir: <a href=\"#\" onClick=\"window.parent.runCmd('%s','%s')\">%s</a> !");
+define("L_INVITE_REG", " Bu ota&#287;a daxil olmaq &uuml;&ccedil;&uuml;n qeydiyyatdan ke&ccedil;m&#601;lisiniz.");
+define("L_INVITE_DONE", "%s d&#601;`v&#601;t olundu.");
+define("L_OK", "G&ouml;nd&#601;r.");
+
+// help popup
+define("L_HELP_TIT_1", "T&#601;b&#601;ss&uuml;ml&#601;r");
+define("L_HELP_TIT_2", "&#304;smar&#305;clar &uuml;&ccedil;&uuml;n m&#601;tn format&#305;.");
+define("L_HELP_FMT_1", "Qal&#305;n, kursiv v&#601; ya alt&#305;ndan x&#601;tt &ccedil;&#601;kilmi&#351; m&#601;tni yaratmaq &uuml;&ccedil;&uuml;n bu teql&#601;rd&#601;n istifad&#601; etm&#601;k olar: &lt;B&gt; &lt;/B&gt;, &lt;I&gt; &lt;/I&gt; or &lt;U&gt; &lt;/U&gt;. M&#601;s&#601;l&#601;n, &lt;B&gt;bu m&#601;tn&lt;/B&gt; bu c&uuml;r g&ouml;rs&#601;n&#601;c&#601;k<b> bu m&#601;tn</b>.");
+define("L_HELP_FMT_2", "M&#601;tnd&#601; &#304;nternet &#601;laq&#601;si (URL) yaratmaq &uuml;&ccedil;&uuml;n he&ccedil; bir &#601;lav&#601; &#601;m&#601;liyyat laz&#305;m deyil. Sad&#601;c&#601; &uuml;nvan&#305; daxil edin.");
+define("L_HELP_TIT_3", "&#399;mrl&#601;r");
+define("L_HELP_USR", "istifad&#601;&ccedil;i");
+define("L_HELP_MSG", "g&ouml;nd&#601;ri&#351;");
+define("L_HELP_ROOM", "otaq");
+define("L_HELP_CMD_0", "&#601;mrin m&uuml;tl&#601;q hiss&#601;si bel&#601; i&#351;ar&#601; edilir: { } , m&uuml;tl&#601;q olmayan is&#601; bel&#601;: [ ]");
+define("L_HELP_CMD_1a", "G&ouml;st&#601;ril&#601;n g&ouml;nd&#601;ri&#351;l&#601;rin say&#305;n&#305; m&uuml;&#601;yy&#601;n edin, &#601;n az&#305; 5 olmal&#305;d&#305;r.");
+define("L_HELP_CMD_1b", "g&ouml;nd&#601;ri&#351;l&#601;r p&#601;nc&#601;r&#601;l&#601;rini yenid&#601;n y&uuml;kl&#601;yir v&#601; n q&#601;d&#601;r son g&ouml;nd&#601;ri&#351; g&ouml;st&#601;rir (&#601;n az&#305; 5 g&ouml;nd&#601;ri&#351;)");
+define("L_HELP_CMD_2a", "g&ouml;nd&#601;ri&#351;l&#601;rin yenil&#601;nm&#601; interval&#305;n&#305; m&uuml;&#601;yy&#601;n edir (saniy&#601;l&#601;rl&#601;).<br>m&uuml;&#601;yy&#601;n edilm&#601;yibs&#601; v&#601; ya 3d&#601;n azd&#305;rsa yenil&#601;nm&#601; yerin&#601; yetirilmir v&#601; ya interval 10 saniy&#601; olur.");
+define("L_HELP_CMD_2b", "g&ouml;nd&#601;ri&#351;l&#601;rin v&#601; isifad&#601;&ccedil;i siyah&#305;s&#305;n&#305;n yenil&#601;nm&#601; interval&#305;n&#305; m&uuml;&#601;yy&#601;n edir (saniy&#601;l&#601;rl&#601;).<br>m&uuml;&#601;yy&#601;n edilm&#601;yibs&#601; v&#601; ya 3d&#601;n azd&#305;rsa yenil&#601;nm&#601; yerin&#601; yetirilmir v&#601; ya interval 10 saniy&#601; olur.");
+define("L_HELP_CMD_3", "g&ouml;nd&#601;ri&#351;l&#601;ri &#601;ks qayda il&#601; d&uuml;z&uuml;r");
+define("L_HELP_CMD_4", "ba&#351;qa ota&#287;a ke&ccedil;ir, bu adla otaq olmasa yenisini yarad&#305;r (buna icaz&#601;niz varsa)<br>n r&#601;q&#601;mi &#351;&#601;xsi otaqlar &uuml;&ccedil;&uuml;n 0 , &uuml;m&uuml;mi otaqlar &uuml;&ccedil;&uuml;n is&#601; 1 olmal&#305;d&#305; (n verilm&#601;dikd&#601; 1`&#601; b&#601;rab&#601;r olur)");
+define("L_HELP_CMD_5", "Chat`&#305; x&uuml;susi (qeyri-m&uuml;tl&#601;q) ismar&#305;c yazmaqla t&#601;rk etm&#601;k &uuml;&ccedil;&uuml;n.");
+define("L_HELP_CMD_6", "&#304;stifad&#601;&ccedil;i ad&#305; verilibs&#601; h&#601;min istifad&#601;&ccedil;id&#601;n g&ouml;nd&#601;ri&#351; g&#601;lmir.<BR>&#304;stifad&#601;&ccedil;i ad&#305; v&#601; &quot;-&quot; verilibs&#601; h&#601;min istifad&#601;&ccedil;id&#601;n, yaln&#305;z &quot;-&quot; olarsa b&uuml;t&uuml;n istifad&#601;&ccedil;il&#601;rd&#601;n g&ouml;nd&#601;ri&#351; g&#601;lm&#601;sin&#601; icaz&#601; verilir.<BR>Komanda &#601;lav&#601; parametrsiz yaz&#305;ld&#305;qda b&uuml;t&uuml;n g&ouml;nd&#601;ri&#351;l&#601;ri qada&#287;an olunmu&#351; istifad&#601;&ccedil;il&#601;rin siyah&#305;s&#305; verilir.");
+define("L_HELP_CMD_7", "&#399;vv&#601;l yaz&#305;lm&#305;&#351; g&ouml;nd&#601;ri&#351; v&#601; ya &#601;mri b&#601;rpa edir.");
+define("L_HELP_CMD_8", "G&ouml;nd&#601;ri&#351;l&#601;rin vaxt&#305;n&#305; g&ouml;st&#601;rm&#601;k/gizl&#601;tm&#601;k.");
+define("L_HELP_CMD_9", "&#304;stifad&#601;&ccedil;ini otaqdan qovmaq. Yaln&#305;z moderator t&#601;r&#601;find&#601;n veril&#601; bil&#601;r.");
+define("L_HELP_CMD_10", "&#304;stifad&#601;&ccedil;iy&#601; &#351;&#601;xsi g&ouml;nd&#601;ri&#351; (ba&#351;qalar&#305; bu g&ouml;nd&#601;ri&#351;i g&ouml;rm&uuml;r).");
+define("L_HELP_CMD_11", "&#304;stifad&#601;&ccedil;i haqqda m&#601;`lumat verir.");
+define("L_HELP_CMD_12", "&#350;&#601;xsi m&#601;`lumat&#305; d&#601;yi&#351;m&#601;k &uuml;&ccedil;&uuml;n p&#601;nc&#601;r&#601;ni a&ccedil;&#305;r.");
+define("L_HELP_CMD_13", "&#304;stifad&#601;&ccedil;il&#601;r girib-&ccedil;&#305;xd&#305;qda m&#601;lumat verilsin/verilm&#601;sin.");
+define("L_HELP_CMD_14", "Bu otaqda administrator v&#601; ya moderatora ba&#351;qalar&#305;n&#305;da moderator etm&#601;y&#601; icaz&#601; verir.");
+define("L_HELP_CMD_15", "Son 5 g&ouml;nd&#601;ri&#351;d&#601;n ba&#351;qa ham&#305;s&#305;n&#305; silir.");
+define("L_HELP_CMD_16", "Son n g&ouml;nd&#601;ri&#351;i (sistem x&#601;b&#601;rdarl&#305;qlar&#305;ndan ba&#351;qa) ayr&#305;ca HTML fayla yaz&#305;r. n verilm&#601;s&#601; b&uuml;t&uuml;n g&ouml;nd&#601;ri&#351;l&#601;r yaz&#305;l&#305;r.");
+define("L_HELP_CMD_17", "Administratora b&uuml;t&uuml;n otaqlarda &uuml;m&uuml;mi e`lan g&ouml;nd&#601;rilm&#601;si icaz&#601; verilsin.");
+define("L_HELP_CMD_18", "Ba&#351;qa otaqda olan istifad&#601;&ccedil;ini cari ota&#287;a d`v&#601;t edir.");
+define("L_HELP_CMD_19", "Moderator v&#601; ya administrator t&#601;r&#601;find&#601;n istifad&#601;inin ota&#287;a girm&#601;yini m&#601;yy&#601;n vaxt &#601;rzind&#601; qada&#287;an olunmas&#305;na icaz&#601; verilsin.<br>Sonradan h&#601;min istifad&#601;iy&#601; ba&#351;qa bir ota&#287;a&nbsp;&nbsp;v&#601; ulduz i&#351;ar&#601;sini (<b>*</b>) istifad&#601; etm&#601;kl&#601; btn otaqlara giri&#351; qada&#287;an edil&#601; bil&#601;r.");
+define("L_HELP_CMD_20", "N&#601; etdiyinizi izah edin.");
+
+// messages frame
+define("L_NO_MSG", "Hal haz&#305;rda gnd&#601;ri&#351; yoxdur....");
+define("L_TODAY_DWN", "Bu gnk gnd&#601;ri&#351;l&#601;r bu s&#601;tird&#601;n a&#351;a&#287;&#305; yerl&#601;&#351;ir.");
+define("L_TODAY_UP", "Bu gnk gnd&#601;ri&#351;l&#601;r bu s&#601;tird&#601;n yuxar&#305; yerl&#601;&#351;ir.");
+
+// message colors
+$TextColors = array(	"Qara" => "#000000",
+			"Q&#305;rm&#305;z&#305;" => "#FF0000",
+			"Ya&#351;&#305;l" => "#009900",
+			"G&ouml;y" => "#0000FF",
+			"Moru&#287;u" => "#9900FF",
+			"T&uuml;nd q&#305;rm&#305;z&#305;" => "#990000",
+			"T&uuml;nd ya&#351;&#305;l" => "#006600",
+			"T&uuml;nd g&ouml;y" => "#000099",
+			"Lap t&uuml;nd q&#305;rm&#305;z&#305;" => "#996633",
+			"D&#601;niz r&#601;ngi" => "#006699",
+			"K&ouml;k r&#601;ngi" => "#FF6600");
+
+// ignored popup
+define("L_IGNOR_TIT", "Bu istifad&#601;&ccedil;id&#601;n g&ouml;nd&#601;ri&#351; qada&#287;an olunub.");
+define("L_IGNOR_NON", "He&ccedil; bir istifad&#601;&ccedil;id&#601;n g&ouml;nd&#601;ri&#351; qada&#287;an olunmay&#305;b.");
+
+// whois popup
+define("L_WHOIS_ADMIN", "Administrator");
+define("L_WHOIS_MODER", "Moderator");
+define("L_WHOIS_USER", "&#304;stifad&#601;&ccedil;i");
+
+// Notification messages of user entrance/exit
+define("L_ENTER_ROM", "%s chat'a daxil oldu");
+define("L_EXIT_ROM", "%s chat'&#305; t&#601;rk etdi");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/azerbaijani/regex.txt 0.15.0/chat/localization/azerbaijani/regex.txt
--- 0.14.5/chat/localization/azerbaijani/regex.txt	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/azerbaijani/regex.txt	2004-04-01 03:07:07.000000000 -0600
@@ -0,0 +1 @@
+az|azerbaijani
\ No newline at end of file
Binary files 0.14.5/chat/localization/bosnian/flag.gif and 0.15.0/chat/localization/bosnian/flag.gif differ
diff -ruN 0.14.5/chat/localization/bosnian/localized.admin.php 0.15.0/chat/localization/bosnian/localized.admin.php
--- 0.14.5/chat/localization/bosnian/localized.admin.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/bosnian/localized.admin.php	2004-04-01 03:07:07.000000000 -0600
@@ -0,0 +1,61 @@
+<?php
+// File : bosnian.admin.php
+// Translation by Nermina Akkaya <Seka@bosna.de>
+
+// extra header for charset
+$Charset = "iso-8859-2";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// Top frame
+define("A_MENU_0", "Administration for %s");
+define("A_MENU_1", "Registered users");
+define("A_MENU_2", "Banished users");
+define("A_MENU_3", "Clean rooms");
+define("A_MENU_4", "Send mails");
+
+// Frame for registered users
+define("A_SHEET1_1", "List of registered users and their permissions");
+define("A_SHEET1_2", "Ime");
+define("A_SHEET1_3", "Dozvole");
+define("A_SHEET1_4", "Moderirane sobe");
+define("A_SHEET1_5", "Moderirane sobe su odvojene zarezom (,) bez razmaka.");
+define("A_SHEET1_6", "Obrisi oznacene");
+define("A_SHEET1_7", "Promjeni");
+define("A_SHEET1_8", "There is no registered user except yourself.");
+define("A_SHEET1_9", "Banish checked profiles");
+define("A_SHEET1_10", "Now you have to move to the banished users sheet to refine your choices.");
+define("A_SHEET1_11", "Last connection");
+define("A_USER", "Korisnik");
+define("A_MODER", "Moderator");
+define("A_PAGE_CNT", "Page %s of %s");
+
+// Frame for banished users
+define("A_SHEET2_1", "List of banished users and concerned rooms");
+define("A_SHEET2_2", "IP");
+define("A_SHEET2_3", "Concerned rooms");
+define("A_SHEET2_4", "Until");
+define("A_SHEET2_5", "no end");
+define("A_SHEET2_6", "rooms are splitted by comma without spaces (,) if they are less than 4, else the '<B>&nbsp;*&nbsp;</B>' sign<BR>banish from all rooms.");
+define("A_SHEET2_7", "Remove banishment for checked user(s)");
+define("A_SHEET2_8", "There is no banished user.");
+
+// Frame for cleaning rooms
+define("A_SHEET3_1", "Lista postojecih soba");
+define("A_SHEET3_2", "Clean a \"non-default\" room will also remove all moderator<BR>status for this room.");
+define("A_SHEET3_3", "Clean selected rooms");
+define("A_SHEET3_4", "There is no room to clean.");
+
+// Frame for sending mails
+define("A_SHEET4_0", "You haven't set required variables in the<BR>'chat/admin/mail4admin.php' script.");
+define("A_SHEET4_1", "Send e-mails");
+define("A_SHEET4_2", "To:");
+define("A_SHEET4_3", "Select all");
+define("A_SHEET4_4", "Subject:");
+define("A_SHEET4_5", "Messages:");
+define("A_SHEET4_6", "Start sending");
+define("A_SHEET4_7", "All e-mails have been sent.");
+define("A_SHEET4_8", "Internal error while sending the mails.");
+define("A_SHEET4_9", "Addresse(s), subject or message is missing!");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/bosnian/localized.chat.php 0.15.0/chat/localization/bosnian/localized.chat.php
--- 0.14.5/chat/localization/bosnian/localized.chat.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/bosnian/localized.chat.php	2004-04-01 03:07:08.000000000 -0600
@@ -0,0 +1,221 @@
+<?php
+// File : bosnian.lang.php
+// Translation by Nermina Akkaya <Seka@bosna.de>
+
+// extra header for charset
+$Charset = "iso-8859-2";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// welcome page
+define("L_TUTORIAL", "Tutorial");
+
+define("L_WEL_1", "Poruke se brisu nakon");
+define("L_WEL_2", "sati i korisnici nakon");
+define("L_WEL_3", "minuta ...");
+
+define("L_CUR_1", "Trenutno");
+define("L_CUR_2", "razgovara.");
+define("L_CUR_3", "Broj korisnika u sobama");
+define("L_CUR_4", "korisnika u privatnim sobama");
+
+define("L_SET_1", "Molimo postavite...");
+define("L_SET_2", "vase korisnicko ime");
+define("L_SET_3", "broj prikazanih poruka");
+define("L_SET_4", "vrijeme osvjezavanja razgovora");
+define("L_SET_5", "Izaberite sobu za razgovor...");
+define("L_SET_6", "postavljene sobe");
+define("L_SET_7", "Izaberite ...");
+define("L_SET_8", "korisniki napravljene javne sobe");
+define("L_SET_9", "napravite vlastitu");
+define("L_SET_10", "javnu");
+define("L_SET_11", "privatnu");
+define("L_SET_12", "sobu");
+define("L_SET_13", "i, sada samo");
+define("L_SET_14", "pricajte!");
+
+define("L_SRC", "je slobodno dostupan na");
+
+define("L_SECS", "sekundi");
+define("L_MIN", "minuta");
+define("L_MINS", "minuta");
+
+// registration stuff:
+define("L_REG_1", "vasa lozinka");
+define("L_REG_1r", "(samo ako ste vec registrovani)");
+define("L_REG_2", "Registrovani  korisnici");
+define("L_REG_3", "Registrovanje!");
+define("L_REG_4", "Mjenjanje vasih postavki");
+define("L_REG_5", "Brisanje korisnika");
+define("L_REG_6", "Korisnicka registracija");
+define("L_REG_7", "Vasa lozinka");
+define("L_REG_8", "Vas e-mail");
+define("L_REG_9", "Uspjesno ste se registrovali.");
+define("L_REG_10", "Povratak");
+define("L_REG_11", "Mjenjanje");
+define("L_REG_12", "Mjenjanje korisnickih informacija");
+define("L_REG_13", "Brisanje korisnika");
+define("L_REG_14", "Oznaka");
+define("L_REG_15", "Ulaz");
+define("L_REG_16", "Promjeni");
+define("L_REG_17", "Vase informacije su uspjesno promijenjene.");
+define("L_REG_18", "Izbaceni ste iz sobe od strane moderatora.");
+define("L_REG_19", "Da li zaista zelite biti izbrisani ?");
+define("L_REG_20", "Da");
+define("L_REG_21", "Uspjesno ste izbrisani.");
+define("L_REG_22", "Ne");
+define("L_REG_25", "Zatvori");
+define("L_REG_30", "Ime");
+define("L_REG_31", "Prezime");
+define("L_REG_32", "WEB");
+define("L_REG_33", "prikai e-mail /whois komandom");
+define("L_REG_34", "Mjenjanje korisnickih postavki");
+define("L_REG_35", "Administracija");
+define("L_REG_36", "Jezike koje govorite");
+define("L_REG_37", "Polja sa <span class=\"error\">*</span> moraju biti popunjena.");
+define("L_REG_39", "Soba u kojoj ste bili je uklonjena od strane administratora.");
+define("L_REG_45", "gender");
+define("L_REG_46", "male");
+define("L_REG_47", "Female");
+
+// e-mail validation stuff
+define("L_EMAIL_VAL_1", "Your settings to enter the chat");
+define("L_EMAIL_VAL_2", "Welcome to our chat server.");
+define("L_EMAIL_VAL_Err", "Internal error, please contact the administrator: <a href=\"mailto:%s\">%s</a>.");
+define("L_EMAIL_VAL_Done", "Your password has been sent to your e-mail address.");
+
+// admin stuff
+define("L_ADM_1", "%s is no more moderator for this room.");
+define("L_ADM_2", "You're no more a registered user.");
+
+//error messages
+define("L_ERR_USR_1", "Korisnicko ime je vec u upotrebi. Probajte neko drugo.");
+define("L_ERR_USR_2", "Morate izabrati korisnicko ime.");
+define("L_ERR_USR_3", "Korisnicko ime je vec registrovano . Molimo, unesite vasu lozinku ili unesite drugo korisnicko ime.");
+define("L_ERR_USR_4", "Upisali ste pogresnu lozinku.");
+define("L_ERR_USR_5", "Morate unijeti vase korisnicko ime.");
+define("L_ERR_USR_6", "Morate unijeti vasu lozinku.");
+define("L_ERR_USR_7", "Morate unijeti vas e-mail.");
+define("L_ERR_USR_8", "Morate unijeti ispravnu e-mail adresu.");
+define("L_ERR_USR_9", "Korisnisko ime je vec u upotrebi.");
+define("L_ERR_USR_10", "Pogresno ime ili lozinka.");
+define("L_ERR_USR_11", "Morate biti administrator.");
+define("L_ERR_USR_12", "Vi ste administrator, ne mozete biti uklonjeni.");
+define("L_ERR_USR_13", "Da napravite vasu osobnu sobu, morate biti registrovani.");
+define("L_ERR_USR_14", "Morate biti registrovani prije razgovara.");
+define("L_ERR_USR_15", "Morate unijeti puno ime.");
+define("L_ERR_USR_16", "Korisnicko ime ne moze sadrzavati razmake, zareze ili kosu crtu (\\).");
+define("L_ERR_USR_17", "Soba ne postoji, ali takodjer nemate dozvolu da je napravite.");
+define("L_ERR_USR_18", "Zabranjena rijec je pronaena u vasem imenu.");
+define("L_ERR_USR_19", "You cannot be in more than one room at the same time.");
+define("L_ERR_USR_20", "You have been banished from this room or from the chat.");
+define("L_ERR_ROM_1", "Ime sobe ne moze sadrzavati zarez ili kosu crtu (\\).");
+define("L_ERR_ROM_2", "Zabranjena rijec je pronadjena u imenu sobe koju zelite napraviti.");
+define("L_ERR_ROM_3", "This room already exist as a public one.");
+define("L_ERR_ROM_4", "Invalid room name.");
+
+// users frame or popup
+define("L_EXIT", "Izlaz");
+define("L_DETACH", "Poseban");
+define("L_CONN_STATE", "Connection state");
+define("L_EXPCOL_ALL", "Expand/Collapse All");
+define("L_CHAT", "Razgovor");
+define("L_USER", "korisnika");
+define("L_USERS", "korisnika");
+define("L_NO_USER", "Nema korisnika");
+define("L_ROOM", "soba");
+define("L_ROOMS", "sobe");
+define("L_EXPCOL", "Expand/Collapse room");
+define("L_BEEP", "Beep/no beep at user entrance");
+define("L_PROFILE", "Display profile");
+define("L_NO_PROFILE", "No profile");
+
+// input frame
+define("L_HLP", "Pomo");
+define("L_BAD_CMD", "Ovo nije dozvoljena komanda !");
+define("L_ADMIN", "%s je vec administrator !");
+define("L_IS_MODERATOR", "%s is already moderator!");
+define("L_NO_MODERATOR", "Samo moderator moze koristiti te naredbe.");
+define("L_MODERATOR", "%s je sada moderator za ovu sobu.");
+define("L_NONEXIST_USER", "Korisnik %s nije trenutno u sobi.");
+define("L_NONREG_USER", "Korisnik %s nije registrovan.");
+define("L_NONREG_USER_IP", "His IP is: %s.");
+define("L_NO_KICKED", "Korisnik %s je moderator ili administrator i ne moze biti izbacen.");
+define("L_KICKED", "Korisnik %s je uspjesno izbacen.");
+define("L_NO_BANISHED", "User %s is moderator or administrator and can't be banished.");
+define("L_BANISHED", "User %s has successfully been banished.");
+define("L_SVR_TIME", "Vrijeme na serveru: ");
+define("L_NO_SAVE", "No message to save!");
+define("L_NO_ADMIN", "Only the administrator can use this command.");
+define("L_ANNOUNCE", "ANNOUNCE");
+define("L_INVITE", "%s suggest you to join her/him into the <a href=\"#\" onClick=\"window.parent.runCmd('%s','%s')\">%s</a> room.");
+define("L_INVITE_REG", " You have to be registered to enter this room.");
+define("L_INVITE_DONE", "Your invitation has been sent to %s.");
+define("L_OK", "Send");
+
+// help popup
+define("L_HELP_TIT_1", "Smajliji");
+define("L_HELP_TIT_2", "Tekst formatiranje za poruke");
+define("L_HELP_FMT_1", "Mozete staviti podebljan, ukosen ili podvucen tekst u porukama sa postavljanjem odredenih oznaka u vas tekst poput: &lt;B&gt; &lt;/B&gt;, &lt;I&gt; &lt;/I&gt; or &lt;U&gt; &lt;/U&gt;. <BR>Na primjer, &lt;B&gt;ovaj tekst&lt;/B&gt; ce rezultirati <B>ovaj tekst</B>.");
+define("L_HELP_FMT_2", "Za pravljenje hiperlinka (za e-mail ili URL) u vaoj poruci, jednostavno napiite odgovarajuu adresu bez tagova. Hiperlink e biti automatski napravljen.");
+define("L_HELP_TIT_3", "Komande");
+define("L_HELP_USR", "korisnika");
+define("L_HELP_MSG", "poruke");
+define("L_HELP_ROOM", "soba");
+define("L_HELP_CMD_0", "{} predstavlja obavezne postavke, dok [] opcionalne.");
+define("L_HELP_CMD_1", "Broj poruka koje se prikazuju, minimum 5.");
+define("L_HELP_CMD_1a", "Set number of messages to show, minimum and default are 5.");
+define("L_HELP_CMD_1b", "Reload the message frame and display the n latest messages, minimum and default are 5.");
+define("L_HELP_CMD_2a", "Promjeni vrijeme osvjezavanja poruka (u sekundama).<BR>Ako n nije specifiran ili ako je manji od 3, automatski se postavlja izmedu neosvjezavanja i 10s osvjezavanja.");
+define("L_HELP_CMD_2b", "Modify messages and users lists refresh delay (in seconds).<BR>If n is not specified or less than 3, toggles between no refresh and 10s refresh.");
+define("L_HELP_CMD_3", "Promjeni poredak poruka.");
+define("L_HELP_CMD_4", "Pridruzi se drugoj sobi, napravi je ako ne postoji i ako imam dozvole za to.<BR>n jednako 0 za privatnu i 1 za javnu, podrazumijevana vrijednost je 1 ako nije specifirano.");
+define("L_HELP_CMD_5", "Napusti razgovor nakon prikazivanja opcione poruke.");
+define("L_HELP_CMD_6", "Izbjegavaj prikazivanje poruka od korisnika ako je nadimak specifiran.<BR>Iskljuci ignoriranje za korisnika kada je nadimak i/ili zajedno specifirani, za sve korisnike.<BR>Bez opcija, ova komanda podize prozor koji prikazuje sve ignorirane nadimke.");
+define("L_HELP_CMD_7", "Prikazi posljednju napisanu komandu ili tekst.");
+define("L_HELP_CMD_8", "Prikazi/Sakri vrijeme prije poruke.");
+define("L_HELP_CMD_9", "Izbaci korisnika iz razgovora. Ovu komandu mozete koristiti samo kao moderator.");
+define("L_HELP_CMD_10", "Posalji privatnu poruku odredjenom korisniku (drugi korisnici je nece vidjeti).");
+define("L_HELP_CMD_11", "Prikaze informacije o odredjenom korisniku.");
+define("L_HELP_CMD_12", "Prikaze prozor za mjenjanje korisnickih postavki.");
+define("L_HELP_CMD_13", "Mijenja postavku da li da prikazuje kada korisnici ulaze/izlaze iz trenutne sobe.");
+define("L_HELP_CMD_14", "Dozvoljava administratoru ili moderatoru trenutne sobe da unaprijedi drugog registrovanog korisnika da bude moderator za istu sobu.");
+define("L_HELP_CMD_15", "Clear the message frame and show only the last 5 messages.");
+define("L_HELP_CMD_16", "Save the last n messages (notifications ones excluded) to an HTML file. If n is not specified, all available messages will be taken into account.");
+define("L_HELP_CMD_17", "Allow the administrator to send an announce to all users whatever the room they are chatting into.");
+define("L_HELP_CMD_18", "Suggest an user chatting in an other room to join the one you are into.");
+define("L_HELP_CMD_19", "Allow the moderator(s) of a room or the administrator to \"banish\" an user from the room for a time defined by the administrator.<BR>The later can banish an user chatting in an other room than the one he is into and use the '<B>&nbsp;*&nbsp;</B>' setting to banish \"for ever\" an user from the chat as the whole.");
+define("L_HELP_CMD_20", "Describe what you're doing without refer yourself.");
+
+// messages frame
+define("L_NO_MSG", "Trenutno nema poruka...");
+define("L_TODAY_DWN", "The messages that have been sent today start below");
+define("L_TODAY_UP", "The messages that have been sent today start above");
+
+// message colors
+$TextColors = array(	"Crna" => "#000000",
+				"Crvena" => "#FF0000",
+				"Zelena" => "#009900",
+				"Plava" => "#0000FF",
+				"Ljubiasta" => "#9900FF",
+				"Tamno crvena" => "#990000",
+				"Tamno zelena" => "#006600",
+				"Tamno plava" => "#000099",
+				"Smea" => "#996633",
+				"Akva plava" => "#006699",
+				"Naranasta" => "#FF6600");
+
+// ignored popup
+define("L_IGNOR_TIT", "ignoriran");
+define("L_IGNOR_NON", "Nema korisnika koje treba ignorisati");
+
+// whois popup
+define("L_WHOIS_ADMIN", "Administrator");
+define("L_WHOIS_MODER", "Moderator");
+define("L_WHOIS_USER", "Korisnik");
+
+// Notification messages of user entrance/exit
+define("L_ENTER_ROM", "%s enters this room");
+define("L_EXIT_ROM", "%s exit this room");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/bosnian/localized.tutorial.php 0.15.0/chat/localization/bosnian/localized.tutorial.php
--- 0.14.5/chat/localization/bosnian/localized.tutorial.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/bosnian/localized.tutorial.php	2004-04-01 03:07:08.000000000 -0600
@@ -0,0 +1,635 @@
+<?php
+// File : bosanski.tutorial.php
+// Translation by Nermina Akkaya <Seka@bosna.de>
+
+// Get the names and values for vars sent by the script that called this one
+if (isset($HTTP_GET_VARS))
+{
+	while(list($name,$value) = each($HTTP_GET_VARS))
+	{
+		$$name = $value;
+	};
+};
+?>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+
+<HEAD>
+<TITLE>Bosanske Instrukcije za<?php echo(APP_NAME." - ".APP_VERSION); ?></TITLE>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-2">
+<STYLE>
+A.topLink
+{
+        text-decoration: underline;
+        color: #0000C0;
+}
+
+A.topLink:hover, A.topLink:active
+{
+        color: #FF9900;
+        text-decoration: none;
+        font-weight: 800;
+}
+
+.redText
+{
+	font-weight: 800;
+	color: #FF0000;
+}
+</STYLE>
+</HEAD>
+
+<BODY BGCOLOR="#CCCCFF">
+
+<P><A NAME="top"></P>
+<TABLE BORDER="5" CELLPADDING="5">
+<TR>
+        <TD><FONT SIZE="+2">Sadrzaj ovih instrukcija</FONT></TD>
+</TR>
+</TABLE><BR>
+
+<P CLASS="redText">
+Warning: Netscape users have to define their language as the default encoding else each characters in messages will be replace by a '?'.<BR>
+This can be done so: View/CharacterSet/your language Auto-Detect, then View/CharacterSet/SetDefault.
+</P>
+
+<?php
+if (C_MULTI_LANG == "1")
+{
+        ?>
+        <A HREF="#language" CLASS="topLink">Izabiranje jezika</A><BR>
+        <?php
+}
+?>
+<A HREF="#login" CLASS="topLink">Ukljucivanje u chat</A><BR>
+<A HREF="#register" CLASS="topLink">Registrovanje</A><BR>
+<A HREF="#modProfile" CLASS="topLink">Modificiranje<?php if (C_SHOW_DEL_PROF == "1") echo("/brisanje"); ?> tvog profila</A><BR>
+<?php
+if (C_VERSION == "2")
+{
+        ?>
+        <A HREF="#create_room" CLASS="topLink">Kreiranje sobe</A><BR>
+        <?php
+};
+if ($Ver == "H")
+{
+	?>
+	<A HREF="#connection_state" CLASS="topLink">Understanding connection state</A><BR>
+	<?php
+};
+?>
+<A HREF="#sending" CLASS="topLink">Poslati poruku</A><BR>
+<A HREF="#users_list" CLASS="topLink">Understanding the users list</A><BR>
+<A HREF="#exit" CLASS="topLink">Napustanje chat sobe</A><BR>
+<A HREF="#users_popup" CLASS="topLink">znati ko je na chatu bez da si ukljucen</A><BR>
+<P>
+<A HREF="#customize" CLASS="topLink">Namjestiti chat pogled</A><BR>
+<P>
+<A HREF="#commands" CLASS="topLink">Obiljezja i komande:</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#help" CLASS="topLink">Komande za pomoc</A><BR>
+<?php
+if (C_USE_SMILIES == "1")
+{
+        ?>
+        &nbsp&nbsp&nbsp&nbsp<A HREF="#smilies" CLASS="topLink">Graficki smilies</A><BR>
+        <?php
+};
+if (C_HTML_TAGS_KEEP != "none")
+{
+        ?>
+        &nbsp&nbsp&nbsp&nbsp<A HREF="#text" CLASS="topLink">Formatiranje teksta</A><BR>
+        <?php
+};
+?>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#invite" CLASS="topLink">Suggesting an user to join your current chatroom</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#changeroom" CLASS="topLink">Prelazak iz jedne chat sobe u drugu</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#private" CLASS="topLink">Privatne poruke</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#actions" CLASS="topLink">Actions</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#ignore" CLASS="topLink">Ignorisanje ostalih korisnika</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#whois" CLASS="topLink">Dobivanje javnih informacija odrugim korisnicima</A><BR>
+<?php
+if (C_SAVE != "0")
+{
+        ?>
+        &nbsp&nbsp&nbsp&nbsp<A HREF="#save" CLASS="topLink">Spasi poruke</A><BR>
+        <?php
+};
+?>
+<P>
+<A HREF="#moderator" CLASS="topLink">Specijalne komande za moderatore i/ili za administratora:</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#announce" CLASS="topLink">Poslati  oglas</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#kick" CLASS="topLink">Izbacivanje korisnika</A><BR>
+<?php
+if (C_BANISH != "0")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#banish" CLASS="topLink">Banish an user</A><BR>
+	<?php
+};
+?>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#promote" CLASS="topLink">Unaprijediti korisnika u moderatora</A><BR>
+<P>
+<HR>
+<HR>
+
+
+<?php
+if (C_MULTI_LANG == "1")
+{
+        ?>
+        <P>
+        <FONT SIZE="+1"><A NAME="language"><B>Izabiranje jezika:</B></A></FONT>
+        <P>
+        Mozete izabrati jezik u koji se vec preveo <?php echo(APP_NAME); ?>  tako sto cete kliknuti na jednu od zastava na pocetnoj stranici. U primjeru koji slijedi, korisnik je izabrao francuski jezik:
+        <P ALIGN="center">
+        <IMG SRC="images/tutorials/flags.gif" HEIGHT="44" WIDTH="424" ALT="Zastave za selekciju jezika">
+        <BR><P ALIGN="right"><A HREF="#top">povratak na vrh</A></P>
+        <HR>
+        <?php
+}
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="login"><B>Ukljucivanje:</B></A></FONT>
+<P>
+Ako ste vec registrovani, jednostavno se ukljucite unoseci svoje korisnicko ime i sifru. Onda izaberite u koju chat sobu zelite da udjete i kliknite na chat dugme.<BR>
+<?php
+if (C_REQUIRE_REGISTER == "1")
+{
+        ?>
+        <P>
+        Ukoliko niste <A HREF="#register">registrovani</A>, onda to prvo uradite .
+        <?php
+}
+else
+{
+        ?>
+        <P>
+        Ukoliko niste <A HREF="#register">registrovani</A>, onda to prvo uradite ili jednostavno udjite u sobu, ali vas nadimak nece biti zasticen ( drugi korisnici moci ce koristiti isti cim se vi iskljucite ).
+        <?php
+};
+?>
+<BR><P ALIGN="right"><A HREF="#top">Povratak na vrh </A></P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="register"><B>Registrovanje:</B></A></FONT>
+<P>
+Ako jos niste registrovani <?php if (C_REQUIRE_REGISTER == "0") echo("a zelite biti"); ?>, molimo izaberite registarsku opciju. Pojavit ce se mali pop-up prozor.
+<P>
+<UL>
+		<!-- To Update
+        <LI>Prvo kreirajte korisnicko ime i sifru  za sebe , unesite to u odgovarajuce polje. Korisnicko ime koje ste izabrali  je ime koje ce se automatski prikazati u chat sobi.Ima ne moze sadrzavati medju prostor, zarez ili kose crte (\).
+<?php if (C_NO_SWEAR == "1") echo("  Ime ne moze sadrzavati \"ruzne rijeci - swear words\"."); ?>
+		-->
+	<LI>First, create a username<?php if (!C_EMAIL_PASWD) echo(" and a password"); ?> for yourself by typing it into the appropriate boxes. The username you choose is the name that will be automatically displayed in the chat room. It cannot contain space, comma or backslash (\).
+<?php if (C_NO_SWEAR == "1") echo(" It can no more contains \"swear words\"."); ?>
+        <LI>Drugo , molimo unesite vase ime, prezime i vasu  email adresu. Da biste se mogli registrovati za chat , sve ove informacije moraju biti dostupne.  You can skip gender selection.
+        <LI>Ako imate svoju web stranicu ,mozete unijeti  URL  takodjer.
+        <LI>Polje sa jezicima moze pomoci drugim korisnicima u buducim diskusijama: oni ce znati koje jezike vi razumijete.
+        <LI>Napokon,ako zelite dopustiti da  drugi korisnici mogu vidjeti vasu email adresu, molimo oznacite na  "checkbox "odmah do  "pokazi e-mail u javnim informacijama".Ako ne zelite da vasa e-mail adresa bude vidljiva ,ostavite " checkbox " neoznacenu.
+        <LI>Onda , pritisnite na dugme za registrovanje i vas profil ce biti kreiran. Ako zelite prekinuti registraciju, kliknite na dugme  Zatvori.
+</UL>
+<P>
+<A NAME="modProfile"></A>Naravno, registrovani korisnici ce moci modificirati<?php if (C_SHOW_DEL_PROF == "1") echo("/izbrisati"); ?> svoj profil tako sto ce kliknuti na odgovarajuci <?php echo((C_SHOW_DEL_PROF == "0" ? "link" : "link")); ?>.<BR>
+<BR><P ALIGN="right"><A HREF="#top">Povratak na vrh</A></P>
+<P>
+<HR>
+
+<?php
+if (C_VERSION == "2")
+{
+        ?>
+        <P>
+        <FONT SIZE="+1"><A NAME="create_room"><B>Kreiranje sobe:</B></A></FONT>
+        <P>
+        Registrovani korisnici mogu kreirati sobe. Privtne sobe mogu biti dostupne samo korsnicima koji znaju njihovo ime i nikada nece biti prikazane osim ako su korisnici vec unutra .<BR>
+        <P>
+        Ime sobe ne moze sadrzavati zarez ili kosu crtu (\).<?php if (C_NO_SWEAR == "1") echo(" It can no more contains \"swear words\"."); ?>
+        <BR><P ALIGN="right"><A HREF="#top">Povratak na vrh</A></P>
+        <P>
+        <HR>
+        <?php
+};
+if ($Ver == "H")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="connection_state"><B>Understanding connection state:</B></A></FONT>
+	<P>
+	A sign representing your connection state is dipslayed at the top-right corner of the screen. It may take three forms:
+	<P>
+	<UL>
+		<LI><IMG SRC="images/connectOff.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="No connection"> when no connection is required ;
+		<LI><IMG SRC="images/connectOn.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Connecting"> when there is a connection in progress ;
+		<LI><IMG SRC="images/connectError.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Connection failed"> when a connection failed.
+	</UL>
+	<P>
+	In the third case, clicking on the red "button" will launch a new connection attempt.
+	<BR><P ALIGN="right"><A HREF="#top">Povratak na vrh</A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="sending"><B>Poslati poruke:</B></A></FONT>
+<P>
+Da bi poslali poruku u chat sobu, napisite tekst u polje za pisanje koje se nalazi u donjem lijevom uglu i onda kliknite na  Enter/Return da je posaljete. Poruke od svih korisnika biti ce izlistane u chat box.<BR>
+<?php if (C_NO_SWEAR == "1") echo("Note that \"swear words\" are skipped from messages."); ?>
+<P>
+Mozete promijeniti  boju teksta vase poruke , tako sto cete izabrati novu boju sa liste izbora koja se nalazi desno od poja za tekst.
+<BR><P ALIGN="right"><A HREF="#top">Povratak na vrh</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="users_list"><B>Understanding the users list (not for users popup window):</B></A></FONT> 
+<P>
+<OL>
+	Two basic rules have been defined for the users list:<BR>
+	<LI>a little icon that shows gender is displayed before the nick of a registered user (clicking on it will launch the <A HREF="#whois">whois popup</A> for this user), while unregistered users have nothing but blank spaces displayed before their nick;<BR>
+	<LI>the nick of the administrator or of a moderator is italicized.
+</OL>
+<P><I>For example</I>, from the snapshot bellow you can conclude that:
+<TABLE BORDER=0 CELLSPACING=10>
+<TR>
+	<TD>
+		<IMG SRC="images/tutorials/usersList.gif" WIDTH=99 HEIGHT=131 BORDER=0 ALT="users list">
+	</TD>
+	<TD>
+	<UL>
+		<LI>Nicolas is the admin or one of the moderators of the phpMyChat room;<BR><BR>
+		<LI>alien (whose gender is unknown), Jezek2 and Caridad are registered users with no extra "power" for the phpMyChat room;<BR><BR>
+		<LI>lolo is a simple unregistered user.
+	</UL>
+	</TD>
+</TR>
+</TABLE>
+<BR><P ALIGN="right"><A HREF="#top">Povratak na vrh</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="exit"><B>Napustanje chat sobe:</B></A></FONT>
+<P>
+Da bi izasli iz chata, jednostavno kliknite jednom na  "Exit". Takodjer, mozete i unijete jednu od slijedecih komandi u polje za tekst x:<BR>
+/exit<BR>
+/bye<BR>
+/quit
+<P>
+Ove komande mogu biti napisane zajedno sa tekstom poruke i poslate prije vec sto napustite the chat sobu.
+<I>Na primjer :</I> /quit CU soon!
+<P>
+Poruka "CU soon!" biti ce poslana i onda cete se iskljuciti.
+<BR><P ALIGN="right"><A HREF="#top">Povratak na vrh</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="users_popup"><B>Saznati ko je na chatu, bez da ste vi ukljuceni:</B></A></FONT>
+<P>
+Mozete na pocetnoj stranici kliknuti na link koji pokazuje broj konektovanih korisnika  ili , ako vi pricate , kliknuti sliku <IMG SRC="images/popup.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Users popup"> koja se na ekranu nalazi na vrhu desno, nakon cega ce se otvoriti nezavisni prozor koji pokazuje broj konektovanih korisnika i sobe u kojima su oni u to vrijeme.<BR>
+Naziv ovog prozora sadrzi imena korisnika ako ih je manje od tri, borj korisnika i broj otvorenih soba.
+<P>
+Ako kliknete na ovu <IMG SRC="images/sound.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Beeps"> slicicu na vrhu prozora, ukljucit/iskljuct cete zvucni signal, ako udje novi korisnik.
+<BR><P ALIGN="right"><A HREF="#top">Povratak na vrh</A></P>
+<P>
+<HR>
+<HR>
+
+
+<P>
+<FONT SIZE="+1"><A NAME="customize"><B>Prilagodjavanje pogleda u Chat :</B></A></FONT>
+<P>
+Postoji mnogo nacina da sebi prilagodite pogled u Chat. Da to promijenite, jednostavnu napisite odgovarajucu komandu u polje za tekst i onda kliknite na Enter/Return .
+<P>
+<UL>
+        <?php
+        if ($Ver == "H")
+        {
+                ?>
+                <LI> <B>Komanda za ciscenje</B> pomocu koje mozete ocistiti chat ekran i premjestiti zadnjih 5 poruka koje su vam na ekranu.<BR>Napisite "/clear" bez navodnih znakova.
+                <P>
+                <?php
+        }
+		else
+        {
+                ?>
+                <LI> <B>Komanda za naredjivanje</B> pomocu koje mozete narediti , da li zelite da vam se novi tekst poruke pojavi n avrhu ili na dnu ekrana.<BR>napisite "/order" bez quotes.
+                <P>
+                <?php
+        };
+        ?>
+        <LI> <B>Komanda za oznake</B> dopusta vam da ukljucite ili iskljucite opciju vidjenja oznaka kada drugi korisnici  udju ili izadju iz chat sobe. By default this option is <?php echo(C_NOTIFY ? "on" : "off"); ?> and the notices <?php echo(C_NOTIFY ? "will" : "won't"); ?> be seen.<BR>Type "/notify" without quotes.
+        <P>
+        <LI> <B>Komanda za vrijeme</B> dopusta vam da ukljucite ili iskljucite  opciju  of seeing the time the message was posted before each message and the server time in the status bar. By default this option is <?php echo(C_SHOW_TIMESTAMP ? "on" : "off"); ?>.<BR>Type "/timestamp" without quotes.
+        <P>
+        <LI> <B>Komanda za pregled poruka</B> pomocu koje mozete odretiti nakon kojeg vremena zelite pregledati nove poruke.Trenutno je vremenski razmak <?php echo(C_MSG_REFRESH); ?> sekundi. Da promijenite vrijeme, napisite  "/refresh n" bez navodnih znakova, gdje je n  vrijeme u sekundama.
+		<P>
+		<I>Na primjer:</I> /refresh 5
+		<P>
+		i vrijeme ce se primjeniti  u 5 sec.*Pazite, ako je vrijeme namjesteno na manje od 3 , nove poruke se nece pojavljivati (korisno je kada zelite da citate stare poruke, a ne zelite da vas neko uznemirava)!*
+		<P>
+		<?php
+        if ($Ver == "L")
+        {
+                ?>
+                <LI> <B>Komanda pokazi</B> pomocu koje odredjujete broj poruka koje mozete vidjeti na ekranu. Da promijenite broj poruka, napisite"/show n" bez navodnih znakova, gdje je n broj poruka koje koje se vide na ekranu.
+                <P>
+                <I>Na primer :</I> /show 50
+                <P>
+                nakon cega ce na ekranu biti zadnjih 50 pristiglih poruka.</UL>
+                <?php
+        }
+        else
+        {
+                ?>
+                <LI> <B>Komanda pokazi i komanda poslednje</B> pomocu koje mozete ocistit ekran i narediti da se na ekranu prikazu samo <I>n</I> zadnjih poruka.Napisite "/show n" ili "/last n" bez navodnih znakova,gdje je n broj poruka koje koje se vide na ekranu.
+                <P>
+                <I>Na primjer: </I> /show 50 ili /last 50
+                <P>
+                nakon cega ce se prozor ocistiti i biti ce prikazano samo zadnjih 50 poruka. </UL>
+                <?php
+        };
+        ?>
+        <BR><P ALIGN="right"><A HREF="#top">Povratak na vrh</A></P>
+        <P>
+</UL>
+<HR>
+<HR>
+
+
+<P>
+<FONT SIZE="+2"><A NAME="commands"><B><U>Karakteristike i komande</U></B></A></FONT>
+<P>
+
+<FONT SIZE="+1"><A NAME="help"><B>komanda za pomoc:</B></A></FONT>
+<P>
+U chat sobi mozete traziti pomoc , tako sto cete kliknuti na <IMG SRC="images/helpOff.gif" WIDTH=15 HEIGHT=15 BORDER=0 ALT="?"> ikonu koja se nalazi na dnu lijevo.Takodje mozete i napisati <B>"/help" ili "/?" commands</B>.
+<BR><P ALIGN="right"><A HREF="#top">Povratak na vrh</A></P>
+<P>
+<P>
+<HR>
+
+<?php
+if (C_USE_SMILIES == "1")
+{
+	include("./lib/smilies.lib.php");
+	$Nb = count($SmiliesTbl);
+	$ResultTbl = Array();
+	DisplaySmilies($ResultTbl,$SmiliesTbl,$Nb,"tutorial");
+	unset($SmiliesTbl);
+	?>
+	<FONT SIZE="+1"><A NAME="smilies"><B>Smilies:</B></A></FONT>
+	<P>Mozete praviti i graficke smilies u porukama.Pogledajte kodove koji se nalaze u tabeli ispod , a koje zelite napisati.
+	<P ALIGN="center">
+	<TABLE BORDER=0 CELLPADDING=3 CELLSPACING=5>
+	<?php
+	$i = "0";
+	$Nb = count($ResultTbl);
+	while($i < $Nb)
+	{
+		if ($i > 0) echo("\t");
+		echo("<TR VALIGN=\"BOTTOM\">\n");
+		echo("$ResultTbl[$i]");
+		echo("\t</TR>\n\t<TR>\n");
+		$i++;
+		echo("$ResultTbl[$i]");
+		echo("\t</TR>\n");
+		$i++;
+	};
+	unset($ResultTbl);
+	?>
+	</TABLE>
+	<P>
+	<I>Na primjer</I>, saljete tekst"Hi Jack :)" bez navodnih bez navodnih znakova  i ona ce biti prikazana kao slijedece Hi Jack <IMG SRC="images/smilies/smile1.gif" WIDTH=15 HEIGHT=15 ALT=":)"> u chatu.
+	<BR><P ALIGN="right"><A HREF="#top">Povratak na vrh</A></P>
+	<P>
+	<HR>
+	<?php
+};
+
+if (C_HTML_TAGS_KEEP != "none")
+{
+        ?>
+        <FONT SIZE="+1"><A NAME="text"><B>Formatiranje teksta:</B></A></FONT>
+        <P>
+        Slova mogu biti debela, kosa ili  podvucena sa crtom , tako sto ih zagradite sa npr: &LT;B&GT; &LT;/B&GT, &LT;I&GT; &LT;/I&GT; or &LT;U&GT; &LT;/U&GT HTML .
+        <P>
+        <I>Na primjer</I>, &LT;B&GT;ovaj tekst &LT;/B&GT; ce napraviti <B>ovaj tekst</B>.
+        <P>
+        Za kreiranje  hyperlinka za e-mail adresu ili URL, napisite adresu  (bez ijedne HTML komande).Hyperlink ce biti kreiran automatski.
+        <BR><P ALIGN="right"><A HREF="#top">Povratak na vrh</A></P>
+        <P>
+        <P>
+        <HR>
+        <?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="invite"><B>Suggesting an user to join your current chat room:</B></A></FONT>
+<P>
+You can use the <B>invite command</B> to suggest an user to join the room you are chatting into.
+<P>
+<I>For example:</I> /invite Jack
+<P>
+will send a private message to Jack suggesting him to join you in your current chat room. This message contains the name of the target room and this name appears as a link.
+<P>
+Note that you can put more than one username in the invite command (eg "/invite Jack,Helen,Alf"). They must be splitted by comma (,) without spaces.
+<BR><P ALIGN="right"><A HREF="#top">Povratak na vrh</A></P>
+<P>
+<HR>
+
+
+<P>
+<FONT SIZE="+1"><A NAME="actions"><B>Actions:</B></A></FONT>
+<P>
+To describe what you're doing you can use the <B>command "/me action"</B> without quotes.
+<P>
+<I>For example:</I> If Jack sends the message "/me is smoking a cigarette" the message frame will shown "<B>* Jack</B>" is smoking a cigarette".
+<BR><P ALIGN="right"><A HREF="#top">Povratak na vrh</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="changeroom"><B>Mijenjanje sobe:</B></A></FONT>
+<P>
+Lista koja se nalazi desno na ekranu omoguca vam da vidite  broj soba i korisnika koji su trenutno u njima. Da bi naputili sobu u kojoj se nalazite i presli u neku drugu, jednostavno kliknite na ime druge sobe. Sobe koje su prazne se ne pojavljuju na listi. Mozete uci i u praznu sobu tako sto cete napisati <B>komandu"/join #roomname"</B> without quotes.
+<P>
+<I>Na primjer:</I> /join #RedRoom
+<P>
+i onda cete biti u crvenoj sobi.
+<?php
+if (C_VERSION == "2")
+{
+        echo(C_REQUIRE_REGISTER == "0" ? "<P>Ako ste registrovani korisnik, vi" : "<BR><P>You");
+        ?>
+         takodje mozete kreirati novu sobu sa istim ovim komandama. Ali stim da morate tacno odrediti njihov tip: 0 za privatnu, 1 za javnu (ako se ne napise 0 onda je automatski 1).
+        <P>
+        <I>Na primejr:</I> /join 0 #MyRoom
+        <P>
+        Mozete kreirati novu privatnu sobu (pretpostvljamo da javna nije napravljena sa istim imenon) imenom Moja soba i uci u nju.
+        <P>
+        Imena soba ne mogu sadrzavati zarez ili kosu crtu (\).<?php if (C_NO_SWEAR == "1") echo(" Niti mogu sadrzavati  \"ruzne rijeci\"."); ?>
+        <?php
+}
+?>
+<BR><P ALIGN="right"><A HREF="#top">Povratak na vrh</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B>Modificiranje profila unutar chat:</B></FONT>
+<P>
+The <B>Profil komanda</B> kreira posebni  pop-up prozor u kojem mozete dodavati i mijenjati svoj korisnicki profil , osim nadimka i sifre (morate koristiti link na pocetnoj strani da bi ovo uradili).<BR>Napisite/ profil
+<BR><P ALIGN="right"><A HREF="#top">Povratak na vrh</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B>Recalling the last message or command you have submitted:</B></FONT>
+<P>
+The <B>! command</B> recalls the last message or command you have submitted.<BR>Type /!
+<BR><P ALIGN="right"><A HREF="#top">Povratak na vrh</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B>Odgovaranje specificnom korisniku:</B></FONT>
+<P>
+Ako kliknete jednom na ime drugog korisnika u vasoj chat sobi sa liste (desno na ekranu) pokazat ce se "korisnicko ime>" u vasem polju za tekst. Ovako mozete direktno poslati poruku tom korisniku, mozde kao odgovor na nesto sto je on / ona napisao - la.
+<BR><P ALIGN="right"><A HREF="#top">Povratak na vrh</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="private"><B>Privatne poruke:</B></A></FONT>
+<P>
+<!-- To update
+Da bi poslali privatnu poruku drugom korisniku (koji je u Vasoj chat sobo ili ne ), napisite <B>komandu "/msg ime korisnika tekst poruke" ili "/za korisnika tekst poruke"</B> bez navodnih znakova.
+-->
+To send a private message to another user currently in your chat room, type the <B>command "/msg username messagetext" or "/to username messagetext"</B> without quotes.
+<P>
+<I>Na primjer , gdje je Jack ime korisnika:</I> /msg Jack zdravo, kako si?
+<P>
+Poruka ce se pojaviti kod Jack i kod Vas, ali ostali korisnici nece vidjeti poruku.
+<P>
+Note that clicking on the nick of a message sender in the main frame will automatically add this command to the input field for messages.
+<BR><P ALIGN="right"><A HREF="#top">Povratak na vrh</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="ignore"><B>Ignorisanje ostalih korisnika :</B></A></FONT>
+<P>
+Da bi ignorisali svu postu od drugog korisnika,napisite  <B>komandu  "/ignorisi ime korisnika"</B>  bez navodnih znakova.
+<P>
+<I>Na primjer :</I> /ignore Jack
+<P>
+Od tog vremena pa nadalje , poruke od korisnika Jack nece se prikazivati na vasem ekranu.
+<P>
+Da bi imali listu korisnika cije su poruke ignorisane, samo napisite <B>komandu "/ignorisi"</B>  bez navodnih znakova.
+<P>
+Da bi nastavili prikazivanje poruka od ignorisanog korisnika , napisite  <B>komandu "/ignorisi - ime korisnika"</B> bez navodnih znakova gdje je "-" minus. <P>
+<P>
+<I>Na primjer:</I> /ignore - Jack
+<P>
+Sada sve poruke od  jacka ce biti opet prikazane , ukljucujuci i njegove prijasne poruke koje je poslao.
+Ako ne odredite ime korisnika iza minusa - vasa " lista za ignoriranje " ce biti izbrisana.
+<P>
+Oznacite da mozete staviti vise od jednog korisnickog imena u ignorirajucu komandu  (npr "/ignorisi Jack,Helen,Alf" ili "/ignorsi - Jack,Alf"). Moraju biti rastavljeni sa zarezom (,) bez razmaka.
+<BR><P ALIGN="right"><A HREF="#top">Povratak na vrh</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="whois"><B>Dobivanje informacija o ostalim korisnicima :</B></A></FONT>
+<P>
+Da bi vidjeli javne informacije o drugom korisniku ,napisite  <B>komandu "/ko je korisnik"</B>bez navodnih znakova.
+<P>
+<I>Na primjer:</I> /whois Jack
+<P>
+gdje je "Jack" korisnicko ime . Ova komanda ce kreirati posebni  pop-up prozor koji ce  prikazati dostupne javne informacije o tom korisniku.
+<BR><P ALIGN="right"><A HREF="#top">Povratak na vrh </A></P>
+<P>
+<HR>
+
+<?php
+if (C_SAVE != "0")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="save"><B>Spasi poruke :</B></A></FONT>
+	<P>
+	Za snimanje porukas na lokalni HTML dokumenat, napisite <B>komandu "/save n"</B> bez navodnih znakova.
+	<P>
+	<I>Na primjer :  /save 5
+	<P>
+	gdje je 5 broj poruka koje treba spasiti. Ako nije specificirano, sve dostupne poruke poslate u tekucu sobu biti ce uracunate.
+	<BR><P ALIGN="right"><A HREF="#top">Povratak na vrh ></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+<HR>
+
+
+<P>
+<FONT SIZE="+2"><A NAME="moderator"><B><U>Komande samo za administratora i /ili moderatora </U></B></A></FONT>
+
+<P>
+<FONT SIZE="+1"><A NAME="announce"><B>Posalji oglas :</B></A></FONT>
+<P>
+Administrator moze poslati oglas svim korisnicima u bilo kojoj sobi da pricaju sa  <B>announce command </B>
+<P>
+<I>Na primjer :</I> /announce  Chat sistem ce biti zatvoren  veceras u 20:00 , zbog odrzavanja.</I>
+<BR><P ALIGN="right"><A HREF="#top">Povratak na vrh</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="kick"><B>Izbacivanje korisnika :</B></FONT>
+<P>
+Moderator moze udariti korisnika i administrator moze izbaciti korisnika ili moderatora sa  <B>kick command</B>.
+<P>
+<I>Na primjer , ako je Jack ime korisnika kojeg treba izbaciti:</I> /kick Jack</I>
+<BR><P ALIGN="right"><A HREF="#top">Povratak na vrh</A></P>
+<P>
+<HR>
+
+<?php
+if (C_BANISH != "0")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="banish"><B>Banish an user:</B></A></FONT>
+	<P>
+	Moderators can banish an user and the administrator can banish an user or a moderator with the <B>ban command</B>.<BR>
+	The administrator can banish an user from another room than the one he is chatting into. He can also banish an user forever and from the chat as a whole with the '<B>&nbsp;*&nbsp;</B>' setting that must be inserted before the nick of the user to be banished.
+	<P>
+	<I>For example</I>, if Jack is the name of the user to banish : <I>/ban Jack</I> or <I>/ban * Jack</I>
+	<BR><P ALIGN="right"><A HREF="#top">Povratak na vrh</A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="promote"><B>Unaprijedi korisnika u moderatora :</B></A></FONT>
+<P>
+Moderatori  i administrator mogu unaprijediti  i drugog korsnika u moderatora sa <B>promote command</B>.
+<P>
+<I>Na primjer, ako je Jack ime  korisnika kojeg treba unaprijediti :</I> /promote Jack</I>
+<P>
+Samo administrator moze imati pristup suprotnom obiljezju  ( reducirati moderatora u korisnika ) na namjenskoj stranici . Nema komande koja to moze uraditi.
+<BR><P ALIGN="right"><A HREF="#top">Povratak na vrh </A></P>
+<P>
+
+
+</BODY>
+</HTML>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/bosnian/regex.txt 0.15.0/chat/localization/bosnian/regex.txt
--- 0.14.5/chat/localization/bosnian/regex.txt	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/bosnian/regex.txt	2004-04-01 03:07:08.000000000 -0600
@@ -0,0 +1 @@
+bs|bosnian
\ No newline at end of file
Binary files 0.14.5/chat/localization/brazilian_portuguese/flag.gif and 0.15.0/chat/localization/brazilian_portuguese/flag.gif differ
diff -ruN 0.14.5/chat/localization/brazilian_portuguese/localized.admin.php 0.15.0/chat/localization/brazilian_portuguese/localized.admin.php
--- 0.14.5/chat/localization/brazilian_portuguese/localized.admin.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/brazilian_portuguese/localized.admin.php	2004-04-01 03:07:08.000000000 -0600
@@ -0,0 +1,61 @@
+<?php
+// File : brazilian_portuguese.lang.php
+// Translation by Fabiano R. Prestes <zoso@post.com>
+
+// extra header for charset
+$Charset = "iso-8859-1";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// Top frame
+define("A_MENU_0", "Administrao para %s");
+define("A_MENU_1", "Usurios registrados");
+define("A_MENU_2", "Usurios banidos");
+define("A_MENU_3", "Salas vazias");
+define("A_MENU_4", "Send mails");
+
+// Frame for registered users
+define("A_SHEET1_1", "Lista de usurios registrados e suas permisses");
+define("A_SHEET1_2", "Nome do usurio");
+define("A_SHEET1_3", "Permisses");
+define("A_SHEET1_4", "Moderar salas");
+define("A_SHEET1_5", "Salas moderadas so separadas por vrgulas (,) sem espaos.");
+define("A_SHEET1_6", "Remover usurios selecionados");
+define("A_SHEET1_7", "Modificar");
+define("A_SHEET1_8", "No existe nenhum usurio registrado com exceo de voc.");
+define("A_SHEET1_9", "Banir usurios selecionados");
+define("A_SHEET1_10", "Agora voc deve ir  pgina de usurios banidos para refinar suas escolhas.");
+define("A_SHEET1_11", "ltima conexo");
+define("A_USER", "Usurio");
+define("A_MODER", "Moderador");
+define("A_PAGE_CNT", "Page %s of %s");
+
+// Frame for banished users
+define("A_SHEET2_1", "Lista de usurios banidos e salas relacionadas");
+define("A_SHEET2_2", "IP");
+define("A_SHEET2_3", "Salas relacionadas");
+define("A_SHEET2_4", "At");
+define("A_SHEET2_5", "sem fim");
+define("A_SHEET2_6", "salas so separadas por vrgulas sem espaos (,) se forem menos que 4, caso contrrio o '<B>&nbsp;*&nbsp;</B>') <BR>bane de todas as salas.");
+define("A_SHEET2_7", "Remover banimento para usurio marcado(s)");
+define("A_SHEET2_8", "No existe nenhum usurio banido.");
+
+// Frame for cleaning rooms
+define("A_SHEET3_1", "Lista das salas existentes");
+define("A_SHEET3_2", "Esvaziar uma sala \"no-padro\" vai remover todos os status de moderador<BR>para esta sala.");
+define("A_SHEET3_3", "Esvaziar sala selecionada");
+define("A_SHEET3_4", "No existe nenhuma sala para esvaziar.");
+
+// Frame for sending mails
+define("A_SHEET4_0", "You haven't set required variables in the<BR>'chat/admin/mail4admin.php' script.");
+define("A_SHEET4_1", "Send e-mails");
+define("A_SHEET4_2", "To:");
+define("A_SHEET4_3", "Select all");
+define("A_SHEET4_4", "Subject:");
+define("A_SHEET4_5", "Messages:");
+define("A_SHEET4_6", "Start sending");
+define("A_SHEET4_7", "All e-mails have been sent.");
+define("A_SHEET4_8", "Internal error while sending the mails.");
+define("A_SHEET4_9", "Addresse(s), subject or message is missing!");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/brazilian_portuguese/localized.chat.php 0.15.0/chat/localization/brazilian_portuguese/localized.chat.php
--- 0.14.5/chat/localization/brazilian_portuguese/localized.chat.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/brazilian_portuguese/localized.chat.php	2004-04-01 03:07:09.000000000 -0600
@@ -0,0 +1,221 @@
+<?php
+// File : brazilian_portuguese.lang.php
+// Translation by Fabiano R. Prestes <zoso@post.com>
+
+// extra header for charset
+$Charset = "iso-8859-1";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// welcome page
+define("L_TUTORIAL", "Tutorial");
+
+define("L_WEL_1", "Mensagens so apagadas aps");
+define("L_WEL_2", "horas e nicks aps");
+define("L_WEL_3", "minutos ...");
+
+define("L_CUR_1", "No momento, existem");
+define("L_CUR_2", "no chat.");
+define("L_CUR_3", "Usurios nas salas de chat neste momento");
+define("L_CUR_4", "usurios em salas privadas");
+
+define("L_SET_1", "Por favor, escolha ...");
+define("L_SET_2", "seu nick");
+define("L_SET_3", "o nmero de mensagens a serem mostradas");
+define("L_SET_4", "o intervalo entre cada atualizao");
+define("L_SET_5", "Escolha uma sala de chat ...");
+define("L_SET_6", "salas padro");
+define("L_SET_7", "Faa sua escolha ...");
+define("L_SET_8", "salas pblicas criadas por usurios");
+define("L_SET_9", "crie a sua prpria");
+define("L_SET_10", "pblica");
+define("L_SET_11", "privativa");
+define("L_SET_12", "sala");
+define("L_SET_13", "Agora,  s");
+define("L_SET_14", "conversar");
+
+define("L_SRC", "est disponvel gratuitamente em");
+
+define("L_SECS", "segundos");
+define("L_MIN", "minuto");
+define("L_MINS", "minutos");
+
+// registration stuff:
+define("L_REG_1", "sua senha");
+define("L_REG_1r", "(somente quando for registrado)");
+define("L_REG_2", "Usurios registrados");
+define("L_REG_3", "Registrar-se");
+define("L_REG_4", "Editar seus detalhes");
+define("L_REG_5", "Deletar usurio");
+define("L_REG_6", "Registro de usurio");
+define("L_REG_7", "sua senha");
+define("L_REG_8", "seu email");
+define("L_REG_9", "Voc foi registrado com sucesso.");
+define("L_REG_10", "Voltar");
+define("L_REG_11", "Editando");
+define("L_REG_12", "Modificando detalhes de usurio");
+define("L_REG_13", "Deletando usurio");
+define("L_REG_14", "Login");
+define("L_REG_15", "Log In");
+define("L_REG_16", "Modificar");
+define("L_REG_17", "Seus detalhes foram modificados.");
+define("L_REG_18", "Voc foi chutado da sala pelo moderador.");
+define("L_REG_19", "Voc realmente quer ser removido?");
+define("L_REG_20", "Sim");
+define("L_REG_21", "Voc foi removido.");
+define("L_REG_22", "No");
+define("L_REG_25", "Fechar");
+define("L_REG_30", "nome");
+define("L_REG_31", "sobrenome");
+define("L_REG_32", "website");
+define("L_REG_33", "mostrar email com comando /whois");
+define("L_REG_34", "Editando detalhes do usurio");
+define("L_REG_35", "Administrao");
+define("L_REG_36", "lnguas faladas");
+define("L_REG_37", "Campos com <span class=\"error\">*</span> precisam ser completados.");
+define("L_REG_39", "A sala em que voc estava foi removida pelo administrador.");
+define("L_REG_45", "sexo");
+define("L_REG_46", "masculino");
+define("L_REG_47", "feminino");
+
+// e-mail validation stuff
+define("L_EMAIL_VAL_1", "Suas configuraes para entrar no chat");
+define("L_EMAIL_VAL_2", "Bem-vindo ao nosso servidor de chat.");
+define("L_EMAIL_VAL_Err", "Erro interno, por favor avise o administrador: <a href=\"mailto:%s\">%s</a>.");
+define("L_EMAIL_VAL_Done", "Sua senha foi enviada para o seu email.");
+
+// admin stuff
+define("L_ADM_1", "%s no  mais moderador desta sala.");
+define("L_ADM_2", "Voc no  mais um usurio registrado.");
+
+//error messages;
+define("L_ERR_USR_1", "Este nick j est sendo usado. Por favor escolha outro.");
+define("L_ERR_USR_2", "Voc deve escolher um nick.");
+define("L_ERR_USR_3", "Este nick  registrado. Por favor, digite a senha correta ou escolha outro.");
+define("L_ERR_USR_4", "Voc digitou a senha errada.");
+define("L_ERR_USR_5", "Voc precisa escolher um nick.");
+define("L_ERR_USR_6", "Voc precisa fornecer uma senha.");
+define("L_ERR_USR_7", "Voc precisa fornecer um email.");
+define("L_ERR_USR_8", "Voc precisa fornecer um email vlido.");
+define("L_ERR_USR_9", "Este nick j est registrado.");
+define("L_ERR_USR_10", "Nick ou senha invlida.");
+define("L_ERR_USR_11", "Voc precisar ser o Administrador.");
+define("L_ERR_USR_12", "Voc  o Administrador ento no pode ser removido.");
+define("L_ERR_USR_13", "Para poder criar sua prpria sala voc precisa ser registrado.");
+define("L_ERR_USR_14", "Voc precisa ser registrado antes de usar o chat.");
+define("L_ERR_USR_15", "Voc precisa escrever o seu nome completo.");
+define("L_ERR_USR_16", "Nicks no podem conter espaos, vrgulas ou barras (\\).");
+define("L_ERR_USR_17", "Esta sala no existe e voc no tem autorizao para criar uma.");
+define("L_ERR_USR_18", "Palavra proibida encontrada no seu nick.");
+define("L_ERR_USR_19", "Voc no pode estar em mais de uma sala ao mesmo tempo.");
+define("L_ERR_USR_20", "Voc foi banido desta sala ou do chat.");
+define("L_ERR_ROM_1", "O nome da sala no pode conter vrgulas ou barras (\\).");
+define("L_ERR_ROM_2", "Palavra proibida encontrada no nome da sala que voc quer criar.");
+define("L_ERR_ROM_3", "Esta sala j existe como pblica.");
+define("L_ERR_ROM_4", "Nome de sala invlido.");
+
+// users frame or popup
+define("L_EXIT", "Sair");
+define("L_DETACH", "Destacar");
+define("L_EXPCOL_ALL", "Expandir/Minimizar todos");
+define("L_CONN_STATE", "Estado da conexo");
+define("L_CHAT", "Chat");
+define("L_USER", "usurio");
+define("L_USERS", "usurios");
+define("L_NO_USER", "Nenhum usurio");
+define("L_ROOM", "sala");
+define("L_ROOMS", "salas");
+define("L_EXPCOL", "Expandir/Minimizar sala");
+define("L_BEEP", "Liga/Desliga do bipe de aviso de entrada");
+define("L_PROFILE", "Mostrar detalhes");
+define("L_NO_PROFILE", "No profile");
+
+// input frame
+define("L_HLP", "Ajuda");
+define("L_BAD_CMD", "Este no  um comando vlido!");
+define("L_ADMIN", "%s j  administrador !");
+define("L_IS_MODERATOR", "%s j  moderador !");
+define("L_NO_MODERATOR", "S o moderador pode usar este comando.");
+define("L_MODERATOR", "%s agora  um moderador para esta sala.");
+define("L_NONEXIST_USER", "Usurio %s no est na sala atual.");
+define("L_NONREG_USER", "Usurio %s no  registrado.");
+define("L_NONREG_USER_IP", "O IP do usurio : %s.");
+define("L_NO_KICKED", "Usurio %s  moderador ou administrador e no pode ser chutado.");
+define("L_KICKED", "Usurio %s foi chutado com sucesso.");
+define("L_NO_BANISHED", "Usurio %s  moderador ou administrador e no pode ser banido.");
+define("L_BANISHED", "Usurio %s foi banido com sucesso.");
+define("L_SVR_TIME", "Hora do servidor: ");
+define("L_NO_SAVE", "Sem mensagem para salvar!");
+define("L_NO_ADMIN", "S o administrador pode usar este comando.");
+define("L_ANNOUNCE", "ANNCIO");
+define("L_INVITE", "%s sugere que voc junte-se a ele(a) na sala <a href=\"#\" onClick=\"window.parent.runCmd('%s','%s')\">%s</a>.");
+define("L_INVITE_REG", " You have to be registered to enter this room.");
+define("L_INVITE_DONE", "Seu convite foi enviado para %s.");
+define("L_OK", "Send");
+
+// help popup
+define("L_HELP_TIT_1", "Emoticons");
+define("L_HELP_TIT_2", "Formatao de texto para mensagens");
+define("L_HELP_FMT_1", "Voc pode usar texto bold (negrito), itlicos ou sublinhado colocando as tags &lt;B&gt; &lt;/B&gt;, &lt;I&gt; &lt;/I&gt; ou &lt;U&gt; &lt;/U&gt; antes e depois de parte ou de todo o texto.<BR>Exemplo: &lt;B&gt;este texto&lt;/B&gt; vai gerar <B>este texto</B>.");
+define("L_HELP_FMT_2", "Para criar um link (para email ou URL) na sua mensagem, simplesmente digite o texto sem tag html alguma. O link ser gerado automaticamente.");
+define("L_HELP_TIT_3", "Comandos");
+define("L_HELP_USR", "usurio");
+define("L_HELP_MSG", "mensagem");
+define("L_HELP_ROOM", "sala");
+define("L_HELP_CMD_0", "{} indicam um parmetro requerido, [] indicam um opcional.");
+define("L_HELP_CMD_1", "Ajuste o nmero de mensagens a serem mostradas, 5 pelo menos.");
+define("L_HELP_CMD_1a", "Nmero de mensagens  mostrar. O mnimo e padro  5.");
+define("L_HELP_CMD_1b", "Atualiza o frame de mensagens e mostra as ltimas n mensagens. Mnimo e padro de 5.");
+define("L_HELP_CMD_2a", "Modifica o atraso na atualizao da lista de mensagens (em segundos).<BR>Se n no for especificado ou for menor do que 3, alterna entre sem atualizao e 10 segundos de intervalo.");
+define("L_HELP_CMD_2b", "Modifica o atraso na atualizao das listas de mensagens e usurios (em segundos).<BR>Se n no for especificado ou for menor do que 3, alterna entre sem atualizao e 10 segundos de intervalo.");
+define("L_HELP_CMD_3", "Inverte a ordem das mensagens.");
+define("L_HELP_CMD_4", "Muda de sala, criando se ela no existir e se voc for autorizado.<BR>n igual a 0 para privativa e 1 para pblica, o padro  1 se no for especificado.");
+define("L_HELP_CMD_5", "Deixa a sala aps escrever a mensagem opcional.");
+define("L_HELP_CMD_6", "Evita mensagens de um usurio se o nick for especificado.<BR>Desliga o \"ignore\" para um nick quando o mesmo for especificado com o sinal de menos e desliga todos quando for somente o sinal.<BR> Sem nenhuma opo, esse comando abre uma janela que mostra os nicks ignorados.");
+define("L_HELP_CMD_7", "Busca a ltima linha enviada (comando ou mensagem).");
+define("L_HELP_CMD_8", "Mostra/Oculta data e hora antes das mensagens.");
+define("L_HELP_CMD_9", "Tira usurio do chat. Este comando s pode ser usado pelo moderador.");
+define("L_HELP_CMD_10", "Envia uma mensagem privativa (reservada) ao usurio especificado (os outros usurios no iro v-la)");
+define("L_HELP_CMD_11", "Mostra informaes sobre o usurio especificado.");
+define("L_HELP_CMD_12", "Janela pop-up para editar detalhes do usurio.");
+define("L_HELP_CMD_13", "Liga/Desliga a notificao de entrada/sada de usurios da sala atual.");
+define("L_HELP_CMD_14", "Permite o administrador ou moderador(es) da sala atual a promover a moderador da mesma sala um outro usurio registrado.");
+define("L_HELP_CMD_15", "Limpa o frame de mensagens e mostra somente as ltimas 5 mensagens.");
+define("L_HELP_CMD_16", "Salva as ltimas n mensagens (com exceo das notificaes) para um arquivo HTML. Se n no for especificado, todas as mensagens disponveis sero includas.");
+define("L_HELP_CMD_17", "Permite ao administrador anunciar (enviar mensagem)  todos os usurios do chat, independente da sala onde eles estejam.");
+define("L_HELP_CMD_18", "Sugere a um usurio conversando em outra sala que ele entre na sala que voc est.");
+define("L_HELP_CMD_19", "Permite ao(s) moderador(es) de uma sala ou ao administrador a \"banir\" um usurio de uma sala pelo tempo definido pelo administrador.<BR>Este pode banir um usurio conversando em uma outra sala diferente da que ele est, e usar o parmetro '<B>&nbsp;*&nbsp;</B>' para ban-lo \"para sempre\" do servidor de chat.");
+define("L_HELP_CMD_20", "Describe what you're doing without refer yourself.");
+
+//message frame
+define("L_NO_MSG", "No existe atualmente nenhuma mensagem ...");
+define("L_TODAY_DWN", "The messages that have been sent today start below");
+define("L_TODAY_UP", "The messages that have been sent today start above");
+
+// message colors
+$TextColors = array(	"Preto" => "#000000",
+				"Vermelho" => "#FF0000",
+				"Verde" => "#009900",
+				"Azul" => "#0000FF",
+				"Roxo" => "#9900FF",
+				"Vermelho Escuro" => "#990000",
+				"Verde Escuro" => "#006600",
+				"Azul Escuro" => "#000099",
+				"Marrom" => "#996633",
+				"Azul Claro" => "#006699",
+				"Cenoura" => "#FF6600");
+
+//ignored popup
+define("L_IGNOR_TIT", "Ignorado");
+define("L_IGNOR_NON", "Nenhum usurio ignorado");
+
+// whois popup
+define("L_WHOIS_ADMIN", "Administrador");
+define("L_WHOIS_MODER", "Moderador");
+define("L_WHOIS_USER", "Usurio");
+
+// Notification messages of user entrance/exit
+define("L_ENTER_ROM", "%s entra na sala");
+define("L_EXIT_ROM", "%s sai da sala");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/brazilian_portuguese/regex.txt 0.15.0/chat/localization/brazilian_portuguese/regex.txt
--- 0.14.5/chat/localization/brazilian_portuguese/regex.txt	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/brazilian_portuguese/regex.txt	2004-04-01 03:07:09.000000000 -0600
@@ -0,0 +1 @@
+pt[-_]br
\ No newline at end of file
Binary files 0.14.5/chat/localization/bulgarian/flag.gif and 0.15.0/chat/localization/bulgarian/flag.gif differ
diff -ruN 0.14.5/chat/localization/bulgarian/localized.admin.php 0.15.0/chat/localization/bulgarian/localized.admin.php
--- 0.14.5/chat/localization/bulgarian/localized.admin.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/bulgarian/localized.admin.php	2004-04-01 03:07:09.000000000 -0600
@@ -0,0 +1,61 @@
+<?php
+// File : bulgarian/localized.admin.php
+// Translation by Lao Dzi <daodadzin@abv.bg>
+
+// extra header for charset
+$Charset = "windows-1251";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// Top frame
+define("A_MENU_0", ": %s");
+define("A_MENU_1", " ");
+define("A_MENU_2", " ");
+define("A_MENU_3", " ");
+define("A_MENU_4", " ");
+
+// Frame for registered users
+define("A_SHEET1_1", "      ");
+define("A_SHEET1_2", "");
+define("A_SHEET1_3", "");
+define("A_SHEET1_4", " ");
+define("A_SHEET1_5", "     ,   .");
+define("A_SHEET1_6", "  ");
+define("A_SHEET1_7", "");
+define("A_SHEET1_8", " ,  , .");
+define("A_SHEET1_9", "  ");
+define("A_SHEET1_10", "       .");
+define("A_SHEET1_11", " ");
+define("A_USER", "");
+define("A_MODER", "");
+define("A_PAGE_CNT", " %s  %s");
+
+// Frame for banished users
+define("A_SHEET2_1", "      ");
+define("A_SHEET2_2", "IP");
+define("A_SHEET2_3", "  ");
+define("A_SHEET2_4", " ");
+define("A_SHEET2_5", "");
+define("A_SHEET2_6", "    ,     4,   '<B>&nbsp;*&nbsp;</B>'  <BR>     .");
+define("A_SHEET2_7", "  ");
+define("A_SHEET2_8", "  .");
+
+// Frame for cleaning rooms
+define("A_SHEET3_1", "   ");
+define("A_SHEET3_2", "   ,   \" \",<BR>          .");
+define("A_SHEET3_3", "  ");
+define("A_SHEET3_4", "  .");
+
+// Frame for sending mails
+define("A_SHEET4_0", "       <BR>'chat/admin/mail4admin.php'.");
+define("A_SHEET4_1", " ");
+define("A_SHEET4_2", " :");
+define("A_SHEET4_3", " ");
+define("A_SHEET4_4", ":");
+define("A_SHEET4_5", ":");
+define("A_SHEET4_6", " ");
+define("A_SHEET4_7", "   .");
+define("A_SHEET4_8", "     .");
+define("A_SHEET4_9", "   ,    !");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/bulgarian/localized.chat.php 0.15.0/chat/localization/bulgarian/localized.chat.php
--- 0.14.5/chat/localization/bulgarian/localized.chat.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/bulgarian/localized.chat.php	2004-04-01 03:07:09.000000000 -0600
@@ -0,0 +1,221 @@
+<?php
+// File : bulgarian/localized.chat.php
+// Translation by Lao Dzi <daodadzin@abv.bg>
+
+// extra header for charset
+$Charset = "windows-1251";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// welcome page
+define("L_TUTORIAL", "  ");
+
+define("L_WEL_1", "    ");
+define("L_WEL_2", "     ");
+define("L_WEL_3", " ...");
+
+define("L_CUR_1", " ");
+define("L_CUR_2", " .");
+define("L_CUR_3", "   ");
+define("L_CUR_4", "   ");
+
+define("L_SET_1", "  ...");
+define("L_SET_2", "");
+define("L_SET_3", "  ");
+define("L_SET_4", "  ");
+define("L_SET_5", " ...");
+define("L_SET_6", "  ");
+define("L_SET_7", " ...");
+define("L_SET_8", " ,   ");
+define("L_SET_9", "  ");
+define("L_SET_10", "");
+define("L_SET_11", "");
+define("L_SET_12", "");
+define("L_SET_13", " ");
+define("L_SET_14", "  ");
+
+define("L_SRC", " ");
+
+define("L_SECS", "");
+define("L_MIN", "");
+define("L_MINS", "");
+
+// registration stuff
+define("L_REG_1", "");
+define("L_REG_1r", "(  )");
+define("L_REG_2", " ");
+define("L_REG_3", "");
+define("L_REG_4", " ");
+define("L_REG_5", " ");
+define("L_REG_6", " ");
+define("L_REG_7", " ");
+define("L_REG_8", " e-mail");
+define("L_REG_9", "   .");
+define("L_REG_10", "");
+define("L_REG_11", "");
+define("L_REG_12", "    ");
+define("L_REG_13", "  ");
+define("L_REG_14", "");
+define("L_REG_15", "");
+define("L_REG_16", "");
+define("L_REG_17", "   .");
+define("L_REG_18", "   .");
+define("L_REG_19", "    ?");
+define("L_REG_20", "");
+define("L_REG_21", "  .");
+define("L_REG_22", "");
+define("L_REG_25", "");
+define("L_REG_30", "");
+define("L_REG_31", "");
+define("L_REG_32", "WEB ");
+define("L_REG_33", "   e-mail   /whois");
+define("L_REG_34", "  ");
+define("L_REG_35", "");
+define("L_REG_36", "   ");
+define("L_REG_37", "   <span class=\"error\">*</span>    .");
+define("L_REG_39", ",    ,    .");
+define("L_REG_45", "");
+define("L_REG_46", "");
+define("L_REG_47", "");
+
+// e-mail validation stuff
+define("L_EMAIL_VAL_1", "   ");
+define("L_EMAIL_VAL_2", "   .");
+define("L_EMAIL_VAL_Err", " ,    : <a href=\"mailto:%s\">%s</a>.");
+define("L_EMAIL_VAL_Done", "     e-mail.");
+
+// admin stuff
+define("L_ADM_1", "%s,     .");
+define("L_ADM_2", "    .");
+
+//error messages
+define("L_ERR_USR_1", "     ,   .");
+define("L_ERR_USR_2", "    .");
+define("L_ERR_USR_3", "      .      .");
+define("L_ERR_USR_4", " .");
+define("L_ERR_USR_5", " .");
+define("L_ERR_USR_6", " .");
+define("L_ERR_USR_7", " e-mail.");
+define("L_ERR_USR_8", "    e-mail.");
+define("L_ERR_USR_9", "    .");
+define("L_ERR_USR_10", "   .");
+define("L_ERR_USR_11", "   .");
+define("L_ERR_USR_12", "        .");
+define("L_ERR_USR_13", "   ,    .");
+define("L_ERR_USR_14", "        .");
+define("L_ERR_USR_15", "   .");
+define("L_ERR_USR_16", "      ,      (\\).");
+define("L_ERR_USR_17", "          .");
+define("L_ERR_USR_18", "    .");
+define("L_ERR_USR_19", "        .");
+define("L_ERR_USR_20", "      .");
+define("L_ERR_ROM_1", "           (\\).");
+define("L_ERR_ROM_2", "         .");
+define("L_ERR_ROM_3", "   ,    ."); 
+define("L_ERR_ROM_4", "   .");
+
+// users frame or popup
+define("L_EXIT", "");
+define("L_DETACH", "   ");
+define("L_EXPCOL_ALL", "/ ");
+define("L_CONN_STATE", "  ");
+define("L_CHAT", "");
+define("L_USER", "");
+define("L_USERS", "");
+define("L_NO_USER", "   ");
+define("L_ROOM", "");
+define("L_ROOMS", "");
+define("L_EXPCOL", "/ ");
+define("L_BEEP", "/     ");
+define("L_PROFILE", " ");
+define("L_NO_PROFILE", " ");
+
+// input frame
+define("L_HLP", "");
+define("L_BAD_CMD", "    !");
+define("L_ADMIN", "%s - !");
+define("L_IS_MODERATOR", "%s    !");
+define("L_NO_MODERATOR", "          .");
+define("L_MODERATOR", " %s  .");
+define("L_NONEXIST_USER", " %s   .");
+define("L_NONREG_USER", " %s   .");
+define("L_NONREG_USER_IP", " IP : %s.");
+define("L_NO_KICKED", " %s            .");
+define("L_KICKED", " %s     .");
+define("L_NO_BANISHED", "%s          .");
+define("L_BANISHED", " %s  .");
+define("L_SVR_TIME", "  : ");
+define("L_NO_SAVE", " !");
+define("L_NO_ADMIN", "      .");
+define("L_ANNOUNCE", "");
+define("L_INVITE", "%s     <A HREF=\"#\" onClick=\"window.parent.runCmd('%s','%s')\">%s</A>.");
+define("L_INVITE_REG", "      ,      .");
+define("L_INVITE_DONE", "    %s.");
+define("L_OK", "");
+
+// help popup
+define("L_HELP_TIT_1", "");
+define("L_HELP_TIT_2", "  ");
+define("L_HELP_FMT_1", "    ,   ,   &lt;B&gt; &lt;/B&gt;, &lt;I&gt; &lt;/I&gt;  &lt;U&gt; &lt;/U&gt;.<BR>, &lt;B&gt;&lt;/B&gt;   <B></B>.");
+define("L_HELP_FMT_2", "     (e-mail or URL)   ,   ,  .    .");
+define("L_HELP_TIT_3", "");
+define("L_HELP_USR", "");
+define("L_HELP_MSG", "");
+define("L_HELP_ROOM", "");
+define("L_HELP_CMD_0", "{}   , []   .");
+define("L_HELP_CMD_1", "     ( -  5).");
+define("L_HELP_CMD_1a", "     ( 5).");
+define("L_HELP_CMD_1b", "       n . ( 5 .)");
+define("L_HELP_CMD_2a", "       ( ).<BR> n      -  3,   \" \"  \" - 10 \".");
+define("L_HELP_CMD_2b", "      ( .).<BR> n      -  3,     10");
+define("L_HELP_CMD_3", "     .");
+define("L_HELP_CMD_4", "   , ,          .<BR> n    0    1    (   1).");
+define("L_HELP_CMD_5", "  ,   (  ).");
+define("L_HELP_CMD_6", "     (),     .<BR>   ,       '-'.<BR>    ,     '-'.<BR>        ,    .");
+define("L_HELP_CMD_7", "   (  ).");
+define("L_HELP_CMD_8", "/   .");
+define("L_HELP_CMD_9", "   .     .");
+define("L_HELP_CMD_10", "  .");
+define("L_HELP_CMD_11", "   .");
+define("L_HELP_CMD_12", "     .");
+define("L_HELP_CMD_13", "/       .");
+define("L_HELP_CMD_14", "                 .");
+define("L_HELP_CMD_15", "      5-  .");
+define("L_HELP_CMD_16", " n    HTML .  n   ,     .");
+define("L_HELP_CMD_17", "        ,   ,     ..");
+define("L_HELP_CMD_18", "         .");
+define("L_HELP_CMD_19", "         \"\"   ,     .<BR>         ,     '<B>&nbsp;*&nbsp;</B>'     \"\".");
+define("L_HELP_CMD_20", "     .");
+
+// message frame
+define("L_NO_MSG", "     ...");
+define("L_TODAY_DWN", ",  ,  -");
+define("L_TODAY_UP", ",  ,  -");
+
+// message colors
+$TextColors = array(	""			=> "#000000",
+						""		=> "#FF0000",
+						""			=> "#009900",
+						""			=> "#0000FF",
+						""			=> "#9900FF",
+						" "	=> "#990000",
+						" "	=> "#006600",
+						" "		=> "#000099",
+						" "	=> "#996633",
+						" "	=> "#006699",
+						""		=> "#FF6600");
+
+//ignored popup
+define("L_IGNOR_TIT", "");
+define("L_IGNOR_NON", "  ");
+
+// whois popup
+define("L_WHOIS_ADMIN", "");
+define("L_WHOIS_MODER", "");
+define("L_WHOIS_USER", "");
+
+// Notification messages of user entrance/exit
+define("L_ENTER_ROM", "%s   ");
+define("L_EXIT_ROM", "%s   ");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/bulgarian/localized.tutorial.php 0.15.0/chat/localization/bulgarian/localized.tutorial.php
--- 0.14.5/chat/localization/bulgarian/localized.tutorial.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/bulgarian/localized.tutorial.php	2004-04-01 03:07:10.000000000 -0600
@@ -0,0 +1,631 @@
+<?php
+// File : bulgarian/localized.tutorial.php
+// Translation by Lao Dzi <daodadzin@abv.bg>
+
+// Get the names and values for vars sent by the script that called this one
+if (isset($HTTP_GET_VARS))
+{
+	while(list($name, $value) = each($HTTP_GET_VARS))
+	{
+		$$name = $value;
+	}
+}
+?>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+
+<HEAD>
+<TITLE>  , <?php echo(APP_NAME." - ".APP_VERSION); ?></TITLE>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
+<STYLE>
+A.topLink
+{
+	text-decoration: underline;
+	color: #0000C0;
+}
+
+A.topLink:hover, A.topLink:active
+{
+	color: #FF9900;
+	text-decoration: none;
+	font-weight: 800;
+}
+
+.redText
+{
+	font-weight: 800;
+	color: #FF0000;
+}
+</STYLE>
+</HEAD>
+
+<BODY BGCOLOR="#CCCCFF">
+<P><A NAME="top"></P>
+<TABLE BORDER="5" CELLPADDING="5">
+<TR>
+	<TD><FONT SIZE="+2">  </FONT></TD>
+</TR>
+</TABLE><BR>
+
+<P CLASS="redText">
+:   Netscape         ,   ,        '?'.<BR>
+  :: View/CharacterSet/ ,<br>
+, : View/CharacterSet/SetDefault.
+</P>
+
+<?php
+if (C_MULTI_LANG == "1") 
+{
+	?>
+	<A HREF="#language" CLASS="topLink">  </A><BR>
+	<?php
+}
+?>
+<A HREF="#login" CLASS="topLink">  </A><BR>
+<A HREF="#register" CLASS="topLink"></A><BR>
+<A HREF="#modProfile" CLASS="topLink"><?php if (C_SHOW_DEL_PROF == "1") echo("/"); ?>   </A><BR>
+<?php
+if (C_VERSION == "2") 
+{
+	?>
+	<A HREF="#create_room" CLASS="topLink">  </A><BR>
+	<?php
+};
+if ($Ver == "H") 
+{
+	?>
+	<A HREF="#connection_state" CLASS="topLink">   </A><BR>
+	<?php
+};
+?>
+<A HREF="#sending" CLASS="topLink">  </A><BR>
+<A HREF="#users_list" CLASS="topLink">    </A><BR>
+<A HREF="#exit" CLASS="topLink">    </A><BR>
+<A HREF="#users_popup" CLASS="topLink">        </A><BR>
+<P>
+<A HREF="#customize" CLASS="topLink">   </A><BR>
+<P>
+<A HREF="#commands" CLASS="topLink">  :</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#help" CLASS="topLink"></A><BR>
+<?php
+if (C_USE_SMILIES == "1")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#smilies" CLASS="topLink"></A><BR>
+	<?php
+};
+if (C_HTML_TAGS_KEEP != "none")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#text" CLASS="topLink">  </A><BR>
+	<?php
+};
+?>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#invite" CLASS="topLink">  ,       </A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#changeroom" CLASS="topLink">     </A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#profile" CLASS="topLink">     </A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#history" CLASS="topLink">     </A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#answer" CLASS="topLink">   </A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#private" CLASS="topLink"> </A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#actions" CLASS="topLink"></A> <font color="red"></font><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#ignore" CLASS="topLink">  </A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#whois" CLASS="topLink">    </A><BR>
+<?php
+if (C_SAVE != "0")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#save" CLASS="topLink">  </A><BR>
+	<?php
+};
+?>
+<P>
+<A HREF="#moderator" CLASS="topLink">     :</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#announce" CLASS="topLink">  </A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#kick" CLASS="topLink">  </A><BR>
+<?php
+if (C_BANISH != "0")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#banish" CLASS="topLink">  </A><BR>
+	<?php
+};
+?>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#promote" CLASS="topLink">   </A><BR>
+<P>
+<HR>
+<HR>
+
+
+<?php
+if (C_MULTI_LANG == "1") 
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="language"><B>  </B></A></FONT>
+	<P>
+	<?php echo(APP_NAME); ?>        ,     .          ,      .   - ,    :
+	<P ALIGN="center">
+	<IMG SRC="images/tutorials/flags.gif" HEIGHT="44" WIDTH="424" ALT="   ">
+	<BR><P ALIGN="right"><A HREF="#top">  </A></P>
+	<HR>
+	<?php
+}
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="login"><B>:</B></A></FONT>
+<P>
+     ,        .         .<BR>
+<?php
+if (C_REQUIRE_REGISTER == "1")
+{
+	?>
+	<P>
+	   ,      <A HREF="#register"></A>.
+	<?php
+}
+else
+{
+	?>
+	<P>
+	     <A HREF="#register"></A>         . (  ,           ,   ).
+	<?php
+}
+?>
+<BR><P ALIGN="right"><A HREF="#top">  </A></P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="register"><B>:</B></A></FONT> 
+<P>
+     <?php if (C_REQUIRE_REGISTER == "0") echo("  "); ?>, ,    .     .
+<P>	
+<UL>
+	<LI>   <?php if (!C_EMAIL_PASWD) echo("  "); ?>     .              ,      .       ,      (\).
+<?php if (C_NO_SWEAR == "1") echo("      \" \"."); ?>
+	<LI>   ,   e-mail-      .        . 
+	<LI>      (Home Page),      .
+	<LI>     ,       .         .
+	<LI>,   ,  e-mail   .      ,   "   e-mail   /whois ".  
+	       e-mail,    .
+	<LI> ,           .    ,          .
+</UL>
+<P>
+<A NAME="modProfile"></A> ,      <?php if (C_SHOW_DEL_PROF == "1") echo("/"); ?>  ,        <?php echo((C_SHOW_DEL_PROF == "0" ? " " : " ")); ?>.<BR>
+<BR><P ALIGN="right"><A HREF="#top">  </A></P>
+<P>
+<HR>
+
+<?php
+if (C_VERSION == "2") 
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="create_room"><B>  :</B></A></FONT> 
+	<P>
+	     .                .         .<BR>
+	<P>
+	            (\).<?php if (C_NO_SWEAR == "1") echo("  ,        \" \"."); ?>
+	<BR><P ALIGN="right"><A HREF="#top">  </A></P>
+	<P>
+	<HR>
+	<?php
+};
+if ($Ver == "H")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="connection_state"><B>   :</B></A></FONT> 
+	<P>
+	,    ,              :
+	<P>	
+	<UL>
+		<LI><IMG SRC="images/connectOff.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT=" ">   ;
+		<LI><IMG SRC="images/connectOn.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="  ">     ;
+		<LI><IMG SRC="images/connectError.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT=" ">   .
+	</UL>
+	<P>
+	  ,   ,         .<br>
+	- ,           ,               .
+	<BR><P ALIGN="right"><A HREF="#top">  </A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="sending"><B>  :</B></A></FONT> 
+<P>
+       ,            Enter.         .<BR>
+<?php if (C_NO_SWEAR == "1") echo(" ,  \" \"      ."); ?>
+<P>
+      ,              .
+<BR><P ALIGN="right"><A HREF="#top">  </A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="users_list"><B>     (    ):</B></A></FONT> 
+<P>
+<OL>
+	    :<BR>
+	<LI> ,        ,       <A HREF="#whois">  </A>,        ;<BR>
+	<LI>        .
+</OL>
+<P><I></I>,   -   :
+<TABLE BORDER=0 CELLSPACING=10>
+<TR>
+	<TD>
+		<IMG SRC="images/tutorials/usersList.gif" WIDTH=128 HEIGHT=145 BORDER=0 ALT="  ">
+	</TD>
+	<TD>
+	<UL>
+		<LI>Nicolas         PhpMyChat;<BR>
+		<LI>alien (    ), Jezek2  Caridad -        PhpMyChat;<BR>
+		<LI>lolo -  .
+	</UL>
+	</TD>
+</TR>
+</TABLE>
+<BR><P ALIGN="right"><A HREF="#top">  </A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="exit"><B>    :</B></A></FONT>
+<P>
+    ,     "".          ,    :<BR>
+/exit<BR>
+/bye<BR>
+/quit<BR>
+             ,           .
+<I> :</I> /quit   !
+<P>
+  "  !"       .
+<BR><P ALIGN="right"><A HREF="#top">  </A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="users_popup"><B>        :</B></A></FONT> 
+<P>
+             ,    <IMG SRC="images/popup.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT=" ">        ,                 .<BR>
+       ,   -  .          .
+<P>
+    <IMG SRC="images/sound.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="">  /       .
+<BR><P ALIGN="right"><A HREF="#top">  </A></P>
+<P>
+<HR>
+<HR>
+
+
+<P>
+<FONT SIZE="+1"><A NAME="customize"><B>     :</B></A></FONT>
+<P>
+       .                   Enter.        (   Refresh).
+<P>
+<UL>
+	<?php
+	if ($Ver == "H")
+	{
+		?>
+		<LI> <B>Clear ()</B>              5 . <BR> "/clear"  .
+		<P>
+		<?php
+	}
+	else
+	{
+		?>
+		<LI> <B>Order ()</B>      .              .<BR> "/order"  .
+		<P>
+		<?php
+	};
+	?>
+	<LI> <B>Notify ()</B>    /   /     .  ,   <?php echo(C_NOTIFY ? "" : ""); ?>    <?php echo(C_NOTIFY ? "" : " "); ?>.<BR> "/notify"  .
+	<P>
+	<LI> <B>Timestamp (  )</B>    /          ,       .            . -  <?php echo(C_SHOW_TIMESTAMP ? "" : ""); ?>.<BR> "/timestamp"  .
+	<P>
+	<LI> <B>Refresh ()</B>         .       <?php echo(C_MSG_REFRESH); ?> .    "/refresh n"  ,  n -       .
+	<P>
+	<I>:</I> /refresh 5
+	<P>
+	       5 . *   -  3 ,           !*
+	<P>
+	<?php
+	if ($Ver == "L")
+	{
+		?>
+		<LI> <B>Show ()</B>           .        "/show n"  ,  n -    .
+		<P>
+		<I>:</I> /show 50
+		<P>
+		   50 .        ,      .</UL>
+		<?php
+	}
+	else
+	{
+		?>
+		<LI> <B>Show ()  Last ()</B>          ,   .  "/show n"  "/last n"  ,  n -    .
+		<P>
+		<I>:</I> /show 50  /last 50
+		<P>
+		      50    50  .</UL>
+		<?php
+	};
+	?>
+	<BR><P ALIGN="right"><A HREF="#top">  </A></P>
+	<P>
+</UL>
+<HR>
+<HR>
+
+
+<P>
+<FONT SIZE="+2"><A NAME="commands"><B><U>  </U></B></A></FONT> 
+<P>
+
+<FONT SIZE="+1"><A NAME="help"><B>:</B></A></FONT>
+<P>
+     ,    ,   <IMG SRC="images/helpOff.gif" WIDTH=15 HEIGHT=15 BORDER=0 ALT="">           .  ,           <B>"/help"</B>  <B>"/?"</B>  .
+<BR><P ALIGN="right"><A HREF="#top">  </A></P>
+<P>
+<P>
+<HR>
+
+<?php
+if (C_USE_SMILIES == "1")
+{
+	include("./lib/smilies.lib.php");
+	$Nb = count($SmiliesTbl);
+	$ResultTbl = Array();
+	DisplaySmilies($ResultTbl,$SmiliesTbl,$Nb,"tutorial");
+	unset($SmiliesTbl);
+	?>
+	<FONT SIZE="+1"><A NAME="smilies"><B>:</B></A></FONT>
+	<P>       .          ,       .
+	<P ALIGN="center">
+	<TABLE BORDER=0 CELLPADDING=3 CELLSPACING=5>
+	<?php
+	$i = "0";
+	$Nb = count($ResultTbl);
+	while($i < $Nb)
+	{
+		if ($i > 0) echo("\t");
+		echo("<TR VALIGN=\"BOTTOM\">\n");
+		echo("$ResultTbl[$i]");
+		echo("\t</TR>\n\t<TR>\n");
+		$i++;
+		echo("$ResultTbl[$i]");
+		echo("\t</TR>\n");
+		$i++;
+	};
+	unset($ResultTbl);
+	?>
+	</TABLE>
+	<P>
+	<I></I>,      ",  :)"  ,      ,  <IMG SRC="images/smilies/smile1.gif" WIDTH=15 HEIGHT=15 ALT=":)">    .
+	<BR><P ALIGN="right"><A HREF="#top">  </A></P>
+	<P>
+	<HR>
+	<?php
+};
+
+if (C_HTML_TAGS_KEEP != "none")
+{
+	?>
+	<FONT SIZE="+1"><A NAME="text"><B>  :</B></A></FONT>
+	<P>
+	    ,        &LT;B&GT; &LT;/B&GT;, &LT;I&GT; &LT;/I&GT;  &LT;U&GT; &LT;/U&GT;.
+	<P>
+	<I></I>, &LT;B&GT; &LT;/B&GT;     <B> </B>.
+	<P>
+	      e-mail  URL,   . ( HTML ).     .
+	<BR><P ALIGN="right"><A HREF="#top">  </A></P>
+	<P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="invite"><B>       :</B></A></FONT>
+<P>
+  <B>invite</B>,            ,      .
+<P>
+<I>:</I>  /invite  
+<P>
+        ,                      .
+<P>
+        /invite ( "/invite ,Helen,Alf").       (,)   .
+<BR><P ALIGN="right"><A HREF="#top">  </A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="changeroom"><B>  :</B></A></FONT>
+<P>
+  ,                 .             .       .      ,        <B>"/join #  "</B>  .
+<P>
+<I>:</I> /join #RedRoom 
+<P>
+     RedRoom.
+<?php
+if (C_VERSION == "2")
+{
+	echo(C_REQUIRE_REGISTER == "0" ? "<P>   , " : "<BR><P>");
+	?>
+	             .         : 0   ,  1   (-).
+	<P>
+	<I>:</I>  /join 0 #MyRoom 
+	<P>
+	    MyRoom (      )      .
+	<P>
+	            (\).<?php if (C_NO_SWEAR == "1") echo(" ,      \" \"."); ?>
+	<?php
+}
+?>
+<BR><P ALIGN="right"><A HREF="#top">  </A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="profile"><B>     :</B></A></FONT>
+<P>
+ <B>Profile ()</B>    ,            ,     . (    ,         ).<BR> /profile
+<BR><P ALIGN="right"><A HREF="#top">  </A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="history"><B>     :</B></A></FONT>
+<P>
+ <B>!</B>     ,     .<BR> /!
+<BR><P ALIGN="right"><A HREF="#top">  </A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="answer"><B>   :</B></A></FONT>
+<P>
+                     "__>"  .           , ,      .
+<BR><P ALIGN="right"><A HREF="#top">  </A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="private"><B> :</B></A></FONT>
+<P>
+         ,   <B>"/msg __ __"</b>  <b>"/to __ __"</B>  .
+<P>
+<I>,   :</I> /msg    ?
+<P>
+       ,        .
+<P>
+                     .
+<BR><P ALIGN="right"><A HREF="#top">  </A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="actions"><B>:</B></A></FONT>
+<P>
+       ,  <B>"/me "</B>  .
+<P>
+<I>:</I>    "/me   ",        "<B>* </B>   ".
+<BR><P ALIGN="right"><A HREF="#top">  </A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="ignore"><B>  :</B></A></FONT>
+<P>
+      ,   <B>"/ignore __"</B>  .
+<P>
+<I>:</I> /ignore 
+<P>
+             .
+<P>
+     ,   ,   <B>"/ignore"</B>  . 
+<P>
+       ,   <B>"/ignore - __"</B>  ,  "-"  .
+<P>
+<I>:</I> /ignore -  
+<P>
+          ,   ,       ,      .
+           ,      .
+<P>
+          (, "/ignore ,Helen,Alf"  "/ignore - ,Alf").      (,)   .
+<BR><P ALIGN="right"><A HREF="#top">  </A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="whois"><B>   :</B></A></FONT>
+<P>
+     ,   <B>"/whois __"</B>  .
+<P>
+<I>:</I> /whois 
+<P>
+ ''     .         ,       .
+<BR><P ALIGN="right"><A HREF="#top">  </A></P>
+<P>
+<HR>
+
+<?php
+if (C_SAVE != "0")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="save"><B>  :</B></A></FONT>
+	<P>
+	      HTML  ( ),   <B>"/save n"</B>  .
+	<P>
+	<I>:</I> /save 5
+	<P>
+	 '5' -     .  n   ,      .
+	<BR><P ALIGN="right"><A HREF="#top">  </A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+<HR>
+
+
+<P>
+<FONT SIZE="+2"><A NAME="moderator"><B><U>    </U></B></A></FONT> 
+
+<P>
+<FONT SIZE="+1"><A NAME="announce"><B>  :</B></A></FONT>
+<P>
+       ,   ,     ,     <B>announce</B>.
+<P>
+<I>: /announce       20:00.</I>
+<BR><P ALIGN="right"><A HREF="#top">  </A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="kick"><B>  :</B></A></FONT>
+<P>
+    ,       ,     <B>kick</B>.              (   ).
+<P>
+<I></I>,       :</I> /kick </I>
+<BR><P ALIGN="right"><A HREF="#top">  </A></P>
+<P>
+<HR>
+
+<?php
+if (C_BANISH != "0")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="banish"><B>  :</B></A></FONT>
+	<P>
+	    ,       ,   <B>ban</B>.<BR>
+	        .       ,   '<B>&nbsp;*&nbsp;</B>'    .
+	<P>
+	<I></I>,   -     : <I>/ban </I>  <I>/ban * </I>
+	<BR><P ALIGN="right"><A HREF="#top">  </A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="promote"><B>   :</B></A></FONT>
+<P>
+                <B>promote</B>.
+<P>
+<I></I>,   -    ,     :<I> /promote </I>
+<P>
+               (    ).    .
+<BR><P ALIGN="right"><A HREF="#top">  </A></P>
+<P>
+
+
+</BODY>
+</HTML>
diff -ruN 0.14.5/chat/localization/bulgarian/regex.txt 0.15.0/chat/localization/bulgarian/regex.txt
--- 0.14.5/chat/localization/bulgarian/regex.txt	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/bulgarian/regex.txt	2004-04-01 03:07:10.000000000 -0600
@@ -0,0 +1 @@
+bg|bulgarian
\ No newline at end of file
Binary files 0.14.5/chat/localization/catalan/_flag.gif and 0.15.0/chat/localization/catalan/_flag.gif differ
Binary files 0.14.5/chat/localization/catalan/flag.gif and 0.15.0/chat/localization/catalan/flag.gif differ
diff -ruN 0.14.5/chat/localization/catalan/localized.admin.php 0.15.0/chat/localization/catalan/localized.admin.php
--- 0.14.5/chat/localization/catalan/localized.admin.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/catalan/localized.admin.php	2004-04-01 03:07:10.000000000 -0600
@@ -0,0 +1,61 @@
+<?php
+// File : catalan.lang.php
+// Translation by Jan Arbona <jan@myp.ad>
+
+// extra header for charset
+$Charset = "iso-8859-1";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// Top frame
+define("A_MENU_0", "Administraci per a %s");
+define("A_MENU_1", "Usuaris registrats");
+define("A_MENU_2", "Usuaris marcats");
+define("A_MENU_3", "Netejar sales");
+define("A_MENU_4", "Send mails");
+
+// Frame for registered users
+define("A_SHEET1_1", "Llista dels usuaris registrats i quins permissos tenen");
+define("A_SHEET1_2", "Nom d'usuari");
+define("A_SHEET1_3", "Permissos");
+define("A_SHEET1_4", "Sales moderades");
+define("A_SHEET1_5", "Les sales moderades es troben separades per comes (,) sense espais en blanc.");
+define("A_SHEET1_6", "Eliminar les dades seleccionades");
+define("A_SHEET1_7", "Modificar");
+define("A_SHEET1_8", "Cap ms usuari registrat a excepci de vos.");
+define("A_SHEET1_9", "Marcar els perfils assenyalats");
+define("A_SHEET1_10", "Aneu ara a Usuaris marcats per a modificar les dades i les sales.");
+define("A_SHEET1_11", "Darrera connexi");
+define("A_USER", "Usuari");
+define("A_MODER", "Moderador");
+define("A_PAGE_CNT", "Page %s of %s");
+
+// Frame for banished users
+define("A_SHEET2_1", "Llista dels usuaris marcats i a quines sales");
+define("A_SHEET2_2", "IP");
+define("A_SHEET2_3", "Sales especificades");
+define("A_SHEET2_4", "Entre");
+define("A_SHEET2_5", "sense final");
+define("A_SHEET2_6", "les sales es troben separades per comes (,) si son ms de 4, llavors empreu '<B>&nbsp;*&nbsp;</B>' com a signe<BR>per a marcar en totes les sales.");
+define("A_SHEET2_7", "Esborrar marques de: usuari(s) marcat(s)");
+define("A_SHEET2_8", "Cap usuari marcat.");
+
+// Frame for cleaning rooms
+define("A_SHEET3_1", "Llista de sales existents");
+define("A_SHEET3_2", "Netejar \"sales no del sistema\" tamb neteja els moderadors i els seus status<BR>per a aquesta sala.");
+define("A_SHEET3_3", "Netejar sales seleccionades");
+define("A_SHEET3_4", "Cap sala per a netejar.");
+
+// Frame for sending mails
+define("A_SHEET4_0", "You haven't set required variables in the<BR>'chat/admin/mail4admin.php' script.");
+define("A_SHEET4_1", "Send e-mails");
+define("A_SHEET4_2", "To:");
+define("A_SHEET4_3", "Select all");
+define("A_SHEET4_4", "Subject:");
+define("A_SHEET4_5", "Messages:");
+define("A_SHEET4_6", "Start sending");
+define("A_SHEET4_7", "All e-mails have been sent.");
+define("A_SHEET4_8", "Internal error while sending the mails.");
+define("A_SHEET4_9", "Addresse(s), subject or message is missing!");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/catalan/localized.chat.php 0.15.0/chat/localization/catalan/localized.chat.php
--- 0.14.5/chat/localization/catalan/localized.chat.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/catalan/localized.chat.php	2004-04-01 03:07:10.000000000 -0600
@@ -0,0 +1,220 @@
+<?php
+// File : catalan.lang.php
+// Translation by Jan Arbona <jan@myp.ad>
+
+// extra header for charset
+$Charset = "iso-8859-1";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// welcome page
+define("L_TUTORIAL", "Tutorial");
+
+define("L_WEL_1", "Els missatges s'esborren desprs de");
+define("L_WEL_2", "hores, i els noms dels usuaris desprs de");
+define("L_WEL_3", "minuts ...");
+
+define("L_CUR_1", "Hi ha actualment");
+define("L_CUR_2", "dins el xat.");
+define("L_CUR_3", "Usuaris en aquest moment a les sales");
+define("L_CUR_4", "usuaris en sales privades");
+
+define("L_SET_1", "Si us plau establiu ...");
+define("L_SET_2", "el vostre nom d'usuari");
+define("L_SET_3", "el nombre de missatges a veure");
+define("L_SET_4", "el temps entre actualitzacions");
+define("L_SET_5", "Seleccioneu una sala de xat ...");
+define("L_SET_6", "sales per defecte");
+define("L_SET_7", "Escolliu una opci ...");
+define("L_SET_8", "sales pbliques creades pels usuaris");
+define("L_SET_9", "crear la vostra propia sala");
+define("L_SET_10", "pblica");
+define("L_SET_11", "privada");
+define("L_SET_12", "sala");
+define("L_SET_13", "A les hores, noms");
+define("L_SET_14", "xerrar");
+
+define("L_SRC", "es troba disponible de forma gratuita a");
+
+define("L_SECS", "segons");
+define("L_MIN", "minut");
+define("L_MINS", "minuts");
+
+// registration stuff:
+define("L_REG_1", "password d'accs");
+define("L_REG_1r", "(noms quan esteu registrats)");
+define("L_REG_2", "Registre de usuaris");
+define("L_REG_3", "Registrar-se");
+define("L_REG_4", "Editar les vostres dades");
+define("L_REG_5", "Eliminar un usuari");
+define("L_REG_6", "Registre d'usuari");
+define("L_REG_7", "Password d'accs");
+define("L_REG_8", "el vostre e-mail");
+define("L_REG_9", "Heu estat correctament registrats.");
+define("L_REG_10", "Tornar");
+define("L_REG_11", "Editant");
+define("L_REG_12", "Canviant dades d'usuari");
+define("L_REG_13", "Esborrant usuari");
+define("L_REG_14", "Login");
+define("L_REG_15", "Entrar");
+define("L_REG_16", "Modificar");
+define("L_REG_17", "Les vostres dades han estat correctament canviades.");
+define("L_REG_18", "Heu estat expulsats per un Moderador.");
+define("L_REG_19", "Realment voleu sser eliminat?");
+define("L_REG_20", "Si");
+define("L_REG_21", "Eliminaci correcte.");
+define("L_REG_22", "No");
+define("L_REG_25", "Tancar");
+define("L_REG_30", "nom");
+define("L_REG_31", "cognom");
+define("L_REG_32", "WEB");
+define("L_REG_33", "permetre veure l'e-mail amb el comandament /whois");
+define("L_REG_34", "Editant les dades de l'usuari");
+define("L_REG_35", "Administraci");
+define("L_REG_36", "idiomes parlats");
+define("L_REG_37", "Els camps amb <span class=\"error\">*</span> s'han d'omplir.");
+define("L_REG_39", "L'administrador ha donat de baixa aquesta sala.");
+define("L_REG_45", "perfil");
+define("L_REG_46", "home");
+define("L_REG_47", "dona");
+
+// e-mail validation stuff
+define("L_EMAIL_VAL_1", "Les vostres dades i configuraci per a entrar al Xat");
+define("L_EMAIL_VAL_2", "Benvinguts al Xat de l'Educand.");
+define("L_EMAIL_VAL_Err", "Errada interna, us agrairem ho notifiqueu a l'administrador: <a href=\"mailto:%s\">%s</a>.");
+define("L_EMAIL_VAL_Done", "La vostra Password us ha estat enviada al vostre e-mail.");
+
+// admin stuff
+define("L_ADM_1", "%s no consta com a moderador actual de la sala.");
+define("L_ADM_2", "No consteu com a usuari registrat.");
+
+//error messages
+define("L_ERR_USR_1", "Aquest nom d'usuari ja es troba registrat. Si us plau escolliu-ne un altre.");
+define("L_ERR_USR_2", "Cal escollir un nom d'usuari.");
+define("L_ERR_USR_3", "Aquest usuari ja es troba registrat. Especifiqueu la vostra password o escolliu un altre nom.");
+define("L_ERR_USR_4", "Password incorrecte.");
+define("L_ERR_USR_5", "Cal escriure un nom d'usuari.");
+define("L_ERR_USR_6", "Cal escriure una password.");
+define("L_ERR_USR_7", "Cal escriure el vostre e-mail.");
+define("L_ERR_USR_8", "L'adrea e-mail cal que sigui correcte.");
+define("L_ERR_USR_9", "Aquest nom d'usuari ja existeix.");
+define("L_ERR_USR_10", "Nom d'usuari o password incorrectes.");
+define("L_ERR_USR_11", "Cal sser administrador.");
+define("L_ERR_USR_12", "L'administrador no es pot esborrar.");
+define("L_ERR_USR_13", "Cal estar registrat per a poder crear la vostra sala.");
+define("L_ERR_USR_14", "Us cal registrar-vos per a poder entrar al xat.");
+define("L_ERR_USR_15", "Si us plau, especifiqueu el vostre nom complet.");
+define("L_ERR_USR_16", "El nom d'usuari no pot tenir espais, o barres invertides (\\).");
+define("L_ERR_USR_17", "Aquesta sala no existeix i no us est perms de crear-ne una.");
+define("L_ERR_USR_18", "El vostre nom d'usuari te una paraula no permesa.");
+define("L_ERR_USR_19", "No es pot estar en ms d'una sala a l'hora.");
+define("L_ERR_USR_20", "Heu estat marcats en aquesta sala o en el xat. No podeu entrar.");
+define("L_ERR_ROM_1", "El nom de la sala no pot tenir una barra invertida (\\).");
+define("L_ERR_ROM_2", "No podeu crear la sala perqu te una paraula no permesa.");
+define("L_ERR_ROM_3", "Aquesta sala ja existeix com a sala pblica.");
+define("L_ERR_ROM_4", "Nom de la sala incorrecte.");
+
+// users frame or popup
+define("L_EXIT", "Sortir");
+define("L_DETACH", "Separa");
+define("L_EXPCOL_ALL", "Expandir/contraure tot");
+define("L_CONN_STATE", "Estat de la connexi");
+define("L_CHAT", "Xerrar");
+define("L_USER", "usuari");
+define("L_USERS", "usuaris");
+define("L_NO_USER", "Sense usuaris");
+define("L_ROOM", "sala");
+define("L_ROOMS", "sales");
+define("L_EXPCOL", "Expandir/contraure sala");
+define("L_BEEP", "So/sense so quan entri un usuari");
+define("L_PROFILE", "Veure perfil");
+define("L_NO_PROFILE", "No profile");
+
+// input frame
+define("L_HLP", "Ajut");
+define("L_BAD_CMD", "ordre no permesa !");
+define("L_ADMIN", "%s ja s administrador!");
+define("L_IS_MODERATOR", "%s ja s moderador!");
+define("L_NO_MODERATOR", "Noms un moderador de la sala pot emprar aquesta ordre.");
+define("L_MODERATOR", "%s s un moderador d'aquesta sala.");
+define("L_NONEXIST_USER", "L'usuari %s no es troba a la sala.");
+define("L_NONREG_USER", "L'usuari %s no es troba registrat.");
+define("L_NONREG_USER_IP", "Aquesta IP s: %s.");
+define("L_NO_KICKED", "L'usuari %s s un moderador o administrador i no es pot expulsar de la sala.");
+define("L_KICKED", "L'usuari %s ha estat correctament expulsat.");
+define("L_NO_BANISHED", "L'usuari %s s moderador o administrador i no pot sser marcat.");
+define("L_BANISHED", "L'usuari %s ha estat correctament marcat.");
+define("L_SVR_TIME", "Hora del Servidor MYP: ");
+define("L_NO_SAVE", "Cap missatge per a desar!");
+define("L_NO_ADMIN", "Noms l'administrador pot emprar aquest comandament.");
+define("L_ANNOUNCE", "ANUNCI");
+define("L_INVITE", "%s us suggereix d'entrar a la sala <a href=\"#\" onClick=\"window.parent.runCmd('%s','%s')\">%s</a> a xerrar.");
+define("L_INVITE_REG", " Cal estar registrat per a poder entrar a aquesta sala.");
+define("L_INVITE_DONE", "la vostra invitaci ha estat enviada a %s.");
+define("L_OK", "Enviar");
+
+// help popup
+define("L_HELP_TIT_1", "Somriures");
+define("L_HELP_TIT_2", "Format del texte pels missatges");
+define("L_HELP_FMT_1", "Es pot escriure texte amb negreta, cursiva o remarcat, incloent els textes entre els marcadors &lt;B&gt; &lt;/B&gt;, &lt;I&gt; &lt;/I&gt; o &lt;U&gt; &lt;/U&gt; .<BR>Per exemple, &lt;B&gt;aquest texte&lt;/B&gt; es veur com <B>aquest texte</B>.");
+define("L_HELP_FMT_2", "Per a establir enllaos (per a e-mail o pgina WEB) dins el missatge, noms cal escriure l'adrea e-mail sense cap marcador especial. El mateix per a enllaos a pgines Web.");
+define("L_HELP_TIT_3", "Comandaments estil IRC");
+define("L_HELP_USR", "usuari");
+define("L_HELP_MSG", "missatge");
+define("L_HELP_ROOM", "sala");
+define("L_HELP_CMD_0", "{} representa una configuraci necessaria, [] i una configuraci opcional.");
+define("L_HELP_CMD_1a", "Configureu el nombre mxim de missatges a veure, 5 com a mnim.");
+define("L_HELP_CMD_1b", "Actualiza els missatges i amplia la finestra dels missatges, el mnim i establert per defecte s de 5.");
+define("L_HELP_CMD_2a", "Modifica el temps d'actualitzaci dels missatges (en segons).<BR>Si el valor de n no s'especifica o s menor que 3, s'activa sense temps d'actualitzaci o amb 10 segons d'actualitzaci.");
+define("L_HELP_CMD_2b", "Modifica els missatges i la llista dels usuaris en temps (en segons).<BR>Si no s'especifica o s'especifica un temps menor de 3 ho desa establert en 10");
+define("L_HELP_CMD_3", "Inverteis l'ordre dels missatges.");
+define("L_HELP_CMD_4", "Entra en una altra sala, el crea i registra si no existeix i si us est perms (en cas de que disposseu de perms per a fer-ho).<BR>n s 0 per a privat i 1 per a pblic, si no s'especifica ser pblic.");
+define("L_HELP_CMD_5", "Surt del Xat.  Opcionalment es pot deixar un missatge de comiat.");
+define("L_HELP_CMD_6", "Ignora tots els missatges de l'usuari, si s'especifica el nom d'usuari.<BR>Sense opcions, aquest comandament obre una finestra auxiliar amb tots els noms dels usuaris ignorats.");
+define("L_HELP_CMD_7", "Repeteix l'ltim missatge escrit (comandament o missatge).");
+define("L_HELP_CMD_8", "Veure/Amagar l'hora dels missatges.");
+define("L_HELP_CMD_9", "Expulsa a un usuari del Xat. Comandament noms habilitat per a moderadors.");
+define("L_HELP_CMD_10", "Envia un missatge privat a un usuari en particular (la resta dels usuaris no veuen aquest missatge).");
+define("L_HELP_CMD_11", "Informaci d'un usuari en particular.");
+define("L_HELP_CMD_12", "Us obre una finestra que us permet de modificar les dades de registre.");
+define("L_HELP_CMD_13", "Activa la notificaci d'entrada/sortida d'un usuari de la sala.");
+define("L_HELP_CMD_14", "Permeten a l'administrador o moderador(s) de la sala promoure a determinats usuaris a la categoria de moderadors.");
+define("L_HELP_CMD_15", "Neteja la finestra de missatges i permet veure els darrers 5 enviats.");
+define("L_HELP_CMD_16", "Desa el darrers n missatges (les notificacions no s'inclouen) en una pgina HTML. Si no especifiqueu el valor de n tots els misstges sn desats. Rebreu una notificaci per a desar l'arxiu al vostre ordinador.");
+define("L_HELP_CMD_17", "Permet als administradors a enviar un missatge a tots els usuaris en totes les sales.");
+define("L_HELP_CMD_18", "Suggereix a un usuari a canviar de sala i seguir xerrant en una altre sala.");
+define("L_HELP_CMD_19", "Permet als moderadors d'una sala o a l'administradors a \"marcar\" a un usuari de la sala per un temps definit per l'administrador en que np podr tornar a entrar.<BR>En cas de que un usuari es vulgui marcar per a sempre en aquella sala es pot emprar el comandament '<B>&nbsp;*&nbsp;</B>' per a marcar \"per sempre\" i prohibir la seva entrada.");
+define("L_HELP_CMD_20", "Describe what you're doing without refer yourself.");
+
+//message frame
+define("L_NO_MSG", "No hi han missatges ...");
+define("L_TODAY_DWN", "The messages that have been sent today start below");
+define("L_TODAY_UP", "The messages that have been sent today start above");
+
+// message colors
+$TextColors = array(	"Negre" => "#000000",
+				"Vermell" => "#FF0000",
+				"Verd" => "#009900",
+				"Blau" => "#0000FF",
+				"Morat" => "#9900FF",
+				"Vermell fosc" => "#990000",
+				"Verd fosc" => "#006600",
+				"Blau fosc" => "#000099",
+				"Marr" => "#996633",
+				"Blau clar" => "#006699",
+				"Taronja" => "#FF6600");
+
+//ignored popup
+define("L_IGNOR_TIT", "Ignorat");
+define("L_IGNOR_NON", "No ignorat");
+
+// whois popup
+define("L_WHOIS_ADMIN", "Administrador");
+define("L_WHOIS_MODER", "Moderador");
+define("L_WHOIS_USER", "Usuari");
+
+// Notification messages of user entrance/exit
+define("L_ENTER_ROM", "%s entra a la sala");
+define("L_EXIT_ROM", "%s surt de la sala");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/catalan/regex.txt 0.15.0/chat/localization/catalan/regex.txt
--- 0.14.5/chat/localization/catalan/regex.txt	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/catalan/regex.txt	2004-04-01 03:07:10.000000000 -0600
@@ -0,0 +1 @@
+ca|catalan
\ No newline at end of file
Binary files 0.14.5/chat/localization/chinese_simplified/flag.gif and 0.15.0/chat/localization/chinese_simplified/flag.gif differ
diff -ruN 0.14.5/chat/localization/chinese_simplified/localized.admin.php 0.15.0/chat/localization/chinese_simplified/localized.admin.php
--- 0.14.5/chat/localization/chinese_simplified/localized.admin.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/chinese_simplified/localized.admin.php	2004-04-01 03:07:11.000000000 -0600
@@ -0,0 +1,61 @@
+<?php
+// File : chinese_simplified.lang.php
+// Translation by Huang Perry <perryhg@hotmail.com>
+
+// extra header for charset
+$Charset = "gb2312";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// Top frame
+define("A_MENU_0", " %s");
+define("A_MENU_1", "עû");
+define("A_MENU_2", "赲û");
+define("A_MENU_3", "Ƶ");
+define("A_MENU_4", "ʼ");
+
+// Frame for registered users
+define("A_SHEET1_1", "עûȨб");
+define("A_SHEET1_2", "û");
+define("A_SHEET1_3", "Ȩ");
+define("A_SHEET1_4", "Ƶ");
+define("A_SHEET1_5", "Ƶö(,),Ҫո.");
+define("A_SHEET1_6", "ɾѡеû");
+define("A_SHEET1_7", "");
+define("A_SHEET1_8", "֮ûעû.");
+define("A_SHEET1_9", "赲ѡеû");
+define("A_SHEET1_10", "л'赲û'ѡ.");
+define("A_SHEET1_11", "ϴ");
+define("A_USER", "û");
+define("A_MODER", "ලԱ");
+define("A_PAGE_CNT", " %s ҳ,  %s ҳ");
+
+// Frame for banished users
+define("A_SHEET2_1", "赲ûƵб");
+define("A_SHEET2_2", "IP");
+define("A_SHEET2_3", "赲Ƶ");
+define("A_SHEET2_4", "赲");
+define("A_SHEET2_5", "÷⵵");
+define("A_SHEET2_6", "ƵöŸ(ո), 赲ƵӦ4Ƶ,  '<B>&nbsp;*&nbsp;</B>' <BR>赲ûƵ.");
+define("A_SHEET2_7", "ȡѡû赲");
+define("A_SHEET2_8", "ûб赲û.");
+
+// Frame for cleaning rooms
+define("A_SHEET3_1", "Ƶб");
+define("A_SHEET3_2", "һ \"Ĭ\" ƵͬʱɾƵмලԱȨ.");
+define("A_SHEET3_3", "ѡƵ");
+define("A_SHEET3_4", "ûƵ.");
+
+// Frame for sending mails
+define("A_SHEET4_0", "û'chat/admin/mail4admin.php' űı.");
+define("A_SHEET4_1", "ʼ");
+define("A_SHEET4_2", "ռ:");
+define("A_SHEET4_3", "ѡȫ");
+define("A_SHEET4_4", ":");
+define("A_SHEET4_5", ":");
+define("A_SHEET4_6", "");
+define("A_SHEET4_7", "emailȫ.");
+define("A_SHEET4_8", "ʼʱڲ.");
+define("A_SHEET4_9", "©дַ!");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/chinese_simplified/localized.chat.php 0.15.0/chat/localization/chinese_simplified/localized.chat.php
--- 0.14.5/chat/localization/chinese_simplified/localized.chat.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/chinese_simplified/localized.chat.php	2004-04-01 03:07:11.000000000 -0600
@@ -0,0 +1,221 @@
+<?php
+// File : chinese_simplified.lang.php
+// Translation by BoyStudio <zrr@371.net and kde@371.net>, Che Dong <chedong@yeah.net>
+// and Perry Huang <perryhg@hotmail.com>
+
+// extra header for charset
+$Charset = "gb2312";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// welcome page
+define("L_TUTORIAL", "ָ");
+
+define("L_WEL_1", "Ϣÿ");
+define("L_WEL_2", "Сʱһ, ûÿ");
+define("L_WEL_3", "һ...");
+
+define("L_CUR_1", "");
+define("L_CUR_2", ".");
+define("L_CUR_3", "ûڹƵ");
+define("L_CUR_4", "û˽Ƶ");
+
+define("L_SET_1", "ò ...");
+define("L_SET_2", "û");
+define("L_SET_3", "ÿʾϢ");
+define("L_SET_4", "ˢƵ");
+define("L_SET_5", "ѡƵ ...");
+define("L_SET_6", "ȱʡƵ");
+define("L_SET_7", "ѡ ...");
+define("L_SET_8", "ûƵ");
+define("L_SET_9", "ԼƵ");
+define("L_SET_10", "");
+define("L_SET_11", "˽");
+define("L_SET_12", "Ƶ");
+define("L_SET_13", "ô,");
+define("L_SET_14", "");
+
+define("L_SRC", "ҳ");
+
+define("L_SECS", "");
+define("L_MIN", "");
+define("L_MINS", "");
+
+// registration stuff:
+define("L_REG_1", "");
+define("L_REG_1r", "(ֻעЧ)");
+define("L_REG_2", "ʻ");
+define("L_REG_3", "ע");
+define("L_REG_4", "༭");
+define("L_REG_5", "ɾû");
+define("L_REG_6", "ûע");
+define("L_REG_7", "");
+define("L_REG_8", " e-mail");
+define("L_REG_9", "ѳɹע.");
+define("L_REG_10", "");
+define("L_REG_11", "༭");
+define("L_REG_12", "޸ûϢ");
+define("L_REG_13", "ɾû");
+define("L_REG_14", "¼");
+define("L_REG_15", "Ѿ¼");
+define("L_REG_16", "");
+define("L_REG_17", "øĳɹ.");
+define("L_REG_18", "㱻ලԱ߳Ƶ.");
+define("L_REG_19", "Ҫɾʺ ?");
+define("L_REG_20", "ȷ");
+define("L_REG_21", "ʺѾɹɾ.");
+define("L_REG_22", "ȡ");
+define("L_REG_25", "ر");
+define("L_REG_30", "");
+define("L_REG_31", "");
+define("L_REG_32", "վ");
+define("L_REG_33", "ڹϢʾemailַ");
+define("L_REG_34", "༭û");
+define("L_REG_35", "");
+define("L_REG_36", "");
+define("L_REG_37", " <span class=\"error\">*</span> Ĳֱд.");
+define("L_REG_39", "ڵƵѱԱ.");
+define("L_REG_45", "Ա");
+define("L_REG_46", "");
+define("L_REG_47", "Ů");
+
+// e-mail validation stuff
+define("L_EMAIL_VAL_1", "Ƶ");
+define("L_EMAIL_VAL_2", "ӭٱվ.");
+define("L_EMAIL_VAL_Err", "ڲ͹Աϵ: <a href=\"mailto:%s\">%s</a>.");
+define("L_EMAIL_VAL_Done", "Ѿ͵<BR>e-mail ַ.");
+
+// admin stuff
+define("L_ADM_1", "%s ѲǱƵļලԱ.");
+define("L_ADM_2", "ѲǱվעû.");
+
+// error messages
+define("L_ERR_USR_1", "ûѾʹ. ѡһ.");
+define("L_ERR_USR_2", "дû.");
+define("L_ERR_USR_3", "ûѾע. ¼ѡ.");
+define("L_ERR_USR_4", ".");
+define("L_ERR_USR_5", "û.");
+define("L_ERR_USR_6", ".");
+define("L_ERR_USR_7", " e-mail.");
+define("L_ERR_USR_8", "ȷ e-mail ַ.");
+define("L_ERR_USR_9", "ûѾ.");
+define("L_ERR_USR_10", "û.");
+define("L_ERR_USR_11", "ֻйԱʹ.");
+define("L_ERR_USR_12", "ǹԱʻ, ʻɾ.");
+define("L_ERR_USR_13", "ֻעԺܽ˽Ƶ.");
+define("L_ERR_USR_14", "ֻעԺ.");
+define("L_ERR_USR_15", "ȫ.");
+define("L_ERR_USR_16", "ûܺпո񡢶Ż߷б (\\).");
+define("L_ERR_USR_17", "ƵڣҲûȨ½.");
+define("L_ERR_USR_18", "ûгֽô.");
+define("L_ERR_USR_19", "㲻ͬʱ¼Ƶ.");
+define("L_ERR_USR_20", "Ƶܾ.");
+define("L_ERR_ROM_1", "ƵֲֶܳŻ߷б (\\).");
+define("L_ERR_ROM_2", "㴴Ƶгֽô.");
+define("L_ERR_ROM_3", "ƵѾһƵ.");
+define("L_ERR_ROM_4", "ǷƵ.");
+
+// users frame or popup
+define("L_EXIT", "˳");
+define("L_DETACH", "ûб");
+define("L_EXPCOL_ALL", "չ/ȫ");
+define("L_CONN_STATE", "");
+define("L_CHAT", "");
+define("L_USER", "û");
+define("L_USERS", "û");
+define("L_NO_USER", "û");
+define("L_ROOM", "Ƶ");
+define("L_ROOMS", "Ƶ");
+define("L_EXPCOL", "չ/ Ƶ");
+define("L_BEEP", "ûʱ ֪ͨ/");
+define("L_PROFILE", "ʾ");
+define("L_NO_PROFILE", "");
+
+// input frame
+define("L_HLP", "");
+define("L_BAD_CMD", "!");
+define("L_ADMIN", "%s ѾǹԱ!");
+define("L_IS_MODERATOR", "%s ѾǼලԱ!");
+define("L_NO_MODERATOR", "ֻƵļලԱʹøù.");
+define("L_MODERATOR", "%s ƵļලԱ.");
+define("L_NONEXIST_USER", "û %s Ƶ.");
+define("L_NONREG_USER", "û %s ûע.");
+define("L_NONREG_USER_IP", " IP is: %s.");
+define("L_NO_KICKED", "û %s ǼලԱԱ߳.");
+define("L_KICKED", "û %s Ѿһ߳Ƶ.");
+define("L_NO_BANISHED", "û %s ǼලԱԱܱ赲.");
+define("L_BANISHED", "û %s Ѿ赲.");
+define("L_SVR_TIME", "ʱ: ");
+define("L_NO_SAVE", "ûϢɱ!");
+define("L_NO_ADMIN", "ֻйԱʹø.");
+define("L_ANNOUNCE", "ͨ");
+define("L_INVITE", "%s / <a href=\"#\" onClick=\"window.parent.runCmd('%s','%s')\">%s</a> Ƶ.");
+define("L_INVITE_REG", " ֻעܽ.");
+define("L_INVITE_DONE", "Ѿ͵ %s.");
+define("L_OK", "");
+
+// help popup
+define("L_HELP_TIT_1", "ͼ");
+define("L_HELP_TIT_2", "Ϣָʽ");
+define("L_HELP_FMT_1", "Ϣʹô(bold),б(italic)»,ʹתаװ.&lt;B&gt; &lt;/B&gt;, &lt;I&gt; &lt;/I&gt; or &lt;U&gt; &lt;/U&gt;ȱǩ<BR>&lt;B&gt;this text&lt;/B&gt;<B>this text</B>.");
+define("L_HELP_FMT_2", "ҪΪemailURL,ֻҪֱӦĵַ,ǩ,ӻᱻԶ.");
+define("L_HELP_TIT_3", "");
+define("L_HELP_USR", "û");
+define("L_HELP_MSG", "Ϣ");
+define("L_HELP_ROOM", "Ƶ");
+define("L_HELP_CMD_0", "{} ʾΪ, [] ʾΪѡ.");
+define("L_HELP_CMD_1a", "ʾϢ.СĬֵ5.");
+define("L_HELP_CMD_1b", "¼Ϣҳʾ n Ϣ,СĬֵ5.");
+define("L_HELP_CMD_2a", "ʾϢˢ¼.<BR> n ûָС3, ˢº10ˢµл.");
+define("L_HELP_CMD_2b", "޸Ϣûбʾˢ¼.<BR>ûָ n С3,ˢº10ˢµл.");
+define("L_HELP_CMD_3", "ʾϢ˳.");
+define("L_HELP_CMD_4", "һƵ, ھʹƵ(ӦȨ).<BR>n  0 ʾ˽Ƶ, 1 ʾƵ, ûָ,ĬΪ1.");
+define("L_HELP_CMD_5", "ʾһָʾϢ뿪.");
+define("L_HELP_CMD_6", "ʾĳָnickûϢ.<BR>ûָʾûϢ. nick  - ͬʱָʱָû,ָ - ûnickʱָбԵû.");
+define("L_HELP_CMD_7", "ظϴϢ(Ϣ).");
+define("L_HELP_CMD_8", "Ϣǰʾ/ʱ.");
+define("L_HELP_CMD_9", "û߳ȥ. ֻмලԱʹ.");
+define("L_HELP_CMD_10", "ָû (ûῴ).");
+define("L_HELP_CMD_11", "ʾָûϢ.");
+define("L_HELP_CMD_12", "ڲ༭û.");
+define("L_HELP_CMD_13", "/رû/뿪Ƶ֪ͨϢ.");
+define("L_HELP_CMD_14", "Ա͵ǰƵļලԱעûȨƵ.");
+define("L_HELP_CMD_15", "Ϣҳ,ʾ5Ϣ.");
+define("L_HELP_CMD_16", " n Ϣ(ͨ)ΪHTMLļ.  n ûָ,пõϢʺ.");
+define("L_HELP_CMD_17", "ԱƵûͨ.");
+define("L_HELP_CMD_18", "ƵûڵƵ.");
+define("L_HELP_CMD_19", "ƵļලԱԱݹԱ'赲ʱ䶨'ûƵһʱ.<BR>ԱƵ,Ժ󻹿赲ûƵ.ʹ'<B>&nbsp;*&nbsp;</B>'ÿԴӷ÷û.");
+define("L_HELP_CMD_20", "ʲô,ἰϢ.");
+
+//message frame
+define("L_NO_MSG", "ĿǰûϢ ...");
+define("L_TODAY_DWN", "ǽ췢͵Ϣ");
+define("L_TODAY_UP", "ǽ췢͵Ϣ");
+
+// message colors
+$TextColors = array(	"" => "#000000",
+				"" => "#FF0000",
+				"" => "#009900",
+				"" => "#0000FF",
+				"" => "#9900FF",
+				"" => "#990000",
+				"" => "#006600",
+				"" => "#000099",
+				"" => "#996633",
+				"" => "#006699",
+				"ۺ" => "#FF6600");
+
+//ignored popup
+define("L_IGNOR_TIT", "Ѻ");
+define("L_IGNOR_NON", "ûбԵû");
+
+// whois popup
+define("L_WHOIS_ADMIN", "Ա");
+define("L_WHOIS_MODER", "ලԱ");
+define("L_WHOIS_USER", "û");
+
+// Notification messages of user entrance/exit
+define("L_ENTER_ROM", "%s ");
+define("L_EXIT_ROM", "%s ");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/chinese_simplified/regex.txt 0.15.0/chat/localization/chinese_simplified/regex.txt
--- 0.14.5/chat/localization/chinese_simplified/regex.txt	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/chinese_simplified/regex.txt	2004-04-01 03:07:11.000000000 -0600
@@ -0,0 +1 @@
+zh([-_][[:alpha:]]{2})?|chinese
\ No newline at end of file
Binary files 0.14.5/chat/localization/chinese_traditional/flag.gif and 0.15.0/chat/localization/chinese_traditional/flag.gif differ
diff -ruN 0.14.5/chat/localization/chinese_traditional/localized.admin.php 0.15.0/chat/localization/chinese_traditional/localized.admin.php
--- 0.14.5/chat/localization/chinese_traditional/localized.admin.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/chinese_traditional/localized.admin.php	2004-04-01 03:07:11.000000000 -0600
@@ -0,0 +1,61 @@
+<?php
+// File : chinese_traditional.lang.php
+// Translation by Dean Lin <dean@xlinux.com>
+
+// extra header for charset
+$Charset = "big5";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// Top frame
+define("A_MENU_0", "Administration for %s");
+define("A_MENU_1", "Registered users");
+define("A_MENU_2", "Banished users");
+define("A_MENU_3", "Clean rooms");
+define("A_MENU_4", "Send mails");
+
+// Frame for registered users
+define("A_SHEET1_1", "List of registered users and their permissions");
+define("A_SHEET1_2", "ϥΪ̦W");
+define("A_SHEET1_3", "vݩ");
+define("A_SHEET1_4", "޲z̲ѫ");
+define("A_SHEET1_5", "޲z̲ѫǤϥγr (,) nΪťչj}");
+define("A_SHEET1_6", "wĿ");
+define("A_SHEET1_7", "ק");
+define("A_SHEET1_8", "There is no registered user except yourself.");
+define("A_SHEET1_9", "Banish checked profiles");
+define("A_SHEET1_10", "Now you have to move to the banished users sheet to refine your choices.");
+define("A_SHEET1_11", "Last connection");
+define("A_USER", "@ϥΪ");
+define("A_MODER", "ѫǥDH");
+define("A_PAGE_CNT", "Page %s of %s");
+
+// Frame for banished users
+define("A_SHEET2_1", "List of banished users and concerned rooms");
+define("A_SHEET2_2", "IP");
+define("A_SHEET2_3", "Concerned rooms");
+define("A_SHEET2_4", "Until");
+define("A_SHEET2_5", "no end");
+define("A_SHEET2_6", "rooms are splitted by comma without spaces (,) if they are less than 4, else the '<B>&nbsp;*&nbsp;</B>' sign<BR>banish from all rooms.");
+define("A_SHEET2_7", "Remove banishment for checked user(s)");
+define("A_SHEET2_8", "There is no banished user.");
+
+// Frame for cleaning rooms
+define("A_SHEET3_1", "ܥثesbѫ");
+define("A_SHEET3_2", "Clean a \"non-default\" room will also remove all moderator<BR>status for this room.");
+define("A_SHEET3_3", "Clean selected rooms");
+define("A_SHEET3_4", "There is no room to clean.");
+
+// Frame for sending mails
+define("A_SHEET4_0", "You haven't set required variables in the<BR>'chat/admin/mail4admin.php' script.");
+define("A_SHEET4_1", "Send e-mails");
+define("A_SHEET4_2", "To:");
+define("A_SHEET4_3", "Select all");
+define("A_SHEET4_4", "Subject:");
+define("A_SHEET4_5", "Messages:");
+define("A_SHEET4_6", "Start sending");
+define("A_SHEET4_7", "All e-mails have been sent.");
+define("A_SHEET4_8", "Internal error while sending the mails.");
+define("A_SHEET4_9", "Addresse(s), subject or message is missing!");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/chinese_traditional/localized.chat.php 0.15.0/chat/localization/chinese_traditional/localized.chat.php
--- 0.14.5/chat/localization/chinese_traditional/localized.chat.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/chinese_traditional/localized.chat.php	2004-04-01 03:07:12.000000000 -0600
@@ -0,0 +1,222 @@
+<?php
+// File : chinese_traditional.lang.php
+// Original file by Wei Shou-da <shouda@ms14.url.com.tw>
+// Second Edition by Dean Lin <dean@xlinux.com>
+
+// extra header for charset
+$Charset = "big5";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// welcome page
+define("L_TUTORIAL", "Tutorial");
+
+define("L_WEL_1", "ѤeN");
+define("L_WEL_2", "pɫAϥΪ̩mWN");
+define("L_WEL_3", "R");
+
+define("L_CUR_1", "ثe");
+define("L_CUR_2", "b");
+define("L_CUR_3", "bѫǤH");
+define("L_CUR_4", "bpHѫǤϥΪ");
+
+define("L_SET_1", "пJ ...");
+define("L_SET_2", "zmW");
+define("L_SET_3", "CӵܪTh");
+define("L_SET_4", "sWv");
+define("L_SET_5", "пܤ@Ӳѫ ...");
+define("L_SET_6", "w]ѫ");
+define("L_SET_7", "z ...");
+define("L_SET_8", "ϥΪ̦۳]}ѫ");
+define("L_SET_9", "۳]zۤvѫ");
+define("L_SET_10", "}");
+define("L_SET_11", "pH");
+define("L_SET_12", "ж");
+define("L_SET_13", "]wn, жi");
+define("L_SET_14", "");
+
+define("L_SRC", "}");
+
+define("L_SECS", "");
+define("L_MIN", "");
+define("L_MINS", "");
+
+// registration stuff:
+define("L_REG_1", "KX");
+define("L_REG_1r", "(pGzwgU)");
+define("L_REG_2", "wgUϥΪ");
+define("L_REG_3", "U");
+define("L_REG_4", "קAӤH");
+define("L_REG_5", "RϥΪ");
+define("L_REG_6", "ϥΪ̵U");
+define("L_REG_7", "AKX");
+define("L_REG_8", "qll");
+define("L_REG_9", "AwgU\\");
+define("L_REG_10", "^W@");
+define("L_REG_11", "ק");
+define("L_REG_12", "ϥΪ̸");
+define("L_REG_13", "RϥΪ");
+define("L_REG_14", "nJ");
+define("L_REG_15", "nJ");
+define("L_REG_16", "ק");
+define("L_REG_17", "AӤHƭק令\!");
+define("L_REG_18", "AQѫǺ޲z̽Xѫ");
+define("L_REG_19", "AuTwn ?");
+define("L_REG_20", "O");
+define("L_REG_21", "Awg\F");
+define("L_REG_22", "");
+define("L_REG_25", "");
+define("L_REG_30", "Wr");
+define("L_REG_31", "m");
+define("L_REG_32", "ӤH");
+define("L_REG_33", "ϥ /whois RO Email ?");
+define("L_REG_34", "קϥΪ̭ӤH");
+define("L_REG_35", "tκ޲z");
+define("L_REG_36", "`λy");
+define("L_REG_37", "<span class=\"error\">*</span> Oݭng.");
+define("L_REG_39", "oӲѫǤwgQtκ޲z.");
+define("L_REG_45", "gender");
+define("L_REG_46", "male");
+define("L_REG_47", "Female");
+
+// e-mail validation stuff
+define("L_EMAIL_VAL_1", "Your settings to enter the chat");
+define("L_EMAIL_VAL_2", "Welcome to our chat server.");
+define("L_EMAIL_VAL_Err", "Internal error, please contact the administrator: <a href=\"mailto:%s\">%s</a>.");
+define("L_EMAIL_VAL_Done", "Your password has been sent to your e-mail address.");
+
+// admin stuff
+define("L_ADM_1", "%s is no more moderator for this room.");
+define("L_ADM_2", "You're no more a registered user.");
+
+//error messages
+define("L_ERR_USR_1", "oӨϥΪ̩mWwgbϥΡAпܥt~@ӦWr");
+define("L_ERR_USR_2", "zJ@ӨϥΪ̩mW");
+define("L_ERR_USR_3", "oӨϥΪ̩mWwgQUAпJKXοܥt~@ӦWr");
+define("L_ERR_USR_4", "AJKX~");
+define("L_ERR_USR_5", "AݿJϥΪ̩mW");
+define("L_ERR_USR_6", "AݿJKX");
+define("L_ERR_USR_7", "AݿJ Email");
+define("L_ERR_USR_8", "AݿJT Email");
+define("L_ERR_USR_9", "oӨϥΪ̦W٤wgHϥ");
+define("L_ERR_USR_10", "ϥΪ̦W٩αKX~");
+define("L_ERR_USR_11", "AݬOtκ޲z");
+define("L_ERR_USR_12", "AOtκ޲zҥHAಾAۤv");
+define("L_ERR_USR_13", "AݥU, ~iHs}ѫ");
+define("L_ERR_USR_14", "AbiѫǤe, AݥU");
+define("L_ERR_USR_15", "AݿJAW");
+define("L_ERR_USR_16", "ϥΪ̦W٤঳ť, rέ˱׽u (\\).");
+define("L_ERR_USR_17", "This room doesn't exist and you are not allowed to create one.");
+define("L_ERR_USR_18", "Banned word found in your username.");
+define("L_ERR_USR_19", "You cannot be in more than one room at the same time.");
+define("L_ERR_USR_20", "You have been banished from this room or from the chat.");
+define("L_ERR_ROM_1", "ѫǦW٤঳rέ˱׽u (\\).");
+define("L_ERR_ROM_2", "Banned word found in the room's name you want to create.");
+define("L_ERR_ROM_3", "oӲѫǪWrwgQwsb}ѫǩҨϥ");
+define("L_ERR_ROM_4", "ѫǪWr~");
+
+// users frame or popup
+define("L_EXIT", "F");
+define("L_DETACH", "Ҧж");
+define("L_EXPCOL_ALL", "i}/|_Ҧ");
+define("L_CONN_STATE", "Connection state");
+define("L_CHAT", "ѧa");
+define("L_USER", "ӨϥΪ");
+define("L_USERS", "ӨϥΪ");
+define("L_NO_USER", "SH");
+define("L_ROOM", "ж");
+define("L_ROOMS", "ж");
+define("L_EXPCOL", "i}/|_ж");
+define("L_BEEP", "Beep/no beep at user entrance");
+define("L_PROFILE", "Display profile");
+define("L_NO_PROFILE", "No profile");
+
+// input frame
+define("L_HLP", "DU");
+define("L_BAD_CMD", "O~ !");
+define("L_ADMIN", "%s wgOtκ޲z !");
+define("L_IS_MODERATOR", "%s is already moderator!");
+define("L_NO_MODERATOR", "oӫOuѫǪDHiHϥ");
+define("L_MODERATOR", "%s is now moderator for this room.");
+define("L_NONEXIST_USER", "ϥΪ %s {bboӲѫ");
+define("L_NONREG_USER", "ϥΪ %s SUL");
+define("L_NONREG_USER_IP", "His IP is: %s.");
+define("L_NO_KICKED", "ϥΪ %s Otκ޲zβѫǥDH, A𰣥L.");
+define("L_NO_BANISHED", "User %s is moderator or administrator and can't be banished.");
+define("L_BANISHED", "User %s has successfully been banished.");
+define("L_KICKED", "ϥΪ %s wg\QXѫ");
+define("L_SVR_TIME", "tήɶ: ");
+define("L_NO_SAVE", "No message to save!");
+define("L_NO_ADMIN", "Only the administrator can use this command.");
+define("L_ANNOUNCE", "ANNOUNCE");
+define("L_INVITE", "%s suggest you to join her/him into the <a href=\"#\" onClick=\"window.parent.runCmd('%s','%s')\">%s</a> room.");
+define("L_INVITE_REG", " You have to be registered to enter this room.");
+define("L_INVITE_DONE", "Your invitation has been sent to %s.");
+define("L_OK", "Send");
+
+// help popup
+define("L_HELP_TIT_1", "Ÿ");
+define("L_HELP_TIT_2", "T榡");
+define("L_HELP_FMT_1", "boeTAiHϥβ, Mu HTML Tag Ӫ &lt;B&gt; &lt;/B&gt;, &lt;I&gt; &lt;/I&gt;  &lt;U&gt; &lt;/U&gt; <BR>ҦpG ϥΡ@&lt;B&gt;T&lt;/B&gt; N|X{ <B>T</B>.");
+define("L_HELP_FMT_2", "pGTO Email  URL AݭnSOgtag. tαN|ۤvUA[W.");
+define("L_HELP_TIT_3", "O");
+define("L_HELP_USR", "ӨϥΪ");
+define("L_HELP_MSG", "message");
+define("L_HELP_ROOM", "ж");
+define("L_HELP_CMD_0", "[] ]w@wn, {} ]whOi]i].");
+define("L_HELP_CMD_1", "]wCӵܪTh, n b 5  100 .");
+define("L_HELP_CMD_1a", "Set number of messages to show, minimum and default are 5.");
+define("L_HELP_CMD_1b", "Reload the message frame and display the n latest messages, minimum and default are 5.");
+define("L_HELP_CMD_2a", "קTsWv (G).<BR>pGw n Ϊ n p 3, NbsΨC 10 s]wӦ^.");
+define("L_HELP_CMD_2b", "Modify messages and users lists refresh delay (in seconds).<BR>If n is not specified or less than 3, toggles between no refresh and 10s refresh.");
+define("L_HELP_CMD_3", "TWUƦC.");
+define("L_HELP_CMD_4", "[JOѫ, AQ\[J, Ysbh۰ʳ].<BR>pHѫ n  0, }ѫ n  1, w n hw]}ѫ.");
+define("L_HELP_CMD_5", "dU message T, N}ѫ.");
+define("L_HELP_CMD_6", "ϥΪ(nick)T.<BR>Pɫw nick M - h\, pGw - Ӥϥ nick, hܩҦϥΪ̪T .<BR>wﶵ, N|ܩҦQAϥΪ̲M.");
+define("L_HELP_CMD_7", "^eJe (O, ΰT).");
+define("L_HELP_CMD_8", "Teɶ.");
+define("L_HELP_CMD_9", "ϥΪ̽Xѫ, uѫǥDH~UoӫO.");
+define("L_HELP_CMD_10", "ǰepHTSwH (LH|ݨT).");
+define("L_HELP_CMD_11", "ܨϥΪ̪.");
+define("L_HELP_CMD_12", "קӤH.");
+define("L_HELP_CMD_13", "ܩΤܨϥΪ̶iJM}ѫǪT.");
+define("L_HELP_CMD_14", "tκ޲zβѫǥDHiHNwUϥΪ̴ަѫǥDH.");
+define("L_HELP_CMD_15", "Clear the message frame and show only the last 5 messages.");
+define("L_HELP_CMD_16", "Save the last n messages (notifications ones excluded) to an HTML file. If n is not specified, all available messages will be taken into account.");
+define("L_HELP_CMD_17", "Allow the administrator to send an announce to all users whatever the room they are chatting into.");
+define("L_HELP_CMD_18", "Suggest an user chatting in an other room to join the one you are into.");
+define("L_HELP_CMD_19", "Allow the moderator(s) of a room or the administrator to \"banish\" an user from the room for a time defined by the administrator.<BR>The later can banish an user chatting in an other room than the one he is into and use the '<B>&nbsp;*&nbsp;</B>' setting to banish \"for ever\" an user from the chat as the whole.");
+define("L_HELP_CMD_20", "Describe what you're doing without refer yourself.");
+
+// messages frame
+define("L_NO_MSG", "oӲѫǥثeST ...");
+define("L_TODAY_DWN", "The messages that have been sent today start below");
+define("L_TODAY_UP", "The messages that have been sent today start above");
+
+// message colors
+$TextColors = array(	"" => "#000000",
+				"" => "#FF0000",
+				"" => "#009900",
+				"" => "#0000FF",
+				"" => "#9900FF",
+				"`" => "#990000",
+				"`" => "#006600",
+				"`" => "#000099",
+				"@" => "#996633",
+				"ź" => "#006699",
+				"" => "#FF6600");
+
+//ignored popup
+define("L_IGNOR_TIT", "");
+define("L_IGNOR_NON", "SQϥΪ");
+
+// whois popup
+define("L_WHOIS_ADMIN", "tκ޲z");
+define("L_WHOIS_MODER", "ѫǥDH");
+define("L_WHOIS_USER", "@ϥΪ");
+
+// Notification messages of user entrance/exit
+define("L_ENTER_ROM", "%s enters this room");
+define("L_EXIT_ROM", "%s exit this room");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/chinese_traditional/localized.tutorial.php 0.15.0/chat/localization/chinese_traditional/localized.tutorial.php
--- 0.14.5/chat/localization/chinese_traditional/localized.tutorial.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/chinese_traditional/localized.tutorial.php	2004-04-01 03:07:12.000000000 -0600
@@ -0,0 +1,609 @@
+<?php
+// File : chinese_traditional.tutorial.php
+// Translation by Vincent Liao <vincent@roc.net>
+
+// Get the names and values for vars sent by the script that called this one
+if (isset($HTTP_GET_VARS))
+{
+	while(list($name,$value) = each($HTTP_GET_VARS))
+	{
+		$$name = $value;
+	};
+};
+?>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+
+<HEAD>
+<TITLE><?php echo(APP_NAME." - ".APP_VERSION); ?>c餤ϥΤU</TITLE>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=big5">
+<STYLE>
+A.topLink
+{
+	text-decoration: underline;
+	color: #0000C0;
+}
+
+A.topLink:hover, A.topLink:active
+{
+	color: #FF9900;
+	text-decoration: none;
+	font-weight: 800;
+}
+
+.redText
+{
+	font-weight: 800;
+	color: #FF0000;
+}
+</STYLE>
+</HEAD>
+
+<BODY BGCOLOR="#CCCCFF">
+<P><A NAME="top"></P>
+<TABLE BORDER="5" CELLPADDING="5">
+<TR>
+	<TD><FONT SIZE="+2"><?php echo(APP_NAME); ?>ѫǨϥΤU</FONT></TD>
+</TR>
+</TABLE><BR>
+
+<P CLASS="redText">
+i: Netscape ϥε۽бNy\Ѧ۰ʰאּTwy,_h|ݸX{'?'.<BR>
+kpU: View/CharacterSet/your language Auto-Detect, אּ View/CharacterSet/SetDefault.
+</P>
+
+<?php
+if (C_MULTI_LANG == "1") 
+{
+	?>
+	<A HREF="#language" CLASS="topLink">ܻy</A><BR>
+	<?php
+}
+?>
+<A HREF="#login" CLASS="topLink">nJѫ</A><BR>
+<A HREF="#register" CLASS="topLink">Uѫ</A><BR>
+<A HREF="#modProfile" CLASS="topLink">ק<?php if (C_SHOW_DEL_PROF == "1") echo("/R"); ?>ӤH</A><BR>
+<?php
+if (C_VERSION == "2") 
+{
+	?>
+	<A HREF="#create_room" CLASS="topLink">}sѫ</A><BR>
+	<?php
+};
+if ($Ver == "H") 
+{
+	?>
+	<A HREF="#connection_state" CLASS="topLink">Understanding connection state</A><BR>
+	<?php
+};
+?>
+<A HREF="#sending" CLASS="topLink">ǰeT</A><BR>
+<A HREF="#users_list" CLASS="topLink">ѫǦC</A><BR>
+<A HREF="#exit" CLASS="topLink">}ѫ</A><BR>
+<A HREF="#users_popup" CLASS="topLink">ѫǪ,LѫǸƻPiJѫǧianﶵ</A><BR>
+<P>
+<A HREF="#customize" CLASS="topLink">ѫǪѼƭק</A><BR>
+<P>
+<A HREF="#commands" CLASS="topLink">\PO</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#help" CLASS="topLink">DUO</A><BR>
+<?php
+if (C_USE_SMILIES == "1")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#smilies" CLASS="topLink">߱ϥ</A><BR>
+	<?php
+};
+if (C_HTML_TAGS_KEEP != "none")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#text" CLASS="topLink">T榡</A><BR>
+	<?php
+};
+?>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#invite" CLASS="topLink">ܽШϥΪ̶iJzҦbѫ</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#changeroom" CLASS="topLink">󴫩Ҧbѫ</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#private" CLASS="topLink">pHT</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#actions" CLASS="topLink">Actions</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#ignore" CLASS="topLink">LѪ</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#whois" CLASS="topLink">oLѪ̪</A><BR>
+<?php
+if (C_SAVE != "0")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#save" CLASS="topLink">xsT</A><BR>
+	<?php
+};
+?>
+<P>
+<A HREF="#moderator" CLASS="topLink">ѫǥDHΨtκ޲zSOO</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#announce" CLASS="topLink">eX@hi</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#kick" CLASS="topLink">ϥΪ̽Xѫ</A><BR>
+<?php
+if (C_BANISH != "0")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#banish" CLASS="topLink">Banish an user</A><BR>
+	<?php
+};
+?>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#promote" CLASS="topLink">NwUϥΪ̴ަѫǥDH</A><BR>
+<P>
+<HR>
+<HR>
+
+
+<?php
+if (C_MULTI_LANG == "1") 
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="language"><B>ܻy</B></A></FONT>
+	<P>
+	ziHbiJ<?php echo(APP_NAME); ?> ѫǫeIwg½ĶyX,@zѨϥΪy. <BR>HUϨ,@ϥΪ̿ܤFkX:
+	<P ALIGN="center">
+	<IMG SRC="images/tutorials/flags.gif" HEIGHT="44" WIDTH="424" ALT="yO">
+	<BR><P ALIGN="right"><A HREF="#top">^</A></P>
+	<HR>
+	<?php
+}
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="login"><B>nJ</B></A></FONT>
+<P>
+wgUϥΪ̽JzϥΦW٤αKX,<BR>AܱiJѫ,̫[]}l.<BR>
+<?php
+if (C_REQUIRE_REGISTER == "1")
+{
+	?>
+	<P>
+	бz<A HREF="#register">U</A> ѨϥΫe 
+	<?php
+}
+else
+{
+	?>
+	<P>
+	Y <A HREF="#register">U</A> ϥΪ̥unJzϥΧOWYi,zϥΧOWåOd.<BR>(z}ѫǫ,OHiAϥαzOWiJ)
+	<?php
+}
+?>
+<BR><P ALIGN="right"><A HREF="#top">^</A></P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="register"><B>U</B></A></FONT> 
+<P>
+|UϥΪ<?php if (C_REQUIRE_REGISTER == "0") echo("pGQnU"); ?>,пܵUﶵ,UUﶵN@ӵ}.
+<P>	
+<UL>
+	<LI>,ͤ@ϥΪ<?php if (!C_EMAIL_PASWD) echo(" PKX"); ?>бzJA줤.ӱzϥΪ̦W٩ѮɱN۰.ϥΪ̦WٽФť]tť,r','Τϱ׽u'\'.<?php if (C_NO_SWEAR == "1") echo(" Lkϥ\"ry\"."); ?>
+	<LI>䦸,̦JWr,mιqlHc,HWƬO,өʧOi. 
+	<LI>Yz,бNz}JURL줤.
+	<LI>yiHULѨϥΪ,FѱzҨϥΪy.
+	<LI>̫,pGz@NNzqlHc},I;<BR>pGz@NNzqlHc},Яd.
+	<LI>񧹩ҦƽЫUﶵYwU,]i`U.
+</UL>
+<P>
+<A NAME="modProfile"></A>M,wU̥iۦק
+<?php if (C_SHOW_DEL_PROF == "1") echo("/R"); ?> ӤHƩnJѫǮɪקﶵ<?php echo((C_SHOW_DEL_PROF == "0" ? "s" : "s")); ?>..<BR>
+<BR><P ALIGN="right"><A HREF="#top">^</A></P>
+<P>
+<HR>
+
+<?php
+if (C_VERSION == "2") 
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="create_room"><B>}sѫ</B></A></FONT> 
+	<P>
+	wU̥i}sѫ,ӨpHѫǶȷ|ܩܽЪѪ,|}ܥX.<BR>
+	<P>
+	ӷsѫǦWٽФť]tr','Τϱ׽u'\'.<?php if (C_NO_SWEAR == "1") echo(" Lkϥ\"ry\"."); ?>
+	<BR><P ALIGN="right"><A HREF="#top">^</A></P>
+	<P>
+	<HR>
+	<?php
+};
+if ($Ver == "H")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="connection_state"><B>Understanding connection state:</B></A></FONT> 
+	<P>
+	A sign representing your connection state is dipslayed at the top-right corner of the screen. It may take three forms :
+	<P>	
+	<UL>
+		<LI><IMG SRC="images/connectOff.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="No connection"> when no connection is required ;
+		<LI><IMG SRC="images/connectOn.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Connecting"> when there is a connection in progress ;
+		<LI><IMG SRC="images/connectError.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Connection failed"> when a connection failed.
+	</UL>
+	<P>
+	In the third case, clicking on the red "button" will launch a new connection attempt.
+	<BR><P ALIGN="right"><A HREF="#top">^</A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="sending"><B>ǰeT</B></A></FONT> 
+<P>
+бNzѰTJUr줤,<BR>
+J[Enter]}lǰeѰTҦѪ̪.
+<?php if (C_NO_SWEAR == "1") echo("Ъ`N\"ry\"NQT."); ?>
+<P>
+ziܤrkҦCCӧܱzѰTrC.
+<BR><P ALIGN="right"><A HREF="#top">^</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="users_list"><B>ѫǦC (DϥΪ̸X):</B></A></FONT> 
+<P>
+<OL>
+	CwqFؤ:<BR>
+	<!-- To update
+	<LI>pϥ(<IMG SRC="images/whoisOff.gif" WIDTH=5 HEIGHT=9 BORDER=0 ALT="Oֹϥ">)ܤwgUѪ̪OW,INX<A HREF="#whois">whois popup</A>U
+	-->
+	<LI>a little icon that shows gender is displayed before the nick of a registered user (clicking on it will launch the <A HREF="#whois">whois popup</A> for this user), while unregistered users have nothing but blank spaces displayed before their nick;<BR>
+	<LI>ӲѫǥDHΨtκ޲zr
+</OL>
+<P><I>pHUϨ</I>, qϧΤzio:
+<TABLE BORDER=0 CELLSPACING=10>
+<TR>
+	<TD>
+		<IMG SRC="images/tutorials/usersList.gif" WIDTH=99 HEIGHT=131 BORDER=0 ALT="users list">
+	</TD>
+	<TD>
+	<UL>
+		<LI>Nicolas OphpMyChatѫǥDHΨtκ޲z;<BR><BR>
+		<!-- To update
+		<LI>lolo M Jezek2 O@UϥΪ;<BR>
+		<LI>Mary OgUϥΪ.
+		-->
+		<LI>alien (whose gender is unknown), Jezek2 and Caridad are registered users with no extra "power" for the phpMyChat room;<BR><BR>
+		<LI>lolo is a simple unregistered user.
+	</UL>
+	</TD>
+</TR>
+</TABLE>
+<BR><P ALIGN="right"><A HREF="#top">^</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="exit"><B>}ѫ</B></A></FONT>
+<P>
+}ѫǽЫ"F". άOϥΫO覡,<BR>
+/exit<BR>
+/bye<BR>
+/quit<BR>
+å[WrHT,p CU soon! A|!
+<BR>
+NeX"CU soon! A|!"  TDؤ}ѫ. 
+<BR><P ALIGN="right"><A HREF="#top">^</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="users_popup"><B>ѫǪ,LѫǸƻPiJѫǧianﶵ</B></A></FONT> 
+<P>
+ziHѭI"XXӨϥΪ", ζiJѫǫIkW, <BR>
+Y|}ҷsX, eѫǪ,LѫǸƻPiJѫǧianﶵ.<BR>
+XyzѫǸ,Y֩THhCXѫǪW.<BR>
+<P>
+Iϥ<IMG SRC="images/sound.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Beeps"> ܬO_Χian,iLsiѪ.
+<BR><P ALIGN="right"><A HREF="#top">^</A></P>
+<P>
+<HR>
+<HR>
+
+
+<P>
+<FONT SIZE="+1"><A NAME="customize"><B>ѫǪѼƭק</B></A></FONT>
+<P>
+ϥΫO覡,izrקzѫǥD.
+<P>
+<UL>
+	<?php
+	if ($Ver == "H")
+	{
+		?>
+		<LI>ϥ<B>Clear O</B> zMDnѵ̫᪺ܳyTezù.<BR>J "/clear" t޸.
+		<P>
+		<?php
+	}
+	else
+	{
+		?>
+		<LI>ϥ<B>Order O</B>ѪeOѤWӤUΥѤUӤWܲѪe,
+                    <BR>J "/order" t޸.
+	        <?php
+	};
+	?>
+	<LI>ϥ<B>Notify O</B>ܩΤܨϥΪ̶iJM}ѫǪT
+            <BR>J "/notify" t޸.
+	<LI>ϥ<b>Timestamp O</b>ܩΤܰTeɶܥHΰT椧tήɶ,w].
+            <BR>J "/timestamp" t޸.
+        <LI>ϥ<b>Refresh O</b>ish֬ɶsܲѪe,w]10.ܧܳtv
+            <BR>J"/refresh n" t޸ nܲѤe@.
+            <BR>Ҧp: /refresh 5 
+            <BR>5 ܲѤe@,
+            <BR>`Nƶ:Y n ]wpThѤeNAs.
+            <BR>(ϥΩ[ݲѾvƧKQ{bѤeƧs)
+        <?php
+	if ($Ver == "L")
+	{
+		?>
+		<LI>ϥ <b>Show O</b>isznܦh֦ƪѤe,ܧܦJ"/show n" t޸ 
+                 <BR> n 檺Ѥe.
+                 <BR>Ҧp: /show 50
+                 <BR>N50̷sѤe,YӤphbCX{bѤek.
+		<?php
+	}
+	else
+	{
+		?>
+		<LI>ϥ <b>Show M LastO</b>isznܦh֦ƪѤe,
+                    <BR>ܧܦJ"/show n /last n" t޸ n 檺Ѥe.
+                    <BR>Ҧp: /show 50 /last 50
+                    <BR>N50̷sѤe,YӤphbCX{bѤek.
+		<?php
+	};
+	?>
+	<BR><P ALIGN="right"><A HREF="#top">^</A></P>
+	<P>
+</UL>
+<HR>
+<HR>
+
+
+<P>
+<FONT SIZE="+2"><A NAME="commands"><B><U>\PO</U></B></A></FONT> 
+<P>
+
+<FONT SIZE="+1"><A NAME="help"><B>DUO</B></A></FONT>
+<P>
+iJѫǫIݸ<IMG SRC="images/helpOff.gif" WIDTH=15 HEIGHT=15 BORDER=0 ALT="?">ϥܱziJDU,Ψϥ <b>"/help" or "/?"O</b>T줤.
+<BR><P ALIGN="right"><A HREF="#top">^</A></P>
+<P>
+<P>
+<HR>
+
+<?php
+if (C_USE_SMILIES == "1")
+{
+	include("./lib/smilies.lib.php");
+	$Nb = count($SmiliesTbl);
+	$ResultTbl = Array();
+	DisplaySmilies($ResultTbl,$SmiliesTbl,$Nb,"tutorial");
+	unset($SmiliesTbl);
+	?>
+	<FONT SIZE="+1"><A NAME="smilies"><B>߱ϥ</B></A></FONT>
+	<P>
+	ziHbѪe[J߱ϥ, ШϥΥbΪզXr,N|HϥܨӨNզXr.
+	<P ALIGN="center">
+	<TABLE BORDER=0 CELLPADDING=3 CELLSPACING=5>
+	<?php
+	$i = "0";
+	$Nb = count($ResultTbl);
+	while($i < $Nb)
+	{
+		if ($i > 0) echo("\t");
+		echo("<TR VALIGN=\"BOTTOM\">\n");
+		echo("$ResultTbl[$i]");
+		echo("\t</TR>\n\t<TR>\n");
+		$i++;
+		echo("$ResultTbl[$i]");
+		echo("\t</TR>\n");
+		$i++;
+	};
+	unset($ResultTbl);
+	?>
+	</TABLE>
+	<P>
+	Ҧp:eXT "Hi Jack :)" t޸,NHpϥܨNզXr Hi Jack <IMG SRC="images/smilies/smile1.gif" WIDTH=15 HEIGHT=15 ALT=":)">
+	<BR><P ALIGN="right"><A HREF="#top">^</A></P>
+	<P>
+	<HR>
+	<?php
+};
+
+if (C_HTML_TAGS_KEEP != "none")
+{
+	?>
+	<FONT SIZE="+1"><A NAME="text"><B>T榡</B></A></FONT>
+	<P>
+	boeTAiHϥβ, Mu HTML Tag Ӫ &LT;/B&GT, &LT;I&GT; &LT;/I&GT;  &LT;U&GT; &LT;/U&GT. 
+	<P>
+	Ҧp:, &LT;B&GT;oӤr&LT;/B&GT; N <B>oӤr</B>.
+	<P>
+	pGTO Email  URL AݭnSOgtag. tαN|ۤvUA[W.
+	<BR><P ALIGN="right"><A HREF="#top">^</A></P>
+	<P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="invite"><B>ܽШϥΪ̶iJzҦbѫ:</B></A></FONT>
+<P>
+ziϥ <B>invite O</B>ܽШϥΪ̶iJzҦbѫ.
+<br>ҦpG/invite Jack 
+<br>ONeXTi ܽJack iJzҦbѫ
+<br>æPɦCXzW٤ΩҦbѫǪs
+<br>]\zPܽЦhH[J
+<br>ҦpG/invite Jack,Helen,Alf" 
+<BR><P ALIGN="right"><A HREF="#top">^</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="changeroom"><B>󴫲ѫ</B></A></FONT>
+<P>
+<br>k誺ѫǦC,IN}{ѫǨzI諸ѫ.
+<br>LHѫǨä|X{ѫǦC,ziHϥΫO "/join #roomname" t޸,
+<br>ҦpG/join #RedRoom 
+<br>IN}{ѫǨzI諸ѫ.
+<br>YzUϥΪ,hiϥάۦPO}Psѫ.
+<br>ЫW}ΨpHѫ:0pHѫ,1}ѫ(w])
+<br>ҦpG/join 0 #MyRoom 
+<br>N}PspHѫ(eMyRoom}ѫ)
+<br>ѫǦWٽФť]tr","Τϱ׽u"\"
+<P ALIGN="right"><A HREF="#top">^</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B>קӤHƩѫǤ</B></FONT>
+<P>
+ϥ <b>Profile O</b>}ҷsX, eקӤHưFϥΦW٤αKX~
+(pPiJѫǮɤUs).
+<br>J /profile
+<P ALIGN="right"><A HREF="#top">^</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B>^eJe (O, ΰT)</B></FONT>
+<P>
+ϥ <b>! O</b>^eJe (O, ΰT).
+<br>J /!
+<BR><P ALIGN="right"><A HREF="#top">^</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B>wѹH</B></FONT>
+<P>
+IѫǥkWC| "ϥΪ>"Jr줤,󤽶}ѫǤwѹH.
+<BR><P ALIGN="right"><A HREF="#top">^</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="private"><B>pHT</B></A></FONT>
+<P>
+ǰepHTSwH.(L׬O_PbۦPѫǧ_!)
+<br>J <b>O"/msg username messagetext"  "/to username messagetext"</b> t޸.
+<br>ҦpGJack O@Ѫ: /msg Jack ݹL,p̦Vzݦn?
+<br>ѰTu|ܩ Jack αzq,LH|ݨT.
+<br>bLѪ̪OWWVhD|۰ʥ[JRO.
+<BR><P ALIGN="right"><A HREF="#top">^</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="actions"><B>Actions:</B></A></FONT>
+<P>
+To describe what you're doing you can use the <B>command "/me action"</B> without quotes.
+<P>
+<I>For example:</I> If Jack sends the message "/me is smoking a cigarette" the message frame will shown "<B>* Jack</B>" is smoking a cigarette".
+<BR><P ALIGN="right"><A HREF="#top">^</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="ignore"><B>LѪ</B></A></FONT>
+<P>
+LѪ̪Ѥe,JO <b>"/ignore username"</b> t޸.
+<br>ҦpG/ignore Jack
+<br>JO Jack ѤeY|ܩz.
+<br>CXҦѪ̥unJO "/ignore " t޸.
+<br>^JO "/ignore - username" t޸."-" O޽u.
+<br>ҦpG/ignore - Jack
+<br> Jack ѤeY|ܩzå]te.
+<br>pGzXѪ̩޽u,zWNM.
+<P>
+z]i[Jh쩿ѤeѪ(p "ignore Jack,Helen,Alf" or "/ignore - Jack,Alf"). Хγrj(,)hѪ,rЩ[Wť.
+<BR><P ALIGN="right"><A HREF="#top">^</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="whois"><B>oLѪ̪</B></A></FONT>
+<p>
+oLѪ̪}, 
+<br>JO "/whois username" t޸.
+<br>ҦpG /whois Jack
+<br>B 'Jack' UϥΪ.ON͸X, Jack Ѫ̪}.
+<BR><P ALIGN="right"><A HREF="#top">^</A></P>
+<P>
+<HR>
+
+<?php
+if (C_SAVE != "0")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="save"><B>xsT</B></A></FONT>
+	<P>
+	NѰTনHTMLɮ,
+        <br>J "/save n" t޸.
+        <br>ҦpG /save 5
+        <br>B '5' OҭnxsѤe. Y n w,ҦѤeNQxs.
+	<BR><P ALIGN="right"><A HREF="#top">^</A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+<HR>
+
+
+<P>
+<FONT SIZE="+2"><A NAME="moderator"><B><U>ѫǥDHΨtκ޲zSOO</U></B></A></FONT> 
+
+<P>
+<FONT SIZE="+1"><A NAME="announce"><B>eX@hi</B></A></FONT>
+<P>
+tκ޲ziHeX@hiҦѫǸ̪Ѫ.
+<br>ҦpG ϥ /announce ѨtαN󤵱ߤKIi.
+<BR><P ALIGN="right"><A HREF="#top">^</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="kick"><B>ϥΪ̽Xѫ</B></FONT>
+<P>
+ϥΪ̽Xѫ, uѫǥDHΨtκ޲z~Uo<b>Kick O</B>
+<br>ҦpG ϥ /kick Jack  Jack O@Ѫ, N Jack Xѫ.
+<BR><P ALIGN="right"><A HREF="#top">^</A></P>
+<P>
+<HR>
+
+<?php
+if (C_BANISH != "0")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="banish"><B>Banish an user:</B></A></FONT>
+	<P>
+	Moderators can banish an user and the administrator can banish an user or a moderator with the <B>ban command</B>.<BR>
+	The administrator can banish an user from another room than the one he is chatting into. He can also banish an user forever and from the chat as a whole with the '<B>&nbsp;*&nbsp;</B>' setting that must be inserted before the nick of the user to be banished.
+	<P>
+	<I>For example</I>, if Jack is the name of the user to banish : <I>/ban Jack</I> or <I>/ban * Jack</I>
+	<BR><P ALIGN="right"><A HREF="#top">^</A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="promote"><B>NwUϥΪ̴ަѫǥDH</B></A></FONT>
+<P>
+ѫǥDHΨtκ޲ziHNwUϥΪ̴ަѫǥDHϥ<b>Promote O</b>.
+<br>ҦpG ϥ /promote Jack  Jack O@Ѫ, N Jack ަѫǥDH.
+<br>utκ޲zϦVާ@(NѫǥDH@Ѫ).
+<BR><P ALIGN="right"><A HREF="#top">^</A></P>
+<P>
+
+
+</BODY>
+</HTML>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/chinese_traditional/regex.txt 0.15.0/chat/localization/chinese_traditional/regex.txt
--- 0.14.5/chat/localization/chinese_traditional/regex.txt	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/chinese_traditional/regex.txt	2004-04-01 03:07:12.000000000 -0600
@@ -0,0 +1 @@
+zh[-_]tw
\ No newline at end of file
Binary files 0.14.5/chat/localization/croatian/flag.gif and 0.15.0/chat/localization/croatian/flag.gif differ
diff -ruN 0.14.5/chat/localization/croatian/localized.admin.php 0.15.0/chat/localization/croatian/localized.admin.php
--- 0.14.5/chat/localization/croatian/localized.admin.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/croatian/localized.admin.php	2004-04-01 03:07:12.000000000 -0600
@@ -0,0 +1,61 @@
+<?php
+// File : english.lang.php
+// Translation by Vlatko Koturjak <kost@iname.com>
+
+// extra header for charset
+$Charset = "iso-8859-2";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// Top frame
+define("A_MENU_0", "Administration for %s");
+define("A_MENU_1", "Registered users");
+define("A_MENU_2", "Banished users");
+define("A_MENU_3", "Clean rooms");
+define("A_MENU_4", "Send mails");
+
+// Frame for registered users
+define("A_SHEET1_1", "List of registered users and their permissions");
+define("A_SHEET1_2", "Ime");
+define("A_SHEET1_3", "Dozvole");
+define("A_SHEET1_4", "Moderirane sobe");
+define("A_SHEET1_5", "Moderirane sobe su odvojene zarezom (,) bez razmaka.");
+define("A_SHEET1_6", "Obrii oznaene");
+define("A_SHEET1_7", "Promjeni");
+define("A_SHEET1_8", "There is no registered user except yourself.");
+define("A_SHEET1_9", "Banish checked profiles");
+define("A_SHEET1_10", "Now you have to move to the banished users sheet to refine your choices.");
+define("A_SHEET1_11", "Last connection");
+define("A_USER", "Korisnik");
+define("A_MODER", "Moderator");
+define("A_PAGE_CNT", "Page %s of %s");
+
+// Frame for banished users
+define("A_SHEET2_1", "List of banished users and concerned rooms");
+define("A_SHEET2_2", "IP");
+define("A_SHEET2_3", "Concerned rooms");
+define("A_SHEET2_4", "Until");
+define("A_SHEET2_5", "no end");
+define("A_SHEET2_6", "rooms are splitted by comma without spaces (,) if they are less than 4, else the '<B>&nbsp;*&nbsp;</B>' sign<BR>banish from all rooms.");
+define("A_SHEET2_7", "Remove banishment for checked user(s)");
+define("A_SHEET2_8", "There is no banished user.");
+
+// Frame for cleaning rooms
+define("A_SHEET3_1", "Lista postojeih soba");
+define("A_SHEET3_2", "Clean a \"non-default\" room will also remove all moderator<BR>status for this room.");
+define("A_SHEET3_3", "Clean selected rooms");
+define("A_SHEET3_4", "There is no room to clean.");
+
+// Frame for sending mails
+define("A_SHEET4_0", "You haven't set required variables in the<BR>'chat/admin/mail4admin.php' script.");
+define("A_SHEET4_1", "Send e-mails");
+define("A_SHEET4_2", "To:");
+define("A_SHEET4_3", "Select all");
+define("A_SHEET4_4", "Subject:");
+define("A_SHEET4_5", "Messages:");
+define("A_SHEET4_6", "Start sending");
+define("A_SHEET4_7", "All e-mails have been sent.");
+define("A_SHEET4_8", "Internal error while sending the mails.");
+define("A_SHEET4_9", "Addresse(s), subject or message is missing!");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/croatian/localized.chat.php 0.15.0/chat/localization/croatian/localized.chat.php
--- 0.14.5/chat/localization/croatian/localized.chat.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/croatian/localized.chat.php	2004-04-01 03:07:13.000000000 -0600
@@ -0,0 +1,221 @@
+<?php
+// File : croatian.lang.php
+// Translation by Vlatko Koturjak <kost@iname.com>
+
+// extra header for charset
+$Charset = "iso-8859-2";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// welcome page
+define("L_TUTORIAL", "Tutorial");
+
+define("L_WEL_1", "Poruke se briu nakon");
+define("L_WEL_2", "sati i korisnici nakon");
+define("L_WEL_3", "minuta ...");
+
+define("L_CUR_1", "Trenutno");
+define("L_CUR_2", "razgovara.");
+define("L_CUR_3", "Broj korisnika u sobama");
+define("L_CUR_4", "korisnika u privatnim sobama");
+
+define("L_SET_1", "Molimo postavite...");
+define("L_SET_2", "vae korisniko ime");
+define("L_SET_3", "broj prikazanih poruka");
+define("L_SET_4", "vrijeme osvjeavanja razgovora");
+define("L_SET_5", "Izaberite sobu za razgovor...");
+define("L_SET_6", "postavljene sobe");
+define("L_SET_7", "Izaberite ...");
+define("L_SET_8", "korisniki napravljene javne sobe");
+define("L_SET_9", "napravite vlastitu");
+define("L_SET_10", "javnu");
+define("L_SET_11", "privatnu");
+define("L_SET_12", "sobu");
+define("L_SET_13", "i, sada samo");
+define("L_SET_14", "priajte!");
+
+define("L_SRC", "je slobodno dostupan na");
+
+define("L_SECS", "sekundi");
+define("L_MIN", "minuta");
+define("L_MINS", "minuta");
+
+// registration stuff:
+define("L_REG_1", "vaa lozinka");
+define("L_REG_1r", "(samo ako ste ve registrirani)");
+define("L_REG_2", "Registrirani korisnici");
+define("L_REG_3", "Registriranje!");
+define("L_REG_4", "Mjenjanje vaih postavki");
+define("L_REG_5", "Brisanje korisnika");
+define("L_REG_6", "Korisnika registracija");
+define("L_REG_7", "Vaa lozinka");
+define("L_REG_8", "Va e-mail");
+define("L_REG_9", "Uspjeno ste se registrirali.");
+define("L_REG_10", "Povratak");
+define("L_REG_11", "Mjenjanje");
+define("L_REG_12", "Mjenjanje korisnikih informacija");
+define("L_REG_13", "Brisanje korisnika");
+define("L_REG_14", "Oznaka");
+define("L_REG_15", "Ulaz");
+define("L_REG_16", "Promjeni");
+define("L_REG_17", "Vae informacije su uspjeno promijenjene.");
+define("L_REG_18", "Izbaeni ste iz sobe od strane moderatora.");
+define("L_REG_19", "Da li zaista elite biti obrisani ?");
+define("L_REG_20", "Da");
+define("L_REG_21", "Uspjeno ste obrisani.");
+define("L_REG_22", "Ne");
+define("L_REG_25", "Zatvori");
+define("L_REG_30", "Ime");
+define("L_REG_31", "Prezime");
+define("L_REG_32", "WEB");
+define("L_REG_33", "prikai e-mail /whois komandom");
+define("L_REG_34", "Mjenjanje korisnikih postavki");
+define("L_REG_35", "Administracija");
+define("L_REG_36", "Jezike koje govorite");
+define("L_REG_37", "Polja sa <span class=\"error\">*</span> moraju biti popunjena.");
+define("L_REG_39", "Soba u kojoj ste bili je uklonjena od strane administratora.");
+define("L_REG_45", "gender");
+define("L_REG_46", "male");
+define("L_REG_47", "Female");
+
+// e-mail validation stuff
+define("L_EMAIL_VAL_1", "Your settings to enter the chat");
+define("L_EMAIL_VAL_2", "Welcome to our chat server.");
+define("L_EMAIL_VAL_Err", "Internal error, please contact the administrator: <a href=\"mailto:%s\">%s</a>.");
+define("L_EMAIL_VAL_Done", "Your password has been sent to your e-mail address.");
+
+// admin stuff
+define("L_ADM_1", "%s is no more moderator for this room.");
+define("L_ADM_2", "You're no more a registered user.");
+
+//error messages
+define("L_ERR_USR_1", "Korisniko ime je ve u upotrebi. Probajte neko drugo.");
+define("L_ERR_USR_2", "Morate izabrati korisniko ime.");
+define("L_ERR_USR_3", "Korisniko ime je ve registrirano. Molimo, unesite vau lozinku ili unesite drugo korisniko ime.");
+define("L_ERR_USR_4", "Upisali ste pogrenu lozinku.");
+define("L_ERR_USR_5", "Morate unesti vae korisniko ime.");
+define("L_ERR_USR_6", "Morate unesti vau lozinku.");
+define("L_ERR_USR_7", "Morate unijeti va e-mail.");
+define("L_ERR_USR_8", "Morate unijeti ispravnu e-mail adresu.");
+define("L_ERR_USR_9", "Korisniko ime je ve u upotrebi.");
+define("L_ERR_USR_10", "Pogreno ime ili lozinka.");
+define("L_ERR_USR_11", "Morate biti administrator.");
+define("L_ERR_USR_12", "Vi ste administrator, ne moete biti uklonjeni.");
+define("L_ERR_USR_13", "Da napravite vau osobnu sobu, morate biti registrirani.");
+define("L_ERR_USR_14", "Morate biti registrirani prije razgovara.");
+define("L_ERR_USR_15", "Morate unijeti puno ime.");
+define("L_ERR_USR_16", "Korisniko ime ne moe sadravati razmake, zareze ili kosu crtu (\\).");
+define("L_ERR_USR_17", "Soba ne postoji, ali takoer nemate dozvolu da ju napravite.");
+define("L_ERR_USR_18", "Zabranjena rije je pronaena u vaem imenu.");
+define("L_ERR_USR_19", "You cannot be in more than one room at the same time.");
+define("L_ERR_USR_20", "You have been banished from this room or from the chat.");
+define("L_ERR_ROM_1", "Ime sobe ne moe sadravati zarez ili kosu crtu (\\).");
+define("L_ERR_ROM_2", "Zabranjena rije je pronaena u imenu sobe koju elite napraviti.");
+define("L_ERR_ROM_3", "This room already exist as a public one.");
+define("L_ERR_ROM_4", "Invalid room name.");
+
+// users frame or popup
+define("L_EXIT", "Izlaz");
+define("L_DETACH", "Poseban");
+define("L_EXPCOL_ALL", "Expand/Collapse All");
+define("L_CONN_STATE", "Connection state");
+define("L_CHAT", "Razgovor");
+define("L_USER", "korisnika");
+define("L_USERS", "korisnika");
+define("L_NO_USER", "Nema korisnika");
+define("L_ROOM", "soba");
+define("L_ROOMS", "sobe");
+define("L_EXPCOL", "Expand/Collapse room");
+define("L_BEEP", "Beep/no beep at user entrance");
+define("L_PROFILE", "Display profile");
+define("L_NO_PROFILE", "No profile");
+
+// input frame
+define("L_HLP", "Pomo");
+define("L_BAD_CMD", "Ovo nije dozvoljena komanda !");
+define("L_ADMIN", "%s je ve administrator !");
+define("L_IS_MODERATOR", "%s je ve moderator !");
+define("L_NO_MODERATOR", "Samo moderator moe koristite te naredbe.");
+define("L_MODERATOR", "%s je sada moderator za ovu sobu.");
+define("L_NONEXIST_USER", "Korisnik %s nije trenutno u sobi.");
+define("L_NONREG_USER", "Korisnik %s nije registriran.");
+define("L_NONREG_USER_IP", "His IP is: %s.");
+define("L_NO_KICKED", "Korisnik %s je moderator ili administrator i ne moe biti izbaen.");
+define("L_KICKED", "Korisnik %s je uspjeno izbaen.");
+define("L_NO_BANISHED", "User %s is moderator or administrator and can't be banished.");
+define("L_BANISHED", "User %s has successfully been banished.");
+define("L_SVR_TIME", "Vrijeme na serveru: ");
+define("L_NO_SAVE", "No message to save!");
+define("L_NO_ADMIN", "Only the administrator can use this command.");
+define("L_ANNOUNCE", "ANNOUNCE");
+define("L_INVITE", "%s suggest you to join her/him into the <a href=\"#\" onClick=\"window.parent.runCmd('%s','%s')\">%s</a> room.");
+define("L_INVITE_REG", " You have to be registered to enter this room.");
+define("L_INVITE_DONE", "Your invitation has been sent to %s.");
+define("L_OK", "Send");
+
+// help popup
+define("L_HELP_TIT_1", "Smajliji");
+define("L_HELP_TIT_2", "Tekst formatiranje za poruke");
+define("L_HELP_FMT_1", "Moete staviti podebljan, ukoen ili podvuen tekst u porukama sa postavljanjem odreenih oznaka u va tekst poput: &lt;B&gt; &lt;/B&gt;, &lt;I&gt; &lt;/I&gt; or &lt;U&gt; &lt;/U&gt;. <BR>Na primjer, &lt;B&gt;ovaj tekst&lt;/B&gt; e rezultirati <B>ovaj tekst</B>.");
+define("L_HELP_FMT_2", "Za pravljenje hiperlinka (za e-mail ili URL) u vaoj poruci, jednostavno napiite odgovarajuu adresu bez tagova. Hiperlink e biti automatski napravljen.");
+define("L_HELP_TIT_3", "Komande");
+define("L_HELP_USR", "korisnika");
+define("L_HELP_MSG", "poruke");
+define("L_HELP_ROOM", "soba");
+define("L_HELP_CMD_0", "{} predstavlja obvezne postavke, dok [] opcionalne.");
+define("L_HELP_CMD_1", "Broj poruka koje se prikazuju, minimum 5.");
+define("L_HELP_CMD_1a", "Set number of messages to show, minimum and default are 5.");
+define("L_HELP_CMD_1b", "Reload the message frame and display the n latest messages, minimum and default are 5.");
+define("L_HELP_CMD_2a", "Promjeni vrijeme osvjeavanja poruka (u sekundama).<BR>Ako n nije specifiran ili ako je manji od 3, automatski se postavlja izmeu neosvjeavanja i 10s osvjeavanja.");
+define("L_HELP_CMD_2b", "Modify messages and users lists refresh delay (in seconds).<BR>If n is not specified or less than 3, toggles between no refresh and 10s refresh.");
+define("L_HELP_CMD_3", "Promjeni poredak poruka.");
+define("L_HELP_CMD_4", "Pridrui se drugoj sobi, napravi ju ako ne postoji i ako imam dozvole za to.<BR>n jednako 0 za privatnu i 1 za javnu, podrazumijevana vrijednost je 1 ako nije specifirano.");
+define("L_HELP_CMD_5", "Napusti razgovor nakon prikazivanja opcione poruke.");
+define("L_HELP_CMD_6", "Izbjegavaj prikazivanje poruka od korisnika ako je nadimak specifiran.<BR>Iskljui ignoriranje za korisnika kada je nadimak i/ili zajedno specifirani, za sve korisnike.<BR>Bez opcija, ova komanda podie prozor koji prikazuje sve ignorirane nadimke.");
+define("L_HELP_CMD_7", "Prikai posljednju napisanu komandu ili tekst.");
+define("L_HELP_CMD_8", "Prikai/Sakri vrijeme prije poruke.");
+define("L_HELP_CMD_9", "Izbaci korisnika iz razgovora. Ovu komandu moete koristiti samo kao moderator.");
+define("L_HELP_CMD_10", "Poalji privatnu poruku odreenom korisniku (drugi korisnici je nee vidjeti).");
+define("L_HELP_CMD_11", "Prikae informacije o odreenom korisniku.");
+define("L_HELP_CMD_12", "Prikae prozor za mjenjanje korisnikih postavki.");
+define("L_HELP_CMD_13", "Mjenja postavku da li da prikazuje kada korisnici ulaze/izlaze iz trenutne sobe.");
+define("L_HELP_CMD_14", "Dozvoljava administratoru ili moderatoru trenutne sobe da unaprijedi drugog registriranog korisnika da bude moderator za istu sobu.");
+define("L_HELP_CMD_15", "Clear the message frame and show only the last 5 messages.");
+define("L_HELP_CMD_16", "Save the last n messages (notifications ones excluded) to an HTML file. If n is not specified, all available messages will be taken into account.");
+define("L_HELP_CMD_17", "Allow the administrator to send an announce to all users whatever the room they are chatting into.");
+define("L_HELP_CMD_18", "Suggest an user chatting in an other room to join the one you are into.");
+define("L_HELP_CMD_19", "Allow the moderator(s) of a room or the administrator to \"banish\" an user from the room for a time defined by the administrator.<BR>The later can banish an user chatting in an other room than the one he is into and use the '<B>&nbsp;*&nbsp;</B>' setting to banish \"for ever\" an user from the chat as the whole.");
+define("L_HELP_CMD_20", "Describe what you're doing without refer yourself.");
+
+// messages frame
+define("L_NO_MSG", "Trenutno nema poruka...");
+define("L_TODAY_DWN", "The messages that have been sent today start below");
+define("L_TODAY_UP", "The messages that have been sent today start above");
+
+// message colors
+$TextColors = array(	"Crna" => "#000000",
+				"Crvena" => "#FF0000",
+				"Zelena" => "#009900",
+				"Plava" => "#0000FF",
+				"Ljubiasta" => "#9900FF",
+				"Tamno crvena" => "#990000",
+				"Tamno zelena" => "#006600",
+				"Tamno plava" => "#000099",
+				"Smea" => "#996633",
+				"Akva plava" => "#006699",
+				"Naranasta" => "#FF6600");
+
+// ignored popup
+define("L_IGNOR_TIT", "ignoriran");
+define("L_IGNOR_NON", "Nema korisnika koje treba ignorirati");
+
+// whois popup
+define("L_WHOIS_ADMIN", "Administrator");
+define("L_WHOIS_MODER", "Moderator");
+define("L_WHOIS_USER", "Korisnik");
+
+// Notification messages of user entrance/exit
+define("L_ENTER_ROM", "%s enters this room");
+define("L_EXIT_ROM", "%s exit this room");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/croatian/regex.txt 0.15.0/chat/localization/croatian/regex.txt
--- 0.14.5/chat/localization/croatian/regex.txt	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/croatian/regex.txt	2004-04-01 03:07:13.000000000 -0600
@@ -0,0 +1 @@
+hr|croatian
\ No newline at end of file
Binary files 0.14.5/chat/localization/czech/flag.gif and 0.15.0/chat/localization/czech/flag.gif differ
diff -ruN 0.14.5/chat/localization/czech/localized.admin.php 0.15.0/chat/localization/czech/localized.admin.php
--- 0.14.5/chat/localization/czech/localized.admin.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/czech/localized.admin.php	2004-04-01 03:07:13.000000000 -0600
@@ -0,0 +1,61 @@
+<?php
+// File : czech.lang.php
+// Translation by Martin Dvorak <jezek2@penguin.cz>
+
+// extra header for charset
+$Charset = "iso-8859-2";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// Top frame
+define("A_MENU_0", "Administrace %s");
+define("A_MENU_1", "Registrovan uivatel");
+define("A_MENU_2", "Zakzan uivatel");
+define("A_MENU_3", "itn mstnost");
+define("A_MENU_4", "Posln e-mail");
+
+// Frame for registered users
+define("A_SHEET1_1", "Seznam registrovnch uivatel a jejich prva");
+define("A_SHEET1_2", "Uivatel");
+define("A_SHEET1_3", "Prva");
+define("A_SHEET1_4", "Moderovan mstnosti");
+define("A_SHEET1_5", "Moderovan mstnosti jsou oddleny rkou (,) bez mezer.");
+define("A_SHEET1_6", "Zruit oznaen");
+define("A_SHEET1_7", "Zmnit");
+define("A_SHEET1_8", "Nen registrovn dn uivatel krom vs.");
+define("A_SHEET1_9", "Zakzat oznaen uivatele");
+define("A_SHEET1_10", "Nyn se mete pesunout do zloky 'Zakzan uivatel' pro pravu seznamu zakzanch uivatel.");
+define("A_SHEET1_11", "Posledn pipojen");
+define("A_USER", "Uivatel");
+define("A_MODER", "Modertor");
+define("A_PAGE_CNT", "Strana %s z %s");
+
+// Frame for banished users
+define("A_SHEET2_1", "Seznam zakzanch uivatel");
+define("A_SHEET2_2", "IP");
+define("A_SHEET2_3", "Zakzan mstnosti");
+define("A_SHEET2_4", "Do");
+define("A_SHEET2_5", "dn konec");
+define("A_SHEET2_6", "jmna mstnost jsou oddleny rkou bez mezer (,) pokud je jich mn ne tyi,<BR> jinak oznaen '<B>&nbsp;*&nbsp;</B>' zake pstup uivateli do vech mstnost.");
+define("A_SHEET2_7", "Odstranit zkaz pstupu oznaenm uivatelm");
+define("A_SHEET2_8", "dnmu uivateli nen zakzan pstup.");
+
+// Frame for cleaning rooms
+define("A_SHEET3_1", "Seznam existujcch mstnost");
+define("A_SHEET3_2", "Vyitn neimplicitn mstnosti odstran tak pravomoce<BR> modertora vem stvajcm modertorm zvolen mstnosti.");
+define("A_SHEET3_3", "Vyistit oznaen mstnosti");
+define("A_SHEET3_4", "dn mstnost nen k dispozici k vyitn.");
+
+// Frame for sending mails
+define("A_SHEET4_0", "Nenastavil jste potebn promnn<BR>v souboru 'chat/admin/mail4admin.php'.");
+define("A_SHEET4_1", "Poslat e-maily");
+define("A_SHEET4_2", "Komu:");
+define("A_SHEET4_3", "Vybrat vechny");
+define("A_SHEET4_4", "Pedmt:");
+define("A_SHEET4_5", "Zprvy:");
+define("A_SHEET4_6", "Zat poslat");
+define("A_SHEET4_7", "Vechny e-maily byly odeslny.");
+define("A_SHEET4_8", "Nastala intern chyba pi posln e-mail.");
+define("A_SHEET4_9", "Adresa(y), pedmt nebo zprva chyb!");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/czech/localized.chat.php 0.15.0/chat/localization/czech/localized.chat.php
--- 0.14.5/chat/localization/czech/localized.chat.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/czech/localized.chat.php	2004-04-01 03:07:13.000000000 -0600
@@ -0,0 +1,221 @@
+<?php
+// File : czech.lang.php
+// Translation by Martin Dvorak <jezek2@penguin.cz>
+
+// extra header for charset
+$Charset = "iso-8859-2";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// welcome page
+define("L_TUTORIAL", "Nvod");
+
+define("L_WEL_1", "Zprvy jsou smazny po");
+define("L_WEL_2", "hodinch a uivatelsk jmna za");
+define("L_WEL_3", "minuty ...");
+
+define("L_CUR_1", "Nyn je");
+define("L_CUR_2", "v chatu.");
+define("L_CUR_3", "Aktuln lidi v chatovacch mstnostech");
+define("L_CUR_4", "lid v soukromch mstnostech");
+
+define("L_SET_1", "Prosm nastavte ...");
+define("L_SET_2", "vae uivatelsk jmno");
+define("L_SET_3", "poet zobrazench zprv");
+define("L_SET_4", "prodleva mezi kadou obnovou");
+define("L_SET_5", "Vyberte si chatovac mstnost ...");
+define("L_SET_6", "implicitn mstnosti");
+define("L_SET_7", "Vyberte si ...");
+define("L_SET_8", "veejn mstnosti vytvoen uivateli");
+define("L_SET_9", "vytvoit vlastn");
+define("L_SET_10", "veejnou");
+define("L_SET_11", "soukromou");
+define("L_SET_12", "mstnost");
+define("L_SET_13", "Pak u jen");
+define("L_SET_14", "chatujte");
+
+define("L_SRC", "je voln k dispozici na");
+
+define("L_SECS", "sekund");
+define("L_MIN", "minuta");
+define("L_MINS", "minuty");
+
+// registration stuff:
+define("L_REG_1", "vae uivatelsk heslo");
+define("L_REG_1r", "(jen kdy jste registrovn)");
+define("L_REG_2", "Registrovan uivatel");
+define("L_REG_3", "Registrovat");
+define("L_REG_4", "Upravit uiv. daje");
+define("L_REG_5", "Zruit uivatele");
+define("L_REG_6", "Registrace uivatele");
+define("L_REG_7", "vae uivatelsk heslo");
+define("L_REG_8", "v e-mail");
+define("L_REG_9", "Byl jste spn registrovn.");
+define("L_REG_10", "Zpt");
+define("L_REG_11", "Editace");
+define("L_REG_12", "prava uiv. daj");
+define("L_REG_13", "Zruen uivatele");
+define("L_REG_14", "Pihlen");
+define("L_REG_15", "Pihlsit");
+define("L_REG_16", "Zmnit");
+define("L_REG_17", "Vae informace byly spn zmnny.");
+define("L_REG_18", "Byl jste vyhozen z mstnosti modertorem.");
+define("L_REG_19", "Opravdu chcete bt zruen?");
+define("L_REG_20", "Ano");
+define("L_REG_21", "Byl jste spn zruen.");
+define("L_REG_22", "Ne");
+define("L_REG_25", "Zavt");
+define("L_REG_30", "kestn jmno");
+define("L_REG_31", "pjmen");
+define("L_REG_32", "WEB");
+define("L_REG_33", "zobrazovn e-mailu pkazem /whois");
+define("L_REG_34", "Upraven uiv. daj");
+define("L_REG_35", "Administrace");
+define("L_REG_36", "ovldan jazyky");
+define("L_REG_37", "Polka oznaen <span class=\"error\">*</span> musej bt vyplnny.");
+define("L_REG_39", "Mstnost ve kter jste byl, byla odstranna administrtorem.");
+define("L_REG_45", "pohlav");
+define("L_REG_46", "musk");
+define("L_REG_47", "ensk");
+
+// e-mail validation stuff
+define("L_EMAIL_VAL_1", "Vae nastaven pro pstup do chatu");
+define("L_EMAIL_VAL_2", "Vtejte na naem chatu.");
+define("L_EMAIL_VAL_Err", "Intern chyba, prosm kontaktujte administrtora: <a href=\"mailto:%s\">%s</a>.");
+define("L_EMAIL_VAL_Done", "Vae heslo bylo poslno na v e-mail.");
+
+// admin stuff
+define("L_ADM_1", "%s u nen modertorem tto mstnosti.");
+define("L_ADM_2", "Nejste u registrovan uivatel.");
+
+//error messages
+define("L_ERR_USR_1", "Toto uivatelsk jmno je u pouito. Prosm zvolte si jin.");
+define("L_ERR_USR_2", "Muste si vybrat uivatelsk jmno.");
+define("L_ERR_USR_3", "Toto uivatelsk jmno je registrovno. Prosm napite heslo nebo si zvolte jin.");
+define("L_ERR_USR_4", "Zadal jste patn heslo.");
+define("L_ERR_USR_5", "Muste zadat uivatelsk jmno.");
+define("L_ERR_USR_6", "Muste zadat heslo.");
+define("L_ERR_USR_7", "Muste zadat v e-mail.");
+define("L_ERR_USR_8", "Muste napsat korektn e-mailovou adresu.");
+define("L_ERR_USR_9", "Toto uivatelsk jmno je u obsazeno.");
+define("L_ERR_USR_10", "patn jmno nebo heslo.");
+define("L_ERR_USR_11", "Muste bt administrtor.");
+define("L_ERR_USR_12", "Jste administrtor a tm pdem nemete bt zruen.");
+define("L_ERR_USR_13", "K vytvoen vlastn mstnosti muste bt registrovan.");
+define("L_ERR_USR_14", "Ped vstupem se muste registrovat.");
+define("L_ERR_USR_15", "Muste zadat vae cel jmno.");
+define("L_ERR_USR_16", "Uivatelsk jmno nesm obsahovat mezeru, rku nebo zptn lomtko (\\).");
+define("L_ERR_USR_17", "Tato mstnost neexistuje a nemte prva na vytvoen mstnosti.");
+define("L_ERR_USR_18", "Vae uivatelsk jmno obsahuje zakzan slova.");
+define("L_ERR_USR_19", "Nemete bt ve vce jak v jedn mstnosti najednou.");
+define("L_ERR_USR_20", "Byl vm zakzn pstup do tto mstnosti nebo do chatu.");
+define("L_ERR_ROM_1", "Jmno mstnosti nesm obsahovat rku a zptn lomtko (\\).");
+define("L_ERR_ROM_2", "Zakzan slova byla nalezena v jmnu mstnosti, kterou chcete vytvoit.");
+define("L_ERR_ROM_3", "Tato mstnost u existuje jako veejn.");
+define("L_ERR_ROM_4", "patn jmno mstnosti.");
+
+// users frame or popup
+define("L_EXIT", "Odejt");
+define("L_DETACH", "Odlepit");
+define("L_EXPCOL_ALL", "Rozbalit/Zabalit ve");
+define("L_CONN_STATE", "Stav pipojen");
+define("L_CHAT", "Chat");
+define("L_USER", "uivatel");
+define("L_USERS", "uivatel");
+define("L_NO_USER", "dn uivatel");
+define("L_ROOM", "mstnost");
+define("L_ROOMS", "mstnosti");
+define("L_EXPCOL", "Rozbalit/Zabalit mstnost");
+define("L_BEEP", "Ppat/neppat pi pchodu uivatele");
+define("L_PROFILE", "Zobrazit profil");
+define("L_NO_PROFILE", "dn profil");
+
+// input frame
+define("L_HLP", "Npovda");
+define("L_BAD_CMD", "Toto nen platn pkaz !");
+define("L_ADMIN", "%s je u administrtor !");
+define("L_IS_MODERATOR", "%s je u modertor !");
+define("L_NO_MODERATOR", "Tento pkaz me pout jen modertor tto mstnosti.");
+define("L_MODERATOR", "%s je nyn modertorem tto mstnosti.");
+define("L_NONEXIST_USER", "Uivatel %s nen v aktuln mstnosti.");
+define("L_NONREG_USER", "Uivatel %s nen registrovn.");
+define("L_NONREG_USER_IP", "Jeho IP je: %s.");
+define("L_NO_KICKED", "Uivatel %s je modertor nebo administrtor a neme bt vyhozen.");
+define("L_KICKED", "Uivatel %s byl spn vykopnut.");
+define("L_NO_BANISHED", "Uivatel %s je modertor nebo administrtor a neme mu bt zakzn pstup.");
+define("L_BANISHED", "Uivateli %s byl spn zakzn pstup.");
+define("L_SVR_TIME", "as serveru: ");
+define("L_NO_SAVE", "dn zprva k uloen!");
+define("L_NO_ADMIN", "Tento pkaz me pout jen administrtor.");
+define("L_ANNOUNCE", "OZNMEN");
+define("L_INVITE", "%s vm doporuuje pejt do mstnosti <a href=\"#\" onClick=\"window.parent.runCmd('%s','%s')\">%s</a>.");
+define("L_INVITE_REG", " Muste bt registrovan uivatel, pokud chcete vstoupit do tto mstnosti.");
+define("L_INVITE_DONE", "Vae vzva byla odeslna uivateli %s.");
+define("L_OK", "Odeslat");
+
+// help popup
+define("L_HELP_TIT_1", "Smilies");
+define("L_HELP_TIT_2", "Formtovn textu zprv");
+define("L_HELP_FMT_1", "Text ve zprvch me bt tun, sklonn nebo podtren ohranienm pslun sti textu s &lt;B&gt; &lt;/B&gt;, &lt;I&gt; &lt;/I&gt; nebo &lt;U&gt; &lt;/U&gt; tagy.<BR>Napklad, &lt;B&gt;tento text&lt;/B&gt; vytvo <B>tento text</B>.");
+define("L_HELP_FMT_2", "Na vytvoen odkazu (e-mail nebo URL) ve vaich zprvch, napite jednodue adresu bez jakhokoli tagu. Odkaz bude vytvoen automaticky.");
+define("L_HELP_TIT_3", "Pkazy");
+define("L_HELP_USR", "uivatel");
+define("L_HELP_MSG", "zprvy");
+define("L_HELP_ROOM", "mstnost");
+define("L_HELP_CMD_0", "{} je pro potebn parametr, [] pro voliteln");
+define("L_HELP_CMD_1", "Nastav poet zobrazovanch zprv, minimln 5.");
+define("L_HELP_CMD_1a", "Nastav poet zobrazovanch zprv, minimln a implicitn 5.");
+define("L_HELP_CMD_1b", "Obnov okno se zprvami a zobraz poslednch n zprv, minimln a implicitn 5.");
+define("L_HELP_CMD_2a", "Zmn rychlost obnovy zprv (v sekundch).<BR>Jestlie n nen zadno nebo je men ne 3, mn mezi zobrazovnm bez obnovy a obnovovnm po 10 sekundch.");
+define("L_HELP_CMD_2b", "Zmn rychlost obnovy zprv a seznamu uivatel (v sekundch).<BR>Jestlie n nen zadno nebo je men ne 3, mn mezi zobrazovnm bez obnovy a obnovovnm po 10 sekundch.");
+define("L_HELP_CMD_3", "Zmn poad zprv.");
+define("L_HELP_CMD_4", "Pemst uivatele do jin mstnosti, pokud neexistuje, tak ji vytvo.<BR>n rovno 0 pro soukromou a 1 pro veejnou, implicitn 1 pokud nen n zadno.");
+define("L_HELP_CMD_5", "Odejde z chatu po vypsn voliteln zprvy.");
+define("L_HELP_CMD_6", "Pestane zobrazovat zprvy uivatele, pokud je napsna pezdvka.<BR>Pokud je napsna pezdvka a za n pomlka, pak jsou uivateli zprvy zase zobrazovan. Pokud je zadna jen pomlka, jsou vichni ignorovan uivatel znovu vnmani.<BR>Tento pkaz bez dnch parametr oteve nov okno se seznamem ignorovanch uivatel.");
+define("L_HELP_CMD_7", "Znovu vlo pedchoz napsan pkaz nebo zprvu.");
+define("L_HELP_CMD_8", "Zobrazovat/schovat as ped zprvami.");
+define("L_HELP_CMD_9", "Vyhod uivatele z chatu. Tento pkaz me pouvat jen modertor.");
+define("L_HELP_CMD_10", "Pole soukromou zprvu specifikovanmu uivateli (ostatn uivatel ji neuvid).");
+define("L_HELP_CMD_11", "Uke informace o specifikovanm uivateli.");
+define("L_HELP_CMD_12", "Zobraz okno na pravu uivatelskch daj.");
+define("L_HELP_CMD_13", "Pepn mezi zobrazovnm pchod a odchod uivatel, a nezobrazovnm.");
+define("L_HELP_CMD_14", "Umon administrtorovi nebo modertorm aktuln mstnosti dt zvolenmu registrovanmu uivateli prva moderovn stejn mstnost.");
+define("L_HELP_CMD_15", "Vyprzn okno se zprvami a zobraz jen poslednch 5 zprv.");
+define("L_HELP_CMD_16", "Ulo poslednch n zprv (oznamovac zprvy jsou vynechny) do souboru HTML. Pokud nen n specifikovno, pak se ulo vechny dostupn zprvy.");
+define("L_HELP_CMD_17", "Umon administrtorovi poslat oznmen vem uivatelm nehled na jejich chatovn v jinch mstnostech.");
+define("L_HELP_CMD_18", "Doporu uivateli chatujcmu v jin mstnosti, aby se pesunul do va.");
+define("L_HELP_CMD_19", "Umon modertorovi mstnosti nebo administrtorovi zakzat uivateli pstup do mstnosti po administrtorem zvolenou dobu.<BR>Administrtor me zakzat uivateli pstup ikdy se uivatel zrovna nachz v jin mstnosti. Pouitm '<B>&nbsp;*&nbsp;</B>' se pstup uivateli zake navdy.");
+define("L_HELP_CMD_20", "Vystihne co prv dlte (nap. /me jde na obd).");
+
+//message frame
+define("L_NO_MSG", "dn zprvy");
+define("L_TODAY_DWN", "Zprvy, kter byly odeslny dnes zanaj dole");
+define("L_TODAY_UP", "Zprvy, kter byly odeslny dnes zanaj nahoe");
+
+// message colors
+$TextColors = array(	"ern" => "#000000",
+				"erven" => "#FF0000",
+				"Zelen" => "#009900",
+				"Modr" => "#0000FF",
+				"Fialov" => "#9900FF",
+				"Tmav erven" => "#990000",
+				"Tmav zelen" => "#006600",
+				"Tmav modr" => "#000099",
+				"Hnd" => "#996633",
+				"Mosk modr" => "#006699",
+				"Karotka" => "#FF6600");
+
+//ignored popup
+define("L_IGNOR_TIT", "Ignorovni");
+define("L_IGNOR_NON", "dn ignorovan uivatel");
+
+// whois popup
+define("L_WHOIS_ADMIN", "Administrtor");
+define("L_WHOIS_MODER", "Modertor");
+define("L_WHOIS_USER", "Uivatel");
+
+// Notification messages of user entrance/exit
+define("L_ENTER_ROM", "%s piel do mstnosti");
+define("L_EXIT_ROM", "%s odeel z mstnosti");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/czech/localized.tutorial.php 0.15.0/chat/localization/czech/localized.tutorial.php
--- 0.14.5/chat/localization/czech/localized.tutorial.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/czech/localized.tutorial.php	2004-04-01 03:07:14.000000000 -0600
@@ -0,0 +1,767 @@
+<?php
+// File : czech.tutorial.php
+// Translation by Martin Dvorak <jezek2@penguin.cz>
+
+// Get the names and values for vars sent by the script that called this one
+if (isset($HTTP_GET_VARS))
+{
+	while(list($name,$value) = each($HTTP_GET_VARS))
+	{
+		$$name = $value;
+	};
+};
+?>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+
+<HEAD>
+<TITLE>esk nvod pro <?php echo(APP_NAME." - ".APP_VERSION); ?></TITLE>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-2">
+<STYLE>
+A.topLink
+{
+	text-decoration: underline;
+	color: #0000C0;
+}
+
+A.topLink:hover, A.topLink:active
+{
+	color: #FF9900;
+	text-decoration: none;
+	font-weight: 800;
+}
+
+.redText
+{
+	font-weight: 800;
+	color: #FF0000;
+}
+</STYLE>
+</HEAD>
+
+<BODY BGCOLOR="#CCCCFF">
+<P><A NAME="top"></P>
+<TABLE BORDER="5" CELLPADDING="5">
+<TR>
+	<TD><FONT SIZE="+2">Obsah nvodu</FONT></TD>
+</TR>
+</TABLE><BR>
+
+<P CLASS="redText">
+Varovn: Uivatel Netscape by mli nastavit jejich e jako implicitn, jinak
+kad nrodn znak bude ve zprvch zobrazen jako '?'.<BR>
+Proto zvolte: View/CharacterSet/your language Auto-Detect, pak
+View/CharacterSet/SetDefault.
+</P>
+
+<?php
+if (C_MULTI_LANG == "1") 
+{
+	?>
+	<A HREF="#language" CLASS="topLink">Vbr jazyka</A><BR>
+	<?php
+}
+?>
+<A HREF="#login" CLASS="topLink">Pihlen do chatu</A><BR>
+<A HREF="#register" CLASS="topLink">Registrovn</A><BR>
+<A HREF="#modProfile" CLASS="topLink">Upravovn<?php if (C_SHOW_DEL_PROF == "1") echo("/smazn"); ?> vaeho profilu</A><BR>
+<?php
+if (C_VERSION == "2") 
+{
+	?>
+	<A HREF="#create_room" CLASS="topLink">Vytven mstnosti</A><BR>
+	<?php
+};
+if ($Ver == "H") 
+{
+	?>
+	<A HREF="#connection_state" CLASS="topLink">Pochopen stavu pipojen</A><BR>
+	<?php
+};
+?>
+<A HREF="#sending" CLASS="topLink">Posln zprvy</A><BR>
+<A HREF="#users_list" CLASS="topLink">Pochopen seznamu uivatel</A><BR>
+<A HREF="#exit" CLASS="topLink">Odchod z chatovac mstnosti</A><BR>
+<A HREF="#users_popup" CLASS="topLink">Informace, kdo prv chatuje bez pihlen</A><BR>
+<P>
+<A HREF="#customize" CLASS="topLink">praven zobrazen zprv v chatu</A><BR>
+<P>
+<A HREF="#commands" CLASS="topLink">Pednosti a pkazy:</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#help" CLASS="topLink">Pkaz help</A><BR>
+<?php
+if (C_USE_SMILIES == "1")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#smilies" CLASS="topLink">Grafick smilies</A><BR>
+	<?php
+};
+if (C_HTML_TAGS_KEEP != "none")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#text" CLASS="topLink">Formtovn textu</A><BR>
+	<?php
+};
+?>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#invite" CLASS="topLink">Doporuen uivateli, aby peel do va mstnosti</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#changeroom" CLASS="topLink">Pesunut z jedn mstnosti do druh</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#private" CLASS="topLink">Soukrom zprvy</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#actions" CLASS="topLink">Akce</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#ignore" CLASS="topLink">Ignorovn ostatnch uivatel</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#whois" CLASS="topLink">Zjitn veejnch informac o ostatnch uivatelech</A><BR>
+<?php
+if (C_SAVE != "0")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#save" CLASS="topLink">Ukldn zprv</A><BR>
+	<?php
+};
+?>
+<P>
+<A HREF="#moderator" CLASS="topLink">Speciln pkazy pro modertory a/nebo administrtora:</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#announce" CLASS="topLink">Posln oznmen</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#kick" CLASS="topLink">Vykopnut uivatele</A><BR>
+<?php
+if (C_BANISH != "0")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#banish" CLASS="topLink">Zakzn pstupu uivatelm</A><BR>
+	<?php
+};
+?>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#promote" CLASS="topLink">Poven obyejnho uivatele na modertora</A><BR>
+<P>
+<HR>
+<HR>
+
+
+<?php
+if (C_MULTI_LANG == "1") 
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="language"><B>Vbr jazyka:</B></A></FONT>
+	<P>
+	Mete si zvolit libovoln jazyk, do kterho je <?php echo(APP_NAME); ?>
+	peloen, kliknutm na jednu z vlajek na prvn strnce. Napklad v tomto
+	pklad si uivatel vybr Francoutinu:
+
+	<P ALIGN="center">
+	<IMG SRC="images/tutorials/flags.gif" HEIGHT="44" WIDTH="424" ALT="Vlajky pro vbr jazyka">
+	<BR><P ALIGN="right"><A HREF="#top">Zpt nahoru</A></P>
+	<HR>
+	<?php
+}
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="login"><B>Pihlen:</B></A></FONT>
+<P>
+Pokud jste se u registrovali, pak jednodue vyplte vae uivatelsk jmno
+a heslo. Pot si vyberte do kter mstnosti chcete vstoupit a stisknte
+tlatko Chat.<BR>
+
+<?php
+if (C_REQUIRE_REGISTER == "1")
+{
+	?>
+	<P>
+	Jinak se muste ped vchodem do chatu <A HREF="#register">zaregistrovat</A>.
+	<?php
+}
+else
+{
+	?>
+	<P>
+	Jinak se muste ped vchodem do chatu <A HREF="#register">zaregistrovat</A>
+	nebo jednodue vyplnit jen uivatelsk jmno, ale vae pezdvka nebude
+	rezervovna (jin uivatel me pout vai pezdvku a se odhlste).
+
+	<?php
+}
+?>
+<BR><P ALIGN="right"><A HREF="#top">Zpt nahoru</A></P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="register"><B>Pro zaregistrovn:</B></A></FONT> 
+<P>
+Pokud jste se jet nezaregistrovali
+<?php if (C_REQUIRE_REGISTER == "0") echo("a chcete to udlat"); ?>, vyberte
+odkaz z hlavn strany pro registraci, pot se objev mal okno.
+
+<P>	
+<UL>
+	<LI>Prvn, napite vae uiv. jmno<?php if (!C_EMAIL_PASWD) echo(" a heslo"); ?>
+	napsnm do pslunch
+	poloek. Uiv. jmno, kter si zvolte, bude automaticky zobrazovno
+	v chatovac mstnosti. Neme obsahovat mezery, rky nebo zptn lomtka (\).
+<?php if (C_NO_SWEAR == "1") echo(" Tak neme obsahovat \"patn slova\"."); ?>
+
+	<LI>Za druh, prosm vyplte vae cel jmno a vai e-mailovou adresu.
+	Pro spn zaregistrovn do chatu muste vechny tyto informace vyplnit. 
+	Vbr pohlav mete vynechat.
+
+	<LI>Pokud mte domovskou strnku, pak mete vyplnit jej adresu.
+
+	<LI>Polko 'ovldan jazyky' me pomoci ostatnm uivatelm v budoucch
+	diskuzch: budou vdt, ktermi jazyky umte.
+
+	<LI>Posledn, pokud chcete povolit zobrazovn va e-mailov adresy
+	ostatnm uiavtelm chatu, zakrtnete polko "zobrazovn e-mailu
+	pkazem /whois". Pokud nechcete nechat vai e-mailovou adresu zobrazovat,
+	pak nechte polko nezakrtl.
+
+	<LI>Pot stistknte tlatko 'Registrovat' a v "et" bude vytvoen.
+	Pokud chcete kdykoli pestat, tak jednodue stisknte tlatko 'Zavt'.
+</UL>
+<P>
+<A NAME="modProfile"></A>Registrovn uivatel mohou samozejm
+upravit<?php if (C_SHOW_DEL_PROF == "1") echo("/smazat"); ?> jejich profil
+kliknutm na pslun<?php echo((C_SHOW_DEL_PROF == "0" ? " odkaz" : " odkazy")); ?>.<BR>
+<BR><P ALIGN="right"><A HREF="#top">Zpt nahoru</A></P>
+<P>
+<HR>
+
+<?php
+if (C_VERSION == "2") 
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="create_room"><B>Pro vytvoen mstnosti:</B></A></FONT> 
+	<P>
+	Registrovan uivatel mohou vytvet mstnosti. Soukrom mstnosti mohou
+	pout vichni uivatel, kter znaj jej jmno. Tyto mstnosti nebudou
+	zobrazeny dnm uivatelm, krom tch, kte jsou v t mstnosti.<BR>
+	
+	<P>
+	Jmno mstnosti neme obsahovat rky ani zptn lomtka (\).
+	<?php if (C_NO_SWEAR == "1") echo(" Tak neme obsahovat \"patn slova\"."); ?>
+	<BR><P ALIGN="right"><A HREF="#top">Zpt nahoru</A></P>
+	<P>
+	<HR>
+	<?php
+};
+if ($Ver == "H")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="connection_state"><B>Pochopen stavu pipojen:</B></A></FONT> 
+	<P>
+	V pravm hornm rohu je zobrazena mal znaka reprezentujc aktuln stav
+	pipojen k serveru. Me mt tyto ti podoby:
+	<P>	
+	<UL>
+		<LI><IMG SRC="images/connectOff.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="No connection"> kdy nen dn poteba pipojen k serveru ;
+		<LI><IMG SRC="images/connectOn.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Connecting"> kdy je zrovna chat pipojen k serveru ;
+		<LI><IMG SRC="images/connectError.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Connection failed"> kdy pipojen k serveru selhalo.
+	</UL>
+	<P>
+	V tetm ppad, kliknutm na erven "tlatko" znovu obnov spojen se serverem.
+	<BR><P ALIGN="right"><A HREF="#top">Zpt nahoru</A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="sending"><B>Posln zprv:</B></A></FONT> 
+<P>
+Pro posln zprvy napite jej obsah do kolonky umstn v levm dolnm
+rohu a pak stisknte klvesu Enter pro posln. Zprvy od vech uivatel
+se zobrazuj v hlavnm chatovacm rmci.<BR>
+
+<?php if (C_NO_SWEAR == "1") echo("Pozn.: Vechny \"patn slova\" jsou ze zprvy vymazny."); ?>
+<P>
+Mete zmnit barvu textu vaich zprv vybrnm nov barvy vpravo od kolonky
+pro psan zprv.
+
+<BR><P ALIGN="right"><A HREF="#top">Zpt nahoru</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="users_list"><B>Pochopen seznamu uivatel (ne vak samostatnho odlepenho okna se seznamem uivatel):</B></A></FONT> 
+<P>
+<OL>
+	Byly definovny dv jednoduch pravidla pro seznam uivatel:<BR>
+	<LI>ped jmnem registrovanho uivatele je mal ikona, kter znzoruje
+		jeho pohlav (kliknutm na n se oteve <A HREF="#whois">okno s informacemi
+		o uivateli</A> pro tohoto uivatele), piem neregistrovan uivatel
+		nemaj ped svm jmnem nic;<BR>
+	<LI>jmno uivatele, kter je administrtorem chatu nebo modertorem je zobrazeno kurzvou.
+</OL>
+<P><I>Nap.:</I>, z dolnho vezu mete zjistit, e:
+<TABLE BORDER=0 CELLSPACING=10>
+<TR>
+	<TD>
+		<IMG SRC="images/tutorials/usersList.gif" WIDTH=128 HEIGHT=145 BORDER=0 ALT="seznam uivatel">
+	</TD>
+	<TD>
+	<UL>
+		<LI>Nicolas je administrtor nebo jeden z modertor mstnosti;<BR><BR>
+		<LI>alien (jeho pohlav je neznm), Jezek2 a Caridad jsou registrovan
+			uivatel bez dnch extra pravomoc v mstnosti;<BR><BR>
+		<LI>lolo je neregistrovan uivatel.
+	</UL>
+	</TD>
+</TR>
+</TABLE>
+<BR><P ALIGN="right"><A HREF="#top">Zpt nahoru</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="exit"><B>Odchzen z mstnosti:</B></A></FONT>
+<P>
+Pro odchod z chatu jednodue kliknte na odkaz 'Odejt'. Alternativn
+mete pout jeden z tchto pkaz:<BR>
+
+/exit<BR>
+/bye<BR>
+/quit
+
+Tyto pkazy mohou bt doplent zprvou, kter se odele tsn ped odchodem
+z chatu.
+<I>Nap.:</I> /quit CU soon!
+<P>
+pole zprvu "CU soon!" do chatu a pak vs z nj odhls.
+
+<BR><P ALIGN="right"><A HREF="#top">Zpt nahoru</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="users_popup"><B>Informace, kdo prv chatuje bez pihlen:</B></A></FONT> 
+<P>
+Mete kliknout na odkaz na hlavn strnce, kter ukazuje poet prv
+chatujcch uivatel, nebo pokud prv chatujete, kliknutm na obrzek
+<IMG SRC="images/popup.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Odlepit seznam uivatel">
+v pravm hornm rohu. Pot se oteve mal nezvisl oknko, kter ukazuje
+seznam chatujcch uivatel a mstnosti ve kterch jsou.<BR>
+
+Titulek okna obsahuje jmna uivatel pokud je jich mn ne ti, jinak
+obsahuje poet uivatel a oteven mstnosti.
+
+<P>
+Kliknutm na obrzek
+<IMG SRC="images/sound.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Ppn">
+v horn sti tohoto oknka povol/zake ppn, kdy vejde njak uivatel.
+
+<BR><P ALIGN="right"><A HREF="#top">Zpt nahoru</A></P>
+<P>
+<HR>
+<HR>
+
+
+<P>
+<FONT SIZE="+1"><A NAME="customize"><B>praven zobrazen zprv v chatu:</B></A></FONT>
+<P>
+Je zde mnoho rznch monost jak upravit vzhled chatu. Pro zmnu nastaven
+jednodue napite pslun pkaz do kolonky pro psan zprv a nslednm
+stisknutm klvesy Enter zmnu aktivujte.
+<P>
+<UL>
+	<?php
+	if ($Ver == "H")
+	{
+		?>
+		<LI>Pkaz <B>Clear</B> umon vyistit vpis zprv a zobraz jen
+		poslednch 5 zprv.<BR>
+		Napite "/clear" bez uvozovek.
+		<P>
+		<?php
+	}
+	else
+	{
+		?>
+		<LI>Pkaz <B>Order</B> vm umouje pepnan smru pidvn novch
+		zprv mezi psanm novch zprv nahoru nebo dolu.<BR>
+		Napite "/order" bez uvozovek.
+		<P>
+		<?php
+	};
+	?>
+	<LI>Pkaz <B>Notify</B> umouje pepnat mezi zapnutm a vypnutm
+	zobrazovn upozornn, kdy njak jin uivatel vejde nebo odejde
+	do/z mstnosti. Implicitn je tato volba <?php echo(C_NOTIFY ? "zapnuta" : "vypnuta"); ?>
+	a upozornn <?php echo(C_NOTIFY ? "budou" : "nebudou"); ?> zobrazovna.<BR>
+	Napite "/notify" bez uvozovek.
+	
+	<P>
+	<LI>Pkaz <B>Timestamp</B> umouje pepnat mezi zapnutm a vypnutm
+	zobrazovn asu napsn zprv ped textem zprv a zobrazovn asu
+	serveru ve spodn lit. Implicitn je tato volba
+	<?php echo(C_SHOW_TIMESTAMP ? "zapnuta" : "vypnuta"); ?>.<BR>
+	Napite "/timestamp" bez uvozovek.
+	<P>
+	<LI>Pkaz <B>Refresh</B> umouje nastavit rychlost obnovy zprv
+	v hlavnm rmu. Implicitn rychlost je <?php echo(C_MSG_REFRESH); ?>
+	vtein. Pro zmnu rychlosti napite "/refresh n" bez uvozovek, kde n
+	je as v sekundch nov rychlosti obnovovn.
+	<P>
+	<I>Nap.:</I> /refresh 5
+	<P>
+	zmn rychlost obnovy zprv na 5 vtein. *Pozor, pokud je n nastaveno
+	na mn ne ti, pak se nebudou zprvy vbec obnovovat (uiten kdy
+	si chcete pest mnoho starch zprv a nechcete bt otravovni)!*
+	<P>
+	<?php
+	if ($Ver == "L")
+	{
+		?>
+		<LI>Pkaz <B>Show</B> umouje nastavit poet zobrazovanch zprv.
+		Pro zmnu implicitnho potu, napite "/show n" bez uvozovek, kde n
+		je nov poet zobrazovanch zprv.
+		<P>
+		<I>Nap.:</I> /show 50
+		<P>
+		zpstupn viditelnost na 50 nejnovjch zprv na vai obrazovce.
+		Pokud nemohou bt vechny zprvy zobrazeny najednou, tak se vpravo
+		od rmce se zprvami objev "posuvnk" (scrollbar).</UL>
+		<?php
+	}
+	else
+	{
+		?>
+		<LI>Pkazy <B>Show a Last</B> umouj vyistit obrazovku
+		a zobrazit poslednch <I>n</I> zprv. Napite "/show n" nebo "/last n"
+		bez uvozovek, kde n je poet zobrazovanch zprv.
+		<P>
+		<I>Nap.:</I> /show 50 nebo /last 50
+		<P>
+		vyist rmec se zprvami a ponech v nm poslednch 50 zprv. Pokud
+		nemohou bt vechny zprvy zobrazeny najednou, tak se vpravo
+		od rmce se zprvami objev "posuvnk" (scrollbar).</UL>
+		<?php
+	};
+	?>
+	<BR><P ALIGN="right"><A HREF="#top">Zpt nahoru</A></P>
+	<P>
+</UL>
+<HR>
+<HR>
+
+
+<P>
+<FONT SIZE="+2"><A NAME="commands"><B><U>Pednosti a pkazy</U></B></A></FONT> 
+<P>
+
+<FONT SIZE="+1"><A NAME="help"><B>Pkaz Help:</B></A></FONT>
+<P>
+Jakmile jste uvnit chatovac mstnosti, mete si otevt oknko s npovedou
+kliknutm na tuto <IMG SRC="images/helpOff.gif" WIDTH=15 HEIGHT=15 BORDER=0 ALT="?">
+ikonu, kter je umstna tsn ped kolonkou na psan zprv. Tak mete
+pout pkazy <B>"/help" nebo "/?"</B>.
+<BR><P ALIGN="right"><A HREF="#top">Zpt nahoru</A></P>
+<P>
+<P>
+<HR>
+
+<?php
+if (C_USE_SMILIES == "1")
+{
+	include("./lib/smilies.lib.php");
+	$Nb = count($SmiliesTbl);
+	$ResultTbl = Array();
+	DisplaySmilies($ResultTbl,$SmiliesTbl,$Nb,"tutorial");
+	unset($SmiliesTbl);
+	?>
+	<FONT SIZE="+1"><A NAME="smilies"><B>Smilies:</B></A></FONT>
+	<P>Ve svch zprvch mete pouvat grafick smilies. Podvejte se na
+	nsledujc kd, kter muste vloit do zprvy, aby jste ve vsledku
+	dostali grafick smilie.
+	<P ALIGN="center">
+	<TABLE BORDER=0 CELLPADDING=3 CELLSPACING=5>
+	<?php
+	$i = "0";
+	$Nb = count($ResultTbl);
+	while($i < $Nb)
+	{
+		if ($i > 0) echo("\t");
+		echo("<TR VALIGN=\"BOTTOM\">\n");
+		echo("$ResultTbl[$i]");
+		echo("\t</TR>\n\t<TR>\n");
+		$i++;
+		echo("$ResultTbl[$i]");
+		echo("\t</TR>\n");
+		$i++;
+	};
+	unset($ResultTbl);
+	?>
+	</TABLE>
+	<P>
+	<I>Nap.:</I> poslnm textu "Hi Jack :)" bez uvozovek zobraz zprvu
+	Hi Jack <IMG SRC="images/smilies/smile1.gif" WIDTH=15 HEIGHT=15 ALT=":)">
+	v hlavnm rmci.
+	<BR><P ALIGN="right"><A HREF="#top">Zpt nahoru</A></P>
+	<P>
+	<HR>
+	<?php
+}
+
+if (C_HTML_TAGS_KEEP != "none")
+{
+	?>
+	<FONT SIZE="+1"><A NAME="text"><B>Formtovn textu:</B></A></FONT>
+	<P>
+	Text ve zprvch me bt tun, sklonn nebo podtren ohranienm pslun
+	sti textu s &lt;B&gt; &lt;/B&gt;, &lt;I&gt; &lt;/I&gt; nebo &lt;U&gt; &lt;/U&gt; tagy.
+	
+	<P>
+	<I>Napklad</I>, &lt;B&gt;tento text&lt;/B&gt; vytvo <B>tento text</B>.
+	
+	<P>
+	Na vytvoen odkazu (e-mail nebo URL) ve vaich zprvch, napite jednodue
+	adresu bez jakhokoli tagu. Odkaz bude vytvoen automaticky.
+	<BR><P ALIGN="right"><A HREF="#top">Zpt nahoru</A></P>
+	<P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="invite"><B>Doporuen uivateli, aby peel do va mstnosti:</B></A></FONT>
+<P>
+Mete pout pkaz <B>invite</B> pro doporuen, aby zvolen uivatel peel
+do mstnosti ve kter se zrovna nachzte.
+<P>
+<I>Nap.:</I> /invite Jack 
+<P>
+pole soukromou zprvu uivateli Jack, kter mu doporuuje, aby navtvil
+mstnost ve kter se zrovna nachzte. Tato zprva obsahuje jmno clov
+mstnosti a toto jmno je zobrazeno jako odkaz.
+<P>
+Pozn.: Do pkazu mete zapsat i vce jmen najednou (nap. "/invite Jack,Helen,Alf"). Ovem musej bt oddleny rkou bez mezer.
+<BR><P ALIGN="right"><A HREF="#top">Zpt nahoru</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="changeroom"><B>Zmna mstnosti:</B></A></FONT>
+<P>
+Na obrazovce vpravo je umstn seznam chatovacch mstnost a uivatel,
+kte jsou prv v nich. Pro pechod do jin mstnosti jednodue kliknte
+na jmno zvolen mstnosti. Przdn mstnosti nejsou zobrazeny v tomto seznamu.
+Do nich se dostanete pomoc napsnm pkazu <B>"/join #jmnomstnosti"</B>
+bez uvozovek.
+<P>
+<I>Napklad:</I> /join #RedRoom 
+<P>
+vs pesune do mstnosti RedRoom.
+<?php
+if (C_VERSION == "2")
+{
+	echo(C_REQUIRE_REGISTER == "0" ? "<P>Pokud jste registrovan uivatel, m" : "<BR><P>M");
+	?>
+	ete
+ tak vytvet sv vlastn mstnosti s tmto stejnm pkazem, ale
+	muste pak specifikovat typ mstnosti: 0 je soukrom a 1 je pro veejn
+	(implicitn hodnota).
+	<P>
+	<I>Nap.:</I> /join 0 #MyRoom 
+	<P>
+	vytvo novou soukromou mstnost (s pedpokladem, e u takov veejn
+	mstnost nebyla vytvoena) s nzvem MyRoom a vy se do ni pesunete.
+	<P>
+	Jmno mstnosti neme obsahovat rky ani zptn lomtka (\).
+	<?php if (C_NO_SWEAR == "1") echo(" Tak neme obsahovat \"patn slova\"."); ?>
+	<?php
+}
+?>
+<BR><P ALIGN="right"><A HREF="#top">Zpt nahoru</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B>prava vlastnho profilu z chatu:</B></FONT>
+<P>
+Pkaz <B>Profile</B> oteve mal oknko ve kterm si mete upravit
+informace ve vaem profilu krom va pezdvky a hesla (pokud je chcete
+zmnit, pak pouijte odkaz z prvn strnky).<BR>Napite /profile
+<BR><P ALIGN="right"><A HREF="#top">Zpt nahoru</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B>Zptn vyvoln posledn zprvy nebo pkazy, kter jste napsali:</B></FONT>
+<P>
+Pkaz <B>!</B> znovu vyvol posledn zprvu nebo pkaz, kter jste odeslali.<BR>
+Napite /!
+<BR><P ALIGN="right"><A HREF="#top">Zpt nahoru</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B>Odpovdt specifickmu uivateli:</B></FONT>
+<P>
+Jednm kliknutm na jmn jinho uivatele ve stejn chatovac mstnosti
+ze seznamu uivatel na prav stran obrazovky se objev "username>"
+v kolonce pro psan zprv. Tato vlastnost vm umon jednodue poslat
+veejnou zprv uivateli jako odpov na nco co on nebo ona napsal(a)
+ped tm.
+<BR><P ALIGN="right"><A HREF="#top">Zpt nahoru</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="private"><B>Soukrom zprvy:</B></A></FONT>
+<P>
+Pro napsn soukrom zprvy jinmu uivateli ve stejn mstnosti, napite
+pkaz <B>"/msg username messagetext" nebo "/to username messagetext"</B>
+bez uvozovek.
+<P>
+<I>Nap.: kdy Jack je uiv. jmno:</I> /msg Jack Ahoj, jak se m?
+<P>
+Zprv se objev Jackovi a vm, ale u ne ostatnm uivatelm.
+<P>
+Pozn.: Kliknutm na jmno uivatele u zprvy v hlavnm okn automaticky
+pedvypln tento pkaz do kolonky pro psan zprv a pkaz.
+<BR><P ALIGN="right"><A HREF="#top">Zpt nahoru</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="actions"><B>Akce:</B></A></FONT>
+<P>
+Pokud chcete napsat co prv dlte, mete pout <B>pkaz "/me action"</B>
+bez uvozovek.
+<P>
+<I>Nap.:</I> Pokud Jack pole zprvu "/me kou cigaretu", bude zobrazena takto:
+"<B>* Jack</B> kou cigaretu".
+<BR><P ALIGN="right"><A HREF="#top">Zpt nahoru</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="ignore"><B>Ignorovn uivatel:</B></A></FONT>
+<P>
+Pro ignorovn vech zprv od jinho uivatele, napite pkaz <B>"/ignore jmno"</B>
+bez uvozovek.
+<P>
+<I>Nap.:</I> /ignore Jack
+<P>
+Od tto chvle se nebudou zobrazovat dn zprvy od Jacka.
+<P>
+Pokud se chcete podvat, kter vechny uivatele ignorujete, tak jednodue
+napite pkaz <B>"/ignore"</B> bez uvozovek. 
+<P>
+Pro obnoven zobrazovn zprv ignorovanho uivatele, napite pkaz
+<B>"/ignore - jmno"</B> bez uvozovek, kde "-" je pomlka. <P> 
+<P>
+<I>Nap.:</I> /ignore - Jack 
+<P>
+Nyn budou vechny zprvy, kter Jack nape a i kter u napsal, zobrazen
+na vai obrazovce. Pokud vynechte uiv. jmno za pomlkou, pak se v seznam
+ignorovanch uivatel vyprzdn.
+<P>
+Pozn.: Do pkazu mete zapsat i vce jmen najednou.
+(nap. "/ignore Jack,Helen,Alf" nebo "/ignore - Jack,Alf"). Ovem musej bt
+oddleny rkou bez mezer.
+<BR><P ALIGN="right"><A HREF="#top">Zpt nahoru</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="whois"><B>Zskvn informac o ostatnch uivatelch:</B></A></FONT>
+<P>
+Pro zskn veejnch informac o uivateli, napite pkaz
+<B>"/whois jmno"</B> bez uvozovek.
+<P>
+<I>Nap.:</I> /whois Jack
+<P>
+kde 'Jack' je uiv. jmno. Tento pkaz oteve mal nezvisl oknko ve kterm
+budou zobrazeny veejn dostupn informace o zadanm uivateli.
+<BR><P ALIGN="right"><A HREF="#top">Zpt nahoru</A></P>
+<P>
+<HR>
+
+<?php
+if (C_SAVE != "0")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="save"><B>Ukldn zprv:</B></A></FONT>
+	<P>
+	Pro exportovn zprv (systmov zprvy jsou vynechny) do loklnho
+	HTML souboru, napite pkaz <B>"/save n"</B> bez uvozovek.
+	<P>
+	<I>Nap.:</I> /save 5
+	<P>
+	kde '5' je poet zprv pro uloen. Pokud nen n udno, pak se ulo
+	vechny dostupn zprvy poslan do aktuln mstnosti.
+	<BR><P ALIGN="right"><A HREF="#top">Zpt nahoru</A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+<HR>
+
+
+<P>
+<FONT SIZE="+2"><A NAME="moderator"><B><U>Speciln pkazy pro modertory a/nebo administrtora:</U></B></A></FONT> 
+
+<P>
+<FONT SIZE="+1"><A NAME="announce"><B>Posln oznmen:</B></A></FONT>
+<P>
+Administrtor me poslat oznmen vem uivatelm nehled na to, ve kter
+mstnosti zrovna jsou pomoc pkazu <B>announce</B>.
+<P>
+<I>Nap.:</I> /announce Chat bude prozatimn vypnut dnes veer v 8 hodin pro drbu systmu.</I>
+<BR><P ALIGN="right"><A HREF="#top">Zpt nahoru</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="kick"><B>Vykopnut uivatele:</B></FONT>
+<P>
+Modertoi mohou vykopnout uivatele a administrtor me vykopnout uivatele
+i modertora pomoc pkazu <B>kick</B>. Modertor me vykopnout jen uivatele
+v t sam mstnosti ve kter prv je, administrtor me z libovoln.
+<P>
+<I>Napkad, pokud je Jack jmno uivatele, kterho chceme vykopnout:</I> /kick Jack</I>
+<BR><P ALIGN="right"><A HREF="#top">Zpt nahoru</A></P>
+<P>
+<HR>
+
+<?php
+if (C_BANISH != "0")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="banish"><B>Zakzn pstupu uivatelm:</B></A></FONT>
+	<P>
+	Modertoi mohou zakzat pstup uivatele do chatu a administrtor me
+	zakzat pstup uivateli nebo modertorovi pomoc pkazu <B>ban</B>.<BR>
+	Administrtor me zakzat pstup uivateli ikdy se zrovna nachz v jin
+	mstnosti. Tak me navdy zakzat uivateli pstup do chatu pomoc
+	pidn hvzdiky ped jmno.
+	<P>
+	<I>Nap.:</I>, pokud je Jack jmno uivatele, ktermu chceme zakzat pstup: <I>/ban Jack</I> nebo <I>/ban * Jack</I>
+	<BR><P ALIGN="right"><A HREF="#top">Zpt nahoru</A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="promote"><B>Poven obyejnho uivatele na modertora:</B></A></FONT>
+<P>
+Modertoi a administrtor mohou povit jinho uivatele na modertora
+mstnosti, ve kter jsou pomoc pkazu <B>promote</B>.
+<P>
+<I>Napklad</I>, pokud je Jack jmno uivatele, kterho chceme povit:<I> /promote Jack</I>
+<P>
+Jenom administrtor me udlat opanou vc (tj. udlat z modertora zpt
+normlnho uivatele) na speciln strnce k tomu vyhrazen. Nen k dispozici
+dn pkaz, kter by toto umonil.
+<BR><P ALIGN="right"><A HREF="#top">Zpt nahoru</A></P>
+<P>
+
+
+</BODY>
+</HTML>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/czech/regex.txt 0.15.0/chat/localization/czech/regex.txt
--- 0.14.5/chat/localization/czech/regex.txt	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/czech/regex.txt	2004-04-01 03:07:14.000000000 -0600
@@ -0,0 +1 @@
+cs|czech
\ No newline at end of file
Binary files 0.14.5/chat/localization/danish/flag.gif and 0.15.0/chat/localization/danish/flag.gif differ
diff -ruN 0.14.5/chat/localization/danish/localized.admin.php 0.15.0/chat/localization/danish/localized.admin.php
--- 0.14.5/chat/localization/danish/localized.admin.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/danish/localized.admin.php	2004-04-01 03:07:14.000000000 -0600
@@ -0,0 +1,61 @@
+<?php
+// File : danish.admin.php
+// Translation by Kenneth Kristiansen <kk@linuxfreak.adsl.dk>
+
+// extra header for charset
+$Charset = "iso-8859-1";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// Top frame
+define("A_MENU_0", "Administration for %s");
+define("A_MENU_1", "Registerede brugere");
+define("A_MENU_2", "Forviste brugere");
+define("A_MENU_3", "Tmme chatrummene");
+define("A_MENU_4", "Send mails");
+
+// Frame for registered users
+define("A_SHEET1_1", "Liste af registrede brugere og deres rettigheder");
+define("A_SHEET1_2", "Brugernavn");
+define("A_SHEET1_3", "Rettigheder");
+define("A_SHEET1_4", "Modererede rum");
+define("A_SHEET1_5", "Modererede rums er delt af et (,) uden mellemrum.");
+define("A_SHEET1_6", "Slet markerede profiler");
+define("A_SHEET1_7", "ndre");
+define("A_SHEET1_8", "Der er ingen registrerede brugere ud over dig selv.");
+define("A_SHEET1_9", "Forvise markerede profiler");
+define("A_SHEET1_10", "Nu skal du klikke p 'Forviste brugere' fanebladet for at opfriske dine ndringer.");
+define("A_SHEET1_11", "Sidst tilsluttet");
+define("A_USER", "Bruger");
+define("A_MODER", "Moderator");
+define("A_PAGE_CNT", "Side %s af %s");
+
+// Frame for banished users
+define("A_SHEET2_1", "Liste af forviste brugere og berrte chatrum");
+define("A_SHEET2_2", "IP");
+define("A_SHEET2_3", "Berrte chatrum");
+define("A_SHEET2_4", "Indtil");
+define("A_SHEET2_5", "For altid");
+define("A_SHEET2_6", "Rummene er adskilte af (,) uden mellemrum hvis der er mindre end 4, ellers '<b>&nbsp;*&nbsp;</b>' tegnet<br />forvist fra samtlige chatrum.");
+define("A_SHEET2_7", "Fjern forvist flaget fra markerede bruger(e)");
+define("A_SHEET2_8", "Der er ingen forviste brugere.");
+
+// Frame for cleaning rooms
+define("A_SHEET3_1", "Liste af eksisterende chatrum");
+define("A_SHEET3_2", "Tmning af et 'non-default' chatrum vil ogs fjerne alle moderatorer <br /> for dette rum.");
+define("A_SHEET3_3", "Tm markerede chatrums");
+define("A_SHEET3_4", "Der er ingen chatrum at tmme.");
+
+// Frame for sending mails
+define("A_SHEET4_0", "Du har ikke sat de ndvendige variabler i<BR>'chat/admin/mail4admin.php' scriptet.");
+define("A_SHEET4_1", "Send e-mails");
+define("A_SHEET4_2", "Til:");
+define("A_SHEET4_3", "Vlg alle");
+define("A_SHEET4_4", "Emne:");
+define("A_SHEET4_5", "Besked:");
+define("A_SHEET4_6", "Start forsendelse");
+define("A_SHEET4_7", "Alle e-mails er blevet sendt.");
+define("A_SHEET4_8", "Internal error while sending the mails.");
+define("A_SHEET4_9", "Adresse(r), emne eller beskeden mangler!");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/danish/localized.chat.php 0.15.0/chat/localization/danish/localized.chat.php
--- 0.14.5/chat/localization/danish/localized.chat.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/danish/localized.chat.php	2004-04-01 03:07:14.000000000 -0600
@@ -0,0 +1,222 @@
+<?php
+// File : danish.lang.php
+// Translation by Jonas Koch Bentzen <post@jonaskochbentzen.dk>
+// Finished by Kenneth Kristiansen <kk@linuxfreak.adsl.dk>
+
+// extra header for charset
+$Charset = "iso-8859-1";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// welcome page
+define("L_TUTORIAL", "Tutorial");
+
+define("L_WEL_1", "Beskederne slettes efter");
+define("L_WEL_2", "timer og brugernavnene efter");
+define("L_WEL_3", "minutter...");
+
+define("L_CUR_1", "Lige nu er der");
+define("L_CUR_2", "i chatten.");
+define("L_CUR_3", "Antal brugere lige nu i chatvrelserne");
+define("L_CUR_4", "Antal brugere i de private vrelser");
+
+define("L_SET_1", "Indtast venligst...");
+define("L_SET_2", "Dit brugernavn");
+define("L_SET_3", "Antal beskeder, der skal vises");
+define("L_SET_4", "Tidsrummet mellem hver opdatering");
+define("L_SET_5", "Vlg et chatvrelse...");
+define("L_SET_6", "standardvrelser");
+define("L_SET_7", "Vlg...");
+define("L_SET_8", "offentlige vrelser, der er oprettet af brugerne");
+define("L_SET_9", "opret dit eget");
+define("L_SET_10", "offentlige");
+define("L_SET_11", "private");
+define("L_SET_12", "vrelse");
+define("L_SET_13", "Og s er det bare om at...");
+define("L_SET_14", "chatte");
+
+define("L_SRC", "kan gratis hentes p");
+
+define("L_SECS", "sekunder");
+define("L_MIN", "minut");
+define("L_MINS", "minutter");
+
+// registration stuff:
+define("L_REG_1", "dit kodeord");
+define("L_REG_1r", "(kun nr du er registrede)");
+define("L_REG_2", "Konto vedligeholdelse");
+define("L_REG_3", "Registrer");
+define("L_REG_4", "Ret din profil");
+define("L_REG_5", "Slet bruger");
+define("L_REG_6", "Bruger registrering");
+define("L_REG_7", "Dit kodeord");
+define("L_REG_8", "Din e-mail");
+define("L_REG_9", "Du er nu registreret.");
+define("L_REG_10", "Tilbage");
+define("L_REG_11", "Retter");
+define("L_REG_12", "Modifisere bruger information");
+define("L_REG_13", "Sletter bruger");
+define("L_REG_14", "Login");
+define("L_REG_15", "Log In");
+define("L_REG_16", "Skift");
+define("L_REG_17", "Dine informationer er nu modifiseret.");
+define("L_REG_18", "Du er smidt ud af rummet af moderator.");
+define("L_REG_19", "nsker du virkelig at blive slettet ?");
+define("L_REG_20", "Ja");
+define("L_REG_21", "Du er nu blevet slettet.");
+define("L_REG_22", "Nej");
+define("L_REG_25", "Luk");
+define("L_REG_30", "Fornavn");
+define("L_REG_31", "Efternavn");
+define("L_REG_32", "WEB");
+define("L_REG_33", "Vis e-mail ved /whois kommando");
+define("L_REG_34", "Retter bruger profil");
+define("L_REG_35", "Administration");
+define("L_REG_36", "Talte sprog");
+define("L_REG_37", "Felter med en <span class=\"error\">*</span> skal udfyldes.");
+define("L_REG_39", "Rummet du var i er slettet af administratoren.");
+define("L_REG_45", "Kn");
+define("L_REG_46", "Mand");
+define("L_REG_47", "Kvinde");
+
+// e-mail validation stuff
+define("L_EMAIL_VAL_1", "Dine oplysninger til brug i chatten");
+define("L_EMAIL_VAL_2", "Velkommen til chatten.");
+define("L_EMAIL_VAL_Err", "Internt fejl, Venligst - kontakt administrator: <a href=\"mailto:%s\">%s</a>.");
+define("L_EMAIL_VAL_Done", "Dit password er sendt til din e-mail adresse.");
+
+// admin stuff
+define("L_ADM_1", "%s er ikke lngere moderator for dette rum.");
+define("L_ADM_2", "Du er ikke lngere en registreret bruger.");
+
+//error messages
+define("L_ERR_USR_1", "Det nskede brugernavn bruges af en anden. Vlg venligst et andet navn.");
+define("L_ERR_USR_2", "Du skal vlge et brugernavn.");
+define("L_ERR_USR_3", "Dette er navn er registreret. Indtast kodeord eller vlg et andet brugernavn.");
+define("L_ERR_USR_4", "Dit kodeord er forkert.");
+define("L_ERR_USR_5", "Indtast venligst dit brugernavn.");
+define("L_ERR_USR_6", "Indtast venligst dit kodeord.");
+define("L_ERR_USR_7", "Indtast venligst din e-mail adresse.");
+define("L_ERR_USR_8", "Du skal skrive en korrekt e-mail adresse.");
+define("L_ERR_USR_9", "Dette brugernavn er allerede brug.");
+define("L_ERR_USR_10", "Forkert brugernavn eller kodeord.");
+define("L_ERR_USR_11", "Du skal vre administrator.");
+define("L_ERR_USR_12", "Du er administrator, s du kan ikke fjernes.");
+define("L_ERR_USR_13", "For at oprette dit eget rum, skal du vre registreret her.");
+define("L_ERR_USR_14", "Du skal vre registreret for at kunne chatte.");
+define("L_ERR_USR_15", "Du skal indtaste dit fulde navn.");
+define("L_ERR_USR_16", "Brugernavn m ikke indeholde mellemrum, komma eller backslash (\\).");
+define("L_ERR_USR_17", "Dette rum eksistere ikke og du har ikke tilladelse til at oprette et.");
+define("L_ERR_USR_18", "Ikke tilladt ord i dit brugernavn.");
+define("L_ERR_USR_19", "Du kan ikke vre i mere end et rum ad gangen.");
+define("L_ERR_USR_20", "Du er blevet afvist af dette rum eller denne chat.");
+define("L_ERR_ROM_1", "Rummets navn kan ikke indeholde komma'er eller backslash (\\).");
+define("L_ERR_ROM_2", "Ikke tilladt ord fundet i rummet navn du forsger at oprette.");
+define("L_ERR_ROM_3", "Dette vrelse findes allerede som offentligt vrelse.");
+define("L_ERR_ROM_4", "Vrelsesnavnet er ugyldigt.");
+
+// users frame or popup
+define("L_EXIT", "Farvel");
+define("L_DETACH", "Lsriv");
+define("L_EXPCOL_ALL", "Udvid/sammentrk alle");
+define("L_CONN_STATE", "Tilslutningstilstand");
+define("L_CHAT", "Chat");
+define("L_USER", "bruger");
+define("L_USERS", "brugere");
+define("L_NO_USER", "Ingen bruger");
+define("L_ROOM", "vrelse");
+define("L_ROOMS", "vrelser");
+define("L_EXPCOL", "Udvid/sammentrk vrelset");
+define("L_BEEP", "Beep/ingen beep ved bruger ankomst");
+define("L_PROFILE", "Vis profil");
+define("L_NO_PROFILE", "Ingen profil");
+
+// input frame
+define("L_HLP", "Hjlp");
+define("L_BAD_CMD", "Kommandoen er ugyldig.");
+define("L_ADMIN", "%s er allerede administrator !");
+define("L_IS_MODERATOR", "%s er allerede moderator!");
+define("L_NO_MODERATOR", "Kun moderator af dette rum kan bruge denne kommando.");
+define("L_MODERATOR", "%s er nu moderator for dette rum.");
+define("L_NONEXIST_USER", "Bruger %s er ikke i dette rum.");
+define("L_NONREG_USER", "Bruger %s er ikke registreret.");
+define("L_NONREG_USER_IP", "Brugerens IP er: %s.");
+define("L_NO_KICKED", "Bruger %s er moderator eller administrator og kan derfor ikke kickes.");
+define("L_KICKED", "Bruger %s er nu blevet sparket ud.");
+define("L_NO_BANISHED", "Bruger %s er moderator eller administrator og kan derfor ikke afvises.");
+define("L_BANISHED", "Bruger %s er nu blevet afvist.");
+define("L_SVR_TIME", "Server tid: ");
+define("L_NO_SAVE", "Ingen beskeder at gemme!");
+define("L_NO_ADMIN", "Kun administrator kan bruge denne kommando.");
+define("L_ANNOUNCE", "Annonce");
+define("L_INVITE", "%s invitere dig til at tilslutte dig hos ham/hende i <a href=\"#\" onClick=\"window.parent.runCmd('%s','%s')\">%s</a> rummet.");
+define("L_INVITE_REG", " Du skal vre registreret for at komme ind her.");
+define("L_INVITE_DONE", "Din invitation er sendt til %s.");
+define("L_OK", "Send!");
+
+// help popup
+define("L_HELP_TIT_1", "Smiley'er");
+define("L_HELP_TIT_2", "Tekst formatering for beskeder");
+define("L_HELP_FMT_1", "Du kan skrive fed, kursiv eller understreget tekst i beskeder ved at bruge den respektive html kode for dette: &lt;B&gt; &lt;/B&gt;, &lt;I&gt; &lt;/I&gt; eller &lt;U&gt; &lt;/U&gt; tags.<BR>Feks., &lt;B&gt;denne tekst&lt;/B&gt; vil frembringe <B>denne tekst</B>.");
+define("L_HELP_FMT_2", "For at lave et hyperlink (for e-mail eller URL) i dine beskeder, s bare skriv den respektive adresse uden specielle tags. Hyperlinket vil sledes blive oprettet automatisk.");
+define("L_HELP_TIT_3", "Kommandoer");
+define("L_HELP_USR", "bruger");
+define("L_HELP_MSG", "besked");
+define("L_HELP_ROOM", "vrelse");
+define("L_HELP_CMD_0", "{} er en obligatorisk indstilling, mens [] en en valgfri en.");
+define("L_HELP_CMD_1", "Vlg antallet af beskeder, der skal vises - mindst fem.");
+define("L_HELP_CMD_1a", "Set antallet af beskeder der skal vises, minimum og standard er 5.");
+define("L_HELP_CMD_1b", "Genskab besked vinduet og vis n sidste beskeder, minimum og standard er 5.");
+define("L_HELP_CMD_2a", "Indstil antallet af sekunder mellem hver opfriskning af beskedlisten.<BR>Hvis antallet ikke er skrevet eller er mindre end 3, s skiftes der mellem ingen opfriskning og 10 sekunder mellem hver opfriskning.");
+define("L_HELP_CMD_2b", "ndre beskeds- og brugerliste opfriskningstid (i sekunder).<BR>Hvis antallet ikke er skrevet eller er mindre end 3, s skiftes der mellem ingen opfriskning og 10 sekunder mellem hver opfriskning.");
+define("L_HELP_CMD_3", "Sorter beskerne omvendt.");
+define("L_HELP_CMD_4", "G ind i et andet vrelse (som bliver lavet, hvis det ikke findes i forvejen, og hvis du har rettighederne til det).<BR>Nummeret 0 betyder privat vrelse, 1 betyder offentligt. Nummeret bliver sat til 1, hvis det ikke udfyldes.");
+define("L_HELP_CMD_5", "Forlad chatvrelset efter at have skrevet den valgfrie besked.");
+define("L_HELP_CMD_6", "Vis ikke beskeder fra en bruger der ikke har noget klenavn.<BR>Ignorer ikke en bruger, hvis klenavn og - begge findes. Ignorer ikke alle brugere nr - ikke er et klenavn.<BR>Vlges der ikke noget her, dukker der et vindue op, der viser alle ignorerede navne.");
+define("L_HELP_CMD_7", "Genkald den forrige linje (kommando eller besked).");
+define("L_HELP_CMD_8", "Vis/gem tidspunkt fr beskeder.");
+define("L_HELP_CMD_9", "Smid bruger ud af chatten. Denne kommado er kun for moderatorer.");
+define("L_HELP_CMD_10", "Send en privat besked til en specifik bruger (andre brugere ser den ikke).");
+define("L_HELP_CMD_11", "Viser information om den specifikke bruger.");
+define("L_HELP_CMD_12", "Popup vindue for at tilrette egen profil.");
+define("L_HELP_CMD_13", "ndre besked ved brugers ind- og udgang i chat rummet.");
+define("L_HELP_CMD_14", "Tillader administrator eller moderator af det pgldende rum til at gre andre registrerede brugere til moderator for selvsamme rum.");
+define("L_HELP_CMD_15", "Rens chat vinduet og vis 5 seneste beskeder.");
+define("L_HELP_CMD_16", "Gem sidste n beskeder til en HTML fil. Hvis ikke n er angivet, gemmes alle tilgngelige beskeder i rummet.");
+define("L_HELP_CMD_17", "Tillader administrator at sende en besked til samtlige brugere p chatten.");
+define("L_HELP_CMD_18", "Invitere en given bruger til at chatte i dit nuvrende rum.");
+define("L_HELP_CMD_19", "Tillader moderator af rummet eller administrator at \"forvise\" en bruger fra rummet for en tid defineret af administrator.<BR>Administrator kan \"forvise\" en bruger p tvrs af chatten.<br>Senere kan brugeren \"forvises\" for altid i hele chatten ved brug af '<B>&nbsp;*&nbsp;</B>' muligheden.");
+define("L_HELP_CMD_20", "Skriv hvad du fortager dig nu. F.eks /me drikker kaffe - skriver flgende besked: * <brugernick> drikker kaffe.");
+
+//message frame
+define("L_NO_MSG", "Ingen besked");
+define("L_TODAY_DWN", "Nyeste beskeder starter forneden");
+define("L_TODAY_UP", "Nyeste beskeder starter foroven");
+
+// message colors
+$TextColors = array(	"Sort" => "#000000",
+				"Rd" => "#FF0000",
+				"Grn" => "#009900",
+				"Bl" => "#0000FF",
+				"Lilla" => "#9900FF",
+				"Mrkerd" => "#990000",
+				"Mrkegrn" => "#006600",
+				"Mrkebl" => "#000099",
+				"Rdbrun" => "#996633",
+				"Havbl" => "#006699",
+				"Orange" => "#FF6600");
+
+//ignored popup
+define("L_IGNOR_TIT", "Ignoreret");
+define("L_IGNOR_NON", "Ingen ignoreret bruger");
+
+// whois popup
+define("L_WHOIS_ADMIN", "Admin");
+define("L_WHOIS_MODER", "Moderator");
+define("L_WHOIS_USER", "Bruger");
+
+// Notification messages of user entrance/exit
+define("L_ENTER_ROM", "%s er tiltrdt chatten");
+define("L_EXIT_ROM", "%s har afsluttet chatten");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/danish/localized.tutorial.php 0.15.0/chat/localization/danish/localized.tutorial.php
--- 0.14.5/chat/localization/danish/localized.tutorial.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/danish/localized.tutorial.php	2004-04-01 03:07:15.000000000 -0600
@@ -0,0 +1,626 @@
+<?php
+// File : danish.tutorial.php
+// Translation by Kenneth Kristiansen <kk@linuxfreak.adsl.dk>
+
+// Get the names and values for vars sent by the script that called this one
+if (isset($HTTP_GET_VARS))
+{
+	while(list($name,$value) = each($HTTP_GET_VARS))
+	{
+		$$name = $value;
+	};
+};
+?>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+
+<HEAD>
+<TITLE>Dansk Tutorial for <?php echo(APP_NAME." - ".APP_VERSION); ?></TITLE>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+<STYLE>
+A.topLink
+{
+	text-decoration: underline;
+	color: #0000C0;
+}
+
+A.topLink:hover, A.topLink:active
+{
+	color: #FF9900;
+	text-decoration: none;
+	font-weight: 800;
+}
+
+.redText
+{
+	font-weight: 800;
+	color: #FF0000;
+}
+</STYLE>
+</HEAD>
+
+<BODY BGCOLOR="#CCCCFF">
+
+<P><A NAME="top"></P>
+<TABLE BORDER="5" CELLPADDING="5">
+<TR>
+	<TD><FONT SIZE="+2">Indholdet af denne Tutorial</FONT></TD>
+</TR>
+</TABLE><BR>
+
+<P CLASS="redText">
+Advarsel: Netscape brugere skal angive deres sprog som standard oversttelse ellers vil hver karakter i beskederne blive erstattet af '?'.<BR>
+Dette kan gres p flgende mde: View/CharacterSet/your language Auto-Detect, og s View/CharacterSet/SetDefault.
+</P>
+
+<?php
+if (C_MULTI_LANG == "1") 
+{
+	?>
+	<A HREF="#language" CLASS="topLink">Vlg et sprog</A><BR>
+	<?php
+}
+?>
+<A HREF="#login" CLASS="topLink">Log ind i chatten</A><BR>
+<A HREF="#register" CLASS="topLink">Registrering</A><BR>
+<A HREF="#modProfile" CLASS="topLink">ndre<?php if (C_SHOW_DEL_PROF == "1") echo("/slette"); ?> din profil</A><BR>
+<?php
+if (C_VERSION == "2") 
+{
+	?>
+	<A HREF="#create_room" CLASS="topLink">Oprette et rum</A><BR>
+	<?php
+};
+if ($Ver == "H") 
+{
+	?>
+	<A HREF="#connection_state" CLASS="topLink">Forstelsen af tilslutningstilstanden</A><BR>
+	<?php
+};
+?>
+<A HREF="#sending" CLASS="topLink">Send en besked</A><BR>
+<A HREF="#users_list" CLASS="topLink">Forst bruger listen</A><BR>
+<A HREF="#exit" CLASS="topLink">Forlad chatten</A><BR>
+<A HREF="#users_popup" CLASS="topLink">Vide hvem som chatter uden at logge ind</A><BR>
+<P>
+<A HREF="#customize" CLASS="topLink">Tilpasset chat vindue</A><BR>
+<P>
+<A HREF="#commands" CLASS="topLink">Egenskaber og kommandoer:</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#help" CLASS="topLink">Hjlp kommando</A><BR>
+<?php
+if (C_USE_SMILIES == "1")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#smilies" CLASS="topLink">Grafiske smilies</A><BR>
+	<?php
+};
+if (C_HTML_TAGS_KEEP != "none")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#text" CLASS="topLink">Tekst formatering</A><BR>
+	<?php
+};
+?>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#invite" CLASS="topLink">Invitere en bruger til dit chat rum</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#changeroom" CLASS="topLink">Skift fra et rum til et andet</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#private" CLASS="topLink">Private beskeder</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#actions" CLASS="topLink">Handling</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#ignore" CLASS="topLink">Ignorere andre brugere</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#whois" CLASS="topLink">F information om andre brugere</A><BR>
+<?php
+if (C_SAVE != "0")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#save" CLASS="topLink">Gemme beskeder</A><BR>
+	<?php
+};
+?>
+<P>
+<A HREF="#moderator" CLASS="topLink">Specielle kommandoer for moderator og/eller administrator:</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#announce" CLASS="topLink">Send en annoncering</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#kick" CLASS="topLink">Udsmid en bruger</A><BR>
+<?php
+if (C_BANISH != "0")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#banish" CLASS="topLink">Forvise en bruger</A><BR>
+	<?php
+};
+?>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#promote" CLASS="topLink">Forfremme en bruger til moderator</A><BR>
+<P>
+<HR>
+<HR>
+
+
+<?php
+if (C_MULTI_LANG == "1") 
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="language"><B>Vlg et sprog:</B></A></FONT>
+	<P>
+	Du kan vlge et sprog i hvilken <?php echo(APP_NAME); ?> er oversat til ved at klikke p et af flagene i startbillede. I det efterflgende eksempel har en bruger valgt det franske sprog:
+	<P ALIGN="center">
+	<IMG SRC="images/tutorials/flags.gif" HEIGHT="44" WIDTH="424" ALT="Flag for sprog valg">
+	<BR><P ALIGN="right"><A HREF="#top">Tilbage til toppen</A></P>
+	<HR>
+	<?php
+}
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="login"><B>Login:</B></A></FONT>
+<P>
+Hvis du allerede er registrede her s logges der bare ind ved at taste dit brugernavn og kodeord. Vlg dernst hvilken chat rum du vil deltage i og tryk p chat knappen.<BR>
+<?php
+if (C_REQUIRE_REGISTER == "1")
+{
+	?>
+	<P>
+	Ellers er du nd til at <A HREF="#register">registrere</A> dig frst.
+	<?php
+}
+else
+{
+	?>
+	<P>
+	Eller du kan <A HREF="#register">registrere</A> dig frst eller bare tilg et chatrum hvorved at dit brugernavn ikke er reserveret og en anden kan vlge at registrere sig med det nr du senere logger ud).
+	<?php
+}
+?>
+<BR><P ALIGN="right"><A HREF="#top">Tilbage til toppen</A></P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="register"><B>Registrering:</B></A></FONT> 
+<P>
+Du er endnu ikke registreret<?php if (C_REQUIRE_REGISTER == "0") echo("og nsker at blive det"); ?>, vlg venligst registreringsmuligheden. Et lille pop-up vindue vil fremkomme.
+<P>	
+<UL>
+	<LI>Frst, opret et brugernavne<?php if (!C_EMAIL_PASWD) echo(" og vlg et kodeord"); ?> for dig selv i de respektive bokse. Brugernavnet som du vlger er det som automatisk vises i chatten. Det m ikke indeholde mellemrum, komma'er eller backslashes (\).
+<?php if (C_NO_SWEAR == "1") echo(" Det kan heller ikke indeholde \"afviste ord\"."); ?>
+	<LI>Dernst, indtast dit fornavn, efternavn og en gyldig e-mail adresse. For at kunne registrere skal denne information leveres. Kn muligheden er valgfri. 
+	<LI>Hvis du har en website kan du skrive URL'en i boksen.
+	<LI>Sprog boksen gr det nemmere for andre brugere at kende dine egenskaber s angiv her hvilken sprog du vil kommunikere p.
+	<LI>Sidst, hvis du nsker at din e-mail adresse skal vre synlig for alle i chatten, s afkryds boksen ved siden af "vis e-mail". Hvis du
+ikke nsker at den skal vre offentligt kendt s undlad og afkrydse her.
+	<LI>Og nu, Klik registrer knappen og din konto vil blive oprettet. Du kan til enhver tid stoppe ved at trykke p lukke knappen og undlade at registrere dig.
+</UL>
+<P>
+<A NAME="modProfile"></A>Og ja, registrerede brugere har mulighed for at ndre <?php if (C_SHOW_DEL_PROF == "1") echo("/ slette"); ?> deres egen profil ved at klikke p det respektive <?php echo((C_SHOW_DEL_PROF == "0" ? "link" : "links")); ?>.<BR>
+<BR><P ALIGN="right"><A HREF="#top">Tilbage til toppen</A></P>
+<P>
+<HR>
+
+<?php
+if (C_VERSION == "2") 
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="create_room"><B>Oprette et rum:</B></A></FONT> 
+	<P>
+	Registrerede brugere kan oprette chat rums. Private rum kan kun tilgs af brugere som kender dens navn og vil aldrig blive vist bortset fra brugere som er i den.<BR>
+	<P>
+	Rummet navn m ikke indeholde komma'er eller backslash (\).<?php if (C_NO_SWEAR == "1") echo(" Kan heller ikke indeholde \"bandlyste ord\"."); ?>
+	<BR><P ALIGN="right"><A HREF="#top">Tilbage til toppen</A></P>
+	<P>
+	<HR>
+	<?php
+};
+if ($Ver == "H")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="connection_state"><B>Forstelse af tilslutningstilstanden:</B></A></FONT> 
+	<P>
+	En blinkene cirkel, reprsenterende din tilslutningstilstand er vist i verste hjre hjrne af browseren. Denne kan have tre forskellige udseende :
+	<P>	
+	<UL>
+		<LI><IMG SRC="images/connectOff.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Ingen forbindelse"> nr ingen forbindelse er ndvendig ;
+		<LI><IMG SRC="images/connectOn.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Forbindelse"> nr en forbindelse er undervejs ;
+		<LI><IMG SRC="images/connectError.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Forbindelse fejlede"> nr en forbindelse fejlede.
+	</UL>
+	<P>
+	I det tredje tilflde, klikkes der p den rde "knap", vil det starte et nyt tilslutningsforsg.
+	<BR><P ALIGN="right"><A HREF="#top">Tilbage til toppen</A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="sending"><B>Send en besked:</B></A></FONT> 
+<P>
+For at poste en besked i chatten, skriv din besked i tekst boksen nederst i venstre hjrne og tryk efterflgede p Enter / Return tasten for at sende den. Beskeder fra alle brugere ruller over skrmen i chatten.<BR>
+<?php if (C_NO_SWEAR == "1") echo("Notr venligst at \"fy ord\" er udeladt fra den skrevne besked."); ?>
+<P>
+Du kan ogs skifte farve p din skrevne tekst ved at vlge en ny farve fra listen af valg til hjre for tekst boksen.
+<BR><P ALIGN="right"><A HREF="#top">Tilbage til toppen</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="users_list"><B>Forstelse af bruger listen (ikke gldende for brugeres popup vinduer):</B></A></FONT> 
+<P>
+<OL>
+	To simple regler er defieneret for bruger listen:<BR>
+	<LI>Et lille icon som viser knnet er vist fr navnet p registrede brugere (klik p det vil bne <A HREF="#whois">whois pop-up vinduet</A> for denne bruger), mens uregisterede brugere kun har et blank mellemrum vist fr brugernavnet;<BR>
+	<LI>Nick navnet p moderator eller administrator er skrevet i kursiv form.
+</OL>
+<P><I>For eksempel</I>, fra snapshottet nedenuden kan du konkludere at:
+<TABLE BORDER=0 CELLSPACING=10>
+<TR>
+	<TD>
+		<IMG SRC="images/tutorials/usersList.gif" WIDTH=128 HEIGHT=145 BORDER=0 ALT="Bruger liste">
+	</TD>
+	<TD>
+	<UL>
+		<LI>Nicolas er admin eller en af moderatorerne i chat rummet;<BR><BR>
+		<LI>alien (hvis kn er ukendt), Jezek2 og Caridad er registerede alm. brugere uden ekstra "funktioner" i chatten;<BR><BR>
+		<LI>lolo er en alm. ikke registrerede bruger.
+	</UL>
+	</TD>
+</TR>
+</TABLE>
+<BR><P ALIGN="right"><A HREF="#top">Tilbage til toppen</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="exit"><B>Forlad chat rummet:</B></A></FONT>
+<P>
+For at forlade chatten klikkes der p "Farvel" foroven til hjre. Alternativt kan du ogs bruge en af flgende kommandoer i din tekst boks:<BR><BR>
+/exit<BR>
+/bye<BR>
+/quit<BR><BR>
+Disse kommandoer kan efterflges af en tekst som sendes inde du forlader chatten.
+<I>Feks.:</I> /quit Vi ses snart igen!
+<P>
+vil sende beskeden "Vi ses snart igen!" i chatten og s logge dig ud.
+
+<BR><P ALIGN="right"><A HREF="#top">Tilbage til toppen</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="users_popup"><B>Vide hvem som chatter uden at vre logget ind:</B></A></FONT> 
+<P>
+Du kan klikke p linket der viser antallet af tilsluttede brugere p startsiden, eller hvis du chatter, klikke p icon'et <IMG SRC="images/popup.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Bruger popup"> i verste hjre hjrne for at bne et nyt vindue som vil vise de tilsluttede brugere, og de rum de befinder sig i, i noget nr real time.<BR>
+<P>
+Klik p <IMG SRC="images/sound.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Beeps"> icon'et i toppen af denne popup vil tnde/slukke beep lydene ved bruger ankomst.
+<BR><P ALIGN="right"><A HREF="#top">Tilbage til toppen</A></P>
+<P>
+<HR>
+
+
+<P>
+<FONT SIZE="+1"><A NAME="customize"><B>Tilretning af chat vinduet:</B></A></FONT>
+<P>
+Der er mange mder hvorp du kan tilrette udseende af chat vinduet p. For at skifte udseende skrives den respektive kommado i tekst boksen og der trykkes enter.
+<P>
+<UL>
+	<?php
+	if ($Ver == "H")
+	{
+		?>
+		<LI><B>Clear kommandoen</B> tillader dig at rense/tmme chat vinduet og efterflgende kun f vist de 5 sidste skrevne beskeder.<BR>Skriv "/clear" uden ".
+		<P>
+		<?php
+	}
+	else
+	{
+		?>
+		<LI><B>Order kommandoen</B> tillader dig at skifte mellem at nye beskeder skal starte foroven eller forneden.<BR>Skriv "/order" uden ".
+		<P>
+		<?php
+	};
+	?>
+	<LI><B>Notify kommandoen</B> tillader dig at skifte mellem at f en meddelelse nr andre brugere ankommer eller forlader chatten. Som standard er denne mulighed sat til: <?php echo(C_NOTIFY ? "til" : "fra"); ?> og de <?php echo(C_NOTIFY ? "vil" : "vil ikke"); ?> blive vist.<BR>Skriv "/notify" uden ".
+	<P>
+	<LI><B>Timestamp kommandoen</B> tillader dig at aktivere og ikke aktivere muligheden for at kunne se tiden for den skrevne besked i chatten, samt fjerne server tiden i browseren. Som standart er denne funktion <?php echo(C_SHOW_TIMESTAMP ? "aktiveret" : "ikke aktiveret"); ?>.<BR>Skriv "/timestamp" uden ".
+	<P>
+	<LI><B>Refresh kommandoen</B> tillader dig at justere hyppigheden for opfriskning af skrmen i chatten. Standard hyppigheden er <?php echo(C_MSG_REFRESH); ?> sekunder. For at skifte hyppigheden skriver du "/refresh n" uden " hvor n er tiden i sekunder.
+	<P>
+	<I>For eksempel:</I> /refresh 5
+	<P>
+	vil skifte hyppigheden til 5 sekunders opfriskning. *Vr opmrksom, hvis n er sat til mindre end 3, nulstilles opfriskningen til SLET ikke at opfriske skrmen (godt hvis du nsker at lse en masse gamle beskeder i chatten)!*
+	<P>
+	<?php
+	if ($Ver == "L")
+	{
+		?>
+		<LI><B>Show kommadoen</B> tillader dig at justere antallet af viste beskeder i chatten. For at skifte antallet af viste beskeder, skriv "/show n" uden " hvor n er antallet af beskeder der skal vises.
+		<P>
+		<I>For eksempel:</I> /show 50
+		<P>
+		vil bevirke at de nyeste 50 beskeder altid vil vre synlige for dig i chatten. Hvis ikke alle beskeder kan vises p skrmen af en gang fremkommer der en scroll-bar til hjre.</UL>
+		<?php
+	}
+	else
+	{
+		?>
+		<LI><B>Show og Last kommandoen</B> tillader dig at rense skrmen og vise de sidste <I>n</I> beskeder p din skrm. Skriv "/show n" eller "/last n" uden " hvor n er antallet er beskeder der skal vises.
+		<P>
+		<I>For eksempel:</I> /show 50 eller /last 50
+		<P>
+		vil rense chat vinduet og vise de 50 nyeste beskeder p skrmen. Hvis ikke alle beskeder kan vises p skrmen af en gang fremkommer der en scroll-bar til hjre.</UL>
+		<?php
+	};
+	?>
+	<BR><P ALIGN="right"><A HREF="#top">Tilbage til toppen</A></P>
+	<P>
+</UL>
+<HR>
+<HR>
+
+
+<P>
+<FONT SIZE="+2"><A NAME="commands"><B><U>Egenskaber og kommandoer</U></B></A></FONT> 
+<P>
+
+<FONT SIZE="+1"><A NAME="help"><B>Hjlpe kommando:</B></A></FONT>
+<P>
+Inde i chatten kan du altid finde hjlpen ved at klikken p <IMG SRC="images/helpOff.gif" WIDTH=15 HEIGHT=15 BORDER=0 ALT="?"> billedet lige foran tekst boksen. Du kan dog ogs vlge at skrive <B>"/help" eller "/?" kommandoen</B> i tekst boksen.
+<BR><P ALIGN="right"><A HREF="#top">Tilbage til toppen</A></P>
+<P>
+<P>
+<HR>
+
+<?php
+if (C_USE_SMILIES == "1")
+{
+	include("./lib/smilies.lib.php");
+	$Nb = count($SmiliesTbl);
+	$ResultTbl = Array();
+	DisplaySmilies($ResultTbl,$SmiliesTbl,$Nb,"tutorial");
+	unset($SmiliesTbl);
+	?>
+	<FONT SIZE="+1"><A NAME="smilies"><B>Smilies:</B></A></FONT>
+	<P>Du kan have grafiske smilies inde i dine beskeder. Se nedenstende for koder du skal bruge i dine beskeder for at kunne vise dem.
+	<P ALIGN="center">
+	<TABLE BORDER=0 CELLPADDING=3 CELLSPACING=5>
+	<?php
+	$i = "0";
+	$Nb = count($ResultTbl);
+	while($i < $Nb)
+	{
+		if ($i > 0) echo("\t");
+		echo("<TR VALIGN=\"BOTTOM\">\n");
+		echo("$ResultTbl[$i]");
+		echo("\t</TR>\n\t<TR>\n");
+		$i++;
+		echo("$ResultTbl[$i]");
+		echo("\t</TR>\n");
+		$i++;
+	};
+	unset($ResultTbl);
+	?>
+	</TABLE>
+	<P>
+	<I>For eksempel</I>, send denne tekst: "Hej Bruger :)" uden " vil vise denne tekst Hej Bruger <IMG SRC="images/smilies/smile1.gif" WIDTH=15 HEIGHT=15 ALT=":)"> i chat vinduet.
+	<BR><P ALIGN="right"><A HREF="#top">Tilbage til toppen</A></P>
+	<P>
+	<HR>
+	<?php
+};
+
+if (C_HTML_TAGS_KEEP != "none")
+{
+	?>
+	<FONT SIZE="+1"><A NAME="text"><B>Tekst formatering:</B></A></FONT>
+	<P>
+	Tekst kan skrives som fed, kursiv og understreget ved at bruge de respektive html koder herfor, ssom &LT;B&GT; &LT;/B&GT, &LT;I&GT; &LT;/I&GT; eller &LT;U&GT; &LT;/U&GT.
+	<P>
+	<I>For eksempele</I>, &LT;B&GT;Denne tekst&LT;/B&GT; vil frembringe <B>denne tekst</B>.
+	<P>
+	For at oprette en genvej for en e-mail adresse eller en URL, skrives adressen (uden html koder). Genvejen vil blive oprettet automatisk.
+	<BR><P ALIGN="right"><A HREF="#top">Tilbage til toppen</A></P>
+	<P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="invite"><B>Invitere en bruger til dit chat rum:</B></A></FONT>
+<P>
+Du kan bruge <B>invite kommandoen</B> til at invitere en bruger til at deltage i det rum som du befinder dig i.
+<P>
+<I>For eksempel:</I> /invite Bruger 
+<P>
+vil sende en privat besked til Bruger hvor det fremgr at du nsker at se ham i dit chat rum. Denne besked indeholder chat rummets navn i form af et link.
+<P>
+Bemrk at du kan invitere mere end en bruger af gangen med invite kommandoen (f.eks. "/invite Bruger1,Bruger2,Bruger3"). Navnene skal vre delt med et (,) uden mellemrum.
+<BR><P ALIGN="right"><A HREF="#top">Tilbage til toppen</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="changeroom"><B>Skifte chat rum:</B></A></FONT>
+<P>
+I listen til hjre er der en oversigt over chat rum og brugerne i disse. For at forlade dit nuvrende chat rum og hoppe videre til et andet, klik p et af de rum du vil deltage i. Du kan hoppe ind i tomme chatrums med <B>kommando "/join #chatrum navn"</B> uden ".
+<P>
+<I>For eksempel:</I> /join #Mandehrm 
+<P>
+vil fre dig ind i Mandehrm.
+<?php
+if (C_VERSION == "2")
+{
+	echo(C_REQUIRE_REGISTER == "0" ? "<P>Hvis du er en registrede bruger, du" : "<BR><P>Du");
+	?>
+	 kan ogs oprette et nyt rum med den selvsamme kommando. Men du skal angive typen p dit nye rum: 0 str for privat rum, 1 for offentligt rum (standard vrdi).
+	<P>
+	<I>For eksempel:</I> /join 0 #MitRum 
+	<P>
+	vil oprette et nyt privat rum (sfremt der ikke er et andet offentligt rum af samme navn) kaldet MitRum og fre dig derind.
+	<P>
+	Rummet navn kan ikke indholde komma'er eller backslash (\).<?php if (C_NO_SWEAR == "1") echo(" Kan ikke lngere indeholde \"Fy ord\"."); ?>
+	<?php
+}
+?>
+<BR><P ALIGN="right"><A HREF="#top">Tilbage til toppen</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B>ndring af din egen profil fra chatten:</B></FONT>
+<P>
+<B>Profil kommandoen</B> opretter et seperat pop-up vindue hvori at du kan ndre og tilpasse din bruger profil undtagen dit nick og kodeord (du skal bruge linket p startsiden for at gre dette).<BR><BR>Skriv /profile
+<BR><P ALIGN="right"><A HREF="#top">Tilbage til toppen</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B>Fremkald den sidste besked eller kommando du har skrevet:</B></FONT>
+<P>
+<B>! kommando</B> frembringer den sidste besked eller kommando du skrev.<BR>Skriv /!
+<BR><P ALIGN="right"><A HREF="#top">Tilbage til toppen</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B>Svar til en bestemt bruger:</B></FONT>
+<P>
+Ved at klikke en gang p navnet p en bruger i listen til hjre vil gre, at vedkommendes "brugernavn>" vil fremst i din tekstboks. Denne funktion tillader dig hurtigt og nemt at sende en offentligt besked til en bruger, mske for at svare p en henvendelse fra ham eller hende tidligere.
+<BR><P ALIGN="right"><A HREF="#top">Tilbage til toppen</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="private"><B>Private beskeder:</B></A></FONT>
+<P>
+For at sende en privat besked til en anden bruger som er i samme rum som dig, skriv da <B>"/msg brugernavn besked" eller "/to brugernavn besked"</B> uden ".
+<P>
+<I>For eksempel, hvor Kenneth er brugernavn:</I> /msg Kenneth Hej med dig, hvordan gr det ?
+<P>
+Beskeden vil kun vre synlig for bruger Kenneth og dig selv og sledes kan andre ikke se den.
+<P>
+Noter lige at ved at klikke p nick navnet i chatten vil automatisk indstte denne kommando i din tekstboks.
+<BR><P ALIGN="right"><A HREF="#top">Tilbage til toppen</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="actions"><B>Handling:</B></A></FONT>
+<P>
+For at beskrive hvad du laver kan du bruge kommandoen <B>"/me handling"</B> uden ".
+<P>
+<I>For eksempel:</I> Hvis Kenneth sender beskeden "/me drikker kaffe" vil beskeden "<B>* Kenneth</B> drikker kaffe".
+<BR><P ALIGN="right"><A HREF="#top">Tilbage til toppen</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="ignore"><B>Ignorr andre brugere:</B></A></FONT>
+<P>
+For at ignorere alle poster fra en anden bruger, skriv kommandoen <B>"/ignore brugernavn"</B> uden ".
+<P>
+<I>For eksempel:</I> /ignore Kenneth
+<P>
+Fra deraf, ingen poster fra brugeren Kenneth vil blive vist p din skrm.
+<P>
+For at f en liste over brugere som er p din ignorr liste, s skriv kommandoen <B>"/ignore"</B> uden ". 
+<P>
+For igen at f vist beskeder fra brugeren Kenneth, skriv kommandoen <B>"/ignore - Kenneth"</B> uden " hvor "-" is er minus tegnet. <P> 
+<P>
+<I>For eksempel:</I> /ignore - Kenneth 
+<P>
+Nu vil alle beskeder fra brugeren Kenneth igen blive vist p skrmen, ogs dem der skrevet mens brugeren Kenneth var p din liste.
+Hvis du ikke angiver et navn efter - tegnet .. vil din ignorr liste blive tmt.
+<P>
+Notr at du kan tilfje flere end et navn ad gangen til /ignore kommandoen (f.eks. "/ignore Kenneth,Kiki,Alf" eller "/ignore - Kenneth,Alf"). De skal vre adskildt af et komma (,) uden mellemrum.
+<BR><P ALIGN="right"><A HREF="#top">Tilbage til toppen</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="whois"><B>F information om andre brugere:</B></A></FONT>
+<P>
+For at se information om andre brugere, skriv kommandoen <B>"/whois brugernavn"</B> uden ".
+<P>
+<I>For eksempel:</I> /whois Kenneth
+<P>
+hvor 'Kenneth' er brugernavnet. Denne kommando vil frembringe et seperat pop-up vindue der vil vise den information der er tilgngelig for denne bruger.
+<BR><P ALIGN="right"><A HREF="#top">Tilbage til toppen</A></P>
+<P>
+<HR>
+
+<?php
+if (C_SAVE != "0")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="save"><B>Gemme beskeder:</B></A></FONT>
+	<P>
+	For at gemme beskeder (start beskederne undtaget) til en lokal HTML fil, skriv kommandoen <B>"/save n"</B> uden ".
+	<P>
+	<I>For eksempel:</I> /save 5
+	<P>
+	hvor '5' er antallet af beskeder der skal gemmens. Hvis ikke n er angivet, alle tilgngelige beskeder i det aktuelle chat rum, gemmes.
+	<BR><P ALIGN="right"><A HREF="#top">Tilbage til toppen</A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+<HR>
+
+
+<P>
+<FONT SIZE="+2"><A NAME="moderator"><B><U>Specielle kommandoer for moderator og/eller administrator</U></B></A></FONT> 
+
+<P>
+<FONT SIZE="+1"><A NAME="announce"><B>Send en annoncering:</B></A></FONT>
+<P>
+Administratoren kan have behov for at sende en annoncering til alle brugere p tvrs af chatrums. Dertil bruges kommandoen <B>/announce</B>.
+<P>
+<I>For eksempel: /announce Chatten lukkes ned for systemvedligeholdelse kl. 23:00.</I>
+<BR><P ALIGN="right"><A HREF="#top">Tilbage til toppen</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="kick"><B>Udsmid en bruger:</B></A></FONT>
+<P>
+Moderator kan udsmide en bruger og administratoren kan udsmide en bruger eller en moderarator med kommandoen <B>/kick</B>. Moderator kan kun udsmide brugere i det aktuelle chatrum mens administrator kan udsmide brugere p tvrs af hele chatten.
+<P>
+<I>For eksempel</I>, hvis Kenneth er navnet p en bruger som skal smides ud, skrive kommandoen:</I> /kick Kenneth</I>
+<BR><P ALIGN="right"><A HREF="#top">Tilbage til toppen</A></P>
+<P>
+<HR>
+
+<?php
+if (C_BANISH != "0")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="banish"><B>Forvise en bruger:</B></A></FONT>
+	<P>
+	Moderator kan forvise en bruger og administrator kan forvise en bruger eller en moderator med kommandoen <B>/ban</B>.<BR>
+	Administratoren kan modsat moderatoren forvise en bruger p tvrs af chatrummene samt forvise en bruger for evigt med '<B>&nbsp;*&nbsp;</B>' vrdien der indsttes lige fr brugernavnet.
+	<P>
+	<I>For eksempel</I>, hvis Kenneth er navnet p brugeren som skal forvises : <I>/ban Kenneth</I> eller <I>/ban * Kenneth</I>
+	<BR><P ALIGN="right"><A HREF="#top">Tilbage til toppen</A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="promote"><B>Forfremme en bruger til moderator:</B></A></FONT>
+<P>
+Moderatorer og administrator kan forfremme en bruger til moderator med kommandoen <B>/promote</B>.
+<P>
+<I>For eksempel</I>, hvis Kenneth er navnet p brugeren som skal forfremmes:<I> /promote Kenneth</I>
+<P>
+Kun administrator kan fratage en forfremmelse fra en bruger (reducere en moderator til alm. bruger). Der findes ikke en kommando for dette.
+<BR><P ALIGN="right"><A HREF="#top">Tilbage til toppen</A></P>
+<P>
+
+
+</BODY>
+</HTML>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/danish/regex.txt 0.15.0/chat/localization/danish/regex.txt
--- 0.14.5/chat/localization/danish/regex.txt	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/danish/regex.txt	2004-04-01 03:07:15.000000000 -0600
@@ -0,0 +1 @@
+da|danish
\ No newline at end of file
Binary files 0.14.5/chat/localization/dutch/flag.gif and 0.15.0/chat/localization/dutch/flag.gif differ
diff -ruN 0.14.5/chat/localization/dutch/localized.admin.php 0.15.0/chat/localization/dutch/localized.admin.php
--- 0.14.5/chat/localization/dutch/localized.admin.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/dutch/localized.admin.php	2004-04-01 03:07:15.000000000 -0600
@@ -0,0 +1,61 @@
+<?php
+// File : dutch.lang.php
+// Translation by Corbesir <rock@jascrc.com>
+
+// extra header for charset
+$Charset = "iso-8859-1";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// Top frame
+define("A_MENU_0", "Administration for %s");
+define("A_MENU_1", "Registered users");
+define("A_MENU_2", "Banished users");
+define("A_MENU_3", "Clean rooms");
+define("A_MENU_4", "Send mails");
+
+// Frame for registered users
+define("A_SHEET1_1", "List of registered users and their permissions");
+define("A_SHEET1_2", "Gebruikersnaam");
+define("A_SHEET1_3", "Permissies");
+define("A_SHEET1_4", "Gemodereerde rooms");
+define("A_SHEET1_5", "Gemodereerde rooms worden geschijden door komma's (,) zonder spaties.");
+define("A_SHEET1_6", "Remove checked profiles");
+define("A_SHEET1_7", "Veranderen");
+define("A_SHEET1_8", "There is no registered user except yourself.");
+define("A_SHEET1_9", "Banish checked profiles");
+define("A_SHEET1_10", "Now you have to move to the banished users sheet to refine your choices.");
+define("A_SHEET1_11", "Last connection");
+define("A_USER", "Gebruikers");
+define("A_MODER", "Supervisor");
+define("A_PAGE_CNT", "Page %s of %s");
+
+// Frame for banished users
+define("A_SHEET2_1", "List of banished users and concerned rooms");
+define("A_SHEET2_2", "IP");
+define("A_SHEET2_3", "Concerned rooms");
+define("A_SHEET2_4", "Until");
+define("A_SHEET2_5", "no end");
+define("A_SHEET2_6", "rooms are splitted by comma without spaces (,) if they are less than 4, else the '<B>&nbsp;*&nbsp;</B>' sign<BR>banish from all rooms.");
+define("A_SHEET2_7", "Remove banishment for checked user(s)");
+define("A_SHEET2_8", "There is no banished user.");
+
+// Frame for cleaning rooms
+define("A_SHEET3_1", "Lijst met alle beschikbare kamers");
+define("A_SHEET3_2", "Clean a \"non-default\" room will also remove all moderator<BR>status for this room.");
+define("A_SHEET3_3", "Clean selected rooms");
+define("A_SHEET3_4", "There is no room to clean.");
+
+// Frame for sending mails
+define("A_SHEET4_0", "You haven't set required variables in the<BR>'chat/admin/mail4admin.php' script.");
+define("A_SHEET4_1", "Send e-mails");
+define("A_SHEET4_2", "To:");
+define("A_SHEET4_3", "Select all");
+define("A_SHEET4_4", "Subject:");
+define("A_SHEET4_5", "Messages:");
+define("A_SHEET4_6", "Start sending");
+define("A_SHEET4_7", "All e-mails have been sent.");
+define("A_SHEET4_8", "Internal error while sending the mails.");
+define("A_SHEET4_9", "Addresse(s), subject or message is missing!");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/dutch/localized.chat.php 0.15.0/chat/localization/dutch/localized.chat.php
--- 0.14.5/chat/localization/dutch/localized.chat.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/dutch/localized.chat.php	2004-04-01 03:07:15.000000000 -0600
@@ -0,0 +1,222 @@
+<?php
+// File : dutch.lang.php
+// Translation by Hans Paijmans <paai@kub.nl>, Kasper Souren <guaka@industree.org>
+// and Sander Corbesir <rock@jascrc.com>
+
+// extra meta-tag for charset
+$Charset = "iso-8859-1";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// welcome page
+define("L_TUTORIAL", "Tutorial");
+
+define("L_WEL_1", "Berichten worden gewist na");
+define("L_WEL_2", "tijden en namen na");
+define("L_WEL_3", "minuten...");
+define("L_CUR_1", "Op het ogenblik is");
+define("L_CUR_2", "in de chat.");
+define("L_CUR_3", "op dit ogenblik in de chatroom");
+define("L_CUR_4", "in de prive kamers");
+define("L_SET_1", "geef");
+define("L_SET_2", "uw naam");
+define("L_SET_3", "aantal zichtbare berichten");
+define("L_SET_4", "tijd tussen twee updates");
+define("L_SET_5", "kies een chat ruimte");
+define("L_SET_6", "standaard ruimtes");
+define("L_SET_7", "kies...");
+define("L_SET_8", "openbare ruimte door gebruikers aangemaakt");
+define("L_SET_9", "maak uw eigen");
+define("L_SET_10", "publiek");
+define("L_SET_11", "prive");
+define("L_SET_12", "ruimte");
+define("L_SET_13", "En dan maar");
+define("L_SET_14", "chatten");
+
+define("L_SRC", "vrijelijk verkrijgbaar op");
+
+define("L_SECS", "seconden");
+define("L_MIN", "minuut");
+define("L_MINS", "minuten");
+
+// registration stuff:
+define("L_REG_1", "je wachtwoord");
+define("L_REG_1r", "(alleen als je geregistreerd bent)");
+define("L_REG_2", "Geregistreerde gebruikers");
+define("L_REG_3", "Registreer");
+define("L_REG_4", "Pas gebruikersprofiel aan");
+define("L_REG_5", "Wis gebruiker");
+define("L_REG_6", "Gebruikers registratie");
+define("L_REG_7", "je wachtwoord");
+define("L_REG_8", "je e-mail adres");
+define("L_REG_9", "Je bent geregistreerd.");
+define("L_REG_10", "Terug");
+define("L_REG_11", "Edit");
+define("L_REG_12", "Verander gebruikersinformatie");
+define("L_REG_13", "Gebruiker wissen");
+define("L_REG_14", "Inloggen");
+define("L_REG_15", "Inloggen");
+define("L_REG_16", "Veranderen");
+define("L_REG_17", "Je informatie is gewijzigd.");
+define("L_REG_18", "Je bent uit de ruimte gekickt door de moderator.");
+define("L_REG_19", "Wil je echt verwijderd worden?");
+define("L_REG_20", "Ja");
+define("L_REG_21", "Je bent verwijderd.");
+define("L_REG_22", "Nee");
+define("L_REG_24", "Remove checked profiles");
+define("L_REG_25", "Sluiten");
+define("L_REG_30", "voornaam");
+define("L_REG_31", "achternaam");
+define("L_REG_32", "WEB");
+define("L_REG_33", "laat e-mail zien met /whois commando");
+define("L_REG_34", "Gebruikersprofiel wijzigen");
+define("L_REG_35", "Administratie");
+define("L_REG_36", "gesproken talen");
+define("L_REG_37", "Fields with a <span class=\"error\">*</span> must be completed.");
+define("L_REG_39", "De kamer waar je in ben geweest is verwijderd door administratie.");
+define("L_REG_45", "gender");
+define("L_REG_46", "male");
+define("L_REG_47", "Female");
+
+// e-mail validation stuff
+define("L_EMAIL_VAL_1", "Your settings to enter the chat");
+define("L_EMAIL_VAL_2", "Welcome to our chat server.");
+define("L_EMAIL_VAL_Err", "Internal error, please contact the administrator: <a href=\"mailto:%s\">%s</a>.");
+define("L_EMAIL_VAL_Done", "Your password has been sent to your e-mail address.");
+
+// admin stuff
+define("L_ADM_1", "%s is no more moderator for this room.");
+define("L_ADM_2", "You're no more a registered user.");
+
+//error messages
+define("L_ERR_USR_1", "Naam is al in gebruik. Kies een andere.");
+define("L_ERR_USR_2", "Een naam is verplicht.");
+define("L_ERR_USR_3", "Deze gebruikersnaam is al geregistreerd. Geef het wachtwoord of kies een andere gebruikersnaam.");
+define("L_ERR_USR_4", "Je heb foutieve wachtwoord ingevoerd.");
+define("L_ERR_USR_5", "Je ben jou gebruikersnaam vergeten.");
+define("L_ERR_USR_6", "Je ben jou wachtwoord vergeten.");
+define("L_ERR_USR_7", "Je ben jou email vergeten.");
+define("L_ERR_USR_8", "Je moet correcte emailadres invoeren.");
+define("L_ERR_USR_9", "Deze gebruikersnaam wordt al gebruikt.");
+define("L_ERR_USR_10", "Verkeerde wachtwoord of gebruikersnaam.");
+define("L_ERR_USR_11", "Je moet administrateur zijn.");
+define("L_ERR_USR_12", "Je ben zelf administrateur, dus je kan niet zichzelf verwijderen.");
+define("L_ERR_USR_13", "Om je eigen kamer te maken, moet je geregisteerd zijn.");
+define("L_ERR_USR_14", "Je moet geregisteerd zijn voordat je kan chatten.");
+define("L_ERR_USR_15", "Je moet jou naam voluit typen.");
+define("L_ERR_USR_16", "Jou gebruikersnaam kan niet met spatie, komma en backslash (\\).");
+define("L_ERR_USR_16", "Gebruikersnaam kan niet met spatie, komma en backslash (\\).");
+define("L_ERR_USR_17", "Deze kamer is niet beschikbaar en je ben niet bevoegd om nieuwe kamer te maken.");
+define("L_ERR_USR_18", "Banned word found in your username.");
+define("L_ERR_USR_19", "You cannot be in more than one room at the same time.");
+define("L_ERR_USR_20", "You have been banished from this room or from the chat.");
+define("L_ERR_ROM_1", "Kamernaam kan niet met komma en backslash (\\).");
+define("L_ERR_ROM_2", "Banned word found in the room's name you want to create.");
+define("L_ERR_ROM_3", "Deze ruimte is al in gebruik als openbare ruimte.");
+define("L_ERR_ROM_4", "Onbruikbare naam.");
+
+// users frame or popup
+define("L_EXIT", "Afsluiten");
+define("L_DETACH", "Verlaat");
+define("L_EXPCOL_ALL", "Alles uit-/inklappen");
+define("L_CONN_STATE", "Connection state");
+define("L_CHAT", "Chat");
+define("L_USER", "gebruiker");
+define("L_USERS", "gebruikers");
+define("L_NO_USER", "Geen gebruiker");
+define("L_ROOM", "ruimte");
+define("L_ROOMS", "ruimtes");
+define("L_EXPCOL", "ruimte in-/uit laten klappen");
+define("L_BEEP", "Beep/no beep at user entrance");
+define("L_PROFILE", "Display profile");
+define("L_NO_PROFILE", "No profile");
+
+// input frame
+define("L_HLP", "Help");
+define("L_BAD_CMD", "Onjuiste opdracht!");
+define("L_ADMIN", "%s is al administrateur !");
+define("L_IS_MODERATOR", "%s is al supervisor !");
+define("L_NO_MODERATOR", "Alleen supervisor van deze kamer kan die gebruiken.");
+define("L_MODERATOR", "%s is nu supervisor van dit kamer.");
+define("L_NONEXIST_USER", "Gebruiker %s is niet in aanwezige kamer.");
+define("L_NONREG_USER", "Gebruiker %s is niet geregisteerd.");
+define("L_NONREG_USER_IP", "His IP is: %s.");
+define("L_NO_KICKED", "Gebruiker %s is supervisor of administrateur en kan niet weggestemd.");
+define("L_KICKED", "Gebruiker %s is met succes weggestemd.");
+define("L_NO_BANISHED", "User %s is moderator or administrator and can't be banished.");
+define("L_BANISHED", "User %s has successfully been banished.");
+define("L_SVR_TIME", "Server time: ");
+define("L_NO_SAVE", "No message to save!");
+define("L_NO_ADMIN", "Only the administrator can use this command.");
+define("L_ANNOUNCE", "ANNOUNCE");
+define("L_INVITE", "%s suggest you to join her/him into the <a href=\"#\" onClick=\"window.parent.runCmd('%s','%s')\">%s</a> room.");
+define("L_INVITE_REG", " You have to be registered to enter this room.");
+define("L_INVITE_DONE", "Your invitation has been sent to %s.");
+define("L_OK", "Send");
+
+// help popup
+define("L_HELP_TIT_1", "Smile");
+define("L_HELP_TIT_2", "Text codes voor de berichten");
+define("L_HELP_FMT_1", "Je kan bold, italic en onderline tekst gebruiken in bericht in de HTML codes zoals &lt;B&gt; &lt;/B&gt;, &lt;I&gt; &lt;/I&gt; of &lt;U&gt; &lt;/U&gt; tags.<BR>Ter voorbeeld, &lt;B&gt;deze tekst&lt;/B&gt; wordt <B>deze tekst</B>.");
+define("L_HELP_FMT_2", "Om link te maken (voor e-mail of URL) in jouw bericht, kun je gemakkelijk jou adres zonder alle tags in te voeren. De URL zal dan automatisch aangemaakt.");
+define("L_HELP_TIT_3", "Commando's");
+define("L_HELP_USR", "gebruiker");
+define("L_HELP_MSG", "bericht");
+define("L_HELP_ROOM", "ruimte");
+define("L_HELP_CMD_0", "{} is voor een verplichte instelling, [] voor een optionele.");
+define("L_HELP_CMD_1", "Aantal berichten dat tegelijk zichtbaar is (minstens vijf).");
+define("L_HELP_CMD_1a", "Set number of messages to show, minimum and default are 5.");
+define("L_HELP_CMD_1b", "Reload the message frame and display the n latest messages, minimum and default are 5.");
+define("L_HELP_CMD_2a", "Tussenpoze voor het bijwerken van de lijst (in seconden).<BR>Als n niet opgegeven of als kleiner dan 3, verspringt het tussen geen bijwerken en bijwerken om de tien seconden.");
+define("L_HELP_CMD_2b", "Modify messages and users lists refresh delay (in seconds).<BR>If n is not specified or less than 3, toggles between no refresh and 10s refresh.");
+define("L_HELP_CMD_3", "Keer volgorde van berichten om.");
+define("L_HELP_CMD_4", "Ga naar een andere ruimte en maak hem indien nodig automatisch aan (als je dat mag tenminste).<BR>n is 0 voor een prive ruimte en 1 voor een openbare, default is 1 (openbaar).");
+define("L_HELP_CMD_5", "Vertaat het chatten, eventueel met achterlaten van bericht.");
+define("L_HELP_CMD_6", "Vermijd het tonen van de boodschappen van een gebruiker als de nickname is aangegeven.<BR>Zet het ignoreren uit voor een gebruiker als nick en  - beiden zijn aangegeven, voor alle gebruikers als  - is aangegeven maar de nick niet.<BR>Als geen optie is gegeven laat dit commando een venster zien met alle gegnoreerde nicks.");
+define("L_HELP_CMD_7", "Haal de vorige regel terug (commando of boodschap).");
+define("L_HELP_CMD_8", "Timestamp voor de boodschap weglaten of laten zien.");
+define("L_HELP_CMD_9", "Stem de gebruiker weg uit de kamer. Deze commandos kan alleen worden gebruikt door de supervisor.");
+define("L_HELP_CMD_10", "Stuur een prive bericht naar de gespecificeerde gebruiker (andere gebruikers krijgen het niet te zien).");
+define("L_HELP_CMD_11", "Laat de informatie zien van gekozen gebruiker.");
+define("L_HELP_CMD_12", "Popup window om gebruikersprofiel aan te passen.");
+define("L_HELP_CMD_13", "Schakel tussen ander gebruikers, uitloggen van de bestaande kamer.");
+define("L_HELP_CMD_14", "Alleen administrateur en supervisor van de huidige kamer kan promoten naar ander kamer te gaan.");
+define("L_HELP_CMD_15", "Clear the message frame and show only the last 5 messages.");
+define("L_HELP_CMD_16", "Save the last n messages (notifications ones excluded) to an HTML file. If n is not specified, all available messages will be taken into account.");
+define("L_HELP_CMD_17", "Allow the administrator to send an announce to all users whatever the room they are chatting into.");
+define("L_HELP_CMD_18", "Suggest an user chatting in an other room to join the one you are into.");
+define("L_HELP_CMD_19", "Allow the moderator(s) of a room or the administrator to \"banish\" an user from the room for a time defined by the administrator.<BR>The later can banish an user chatting in an other room than the one he is into and use the '<B>&nbsp;*&nbsp;</B>' setting to banish \"for ever\" an user from the chat as the whole.");
+define("L_HELP_CMD_20", "Describe what you're doing without refer yourself.");
+
+// message frame
+define("L_NO_MSG", "Geen bericht");
+define("L_TODAY_DWN", "The messages that have been sent today start below");
+define("L_TODAY_UP", "The messages that have been sent today start above");
+
+// message colors
+$TextColors = array(	"Zwart" => "#000000",
+				"Rood" => "#FF0000",
+				"Groen" => "#009900",
+				"Blauw" => "#0000FF",
+				"Paars" => "#990099",
+				"Donker rood" => "#990000",
+				"Donker groen" => "#006600",
+				"Donker blauw" => "#000099",
+				"Maroen" => "#996633",
+				"Zee blauw" => "#006699",
+				"Oranje" => "#F5671B");
+
+// ignored popup
+define("L_IGNOR_TIT", "Niet uitgevoerd");
+define("L_IGNOR_NON", "Geen gegnoreerde gebruiker");
+
+// whois popup
+define("L_WHOIS_ADMIN", "Administrateur");
+define("L_WHOIS_MODER", "Supervisor");
+define("L_WHOIS_USER", "Gebruikers");
+
+// Notification messages of user entrance/exit
+define("L_ENTER_ROM", "%s komt binnen");
+define("L_EXIT_ROM", "%s is uitlogd");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/dutch/regex.txt 0.15.0/chat/localization/dutch/regex.txt
--- 0.14.5/chat/localization/dutch/regex.txt	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/dutch/regex.txt	2004-04-01 03:07:15.000000000 -0600
@@ -0,0 +1 @@
+nl([-_][[:alpha:]]{2})?|dutch
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/english/localized.admin.php 0.15.0/chat/localization/english/localized.admin.php
--- 0.14.5/chat/localization/english/localized.admin.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/english/localized.admin.php	2004-04-01 03:07:17.000000000 -0600
@@ -0,0 +1,61 @@
+<?php
+// File : english.lang.php
+// Original file by Loc Chapeaux <lolo@phpheaven.net> & Dean Collins <joelford@pacbell.net>
+
+// extra header for charset
+$Charset = "iso-8859-1";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// Top frame
+define("A_MENU_0", "Administration for %s");
+define("A_MENU_1", "Registered users");
+define("A_MENU_2", "Banished users");
+define("A_MENU_3", "Clean rooms");
+define("A_MENU_4", "Send mails");
+
+// Frame for registered users
+define("A_SHEET1_1", "List of registered users and their permissions");
+define("A_SHEET1_2", "Username");
+define("A_SHEET1_3", "Permissions");
+define("A_SHEET1_4", "Moderated rooms");
+define("A_SHEET1_5", "Moderated rooms are split by comma (,) without spaces.");
+define("A_SHEET1_6", "Remove checked profiles");
+define("A_SHEET1_7", "Change");
+define("A_SHEET1_8", "There are no registered users except yourself.");
+define("A_SHEET1_9", "Banish checked profiles");
+define("A_SHEET1_10", "Now you have to move to the banished users sheet to refine your choices.");
+define("A_SHEET1_11", "Last connection");
+define("A_USER", "User");
+define("A_MODER", "Moderator");
+define("A_PAGE_CNT", "Page %s of %s");
+
+// Frame for banished users
+define("A_SHEET2_1", "List of banished users and concerned rooms");
+define("A_SHEET2_2", "IP");
+define("A_SHEET2_3", "Concerned rooms");
+define("A_SHEET2_4", "Until");
+define("A_SHEET2_5", "no end");
+define("A_SHEET2_6", "Rooms are separated by commas without spaces (,) if there are less than 4, else the '<B>&nbsp;*&nbsp;</B>' sign<BR>banish from all rooms.");
+define("A_SHEET2_7", "Remove banishment for checked user(s)");
+define("A_SHEET2_8", "There are no banished users.");
+
+// Frame for cleaning rooms
+define("A_SHEET3_1", "List of existing rooms");
+define("A_SHEET3_2", "Clean a \"non-default\" room will also remove all moderator<BR>status for this room.");
+define("A_SHEET3_3", "Clean selected rooms");
+define("A_SHEET3_4", "There are no rooms to clean.");
+
+// Frame for sending mails
+define("A_SHEET4_0", "You haven't set required variables in the<BR>'chat/admin/mail4admin.php' script.");
+define("A_SHEET4_1", "Send e-mails");
+define("A_SHEET4_2", "To:");
+define("A_SHEET4_3", "Select all");
+define("A_SHEET4_4", "Subject:");
+define("A_SHEET4_5", "Messages:");
+define("A_SHEET4_6", "Start sending");
+define("A_SHEET4_7", "All e-mails have been sent.");
+define("A_SHEET4_8", "Internal error while sending the mails.");
+define("A_SHEET4_9", "Addresse(s), subject or message is missing!");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/english/localized.admin.php3 0.15.0/chat/localization/english/localized.admin.php3
--- 0.14.5/chat/localization/english/localized.admin.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/localization/english/localized.admin.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,61 +0,0 @@
-<?php
-// File : english.lang.php3
-// Original file by Loc Chapeaux <lolo@phpheaven.net> & Dean Collins <joelford@pacbell.net>
-
-// extra header for charset
-$Charset = "iso-8859-1";
-
-// medium font size in pt.
-$FontSize = 10;
-
-// Top frame
-define("A_MENU_0", "Administration for %s");
-define("A_MENU_1", "Registered users");
-define("A_MENU_2", "Banished users");
-define("A_MENU_3", "Clean rooms");
-define("A_MENU_4", "Send mails");
-
-// Frame for registered users
-define("A_SHEET1_1", "List of registered users and their permissions");
-define("A_SHEET1_2", "Username");
-define("A_SHEET1_3", "Permissions");
-define("A_SHEET1_4", "Moderated rooms");
-define("A_SHEET1_5", "Moderated rooms are split by comma (,) without spaces.");
-define("A_SHEET1_6", "Remove checked profiles");
-define("A_SHEET1_7", "Change");
-define("A_SHEET1_8", "There are no registered users except yourself.");
-define("A_SHEET1_9", "Banish checked profiles");
-define("A_SHEET1_10", "Now you have to move to the banished users sheet to refine your choices.");
-define("A_SHEET1_11", "Last connection");
-define("A_USER", "User");
-define("A_MODER", "Moderator");
-define("A_PAGE_CNT", "Page %s of %s");
-
-// Frame for banished users
-define("A_SHEET2_1", "List of banished users and concerned rooms");
-define("A_SHEET2_2", "IP");
-define("A_SHEET2_3", "Concerned rooms");
-define("A_SHEET2_4", "Until");
-define("A_SHEET2_5", "no end");
-define("A_SHEET2_6", "Rooms are separated by commas without spaces (,) if there are less than 4, else the '<B>&nbsp;*&nbsp;</B>' sign<BR>banish from all rooms.");
-define("A_SHEET2_7", "Remove banishment for checked user(s)");
-define("A_SHEET2_8", "There are no banished users.");
-
-// Frame for cleaning rooms
-define("A_SHEET3_1", "List of existing rooms");
-define("A_SHEET3_2", "Clean a \"non-default\" room will also remove all moderator<BR>status for this room.");
-define("A_SHEET3_3", "Clean selected rooms");
-define("A_SHEET3_4", "There are no rooms to clean.");
-
-// Frame for sending mails
-define("A_SHEET4_0", "You haven't set required variables in the<BR>'chat/admin/mail4admin.php3' script.");
-define("A_SHEET4_1", "Send e-mails");
-define("A_SHEET4_2", "To:");
-define("A_SHEET4_3", "Select all");
-define("A_SHEET4_4", "Subject:");
-define("A_SHEET4_5", "Messages:");
-define("A_SHEET4_6", "Start sending");
-define("A_SHEET4_7", "All e-mails have been sent.");
-define("A_SHEET4_8", "Internal error while sending the mails.");
-define("A_SHEET4_9", "Addresse(s), subject or message is missing!");
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/english/localized.chat.php 0.15.0/chat/localization/english/localized.chat.php
--- 0.14.5/chat/localization/english/localized.chat.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/english/localized.chat.php	2004-04-01 03:07:17.000000000 -0600
@@ -0,0 +1,220 @@
+<?php
+// File : english.lang.php
+// Original file by Nicolas Hoizey <nhoizey@phpheaven.net>
+
+// extra header for charset
+$Charset = "iso-8859-1";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// welcome page
+define("L_TUTORIAL", "Tutorial");
+
+define("L_WEL_1", "Messages are deleted after");
+define("L_WEL_2", "hours and usernames after");
+define("L_WEL_3", "minutes ...");
+
+define("L_CUR_1", "There are currently");
+define("L_CUR_2", "in the chat.");
+define("L_CUR_3", "Users currently in the chat rooms");
+define("L_CUR_4", "users in private rooms");
+
+define("L_SET_1", "Please set ...");
+define("L_SET_2", "your username");
+define("L_SET_3", "the number of messages to display");
+define("L_SET_4", "the timeout between each update");
+define("L_SET_5", "Select a chat room ...");
+define("L_SET_6", "default rooms");
+define("L_SET_7", "Make your choice ...");
+define("L_SET_8", "public rooms created by users");
+define("L_SET_9", "create your own");
+define("L_SET_10", "public");
+define("L_SET_11", "private");
+define("L_SET_12", "room");
+define("L_SET_13", "Then, just");
+define("L_SET_14", "chat");
+
+define("L_SRC", "is freely available on");
+
+define("L_SECS", "seconds");
+define("L_MIN", "minute");
+define("L_MINS", "minutes");
+
+// registration stuff:
+define("L_REG_1", "your password");
+define("L_REG_1r", "(only if you are registered)");
+define("L_REG_2", "Account management");
+define("L_REG_3", "Register");
+define("L_REG_4", "Edit your profile");
+define("L_REG_5", "Delete user");
+define("L_REG_6", "User registration");
+define("L_REG_7", "your password");
+define("L_REG_8", "your e-mail");
+define("L_REG_9", "You have successfully registered.");
+define("L_REG_10", "Back");
+define("L_REG_11", "Editing");
+define("L_REG_12", "Modifying user's informations");
+define("L_REG_13", "Deleting user");
+define("L_REG_14", "Login");
+define("L_REG_15", "Log In");
+define("L_REG_16", "Change");
+define("L_REG_17", "Your profile was successfully updated.");
+define("L_REG_18", "You have been kicked out of the room by a moderator.");
+define("L_REG_19", "Do you really want to be removed ?");
+define("L_REG_20", "Yes");
+define("L_REG_21", "You have been successfully removed.");
+define("L_REG_22", "No");
+define("L_REG_25", "Close");
+define("L_REG_30", "firstname");
+define("L_REG_31", "lastname");
+define("L_REG_32", "WEB");
+define("L_REG_33", "show e-mail in public information");
+define("L_REG_34", "Editing user profile");
+define("L_REG_35", "Administration");
+define("L_REG_36", "spoken languages");
+define("L_REG_37", "Fields with a <span class=\"error\">*</span> must be completed.");
+define("L_REG_39", "The room you were in has been removed by the administrator.");
+define("L_REG_45", "gender");
+define("L_REG_46", "male");
+define("L_REG_47", "Female");
+
+// e-mail validation stuff
+define("L_EMAIL_VAL_1", "Your settings to enter the chat");
+define("L_EMAIL_VAL_2", "Welcome to our chat server.");
+define("L_EMAIL_VAL_Err", "Internal error, please contact the administrator: <a href=\"mailto:%s\">%s</a>.");
+define("L_EMAIL_VAL_Done", "Your password has been sent to your<BR>e-mail address.");
+
+// admin stuff
+define("L_ADM_1", "%s is no longer a moderator for this room.");
+define("L_ADM_2", "You're no longer a registered user.");
+
+// error messages
+define("L_ERR_USR_1", "This username is already in use. Please chose another.");
+define("L_ERR_USR_2", "You must chose a username.");
+define("L_ERR_USR_3", "This username is registered. Please type your password or chose another username.");
+define("L_ERR_USR_4", "You typed a incorrect password.");
+define("L_ERR_USR_5", "You must type your username.");
+define("L_ERR_USR_6", "You must type your password.");
+define("L_ERR_USR_7", "You must type your e-mail.");
+define("L_ERR_USR_8", "You must type a correct e-mail address.");
+define("L_ERR_USR_9", "This username is already in use.");
+define("L_ERR_USR_10", "Wrong username or password.");
+define("L_ERR_USR_11", "You must be administrator.");
+define("L_ERR_USR_12", "You are the administrator, so you cannot be removed.");
+define("L_ERR_USR_13", "To create your own room you must be registered.");
+define("L_ERR_USR_14", "You must be registered before chatting.");
+define("L_ERR_USR_15", "You must type your full name.");
+define("L_ERR_USR_16", "Username cannot contain spaces, commas or backslashes (\\).");
+define("L_ERR_USR_17", "This room doesn't exist, and you are not allowed to create one.");
+define("L_ERR_USR_18", "Banished word found in your username.");
+define("L_ERR_USR_19", "You cannot be in more than one room at the same time.");
+define("L_ERR_USR_20", "You have been banished from this room or from the chat.");
+define("L_ERR_ROM_1", "Room's name cannot contain commas or backslashes (\\).");
+define("L_ERR_ROM_2", "Banished word found in the room's name you want to create.");
+define("L_ERR_ROM_3", "This room already exists as a public one.");
+define("L_ERR_ROM_4", "Invalid room name.");
+
+// users frame or popup
+define("L_EXIT", "Exit");
+define("L_DETACH", "Detach");
+define("L_EXPCOL_ALL", "Expand/Collapse All");
+define("L_CONN_STATE", "Connection state");
+define("L_CHAT", "Chat");
+define("L_USER", "user");
+define("L_USERS", "users");
+define("L_NO_USER", "No user");
+define("L_ROOM", "room");
+define("L_ROOMS", "rooms");
+define("L_EXPCOL", "Expand/Collapse room");
+define("L_BEEP", "Beep/no beep at user entrance");
+define("L_PROFILE", "Display profile");
+define("L_NO_PROFILE", "No profile");
+
+// input frame
+define("L_HLP", "Help");
+define("L_BAD_CMD", "This is not a valid command!");
+define("L_ADMIN", "%s is already the administrator!");
+define("L_IS_MODERATOR", "%s is already a moderator!");
+define("L_NO_MODERATOR", "Only a moderator of this room can use this command.");
+define("L_MODERATOR", "%s is now a moderator for this room.");
+define("L_NONEXIST_USER", "User %s isn't in the current room.");
+define("L_NONREG_USER", "User %s isn't registered.");
+define("L_NONREG_USER_IP", "His IP is: %s.");
+define("L_NO_KICKED", "User %s is a moderator or the administrator and can't be kicked away.");
+define("L_KICKED", "User %s has successfully been kicked away.");
+define("L_NO_BANISHED", "User %s is a moderator or the administrator and can't be banished.");
+define("L_BANISHED", "User %s has successfully been banished.");
+define("L_SVR_TIME", "Server time: ");
+define("L_NO_SAVE", "No message to save!");
+define("L_NO_ADMIN", "Only the administrator can use this command.");
+define("L_ANNOUNCE", "ANNOUNCE");
+define("L_INVITE", "%s requests that you join her/him into the <a href=\"#\" onClick=\"window.parent.runCmd('%s','%s')\">%s</a> room.");
+define("L_INVITE_REG", " You have to be registered to enter this room.");
+define("L_INVITE_DONE", "Your invitation has been sent to %s.");
+define("L_OK", "Send");
+
+// help popup
+define("L_HELP_TIT_1", "Smilies");
+define("L_HELP_TIT_2", "Text formating for messages");
+define("L_HELP_FMT_1", "You can put bold, italic or underlined text in messages by encasing the applicable sections of your text with either the &lt;B&gt; &lt;/B&gt;, &lt;I&gt; &lt;/I&gt; or &lt;U&gt; &lt;/U&gt; tags.<BR>For example, &lt;B&gt;this text&lt;/B&gt; will produce <B>this text</B>.");
+define("L_HELP_FMT_2", "To create a hyperlink (for e-mail or URL) in your message, simply type the corresponding address without any tag. The hyperlink will be created automatically.");
+define("L_HELP_TIT_3", "Commands");
+define("L_HELP_USR", "user");
+define("L_HELP_MSG", "message");
+define("L_HELP_ROOM", "room");
+define("L_HELP_CMD_0", "{} represents a required setting, [] an optional one.");
+define("L_HELP_CMD_1a", "Set number of messages to show. Minimum and default are 5.");
+define("L_HELP_CMD_1b", "Reload the messages frame and display the n latest messages, minimum and default are 5.");
+define("L_HELP_CMD_2a", "Modify messages list refresh delay (in seconds).<BR>If n is not specified or less than 3, toggles between no refresh and 10s refresh.");
+define("L_HELP_CMD_2b", "Modify messages and users lists refresh delay (in seconds).<BR>If n is not specified or less than 3, toggles between no refresh and 10s refresh.");
+define("L_HELP_CMD_3", "Inverts messages order.");
+define("L_HELP_CMD_4", "Join another room, creating it if it doesn't exist and if you're allowed to.<BR>n equals 0 for private and 1 for public, default to 1 if not specified.");
+define("L_HELP_CMD_5", "Leave the chat after displaying an optionnal message.");
+define("L_HELP_CMD_6", "Avoid diplaying messages from an user if nick is specified.<BR>Set ignoring off for an user when nick and - are both specified, for all users when - is but not nick.<BR>With no option, this command pops up a window that shows all ignored nicks.");
+define("L_HELP_CMD_7", "Recall the previous text typed (command or message).");
+define("L_HELP_CMD_8", "Show/Hide time before messages.");
+define("L_HELP_CMD_9", "Kick away user from the chat. This command can only be used by a moderator.");
+define("L_HELP_CMD_10", "Send a private message to the specified user (other users won't see it).");
+define("L_HELP_CMD_11", "Show informations about specified user.");
+define("L_HELP_CMD_12", "Popup window for editing user's profile.");
+define("L_HELP_CMD_13", "Toggles notifications of user entrance/exit for the current room.");
+define("L_HELP_CMD_14", "Allow the administrator or moderator(s) of the curent room to promote another registered user to moderator for the same room.");
+define("L_HELP_CMD_15", "Clear the messages frame and show only the last 5 messages.");
+define("L_HELP_CMD_16", "Save the last n messages (notifications ones excluded) to an HTML file. If n is not specified, all available messages will be taken into account.");
+define("L_HELP_CMD_17", "Allow the administrator to send an announcement to all users in all chat rooms.");
+define("L_HELP_CMD_18", "Invite an user chatting in an other room join the one you are in.");
+define("L_HELP_CMD_19", "Allow the moderator(s) of a room or the administrator to \"banish\" an user from the room for a time defined by the administrator.<BR>The later can banish an user chatting in an other room than the one he is into and use the '<B>&nbsp;*&nbsp;</B>' setting to banish \"for ever\" an user from the chat as the whole.");
+define("L_HELP_CMD_20", "Describe what you're doing without refer yourself.");
+
+// messages frame
+define("L_NO_MSG", "There is currently no message ...");
+define("L_TODAY_DWN", "The messages that have been sent today start below");
+define("L_TODAY_UP", "The messages that have been sent today start above");
+
+// message colors
+$TextColors = array(	"Black" => "#000000",
+				"Red" => "#FF0000",
+				"Green" => "#009900",
+				"Blue" => "#0000FF",
+				"Purple" => "#9900FF",
+				"Dark red" => "#990000",
+				"Dark green" => "#006600",
+				"Dark blue" => "#000099",
+				"Maroon" => "#996633",
+				"Aqua blue" => "#006699",
+				"Carrot" => "#FF6600");
+
+// ignored popup
+define("L_IGNOR_TIT", "Ignored");
+define("L_IGNOR_NON", "No ignored user");
+
+// whois popup
+define("L_WHOIS_ADMIN", "Administrator");
+define("L_WHOIS_MODER", "Moderator");
+define("L_WHOIS_USER", "User");
+
+// Notification messages of user entrance/exit
+define("L_ENTER_ROM", "%s enters this room");
+define("L_EXIT_ROM", "%s exits from this room");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/english/localized.chat.php3 0.15.0/chat/localization/english/localized.chat.php3
--- 0.14.5/chat/localization/english/localized.chat.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/localization/english/localized.chat.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,220 +0,0 @@
-<?php
-// File : english.lang.php3
-// Original file by Nicolas Hoizey <nhoizey@phpheaven.net>
-
-// extra header for charset
-$Charset = "iso-8859-1";
-
-// medium font size in pt.
-$FontSize = 10;
-
-// welcome page
-define("L_TUTORIAL", "Tutorial");
-
-define("L_WEL_1", "Messages are deleted after");
-define("L_WEL_2", "hours and usernames after");
-define("L_WEL_3", "minutes ...");
-
-define("L_CUR_1", "There are currently");
-define("L_CUR_2", "in the chat.");
-define("L_CUR_3", "Users currently in the chat rooms");
-define("L_CUR_4", "users in private rooms");
-
-define("L_SET_1", "Please set ...");
-define("L_SET_2", "your username");
-define("L_SET_3", "the number of messages to display");
-define("L_SET_4", "the timeout between each update");
-define("L_SET_5", "Select a chat room ...");
-define("L_SET_6", "default rooms");
-define("L_SET_7", "Make your choice ...");
-define("L_SET_8", "public rooms created by users");
-define("L_SET_9", "create your own");
-define("L_SET_10", "public");
-define("L_SET_11", "private");
-define("L_SET_12", "room");
-define("L_SET_13", "Then, just");
-define("L_SET_14", "chat");
-
-define("L_SRC", "is freely available on");
-
-define("L_SECS", "seconds");
-define("L_MIN", "minute");
-define("L_MINS", "minutes");
-
-// registration stuff:
-define("L_REG_1", "your password");
-define("L_REG_1r", "(only if you are registered)");
-define("L_REG_2", "Account management");
-define("L_REG_3", "Register");
-define("L_REG_4", "Edit your profile");
-define("L_REG_5", "Delete user");
-define("L_REG_6", "User registration");
-define("L_REG_7", "your password");
-define("L_REG_8", "your e-mail");
-define("L_REG_9", "You have successfully registered.");
-define("L_REG_10", "Back");
-define("L_REG_11", "Editing");
-define("L_REG_12", "Modifying user's informations");
-define("L_REG_13", "Deleting user");
-define("L_REG_14", "Login");
-define("L_REG_15", "Log In");
-define("L_REG_16", "Change");
-define("L_REG_17", "Your profile was successfully updated.");
-define("L_REG_18", "You have been kicked out of the room by a moderator.");
-define("L_REG_19", "Do you really want to be removed ?");
-define("L_REG_20", "Yes");
-define("L_REG_21", "You have been successfully removed.");
-define("L_REG_22", "No");
-define("L_REG_25", "Close");
-define("L_REG_30", "firstname");
-define("L_REG_31", "lastname");
-define("L_REG_32", "WEB");
-define("L_REG_33", "show e-mail in public information");
-define("L_REG_34", "Editing user profile");
-define("L_REG_35", "Administration");
-define("L_REG_36", "spoken languages");
-define("L_REG_37", "Fields with a <span class=\"error\">*</span> must be completed.");
-define("L_REG_39", "The room you were in has been removed by the administrator.");
-define("L_REG_45", "gender");
-define("L_REG_46", "male");
-define("L_REG_47", "Female");
-
-// e-mail validation stuff
-define("L_EMAIL_VAL_1", "Your settings to enter the chat");
-define("L_EMAIL_VAL_2", "Welcome to our chat server.");
-define("L_EMAIL_VAL_Err", "Internal error, please contact the administrator: <a href=\"mailto:%s\">%s</a>.");
-define("L_EMAIL_VAL_Done", "Your password has been sent to your<BR>e-mail address.");
-
-// admin stuff
-define("L_ADM_1", "%s is no longer a moderator for this room.");
-define("L_ADM_2", "You're no longer a registered user.");
-
-// error messages
-define("L_ERR_USR_1", "This username is already in use. Please chose another.");
-define("L_ERR_USR_2", "You must chose a username.");
-define("L_ERR_USR_3", "This username is registered. Please type your password or chose another username.");
-define("L_ERR_USR_4", "You typed a incorrect password.");
-define("L_ERR_USR_5", "You must type your username.");
-define("L_ERR_USR_6", "You must type your password.");
-define("L_ERR_USR_7", "You must type your e-mail.");
-define("L_ERR_USR_8", "You must type a correct e-mail address.");
-define("L_ERR_USR_9", "This username is already in use.");
-define("L_ERR_USR_10", "Wrong username or password.");
-define("L_ERR_USR_11", "You must be administrator.");
-define("L_ERR_USR_12", "You are the administrator, so you cannot be removed.");
-define("L_ERR_USR_13", "To create your own room you must be registered.");
-define("L_ERR_USR_14", "You must be registered before chatting.");
-define("L_ERR_USR_15", "You must type your full name.");
-define("L_ERR_USR_16", "Username cannot contain spaces, commas or backslashes (\\).");
-define("L_ERR_USR_17", "This room doesn't exist, and you are not allowed to create one.");
-define("L_ERR_USR_18", "Banished word found in your username.");
-define("L_ERR_USR_19", "You cannot be in more than one room at the same time.");
-define("L_ERR_USR_20", "You have been banished from this room or from the chat.");
-define("L_ERR_ROM_1", "Room's name cannot contain commas or backslashes (\\).");
-define("L_ERR_ROM_2", "Banished word found in the room's name you want to create.");
-define("L_ERR_ROM_3", "This room already exists as a public one.");
-define("L_ERR_ROM_4", "Invalid room name.");
-
-// users frame or popup
-define("L_EXIT", "Exit");
-define("L_DETACH", "Detach");
-define("L_EXPCOL_ALL", "Expand/Collapse All");
-define("L_CONN_STATE", "Connection state");
-define("L_CHAT", "Chat");
-define("L_USER", "user");
-define("L_USERS", "users");
-define("L_NO_USER", "No user");
-define("L_ROOM", "room");
-define("L_ROOMS", "rooms");
-define("L_EXPCOL", "Expand/Collapse room");
-define("L_BEEP", "Beep/no beep at user entrance");
-define("L_PROFILE", "Display profile");
-define("L_NO_PROFILE", "No profile");
-
-// input frame
-define("L_HLP", "Help");
-define("L_BAD_CMD", "This is not a valid command!");
-define("L_ADMIN", "%s is already the administrator!");
-define("L_IS_MODERATOR", "%s is already a moderator!");
-define("L_NO_MODERATOR", "Only a moderator of this room can use this command.");
-define("L_MODERATOR", "%s is now a moderator for this room.");
-define("L_NONEXIST_USER", "User %s isn't in the current room.");
-define("L_NONREG_USER", "User %s isn't registered.");
-define("L_NONREG_USER_IP", "His IP is: %s.");
-define("L_NO_KICKED", "User %s is a moderator or the administrator and can't be kicked away.");
-define("L_KICKED", "User %s has successfully been kicked away.");
-define("L_NO_BANISHED", "User %s is a moderator or the administrator and can't be banished.");
-define("L_BANISHED", "User %s has successfully been banished.");
-define("L_SVR_TIME", "Server time: ");
-define("L_NO_SAVE", "No message to save!");
-define("L_NO_ADMIN", "Only the administrator can use this command.");
-define("L_ANNOUNCE", "ANNOUNCE");
-define("L_INVITE", "%s requests that you join her/him into the <a href=\"#\" onClick=\"window.parent.runCmd('%s','%s')\">%s</a> room.");
-define("L_INVITE_REG", " You have to be registered to enter this room.");
-define("L_INVITE_DONE", "Your invitation has been sent to %s.");
-define("L_OK", "Send");
-
-// help popup
-define("L_HELP_TIT_1", "Smilies");
-define("L_HELP_TIT_2", "Text formating for messages");
-define("L_HELP_FMT_1", "You can put bold, italic or underlined text in messages by encasing the applicable sections of your text with either the &lt;B&gt; &lt;/B&gt;, &lt;I&gt; &lt;/I&gt; or &lt;U&gt; &lt;/U&gt; tags.<BR>For example, &lt;B&gt;this text&lt;/B&gt; will produce <B>this text</B>.");
-define("L_HELP_FMT_2", "To create a hyperlink (for e-mail or URL) in your message, simply type the corresponding address without any tag. The hyperlink will be created automatically.");
-define("L_HELP_TIT_3", "Commands");
-define("L_HELP_USR", "user");
-define("L_HELP_MSG", "message");
-define("L_HELP_ROOM", "room");
-define("L_HELP_CMD_0", "{} represents a required setting, [] an optional one.");
-define("L_HELP_CMD_1a", "Set number of messages to show. Minimum and default are 5.");
-define("L_HELP_CMD_1b", "Reload the messages frame and display the n latest messages, minimum and default are 5.");
-define("L_HELP_CMD_2a", "Modify messages list refresh delay (in seconds).<BR>If n is not specified or less than 3, toggles between no refresh and 10s refresh.");
-define("L_HELP_CMD_2b", "Modify messages and users lists refresh delay (in seconds).<BR>If n is not specified or less than 3, toggles between no refresh and 10s refresh.");
-define("L_HELP_CMD_3", "Inverts messages order.");
-define("L_HELP_CMD_4", "Join another room, creating it if it doesn't exist and if you're allowed to.<BR>n equals 0 for private and 1 for public, default to 1 if not specified.");
-define("L_HELP_CMD_5", "Leave the chat after displaying an optionnal message.");
-define("L_HELP_CMD_6", "Avoid diplaying messages from an user if nick is specified.<BR>Set ignoring off for an user when nick and - are both specified, for all users when - is but not nick.<BR>With no option, this command pops up a window that shows all ignored nicks.");
-define("L_HELP_CMD_7", "Recall the previous text typed (command or message).");
-define("L_HELP_CMD_8", "Show/Hide time before messages.");
-define("L_HELP_CMD_9", "Kick away user from the chat. This command can only be used by a moderator.");
-define("L_HELP_CMD_10", "Send a private message to the specified user (other users won't see it).");
-define("L_HELP_CMD_11", "Show informations about specified user.");
-define("L_HELP_CMD_12", "Popup window for editing user's profile.");
-define("L_HELP_CMD_13", "Toggles notifications of user entrance/exit for the current room.");
-define("L_HELP_CMD_14", "Allow the administrator or moderator(s) of the curent room to promote another registered user to moderator for the same room.");
-define("L_HELP_CMD_15", "Clear the messages frame and show only the last 5 messages.");
-define("L_HELP_CMD_16", "Save the last n messages (notifications ones excluded) to an HTML file. If n is not specified, all available messages will be taken into account.");
-define("L_HELP_CMD_17", "Allow the administrator to send an announcement to all users in all chat rooms.");
-define("L_HELP_CMD_18", "Invite an user chatting in an other room join the one you are in.");
-define("L_HELP_CMD_19", "Allow the moderator(s) of a room or the administrator to \"banish\" an user from the room for a time defined by the administrator.<BR>The later can banish an user chatting in an other room than the one he is into and use the '<B>&nbsp;*&nbsp;</B>' setting to banish \"for ever\" an user from the chat as the whole.");
-define("L_HELP_CMD_20", "Describe what you're doing without refer yourself.");
-
-// messages frame
-define("L_NO_MSG", "There is currently no message ...");
-define("L_TODAY_DWN", "The messages that have been sent today start below");
-define("L_TODAY_UP", "The messages that have been sent today start above");
-
-// message colors
-$TextColors = array(	"Black" => "#000000",
-				"Red" => "#FF0000",
-				"Green" => "#009900",
-				"Blue" => "#0000FF",
-				"Purple" => "#9900FF",
-				"Dark red" => "#990000",
-				"Dark green" => "#006600",
-				"Dark blue" => "#000099",
-				"Maroon" => "#996633",
-				"Aqua blue" => "#006699",
-				"Carrot" => "#FF6600");
-
-// ignored popup
-define("L_IGNOR_TIT", "Ignored");
-define("L_IGNOR_NON", "No ignored user");
-
-// whois popup
-define("L_WHOIS_ADMIN", "Administrator");
-define("L_WHOIS_MODER", "Moderator");
-define("L_WHOIS_USER", "User");
-
-// Notification messages of user entrance/exit
-define("L_ENTER_ROM", "%s enters this room");
-define("L_EXIT_ROM", "%s exits from this room");
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/english/localized.tutorial.php 0.15.0/chat/localization/english/localized.tutorial.php
--- 0.14.5/chat/localization/english/localized.tutorial.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/english/localized.tutorial.php	2004-04-01 03:07:17.000000000 -0600
@@ -0,0 +1,634 @@
+<?php
+// File : english.tutorial.php
+// Original file by Sharif Islam <mislam@students.uiuc.edu> & Jessica Gibson <oram@uiuc.edu>
+// & Dean Collins <joelford@pacbell.net>
+
+// Get the names and values for vars sent by the script that called this one
+if (isset($HTTP_GET_VARS))
+{
+	while(list($name,$value) = each($HTTP_GET_VARS))
+	{
+		$$name = $value;
+	};
+};
+?>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+
+<HEAD>
+<TITLE>English Tutorial for <?php echo(APP_NAME." - ".APP_VERSION); ?></TITLE>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+<STYLE>
+A.topLink
+{
+	text-decoration: underline;
+	color: #0000C0;
+}
+
+A.topLink:hover, A.topLink:active
+{
+	color: #FF9900;
+	text-decoration: none;
+	font-weight: 800;
+}
+
+.redText
+{
+	font-weight: 800;
+	color: #FF0000;
+}
+</STYLE>
+</HEAD>
+
+<BODY BGCOLOR="#CCCCFF">
+<!-- Remove this  in translation files -->
+<?php
+if(isset($NoTranslation)) echo($NoTranslation."\n");
+?>
+<!-- End of the  to be removed in translation files -->
+
+<P><A NAME="top"></P>
+<TABLE BORDER="5" CELLPADDING="5">
+<TR>
+	<TD><FONT SIZE="+2">Contents of this Tutorial</FONT></TD>
+</TR>
+</TABLE><BR>
+
+<P CLASS="redText">
+Warning: Netscape users must define their language as the default encoding or else each character in messages will be replace by a '?'.<BR>
+This can be done as follows: View/CharacterSet/your language Auto-Detect, then View/CharacterSet/SetDefault.
+</P>
+
+<?php
+if (C_MULTI_LANG == "1") 
+{
+	?>
+	<A HREF="#language" CLASS="topLink">Choosing a language</A><BR>
+	<?php
+}
+?>
+<A HREF="#login" CLASS="topLink">Logging into the Chat</A><BR>
+<A HREF="#register" CLASS="topLink">Registering</A><BR>
+<A HREF="#modProfile" CLASS="topLink">Modifying<?php if (C_SHOW_DEL_PROF == "1") echo("/deleting"); ?> your profile</A><BR>
+<?php
+if (C_VERSION == "2") 
+{
+	?>
+	<A HREF="#create_room" CLASS="topLink">Creating a room</A><BR>
+	<?php
+};
+if ($Ver == "H") 
+{
+	?>
+	<A HREF="#connection_state" CLASS="topLink">Understanding connection state</A><BR>
+	<?php
+};
+?>
+<A HREF="#sending" CLASS="topLink">Sending a Message</A><BR>
+<A HREF="#users_list" CLASS="topLink">Understanding the users list</A><BR>
+<A HREF="#exit" CLASS="topLink">Leaving the chat room</A><BR>
+<A HREF="#users_popup" CLASS="topLink">Knowing who is chatting without being logged in</A><BR>
+<P>
+<A HREF="#customize" CLASS="topLink">Customizing the Chat View</A><BR>
+<P>
+<A HREF="#commands" CLASS="topLink">Features and Commands:</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#help" CLASS="topLink">Help command</A><BR>
+<?php
+if (C_USE_SMILIES == "1")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#smilies" CLASS="topLink">Graphical smilies</A><BR>
+	<?php
+};
+if (C_HTML_TAGS_KEEP != "none")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#text" CLASS="topLink">Text Formatting</A><BR>
+	<?php
+};
+?>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#invite" CLASS="topLink">Invite an user to join your current chat room</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#changeroom" CLASS="topLink">Changing from one chat room to another</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#private" CLASS="topLink">Private Messages</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#actions" CLASS="topLink">Actions</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#ignore" CLASS="topLink">Ignoring other Users</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#whois" CLASS="topLink">Getting Public Information about other Users</A><BR>
+<?php
+if (C_SAVE != "0")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#save" CLASS="topLink">Save messages</A><BR>
+	<?php
+};
+?>
+<P>
+<A HREF="#moderator" CLASS="topLink">Special commands for moderators and/or the administrator:</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#announce" CLASS="topLink">Send an announcement</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#kick" CLASS="topLink">Kicking an user</A><BR>
+<?php
+if (C_BANISH != "0")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#banish" CLASS="topLink">Banish an user</A><BR>
+	<?php
+};
+?>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#promote" CLASS="topLink">Promote an user to moderator</A><BR>
+<P>
+<HR>
+<HR>
+
+
+<?php
+if (C_MULTI_LANG == "1") 
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="language"><B>Choosing a language:</B></A></FONT>
+	<P>
+	You may choose a language among those in which <?php echo(APP_NAME); ?> have been translated by clicking on one of the flags at the start page. In the example bellow, an user selects the French language:
+	<P ALIGN="center">
+	<IMG SRC="images/tutorials/flags.gif" HEIGHT="44" WIDTH="424" ALT="Flags for language selection">
+	<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
+	<HR>
+	<?php
+}
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="login"><B>Login:</B></A></FONT>
+<P>
+If you have already registered, simply log in by entering your username and password. Then select which chat room you would like to enter and press the Chat button.<BR>
+<?php
+if (C_REQUIRE_REGISTER == "1")
+{
+	?>
+	<P>
+	Else you have to <A HREF="#register">register</A> first.
+	<?php
+}
+else
+{
+	?>
+	<P>
+	Else you can <A HREF="#register">register</A> first or simply enter a room but your nick won't be reserved (an other user may use the same nick once you have logged out).
+	<?php
+}
+?>
+<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="register"><B>To Register:</B></A></FONT> 
+<P>
+If you have not yet registered<?php if (C_REQUIRE_REGISTER == "0") echo("and would like to"); ?>, please choose the registration option. A small pop-up window will appear.
+<P>	
+<UL>
+	<LI>First, create a username<?php if (!C_EMAIL_PASWD) echo(" and a password"); ?> for yourself by typing it into the appropriate boxes. The username you choose is the name that will be automatically displayed in the chat room. It cannot contain spaces, commas or backslashes (\).
+<?php if (C_NO_SWEAR == "1") echo(" It can not contain \"swear words\"."); ?>
+	<LI>Second, please enter your first name, last name, and your email address. In order to register to chat, all of this information must be provided. The gender information is optional. 
+	<LI>If you have a homepage, you may enter the URL into the box.
+	<LI>The language field may help other users in future discussions. They will know which language(s) you understand.
+	<LI>Lastly, if you wish to allow your email address to be viewed by other participants, please check the box next to "show e-mail in public information". If
+you do not want your e-mail address to be viewable, leave the box unchecked.
+	<LI>Then, press the Register button and your account will be created. If you wish to stop at any time without registering, press the Close button.
+</UL>
+<P>
+<A NAME="modProfile"></A>Of course, registered users would be able to modify<?php if (C_SHOW_DEL_PROF == "1") echo("/delete"); ?> their own profile by clicking on the appropriate <?php echo((C_SHOW_DEL_PROF == "0" ? "link" : "links")); ?>.<BR>
+<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
+<P>
+<HR>
+
+<?php
+if (C_VERSION == "2") 
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="create_room"><B>To create a room:</B></A></FONT> 
+	<P>
+	Registered users can create rooms. Private ones can only be accessed by users who know their name and will never been displayed except for users that are in.<BR>
+	<P>
+	Room's name cannot contain comma or backslash (\).<?php if (C_NO_SWEAR == "1") echo(" It can no more contains \"swear words\"."); ?>
+	<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
+	<P>
+	<HR>
+	<?php
+};
+if ($Ver == "H")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="connection_state"><B>Understanding connection state:</B></A></FONT> 
+	<P>
+	A sign representing your connection state is dipslayed at the top-right corner of the screen. It may take three forms :
+	<P>	
+	<UL>
+		<LI><IMG SRC="images/connectOff.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="No connection"> when no connection is required ;
+		<LI><IMG SRC="images/connectOn.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Connecting"> when there is a connection in progress ;
+		<LI><IMG SRC="images/connectError.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Connection failed"> when a connection failed.
+	</UL>
+	<P>
+	In the third case, clicking on the red "button" will launch a new connection attempt.
+	<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="sending"><B>Sending messages:</B></A></FONT> 
+<P>
+To post a message to the chat room, type your text into the text box in the lower left corner and then press the Enter/Return key to send it. Messages from all users scroll in the chat box.<BR>
+<?php if (C_NO_SWEAR == "1") echo("Note that \"swear words\" are skipped from messages."); ?>
+<P>
+You may change the color of the text of your messages by choosing a new color from the list of choices to the right of the text box.
+<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="users_list"><B>Understanding the users list (not for users popup window):</B></A></FONT> 
+<P>
+<OL>
+	Two basic rules have been defined for the users list:<BR>
+	<LI>a little icon that shows gender is displayed before the nick of a registered user (clicking on it will launch the <A HREF="#whois">whois popup</A> for this user), while unregistered users have nothing but blank spaces displayed before their nick;<BR>
+	<LI>the nick of the administrator or of a moderator is italicized.
+</OL>
+<P><I>For example</I>, from the snapshot bellow you can conclude that:
+<TABLE BORDER=0 CELLSPACING=10>
+<TR>
+	<TD>
+		<IMG SRC="images/tutorials/usersList.gif" WIDTH=128 HEIGHT=145 BORDER=0 ALT="users list">
+	</TD>
+	<TD>
+	<UL>
+		<LI>Nicolas is the admin or one of the moderators of the phpMyChat room;<BR><BR>
+		<LI>alien (whose gender is unknown), Jezek2 and Caridad are registered users with no extra "power" for the phpMyChat room;<BR><BR>
+		<LI>lolo is a simple unregistered user.
+	</UL>
+	</TD>
+</TR>
+</TABLE>
+<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="exit"><B>Leaving the chat room:</B></A></FONT>
+<P>
+To exit the chat, simply click once on "Exit". Alternatively, you may also enter the one of the following commands into your text box:<BR>
+/exit<BR>
+/bye<BR>
+/quit
+These commands may be completed with a message to be sent before you leave the chat room.
+<I>For example :</I> /quit CU soon!
+<P>
+will sent the message "CU soon!" in the main frame then log you out.
+
+<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="users_popup"><B>Knowing who is chatting without being logged in:</B></A></FONT> 
+<P>
+You may click on the link that shows the number of connected users at the start page, or, if you are chatting, click on the image <IMG SRC="images/popup.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Users popup"> at the top-right of the screen to open a independent window that will display the list of connected users, and the rooms they are in, in near real time.<BR>
+The title of this window contains the usernames, if they are less than three, the numbers of users and opened rooms else.
+<P>
+Clicking on the <IMG SRC="images/sound.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Beeps"> icon at the top of this popup will enable/disable beeping sounds at user entrance.
+<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
+<P>
+<HR>
+<HR>
+
+
+<P>
+<FONT SIZE="+1"><A NAME="customize"><B>Customizing the Chat View:</B></A></FONT>
+<P>
+There are many different ways to customize the look of the Chat. To change settings, simply type the appropriate command into your text box and press the Enter/Return key.
+<P>
+<UL>
+	<?php
+	if ($Ver == "H")
+	{
+		?>
+		<LI>The <B>Clear command</B> allows you to clean the main chat screen and display the last 5 messages sent on your screen.<BR>Type "/clear" without quotes.
+		<P>
+		<?php
+	}
+	else
+	{
+		?>
+		<LI>The <B>Order command</B> allows you to toggle between having new messages appear at the top of the screen or at the bottom.<BR>Type "/order" without quotes.
+		<P>
+		<?php
+	};
+	?>
+	<LI>The <B>Notify command</B> allows you to toggle on or off the option of seeing the notices when other users enter or exit the chat room. By default this option is <?php echo(C_NOTIFY ? "on" : "off"); ?> and the notices <?php echo(C_NOTIFY ? "will" : "won't"); ?> be seen.<BR>Type "/notify" without quotes.
+	<P>
+	<LI>The <B>Timestamp command</B> allows you to toggle on or off the option of seeing the time the message was posted before each message and the server time in the status bar. By default this option is <?php echo(C_SHOW_TIMESTAMP ? "on" : "off"); ?>.<BR>Type "/timestamp" without quotes.
+	<P>
+	<LI>The <B>Refresh command</B> allows you to adjust the rate at which the posted message are refreshed on your screen. The default rate is currently <?php echo(C_MSG_REFRESH); ?> seconds. To change the rate type "/refresh n" without quotes where n is the time in seconds of the new refresh rate.
+	<P>
+	<I>For example:</I> /refresh 5
+	<P>
+	will change the rate to 5 seconds. *Beware, if n is set to less than 3, the refresh is reset not to refresh at all (usefull when you want to read lots of old messages without being disturbed)!*
+	<P>
+	<?php
+	if ($Ver == "L")
+	{
+		?>
+		<LI>The <B>Show command</B> allows you to adjust the number of messages viewable on your screen. To change the default number, type "/show n" without quotes where n is the number of viewable messages.
+		<P>
+		<I>For example:</I> /show 50
+		<P>
+		will cause the 50 newest messages to be viewable on your screen. If all of the messages cannot be displayed within the message box, a scroll bar will appear on the right side of the message box.</UL>
+		<?php
+	}
+	else
+	{
+		?>
+		<LI>The <B>Show and Last commands</B> allow you to clean the screen and display the last <I>n</I> messages sent on your screen. Type "/show n" or "/last n" without quotes where n is the number of viewable messages.
+		<P>
+		<I>For example:</I> /show 50 or /last 50
+		<P>
+		will clean the message frame and cause the 50 newest messages to be viewable on your screen. If all of the messages cannot be displayed within the message box, a scroll bar will appear on the right side of the message box.</UL>
+		<?php
+	};
+	?>
+	<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
+	<P>
+</UL>
+<HR>
+<HR>
+
+
+<P>
+<FONT SIZE="+2"><A NAME="commands"><B><U>Features and Commands</U></B></A></FONT> 
+<P>
+
+<FONT SIZE="+1"><A NAME="help"><B>Help command:</B></A></FONT>
+<P>
+Once inside a chat room, you can lauch a help popup by clicking on the <IMG SRC="images/helpOff.gif" WIDTH=15 HEIGHT=15 BORDER=0 ALT="?"> image that sits just before the message box. You can also type the <B>"/help" or "/?" commands</B> in the message box.
+<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
+<P>
+<P>
+<HR>
+
+<?php
+if (C_USE_SMILIES == "1")
+{
+	include("./lib/smilies.lib.php");
+	$Nb = count($SmiliesTbl);
+	$ResultTbl = Array();
+	DisplaySmilies($ResultTbl,$SmiliesTbl,$Nb,"tutorial");
+	unset($SmiliesTbl);
+	?>
+	<FONT SIZE="+1"><A NAME="smilies"><B>Smilies:</B></A></FONT>
+	<P>You may have graphical smilies inside your messages. See bellow the code you have to type into a message to obtain each one of these similes.
+	<P ALIGN="center">
+	<TABLE BORDER=0 CELLPADDING=3 CELLSPACING=5>
+	<?php
+	$i = "0";
+	$Nb = count($ResultTbl);
+	while($i < $Nb)
+	{
+		if ($i > 0) echo("\t");
+		echo("<TR VALIGN=\"BOTTOM\">\n");
+		echo("$ResultTbl[$i]");
+		echo("\t</TR>\n\t<TR>\n");
+		$i++;
+		echo("$ResultTbl[$i]");
+		echo("\t</TR>\n");
+		$i++;
+	};
+	unset($ResultTbl);
+	?>
+	</TABLE>
+	<P>
+	<I>For example</I>, sending the text "Hi Jack :)" without quote will display the message Hi Jack <IMG SRC="images/smilies/smile1.gif" WIDTH=15 HEIGHT=15 ALT=":)"> in the main frame.
+	<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
+	<P>
+	<HR>
+	<?php
+};
+
+if (C_HTML_TAGS_KEEP != "none")
+{
+	?>
+	<FONT SIZE="+1"><A NAME="text"><B>Text Formatting:</B></A></FONT>
+	<P>
+	Text can be bolded, italicized or underlined by encasing the applicable sections of your text with either the &LT;B&GT; &LT;/B&GT, &LT;I&GT; &LT;/I&GT; or &LT;U&GT; &LT;/U&GT HTML tags.
+	<P>
+	<I>For example</I>, &LT;B&GT;this text&LT;/B&GT; will produce <B>this text</B>.
+	<P>
+	To create a hyperlink for an e-mail address or URL, type the address (without any HTML tags). The hyperlink will be created automatically.
+	<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
+	<P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="invite"><B>Invite someone to join your current chat room:</B></A></FONT>
+<P>
+You can use the <B>invite command</B> to invite an user to join the room you are chatting in.
+<P>
+<I>For example:</I> /invite Jack 
+<P>
+will send a private message to Jack suggesting him to join you in your current chat room. This message contains the name of the target room and this name appears as a link.
+<P>
+Note that you can put more than one username in the invite command (eg "/invite Jack,Helen,Alf"). They must be splitted by comma (,) without spaces.
+<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="changeroom"><B>Changing rooms:</B></A></FONT>
+<P>
+The list to the right of the screen provides a list of chat rooms and the users who are currently in that room. To leave the room you are in and move into one of those rooms, simply click once on the name of that room. Empty rooms do not appear on this list. You may move into an empty room by typing the <B>command "/join #roomname"</B> without quotes.
+<P>
+<I>For example:</I> /join #RedRoom 
+<P>
+will move you into the RedRoom.
+<?php
+if (C_VERSION == "2")
+{
+	echo(C_REQUIRE_REGISTER == "0" ? "<P>If you're a registered user, you" : "<BR><P>You");
+	?>
+	 may also create a new room with this same command. But then you have to specify its type: 0 stands for private, 1 for public (default value).
+	<P>
+	<I>For example:</I> /join 0 #MyRoom 
+	<P>
+	will create a new private room (assuming a public one has not already been created with that name) called MyRoom and move you into it.
+	<P>
+	Room's name cannot contain comma or backslash (\).<?php if (C_NO_SWEAR == "1") echo(" It can no more contains \"swear words\"."); ?>
+	<?php
+}
+?>
+<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B>Modifying his own profile inside the chat:</B></FONT>
+<P>
+The <B>Profile command</B> creates a separate pop-up window in which you can edit your user profile and modify it except your nick and password (you have to use the link at the start page to do this).<BR>Type /profile
+<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B>Recalling the last message or command you have submitted:</B></FONT>
+<P>
+The <B>! command</B> recalls the last message or command you have submitted.<BR>Type /!
+<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B>Responding to a specific user:</B></FONT>
+<P>
+Clicking once on the name of another user from the list (to the right of the screen) will cause their "username>" to appear in your text box. This feature allows you to easily direct a public message to a user, perhaps in response to something he or she has posted above.
+<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="private"><B>Private messages:</B></A></FONT>
+<P>
+To send a private message to another user currently in your chat room, type the <B>command "/msg username messagetext" or "/to username messagetext"</B> without quotes.
+<P>
+<I>For example, where Jack is the username:</I> /msg Jack Hi there, how are you?
+<P>
+The message will appear to Jack and yourself, but no other users will see the message.
+<P>
+Note that clicking on the nick of a message sender in the main frame will automatically add this command to the input field for messages.
+<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="actions"><B>Actions:</B></A></FONT>
+<P>
+To describe what you're doing you can use the <B>command "/me action"</B> without quotes.
+<P>
+<I>For example:</I> If Jack sends the message "/me is smoking a cigarette" the message frame will shown "<B>* Jack</B> is smoking a cigarette".
+<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="ignore"><B>Ignoring other users:</B></A></FONT>
+<P>
+To ignore all of the posts by another user, type the <B>command "/ignore username"</B> without quotes.
+<P>
+<I>For example:</I> /ignore Jack
+<P>
+From that time onward, no messages by the user Jack will display on your screen.
+<P>
+To have a list of the users whose messages are ignored, just type the <B>command "/ignore"</B> without quotes. 
+<P>
+To resume display of message by an ignored user, type the <B>command "/ignore - username"</B> without quotes where "-" is a hyphen. <P> 
+<P>
+<I>For example:</I> /ignore - Jack 
+<P>
+Now all the messages by Jack posted during the current chat session will be displayed on your screen, including those messages posted by Jack before you typed this command.
+If you don't specify an username after the hyphen, your "ignored list" will be cleaned.
+<P>
+Note that you can put more than one username in the ignore command (eg "/ignore Jack,Helen,Alf" or "/ignore - Jack,Alf"). They must be splitted by comma (,) without spaces.
+<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="whois"><B>Getting information about other Users:</B></A></FONT>
+<P>
+To see public information about another user, type the <B>command "/whois username"</B> without quotes.
+<P>
+<I>For Example:</I> /whois Jack
+<P>
+where 'Jack' is the username. This command will create a separate pop-up window that will display the publically available information about that user.
+<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
+<P>
+<HR>
+
+<?php
+if (C_SAVE != "0")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="save"><B>Save messages:</B></A></FONT>
+	<P>
+	To export messages (notification ones excluded) to a local HTML file, type the <B>command "/save n"</B> without quotes.
+	<P>
+	<I>For Example:</I> /save 5
+	<P>
+	where '5' is the number of messages to save. If n is not specified, all available messages sent to the current room will be taken into account.
+	<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+<HR>
+
+
+<P>
+<FONT SIZE="+2"><A NAME="moderator"><B><U>Commands for the adminstrator and/or moderators only</U></B></A></FONT> 
+
+<P>
+<FONT SIZE="+1"><A NAME="announce"><B>Send an announcement:</B></A></FONT>
+<P>
+The administrator may send an announcement to all users whatever the the room they are chatting into with the <B>announce command</B>.
+<P>
+<I>For example: /announce The chat system is going down for maintenance tonight at 8pm.</I>
+<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="kick"><B>Kicking an user:</B></FONT>
+<P>
+Moderators can kick an user and the administrator can kick an user or a moderator with the <B>kick command</B>. Except for the administrator, the user to be kicked must be in the current room.
+<P>
+<I>For example</I>, if Jack is the name of the user to kick away:</I> /kick Jack</I>
+<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
+<P>
+<HR>
+
+<?php
+if (C_BANISH != "0")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="banish"><B>Banish an user:</B></A></FONT>
+	<P>
+	Moderators can banish an user and the administrator can banish an user or a moderator with the <B>ban command</B>.<BR>
+	The administrator can banish an user from another room than the one he is chatting into. He can also banish an user forever and from the chat as a whole with the '<B>&nbsp;*&nbsp;</B>' setting that must be inserted before the nick of the user to be banished.
+	<P>
+	<I>For example</I>, if Jack is the name of the user to banish : <I>/ban Jack</I> or <I>/ban * Jack</I>
+	<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="promote"><B>Promote an user to moderator:</B></A></FONT>
+<P>
+Moderators and the administrator can promote an other user to moderator with the <B>promote command</B>.
+<P>
+<I>For example</I>, if Jack is the name of the user to promote:<I> /promote Jack</I>
+<P>
+Only the administrator can access the opposite feature (reduce a moderator to simple user) at a dedicated page. There is no command to do it.
+<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
+<P>
+
+
+</BODY>
+</HTML>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/english/localized.tutorial.php3 0.15.0/chat/localization/english/localized.tutorial.php3
--- 0.14.5/chat/localization/english/localized.tutorial.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/localization/english/localized.tutorial.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,634 +0,0 @@
-<?php
-// File : english.tutorial.php3
-// Original file by Sharif Islam <mislam@students.uiuc.edu> & Jessica Gibson <oram@uiuc.edu>
-// & Dean Collins <joelford@pacbell.net>
-
-// Get the names and values for vars sent by the script that called this one
-if (isset($HTTP_GET_VARS))
-{
-	while(list($name,$value) = each($HTTP_GET_VARS))
-	{
-		$$name = $value;
-	};
-};
-?>
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<HTML>
-
-<HEAD>
-<TITLE>English Tutorial for <?php echo(APP_NAME." - ".APP_VERSION); ?></TITLE>
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<STYLE>
-A.topLink
-{
-	text-decoration: underline;
-	color: #0000C0;
-}
-
-A.topLink:hover, A.topLink:active
-{
-	color: #FF9900;
-	text-decoration: none;
-	font-weight: 800;
-}
-
-.redText
-{
-	font-weight: 800;
-	color: #FF0000;
-}
-</STYLE>
-</HEAD>
-
-<BODY BGCOLOR="#CCCCFF">
-<!-- Remove this  in translation files -->
-<?php
-if(isset($NoTranslation)) echo($NoTranslation."\n");
-?>
-<!-- End of the  to be removed in translation files -->
-
-<P><A NAME="top"></P>
-<TABLE BORDER="5" CELLPADDING="5">
-<TR>
-	<TD><FONT SIZE="+2">Contents of this Tutorial</FONT></TD>
-</TR>
-</TABLE><BR>
-
-<P CLASS="redText">
-Warning: Netscape users must define their language as the default encoding or else each character in messages will be replace by a '?'.<BR>
-This can be done as follows: View/CharacterSet/your language Auto-Detect, then View/CharacterSet/SetDefault.
-</P>
-
-<?php
-if (C_MULTI_LANG == "1") 
-{
-	?>
-	<A HREF="#language" CLASS="topLink">Choosing a language</A><BR>
-	<?php
-}
-?>
-<A HREF="#login" CLASS="topLink">Logging into the Chat</A><BR>
-<A HREF="#register" CLASS="topLink">Registering</A><BR>
-<A HREF="#modProfile" CLASS="topLink">Modifying<?php if (C_SHOW_DEL_PROF == "1") echo("/deleting"); ?> your profile</A><BR>
-<?php
-if (C_VERSION == "2") 
-{
-	?>
-	<A HREF="#create_room" CLASS="topLink">Creating a room</A><BR>
-	<?php
-};
-if ($Ver == "H") 
-{
-	?>
-	<A HREF="#connection_state" CLASS="topLink">Understanding connection state</A><BR>
-	<?php
-};
-?>
-<A HREF="#sending" CLASS="topLink">Sending a Message</A><BR>
-<A HREF="#users_list" CLASS="topLink">Understanding the users list</A><BR>
-<A HREF="#exit" CLASS="topLink">Leaving the chat room</A><BR>
-<A HREF="#users_popup" CLASS="topLink">Knowing who is chatting without being logged in</A><BR>
-<P>
-<A HREF="#customize" CLASS="topLink">Customizing the Chat View</A><BR>
-<P>
-<A HREF="#commands" CLASS="topLink">Features and Commands:</A><BR>
-&nbsp&nbsp&nbsp&nbsp<A HREF="#help" CLASS="topLink">Help command</A><BR>
-<?php
-if (C_USE_SMILIES == "1")
-{
-	?>
-	&nbsp&nbsp&nbsp&nbsp<A HREF="#smilies" CLASS="topLink">Graphical smilies</A><BR>
-	<?php
-};
-if (C_HTML_TAGS_KEEP != "none")
-{
-	?>
-	&nbsp&nbsp&nbsp&nbsp<A HREF="#text" CLASS="topLink">Text Formatting</A><BR>
-	<?php
-};
-?>
-&nbsp&nbsp&nbsp&nbsp<A HREF="#invite" CLASS="topLink">Invite an user to join your current chat room</A><BR>
-&nbsp&nbsp&nbsp&nbsp<A HREF="#changeroom" CLASS="topLink">Changing from one chat room to another</A><BR>
-&nbsp&nbsp&nbsp&nbsp<A HREF="#private" CLASS="topLink">Private Messages</A><BR>
-&nbsp&nbsp&nbsp&nbsp<A HREF="#actions" CLASS="topLink">Actions</A><BR>
-&nbsp&nbsp&nbsp&nbsp<A HREF="#ignore" CLASS="topLink">Ignoring other Users</A><BR>
-&nbsp&nbsp&nbsp&nbsp<A HREF="#whois" CLASS="topLink">Getting Public Information about other Users</A><BR>
-<?php
-if (C_SAVE != "0")
-{
-	?>
-	&nbsp&nbsp&nbsp&nbsp<A HREF="#save" CLASS="topLink">Save messages</A><BR>
-	<?php
-};
-?>
-<P>
-<A HREF="#moderator" CLASS="topLink">Special commands for moderators and/or the administrator:</A><BR>
-&nbsp&nbsp&nbsp&nbsp<A HREF="#announce" CLASS="topLink">Send an announcement</A><BR>
-&nbsp&nbsp&nbsp&nbsp<A HREF="#kick" CLASS="topLink">Kicking an user</A><BR>
-<?php
-if (C_BANISH != "0")
-{
-	?>
-	&nbsp&nbsp&nbsp&nbsp<A HREF="#banish" CLASS="topLink">Banish an user</A><BR>
-	<?php
-};
-?>
-&nbsp&nbsp&nbsp&nbsp<A HREF="#promote" CLASS="topLink">Promote an user to moderator</A><BR>
-<P>
-<HR>
-<HR>
-
-
-<?php
-if (C_MULTI_LANG == "1") 
-{
-	?>
-	<P>
-	<FONT SIZE="+1"><A NAME="language"><B>Choosing a language:</B></A></FONT>
-	<P>
-	You may choose a language among those in which <?php echo(APP_NAME); ?> have been translated by clicking on one of the flags at the start page. In the example bellow, an user selects the French language:
-	<P ALIGN="center">
-	<IMG SRC="images/tutorials/flags.gif" HEIGHT="44" WIDTH="424" ALT="Flags for language selection">
-	<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
-	<HR>
-	<?php
-}
-?>
-
-<P>
-<FONT SIZE="+1"><A NAME="login"><B>Login:</B></A></FONT>
-<P>
-If you have already registered, simply log in by entering your username and password. Then select which chat room you would like to enter and press the Chat button.<BR>
-<?php
-if (C_REQUIRE_REGISTER == "1")
-{
-	?>
-	<P>
-	Else you have to <A HREF="#register">register</A> first.
-	<?php
-}
-else
-{
-	?>
-	<P>
-	Else you can <A HREF="#register">register</A> first or simply enter a room but your nick won't be reserved (an other user may use the same nick once you have logged out).
-	<?php
-}
-?>
-<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
-<HR>
-
-<P>
-<FONT SIZE="+1"><A NAME="register"><B>To Register:</B></A></FONT> 
-<P>
-If you have not yet registered<?php if (C_REQUIRE_REGISTER == "0") echo("and would like to"); ?>, please choose the registration option. A small pop-up window will appear.
-<P>	
-<UL>
-	<LI>First, create a username<?php if (!C_EMAIL_PASWD) echo(" and a password"); ?> for yourself by typing it into the appropriate boxes. The username you choose is the name that will be automatically displayed in the chat room. It cannot contain spaces, commas or backslashes (\).
-<?php if (C_NO_SWEAR == "1") echo(" It can not contain \"swear words\"."); ?>
-	<LI>Second, please enter your first name, last name, and your email address. In order to register to chat, all of this information must be provided. The gender information is optional. 
-	<LI>If you have a homepage, you may enter the URL into the box.
-	<LI>The language field may help other users in future discussions. They will know which language(s) you understand.
-	<LI>Lastly, if you wish to allow your email address to be viewed by other participants, please check the box next to "show e-mail in public information". If
-you do not want your e-mail address to be viewable, leave the box unchecked.
-	<LI>Then, press the Register button and your account will be created. If you wish to stop at any time without registering, press the Close button.
-</UL>
-<P>
-<A NAME="modProfile"></A>Of course, registered users would be able to modify<?php if (C_SHOW_DEL_PROF == "1") echo("/delete"); ?> their own profile by clicking on the appropriate <?php echo((C_SHOW_DEL_PROF == "0" ? "link" : "links")); ?>.<BR>
-<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
-<P>
-<HR>
-
-<?php
-if (C_VERSION == "2") 
-{
-	?>
-	<P>
-	<FONT SIZE="+1"><A NAME="create_room"><B>To create a room:</B></A></FONT> 
-	<P>
-	Registered users can create rooms. Private ones can only be accessed by users who know their name and will never been displayed except for users that are in.<BR>
-	<P>
-	Room's name cannot contain comma or backslash (\).<?php if (C_NO_SWEAR == "1") echo(" It can no more contains \"swear words\"."); ?>
-	<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
-	<P>
-	<HR>
-	<?php
-};
-if ($Ver == "H")
-{
-	?>
-	<P>
-	<FONT SIZE="+1"><A NAME="connection_state"><B>Understanding connection state:</B></A></FONT> 
-	<P>
-	A sign representing your connection state is dipslayed at the top-right corner of the screen. It may take three forms :
-	<P>	
-	<UL>
-		<LI><IMG SRC="images/connectOff.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="No connection"> when no connection is required ;
-		<LI><IMG SRC="images/connectOn.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Connecting"> when there is a connection in progress ;
-		<LI><IMG SRC="images/connectError.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Connection failed"> when a connection failed.
-	</UL>
-	<P>
-	In the third case, clicking on the red "button" will launch a new connection attempt.
-	<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
-	<P>
-	<HR>
-	<?php
-};
-?>
-
-<P>
-<FONT SIZE="+1"><A NAME="sending"><B>Sending messages:</B></A></FONT> 
-<P>
-To post a message to the chat room, type your text into the text box in the lower left corner and then press the Enter/Return key to send it. Messages from all users scroll in the chat box.<BR>
-<?php if (C_NO_SWEAR == "1") echo("Note that \"swear words\" are skipped from messages."); ?>
-<P>
-You may change the color of the text of your messages by choosing a new color from the list of choices to the right of the text box.
-<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
-<P>
-<HR>
-
-<P>
-<FONT SIZE="+1"><A NAME="users_list"><B>Understanding the users list (not for users popup window):</B></A></FONT> 
-<P>
-<OL>
-	Two basic rules have been defined for the users list:<BR>
-	<LI>a little icon that shows gender is displayed before the nick of a registered user (clicking on it will launch the <A HREF="#whois">whois popup</A> for this user), while unregistered users have nothing but blank spaces displayed before their nick;<BR>
-	<LI>the nick of the administrator or of a moderator is italicized.
-</OL>
-<P><I>For example</I>, from the snapshot bellow you can conclude that:
-<TABLE BORDER=0 CELLSPACING=10>
-<TR>
-	<TD>
-		<IMG SRC="images/tutorials/usersList.gif" WIDTH=128 HEIGHT=145 BORDER=0 ALT="users list">
-	</TD>
-	<TD>
-	<UL>
-		<LI>Nicolas is the admin or one of the moderators of the phpMyChat room;<BR><BR>
-		<LI>alien (whose gender is unknown), Jezek2 and Caridad are registered users with no extra "power" for the phpMyChat room;<BR><BR>
-		<LI>lolo is a simple unregistered user.
-	</UL>
-	</TD>
-</TR>
-</TABLE>
-<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
-<P>
-<HR>
-
-<P>
-<FONT SIZE="+1"><A NAME="exit"><B>Leaving the chat room:</B></A></FONT>
-<P>
-To exit the chat, simply click once on "Exit". Alternatively, you may also enter the one of the following commands into your text box:<BR>
-/exit<BR>
-/bye<BR>
-/quit
-These commands may be completed with a message to be sent before you leave the chat room.
-<I>For example :</I> /quit CU soon!
-<P>
-will sent the message "CU soon!" in the main frame then log you out.
-
-<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
-<P>
-<HR>
-
-<P>
-<FONT SIZE="+1"><A NAME="users_popup"><B>Knowing who is chatting without being logged in:</B></A></FONT> 
-<P>
-You may click on the link that shows the number of connected users at the start page, or, if you are chatting, click on the image <IMG SRC="images/popup.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Users popup"> at the top-right of the screen to open a independent window that will display the list of connected users, and the rooms they are in, in near real time.<BR>
-The title of this window contains the usernames, if they are less than three, the numbers of users and opened rooms else.
-<P>
-Clicking on the <IMG SRC="images/sound.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Beeps"> icon at the top of this popup will enable/disable beeping sounds at user entrance.
-<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
-<P>
-<HR>
-<HR>
-
-
-<P>
-<FONT SIZE="+1"><A NAME="customize"><B>Customizing the Chat View:</B></A></FONT>
-<P>
-There are many different ways to customize the look of the Chat. To change settings, simply type the appropriate command into your text box and press the Enter/Return key.
-<P>
-<UL>
-	<?php
-	if ($Ver == "H")
-	{
-		?>
-		<LI>The <B>Clear command</B> allows you to clean the main chat screen and display the last 5 messages sent on your screen.<BR>Type "/clear" without quotes.
-		<P>
-		<?php
-	}
-	else
-	{
-		?>
-		<LI>The <B>Order command</B> allows you to toggle between having new messages appear at the top of the screen or at the bottom.<BR>Type "/order" without quotes.
-		<P>
-		<?php
-	};
-	?>
-	<LI>The <B>Notify command</B> allows you to toggle on or off the option of seeing the notices when other users enter or exit the chat room. By default this option is <?php echo(C_NOTIFY ? "on" : "off"); ?> and the notices <?php echo(C_NOTIFY ? "will" : "won't"); ?> be seen.<BR>Type "/notify" without quotes.
-	<P>
-	<LI>The <B>Timestamp command</B> allows you to toggle on or off the option of seeing the time the message was posted before each message and the server time in the status bar. By default this option is <?php echo(C_SHOW_TIMESTAMP ? "on" : "off"); ?>.<BR>Type "/timestamp" without quotes.
-	<P>
-	<LI>The <B>Refresh command</B> allows you to adjust the rate at which the posted message are refreshed on your screen. The default rate is currently <?php echo(C_MSG_REFRESH); ?> seconds. To change the rate type "/refresh n" without quotes where n is the time in seconds of the new refresh rate.
-	<P>
-	<I>For example:</I> /refresh 5
-	<P>
-	will change the rate to 5 seconds. *Beware, if n is set to less than 3, the refresh is reset not to refresh at all (usefull when you want to read lots of old messages without being disturbed)!*
-	<P>
-	<?php
-	if ($Ver == "L")
-	{
-		?>
-		<LI>The <B>Show command</B> allows you to adjust the number of messages viewable on your screen. To change the default number, type "/show n" without quotes where n is the number of viewable messages.
-		<P>
-		<I>For example:</I> /show 50
-		<P>
-		will cause the 50 newest messages to be viewable on your screen. If all of the messages cannot be displayed within the message box, a scroll bar will appear on the right side of the message box.</UL>
-		<?php
-	}
-	else
-	{
-		?>
-		<LI>The <B>Show and Last commands</B> allow you to clean the screen and display the last <I>n</I> messages sent on your screen. Type "/show n" or "/last n" without quotes where n is the number of viewable messages.
-		<P>
-		<I>For example:</I> /show 50 or /last 50
-		<P>
-		will clean the message frame and cause the 50 newest messages to be viewable on your screen. If all of the messages cannot be displayed within the message box, a scroll bar will appear on the right side of the message box.</UL>
-		<?php
-	};
-	?>
-	<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
-	<P>
-</UL>
-<HR>
-<HR>
-
-
-<P>
-<FONT SIZE="+2"><A NAME="commands"><B><U>Features and Commands</U></B></A></FONT> 
-<P>
-
-<FONT SIZE="+1"><A NAME="help"><B>Help command:</B></A></FONT>
-<P>
-Once inside a chat room, you can lauch a help popup by clicking on the <IMG SRC="images/helpOff.gif" WIDTH=15 HEIGHT=15 BORDER=0 ALT="?"> image that sits just before the message box. You can also type the <B>"/help" or "/?" commands</B> in the message box.
-<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
-<P>
-<P>
-<HR>
-
-<?php
-if (C_USE_SMILIES == "1")
-{
-	include("./lib/smilies.lib.php3");
-	$Nb = count($SmiliesTbl);
-	$ResultTbl = Array();
-	DisplaySmilies($ResultTbl,$SmiliesTbl,$Nb,"tutorial");
-	unset($SmiliesTbl);
-	?>
-	<FONT SIZE="+1"><A NAME="smilies"><B>Smilies:</B></A></FONT>
-	<P>You may have graphical smilies inside your messages. See bellow the code you have to type into a message to obtain each one of these similes.
-	<P ALIGN="center">
-	<TABLE BORDER=0 CELLPADDING=3 CELLSPACING=5>
-	<?php
-	$i = "0";
-	$Nb = count($ResultTbl);
-	while($i < $Nb)
-	{
-		if ($i > 0) echo("\t");
-		echo("<TR VALIGN=\"BOTTOM\">\n");
-		echo("$ResultTbl[$i]");
-		echo("\t</TR>\n\t<TR>\n");
-		$i++;
-		echo("$ResultTbl[$i]");
-		echo("\t</TR>\n");
-		$i++;
-	};
-	unset($ResultTbl);
-	?>
-	</TABLE>
-	<P>
-	<I>For example</I>, sending the text "Hi Jack :)" without quote will display the message Hi Jack <IMG SRC="images/smilies/smile1.gif" WIDTH=15 HEIGHT=15 ALT=":)"> in the main frame.
-	<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
-	<P>
-	<HR>
-	<?php
-};
-
-if (C_HTML_TAGS_KEEP != "none")
-{
-	?>
-	<FONT SIZE="+1"><A NAME="text"><B>Text Formatting:</B></A></FONT>
-	<P>
-	Text can be bolded, italicized or underlined by encasing the applicable sections of your text with either the &LT;B&GT; &LT;/B&GT, &LT;I&GT; &LT;/I&GT; or &LT;U&GT; &LT;/U&GT HTML tags.
-	<P>
-	<I>For example</I>, &LT;B&GT;this text&LT;/B&GT; will produce <B>this text</B>.
-	<P>
-	To create a hyperlink for an e-mail address or URL, type the address (without any HTML tags). The hyperlink will be created automatically.
-	<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
-	<P>
-	<P>
-	<HR>
-	<?php
-};
-?>
-
-<P>
-<FONT SIZE="+1"><A NAME="invite"><B>Invite someone to join your current chat room:</B></A></FONT>
-<P>
-You can use the <B>invite command</B> to invite an user to join the room you are chatting in.
-<P>
-<I>For example:</I> /invite Jack 
-<P>
-will send a private message to Jack suggesting him to join you in your current chat room. This message contains the name of the target room and this name appears as a link.
-<P>
-Note that you can put more than one username in the invite command (eg "/invite Jack,Helen,Alf"). They must be splitted by comma (,) without spaces.
-<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
-<P>
-<HR>
-
-<P>
-<FONT SIZE="+1"><A NAME="changeroom"><B>Changing rooms:</B></A></FONT>
-<P>
-The list to the right of the screen provides a list of chat rooms and the users who are currently in that room. To leave the room you are in and move into one of those rooms, simply click once on the name of that room. Empty rooms do not appear on this list. You may move into an empty room by typing the <B>command "/join #roomname"</B> without quotes.
-<P>
-<I>For example:</I> /join #RedRoom 
-<P>
-will move you into the RedRoom.
-<?php
-if (C_VERSION == "2")
-{
-	echo(C_REQUIRE_REGISTER == "0" ? "<P>If you're a registered user, you" : "<BR><P>You");
-	?>
-	 may also create a new room with this same command. But then you have to specify its type: 0 stands for private, 1 for public (default value).
-	<P>
-	<I>For example:</I> /join 0 #MyRoom 
-	<P>
-	will create a new private room (assuming a public one has not already been created with that name) called MyRoom and move you into it.
-	<P>
-	Room's name cannot contain comma or backslash (\).<?php if (C_NO_SWEAR == "1") echo(" It can no more contains \"swear words\"."); ?>
-	<?php
-}
-?>
-<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
-<P>
-<HR>
-
-<P>
-<FONT SIZE="+1"><B>Modifying his own profile inside the chat:</B></FONT>
-<P>
-The <B>Profile command</B> creates a separate pop-up window in which you can edit your user profile and modify it except your nick and password (you have to use the link at the start page to do this).<BR>Type /profile
-<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
-<P>
-<HR>
-
-<P>
-<FONT SIZE="+1"><B>Recalling the last message or command you have submitted:</B></FONT>
-<P>
-The <B>! command</B> recalls the last message or command you have submitted.<BR>Type /!
-<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
-<P>
-<HR>
-
-<P>
-<FONT SIZE="+1"><B>Responding to a specific user:</B></FONT>
-<P>
-Clicking once on the name of another user from the list (to the right of the screen) will cause their "username>" to appear in your text box. This feature allows you to easily direct a public message to a user, perhaps in response to something he or she has posted above.
-<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
-<P>
-<HR>
-
-<P>
-<FONT SIZE="+1"><A NAME="private"><B>Private messages:</B></A></FONT>
-<P>
-To send a private message to another user currently in your chat room, type the <B>command "/msg username messagetext" or "/to username messagetext"</B> without quotes.
-<P>
-<I>For example, where Jack is the username:</I> /msg Jack Hi there, how are you?
-<P>
-The message will appear to Jack and yourself, but no other users will see the message.
-<P>
-Note that clicking on the nick of a message sender in the main frame will automatically add this command to the input field for messages.
-<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
-<P>
-<HR>
-
-<P>
-<FONT SIZE="+1"><A NAME="actions"><B>Actions:</B></A></FONT>
-<P>
-To describe what you're doing you can use the <B>command "/me action"</B> without quotes.
-<P>
-<I>For example:</I> If Jack sends the message "/me is smoking a cigarette" the message frame will shown "<B>* Jack</B> is smoking a cigarette".
-<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
-<P>
-<HR>
-
-<P>
-<FONT SIZE="+1"><A NAME="ignore"><B>Ignoring other users:</B></A></FONT>
-<P>
-To ignore all of the posts by another user, type the <B>command "/ignore username"</B> without quotes.
-<P>
-<I>For example:</I> /ignore Jack
-<P>
-From that time onward, no messages by the user Jack will display on your screen.
-<P>
-To have a list of the users whose messages are ignored, just type the <B>command "/ignore"</B> without quotes. 
-<P>
-To resume display of message by an ignored user, type the <B>command "/ignore - username"</B> without quotes where "-" is a hyphen. <P> 
-<P>
-<I>For example:</I> /ignore - Jack 
-<P>
-Now all the messages by Jack posted during the current chat session will be displayed on your screen, including those messages posted by Jack before you typed this command.
-If you don't specify an username after the hyphen, your "ignored list" will be cleaned.
-<P>
-Note that you can put more than one username in the ignore command (eg "/ignore Jack,Helen,Alf" or "/ignore - Jack,Alf"). They must be splitted by comma (,) without spaces.
-<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
-<P>
-<HR>
-
-<P>
-<FONT SIZE="+1"><A NAME="whois"><B>Getting information about other Users:</B></A></FONT>
-<P>
-To see public information about another user, type the <B>command "/whois username"</B> without quotes.
-<P>
-<I>For Example:</I> /whois Jack
-<P>
-where 'Jack' is the username. This command will create a separate pop-up window that will display the publically available information about that user.
-<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
-<P>
-<HR>
-
-<?php
-if (C_SAVE != "0")
-{
-	?>
-	<P>
-	<FONT SIZE="+1"><A NAME="save"><B>Save messages:</B></A></FONT>
-	<P>
-	To export messages (notification ones excluded) to a local HTML file, type the <B>command "/save n"</B> without quotes.
-	<P>
-	<I>For Example:</I> /save 5
-	<P>
-	where '5' is the number of messages to save. If n is not specified, all available messages sent to the current room will be taken into account.
-	<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
-	<P>
-	<HR>
-	<?php
-};
-?>
-<HR>
-
-
-<P>
-<FONT SIZE="+2"><A NAME="moderator"><B><U>Commands for the adminstrator and/or moderators only</U></B></A></FONT> 
-
-<P>
-<FONT SIZE="+1"><A NAME="announce"><B>Send an announcement:</B></A></FONT>
-<P>
-The administrator may send an announcement to all users whatever the the room they are chatting into with the <B>announce command</B>.
-<P>
-<I>For example: /announce The chat system is going down for maintenance tonight at 8pm.</I>
-<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
-<P>
-<HR>
-
-<P>
-<FONT SIZE="+1"><A NAME="kick"><B>Kicking an user:</B></FONT>
-<P>
-Moderators can kick an user and the administrator can kick an user or a moderator with the <B>kick command</B>. Except for the administrator, the user to be kicked must be in the current room.
-<P>
-<I>For example</I>, if Jack is the name of the user to kick away:</I> /kick Jack</I>
-<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
-<P>
-<HR>
-
-<?php
-if (C_BANISH != "0")
-{
-	?>
-	<P>
-	<FONT SIZE="+1"><A NAME="banish"><B>Banish an user:</B></A></FONT>
-	<P>
-	Moderators can banish an user and the administrator can banish an user or a moderator with the <B>ban command</B>.<BR>
-	The administrator can banish an user from another room than the one he is chatting into. He can also banish an user forever and from the chat as a whole with the '<B>&nbsp;*&nbsp;</B>' setting that must be inserted before the nick of the user to be banished.
-	<P>
-	<I>For example</I>, if Jack is the name of the user to banish : <I>/ban Jack</I> or <I>/ban * Jack</I>
-	<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
-	<P>
-	<HR>
-	<?php
-};
-?>
-
-<P>
-<FONT SIZE="+1"><A NAME="promote"><B>Promote an user to moderator:</B></A></FONT>
-<P>
-Moderators and the administrator can promote an other user to moderator with the <B>promote command</B>.
-<P>
-<I>For example</I>, if Jack is the name of the user to promote:<I> /promote Jack</I>
-<P>
-Only the administrator can access the opposite feature (reduce a moderator to simple user) at a dedicated page. There is no command to do it.
-<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
-<P>
-
-
-</BODY>
-</HTML>
\ No newline at end of file
Binary files 0.14.5/chat/localization/estonian/flag.gif and 0.15.0/chat/localization/estonian/flag.gif differ
diff -ruN 0.14.5/chat/localization/estonian/localized.chat.php 0.15.0/chat/localization/estonian/localized.chat.php
--- 0.14.5/chat/localization/estonian/localized.chat.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/estonian/localized.chat.php	2004-04-01 03:07:17.000000000 -0600
@@ -0,0 +1,219 @@
+<?php
+// File : estonian.lang.php
+// Original file by Tarmo Protsin <tarmo@gt.ee>
+
+// extra header for charset
+$Charset = "iso-8859-1";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// welcome page
+define("L_TUTORIAL", "Tutvustus");
+
+define("L_WEL_1", "Snumid kustutatakse peale");
+define("L_WEL_2", "tundi ja kasutajanimed peale");
+define("L_WEL_3", "minutit ...");
+
+define("L_CUR_1", "Hetkel on ");
+define("L_CUR_2", "jututoas.");
+define("L_CUR_3", "Hetke kasutajad jututubades");
+define("L_CUR_4", "kasutajad privaat ruumides");
+
+define("L_SET_1", "Palun tida ...");
+define("L_SET_2", "kasutajanimi");
+define("L_SET_3", "snumite arv, mida nidatakse");
+define("L_SET_4", "vahe iga uuendamise vahel");
+define("L_SET_5", "Vali tuba ...");
+define("L_SET_6", "vaikimisi toad");
+define("L_SET_7", "Tee oma valik ...");
+define("L_SET_8", "avalikud kasutajate tekitatud toad");
+define("L_SET_9", "tekita enda");
+define("L_SET_10", "avalik");
+define("L_SET_11", "privaatne");
+define("L_SET_12", "tuba");
+define("L_SET_13", "Ja siis");
+define("L_SET_14", "jutusta");
+
+define("L_SRC", "is freely available on");
+
+define("L_SECS", "sekundit");
+define("L_MIN", "minut");
+define("L_MINS", "minutit");
+
+// registration stuff:
+define("L_REG_1", "salasna");
+define("L_REG_1r", "(ainult registreerinutele)");
+define("L_REG_2", "Andmete ksitlemine");
+define("L_REG_3", "Registreeru");
+define("L_REG_4", "Muuda oma andmeid");
+define("L_REG_5", "Kustuta kasutaja");
+define("L_REG_6", "Kasutaja registreerimine");
+define("L_REG_7", "salasna");
+define("L_REG_8", "e-mail");
+define("L_REG_9", "Oled edukalt registreeritud.");
+define("L_REG_10", "Tagasi");
+define("L_REG_11", "Muutmine");
+define("L_REG_12", "Muudan kasutaja andmeid");
+define("L_REG_13", "Kustutan kasutajat");
+define("L_REG_14", "Login");
+define("L_REG_15", "Log In");
+define("L_REG_16", "Muuda");
+define("L_REG_17", "Andmed edukalt muudetud.");
+define("L_REG_18", "Sind visati toast vlja moderaatori poolt.");
+define("L_REG_19", "Oled kindel, et soovid ennast eemaldada ?");
+define("L_REG_20", "Jah");
+define("L_REG_21", "Oled edukalt eemaldatud.");
+define("L_REG_22", "Ei");
+define("L_REG_25", "Sulge");
+define("L_REG_30", "eesnimi");
+define("L_REG_31", "perenimi");
+define("L_REG_32", "koduleheklg");
+define("L_REG_33", "nita e-maili avaliku informatsioonina");
+define("L_REG_34", "Muudan kasutaja andmeid");
+define("L_REG_35", "Administratsioon");
+define("L_REG_36", "osatavad keeled");
+define("L_REG_37", "Vljad thistatud <SPAN CLASS=error>*</SPAN> peavad olema tidetud.");
+define("L_REG_39", "The room you were in has been removed by the administrator.");
+define("L_REG_45", "sugu");
+define("L_REG_46", "Mees");
+define("L_REG_47", "Naine");
+
+// e-mail validation stuff
+define("L_EMAIL_VAL_1", "Sinu seaded tuppa sisenemiseks");
+define("L_EMAIL_VAL_2", "Tere tulemast meie jututuppa.");
+define("L_EMAIL_VAL_Err", "Sisemine viga, palun vta hendust administraatorigar: <A HREF=\"mailto:%s\">%s</A>.");
+define("L_EMAIL_VAL_Done", "Salasna saadeti sinu<BR>e-mail aadressile.");
+
+// admin stuff
+define("L_ADM_1", "%s ei ole enam moderator selles ruumis.");
+define("L_ADM_2", "Sa ei ole enam registreeritud kasutaja.");
+
+// error messages
+define("L_ERR_USR_1", "Kasutajanimi on juba kasutuses. Palun vali uus.");
+define("L_ERR_USR_2", "Sa pead valima kasutajanime.");
+define("L_ERR_USR_3", "Kasutajanimi on registreeritud. Palun sisesta salasna vi vali teine kasutajanimi.");
+define("L_ERR_USR_4", "Sisestasid vale salasna.");
+define("L_ERR_USR_5", "Sa pead sisestama oma kasutajanime.");
+define("L_ERR_USR_6", "Sa pead sisestama oma salasna.");
+define("L_ERR_USR_7", "Sa pead sisestama oma e-maili aadressi.");
+define("L_ERR_USR_8", "Sa pead sisestama ige e-maili aadressi.");
+define("L_ERR_USR_9", "Kasutajanimi on juba kasutuses.");
+define("L_ERR_USR_10", "Vale kasutajanimi vi salasna.");
+define("L_ERR_USR_11", "Sa pead olema administraator.");
+define("L_ERR_USR_12", "Sa oled administraator, seega ei saa sind eemaldada.");
+define("L_ERR_USR_13", "Oma ruumi tekitamiseks pead olema registreerunud.");
+define("L_ERR_USR_14", "Sisenemiseks pead olema registreerunud.");
+define("L_ERR_USR_15", "Sa pead sisestama oma tispika nime.");
+define("L_ERR_USR_16", "Kasutajanimi ei tohi sisaldada thikut, koma vi backslash'i (\\).");
+define("L_ERR_USR_17", "Tuba ei eksisteeri ja sul ei ole lubatud tuba tekitada.");
+define("L_ERR_USR_18", "Kasutajanimes leidus keelatud sna.");
+define("L_ERR_USR_19", "Sa ei saa olla samal ajal mitmes toas.");
+define("L_ERR_USR_20", "Sa oled sellest toast vi jutukast blokeeritud.");
+define("L_ERR_ROM_1", "Toa nimi ei tohi sisaldada thikut, koma vi backslash'i (\\).");
+define("L_ERR_ROM_2", "Tekitatava toa nimes leiti keelatud sna.");
+define("L_ERR_ROM_3", "Tuba eksisteerib juba avaliku toana.");
+define("L_ERR_ROM_4", "Vigane toa nimi.");
+
+// users frame or popup
+define("L_EXIT", "Lahku");
+define("L_DETACH", "Lase lahti");
+define("L_EXPCOL_ALL", "Lahti/Kokku Kik");
+define("L_CONN_STATE", "henduse seis");
+define("L_CHAT", "Jutusta");
+define("L_USER", "kasutaja");
+define("L_USERS", "kasutajat");
+define("L_NO_USER", "Ei ole kasutajat");
+define("L_ROOM", "tuba");
+define("L_ROOMS", "tuba");
+define("L_EXPCOL", "Lahti/Kokku tuba");
+define("L_BEEP", "Hl/mitte kasutaja sisenemisel");
+define("L_PROFILE", "Nita andmeid");
+define("L_NO_PROFILE", "No profile");
+
+// input frame
+define("L_HLP", "Abi");
+define("L_BAD_CMD", "See ksk ei ole ige!");
+define("L_ADMIN", "%s on juba administraator!");
+define("L_IS_MODERATOR", "%s on juba moderaator!");
+define("L_NO_MODERATOR", "Ainult toa moderator saab kasutada seda ksku.");
+define("L_MODERATOR", "%s on nd selle toa moderaator.");
+define("L_NONEXIST_USER", "Kasutaja %s ei ole selles toas.");
+define("L_NONREG_USER", "Kasutaja %s ei ole registereeritud.");
+define("L_NONREG_USER_IP", "Tema IP on: %s.");
+define("L_NO_KICKED", "Kasutaja %s on moderaator vi administraator ja teda ei saa vlja visata.");
+define("L_KICKED", "Kasutaja %s visati edukalt toast vlja.");
+define("L_NO_BANISHED", "Kasutaja %s on moderaator vi administraator ja teda ei saa blokeerida.");
+define("L_BANISHED", "Kasutaja %s blokeeriti edukalt.");
+define("L_SVR_TIME", "Serveri aeg: ");
+define("L_NO_SAVE", "Pole snumeid, mida salvestada!");
+define("L_NO_ADMIN", "Ainult administraator saab seda ksku kasutada.");
+define("L_ANNOUNCE", "TEADE");
+define("L_INVITE", "%s palub sind enda juurde <A HREF=\"#\" onClick=\"window.parent.runCmd('%s','%s')\">%s</A> tuppa.");
+define("L_INVITE_REG", " Siia tuppa sisenemiseks pead olema registreerunud.");
+define("L_INVITE_DONE", "Sinu kutse on saadetud kasutajale %s.");
+define("L_OK", "Saada");
+
+// help popup
+define("L_HELP_TIT_1", "Smilies");
+define("L_HELP_TIT_2", "Snumite teksti formateerimine");
+define("L_HELP_FMT_1", "Vid panna bold, italic vi underlined teksti snumitesse mbritsedes vastava koha kas &lt;B&gt; &lt;/B&gt;, &lt;I&gt; &lt;/I&gt; vi &lt;U&gt; &lt;/U&gt; tagidega.<BR>Niteks, &lt;B&gt;see tekst&lt;/B&gt; annab tulemuseks <B>see tekst</B>.");
+define("L_HELP_FMT_2", "Lingi tekitamiseks (e-maili vi URLi) snumites, lihtsalt sisesta vastav aadress ilma tagidetta. Link tekitatakse automaatselt.");
+define("L_HELP_TIT_3", "Ksud");
+define("L_HELP_USR", "kasutaja");
+define("L_HELP_MSG", "snum");
+define("L_HELP_ROOM", "tuba");
+define("L_HELP_CMD_0", "{} esindab nutud seadet, [] valikulist seadet.");
+define("L_HELP_CMD_1a", "Sea nidatavate snumite arv. Minimaalne ja vaikimisi on 5.");
+define("L_HELP_CMD_1b", "Vrskenda snumite akent ja nita n viimast snummit, minimaalne ja vaikimisi on 5.");
+define("L_HELP_CMD_2a", "Muuda snumite ridade uuendamise ajavahemikku (sekundites).<BR>Kui n ei ole mratud vi vikse kui 3, siis kas ei vrskendata vi siis vrskendatakse 10s tagant.");
+define("L_HELP_CMD_2b", "Muuda snumite ja kasutajate ridade uuendamise ajavahemikku (sekundites).<BR>Kui n ei ole mratud vi vikse kui 3, siis kas ei vrskendata vi siis vrskendatakse 10s tagant.");
+define("L_HELP_CMD_3", "Jrjestab snumid vastupidi.");
+define("L_HELP_CMD_4", "Mine teise tuppa, tekitades selle, kui see ei eksisteeri ja sul on igused selle tekitamiseks.<BR>n on 0 privaat ja 1 avalik, vaikimisi 1 kui ei ole mratud.");
+define("L_HELP_CMD_5", "Lahku jututoast prast valikulise snumi nitamist.");
+define("L_HELP_CMD_6", "ra nita snumeid kasutajalt, kui hdnimi on mratud.<BR>Ignoreerimine maha kasutajale, kui hdnimi ja - on mlemad mratud. Kikidele kasutajatele, kui - on aga mitte hdnimi.<BR>Ilma vtmetetta avab akna, mis nitab kikiignoreeritud hdnimesid.");
+define("L_HELP_CMD_7", "Korda eelmist sisestatud teksti (ksk vi snum).");
+define("L_HELP_CMD_8", "Nita/Peida aega snumite ees.");
+define("L_HELP_CMD_9", "Viska kasutaja jututoast vlja. Seda ksku saab kasutada ainult moderaator.");
+define("L_HELP_CMD_10", "Saada privaatne snum mratud kasutajale (teised kasutajad ei ne seda).");
+define("L_HELP_CMD_11", "Nita informatsiooni mratud kasutaja kohta.");
+define("L_HELP_CMD_12", "Ava aken kasutaja andmete muutmiseks.");
+define("L_HELP_CMD_13", "Nita/Peida mrkmed kasutaja tuppa sisenemise/lahkumise kohta.");
+define("L_HELP_CMD_14", "Luba administraatoril vi selle toa moderaatori(te)l muuta registreeritud kasutaja sama ruumi moderaatoriks.");
+define("L_HELP_CMD_15", "Puhasta snumite ala ja nita ainult viimast 5 snumit.");
+define("L_HELP_CMD_16", "Salvesta viimased n snumit (sisaldades mrkeid) HTML faili. Kui n ei ole mratud, vetakse kik saadaval olevad snumid.");
+define("L_HELP_CMD_17", "Luba administraatoril saata teade kikidele kasutajatele kikides tubades.");
+define("L_HELP_CMD_18", "Kutsu teises toas olev kasutaja tuppa, kus sa ise viibid.");
+define("L_HELP_CMD_19", "Luba toa moderaatori(te)l vi administraatoritel \"blokeerida\" kasutaja toast ajaks, mis on defineeritud administraatori poolt.<BR>The later can banish an user chatting in an other room than the one he is into and use the '<B>&nbsp;*&nbsp;</B>' setting to banish \"for ever\" an user from the chat as the whole.");
+
+// messages frame
+define("L_NO_MSG", "Hetkel ei ole snumeid ...");
+define("L_TODAY_DWN", "Snumid, mis on saadetud tna algavad all");
+define("L_TODAY_UP", "Snumid, mis on saadetud tna algavad lal");
+
+// message colors
+$TextColors = array(	"Black" => "#000000",
+				"Red" => "#FF0000",
+				"Green" => "#009900",
+				"Blue" => "#0000FF",
+				"Purple" => "#9900FF",
+				"Dark red" => "#990000",
+				"Dark green" => "#006600",
+				"Dark blue" => "#000099",
+				"Maroon" => "#996633",
+				"Aqua blue" => "#006699",
+				"Carrot" => "#FF6600");
+
+// ignored popup
+define("L_IGNOR_TIT", "Ignoreeritud");
+define("L_IGNOR_NON", "Mitte ignoreeritud kasutaja");
+
+// whois popup
+define("L_WHOIS_ADMIN", "Administraator");
+define("L_WHOIS_MODER", "Moderaator");
+define("L_WHOIS_USER", "Kasutaja");
+
+// Notification messages of user entrance/exit
+define("L_ENTER_ROM", "%s siseneb siia tuppa");
+define("L_EXIT_ROM", "%s lahkub siit toast");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/estonian/regex.txt 0.15.0/chat/localization/estonian/regex.txt
--- 0.14.5/chat/localization/estonian/regex.txt	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/estonian/regex.txt	2004-04-01 03:07:17.000000000 -0600
@@ -0,0 +1 @@
+et|estonian
\ No newline at end of file
Binary files 0.14.5/chat/localization/finnish/flag.gif and 0.15.0/chat/localization/finnish/flag.gif differ
diff -ruN 0.14.5/chat/localization/finnish/localized.admin.php 0.15.0/chat/localization/finnish/localized.admin.php
--- 0.14.5/chat/localization/finnish/localized.admin.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/finnish/localized.admin.php	2004-04-01 03:07:17.000000000 -0600
@@ -0,0 +1,61 @@
+<?php
+// File : finnish.lang.php
+// Translation by Jani Peltola <webmaster@melnworld.com>
+
+// extra header for charset
+$Charset = "iso-8859-1";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// Top frame
+define("A_MENU_0", "Yllpito %s:lle");
+define("A_MENU_1", "Rekisterityneet kyttjt");
+define("A_MENU_2", "Karkoitetut kyttjt");
+define("A_MENU_3", "Huoneiden tyhjennys");
+define("A_MENU_4", "Lhet e-mailia");
+
+// Frame for registered users
+define("A_SHEET1_1", "Lista rekisterityneist kyttjist ja heidn kyttoikeuksistaan");
+define("A_SHEET1_2", "Kyttjtunnus");
+define("A_SHEET1_3", "Kyttoikeudet");
+define("A_SHEET1_4", "Valvotut huoneet");
+define("A_SHEET1_5", "Valvotut huoneet erotetaan toisistaan pilkulla (,) ilman vlej.");
+define("A_SHEET1_6", "Poista valitut profiilit");
+define("A_SHEET1_7", "Muokkaa");
+define("A_SHEET1_8", "Ei ole muita rekisterityj kyttji kuin sin.");
+define("A_SHEET1_9", "Karkoita valitut profiilit");
+define("A_SHEET1_10", "Nyt sinun tytyy siirty karkoitettujen kyttjien lomakkeelle muuttaaksesi valintojasi.");
+define("A_SHEET1_11", "Yhteys viimeksi");
+define("A_USER", "Kyttj");
+define("A_MODER", "Valvoja");
+define("A_PAGE_CNT", "Sivu %s / %s");
+
+// Frame for banished users
+define("A_SHEET2_1", "Lista karkoitetuista kyttjist ja huoneista");
+define("A_SHEET2_2", "IP");
+define("A_SHEET2_3", "Huoneet");
+define("A_SHEET2_4", "Kunnes");
+define("A_SHEET2_5", "Ikuisesti");
+define("A_SHEET2_6", "Huoneet erotetaan toisistaan pilkulla ilman vlej (,) jos alle 4, muuten kytetn '<B>&nbsp;*&nbsp;</B>' merkki<BR>karkoitukseen kaikista huoneista.");
+define("A_SHEET2_7", "Poista valittujen kyttjien karkoitus");
+define("A_SHEET2_8", "Ei karkoitettuja kyttji.");
+
+// Frame for cleaning rooms
+define("A_SHEET3_1", "Lista olemassaolevista huoneista");
+define("A_SHEET3_2", " \"ei-oletus\" huoneen tyhjennys poistaa mys kaikki<BR>tmn huoneen valvoja statukset.");
+define("A_SHEET3_3", "Tyhjenn valitut huoneet");
+define("A_SHEET3_4", "Ei tyhjennettvi huoneita.");
+
+// Frame for sending mails
+define("A_SHEET4_0", "Et ole asettanut tarvittavia muuttujia<BR>'chat/admin/mail4admin.php' skriptist.");
+define("A_SHEET4_1", "Lhet e-mailit");
+define("A_SHEET4_2", "Kohde:");
+define("A_SHEET4_3", "Valitse kaikki");
+define("A_SHEET4_4", "Aihe:");
+define("A_SHEET4_5", "Viesti:");
+define("A_SHEET4_6", "Aloita postitus");
+define("A_SHEET4_7", "Kaikki e-mailit on lhetetty.");
+define("A_SHEET4_8", "Sisinen virhe lhetyksen aikana.");
+define("A_SHEET4_9", "Osoite, aihe tai viesti puuttuu!");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/finnish/localized.chat.php 0.15.0/chat/localization/finnish/localized.chat.php
--- 0.14.5/chat/localization/finnish/localized.chat.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/finnish/localized.chat.php	2004-04-01 03:07:18.000000000 -0600
@@ -0,0 +1,222 @@
+<?php
+// File : finnish.lang.php
+// Translation by Jani Peltola <webmaster@melnworld.com>
+// & Veli-Pekka Yliniemi <gate@zoo-gate.fi>
+
+// extra header for charset
+$Charset = "iso-8859-1";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// welcome page
+define("L_TUTORIAL", "Opastus");
+
+define("L_WEL_1", "Viestit ovat nkyviss");
+define("L_WEL_2", "tuntia ja nimet");
+define("L_WEL_3", "minuuttia ...");
+
+define("L_CUR_1", "Tll hetkell chatissa on");
+define("L_CUR_2", ".");
+define("L_CUR_3", "Kyttj tll hetkell");
+define("L_CUR_4", "Kyttj yksityisiss huoneissa");
+
+define("L_SET_1", "Kirjautuminen");
+define("L_SET_2", "Nimi");
+define("L_SET_3", "Montako viesti nytetn");
+define("L_SET_4", "Aikavli pivityksien vlill");
+define("L_SET_5", "Valitse huone");
+define("L_SET_6", "Huoneet");
+define("L_SET_7", "Valitse");
+define("L_SET_8", "kyttjien perustamat julkiset huoneet");
+define("L_SET_9", "Luo oma");
+define("L_SET_10", "Julkinen");
+define("L_SET_11", "Yksityinen");
+define("L_SET_12", "Huone");
+define("L_SET_13", "Sitten vain");
+define("L_SET_14", "Astu sisn");
+
+define("L_SRC", "vapaasti saatavilla");
+
+define("L_SECS", "sekuntia");
+define("L_MIN", "minuutti");
+define("L_MINS", "minuttia");
+
+// registration stuff:
+define("L_REG_1", "Salasana");
+define("L_REG_1r", "(vain jos olet rekisteritynyt)");
+define("L_REG_2", "Kyttjhallinta");
+define("L_REG_3", "Rekisteridy");
+define("L_REG_4", "Muokkaa profiilia");
+define("L_REG_5", "Poista kyttj");
+define("L_REG_6", "Rekisterityminen");
+define("L_REG_7", "Salasana");
+define("L_REG_8", "e-mail");
+define("L_REG_9", "Olet rekisteritynyt onnistuneesti.");
+define("L_REG_10", "Takaisin");
+define("L_REG_11", "Muokataan");
+define("L_REG_12", "Muutetaan kyttjn tietoja");
+define("L_REG_13", "Poistetaan kyttj");
+define("L_REG_14", "Kirjaudutaan");
+define("L_REG_15", "Kirjaudu sisn");
+define("L_REG_16", "Muuta");
+define("L_REG_17", "Tietosi on onnistuneesti muutettu.");
+define("L_REG_18", "Yllpito on karkoittanut sinut.");
+define("L_REG_19", "Haluatko poistaa kyttjtunnuksesi?");
+define("L_REG_20", "Kyll");
+define("L_REG_21", "Kyttjtunnuksesi on poistettu.");
+define("L_REG_22", "Ei");
+define("L_REG_25", "Sulje");
+define("L_REG_30", "Etunimi");
+define("L_REG_31", "Sukunimi");
+define("L_REG_32", "WEB");
+define("L_REG_33", "nyt e-mail /whois kskyll");
+define("L_REG_34", "Muutetaan kyttjprofiilia");
+define("L_REG_35", "Yllpito");
+define("L_REG_36", "Puhutut kielet");
+define("L_REG_37", "Thdell <SPAN CLASS=error>*</SPAN> merkityt kentt pakollisia.");
+define("L_REG_39", "Yllpito on poistanut huoneen jossa olit.");
+define("L_REG_45", "Sukupuoli");
+define("L_REG_46", "Mies");
+define("L_REG_47", "Nainen");
+
+// e-mail validation stuff
+define("L_EMAIL_VAL_1", "Asetuksesi");
+define("L_EMAIL_VAL_2", "Tervetuloa Chat palvelimellemme.");
+define("L_EMAIL_VAL_Err", "Sisinen virhe, ota yhteytt yllpitjn: <A HREF=\"mailto:%s\">%s</A>.");
+define("L_EMAIL_VAL_Done", "Salasanasi on lhetetty e-mail osoitteeseesi.");
+
+// admin stuff
+define("L_ADM_1", "%s ei ole en tmn huoneen valvoja.");
+define("L_ADM_2", "Et ole en rekisteritynyt kyttj.");
+
+//error messages
+define("L_ERR_USR_1", "Tm kyttjnimi on jo kytss, ole hyv ja valitse jokin muu.");
+define("L_ERR_USR_2", "Sinulla pit olla kyttjnimi.");
+define("L_ERR_USR_3", "Tm kyttjnimi on rekisterity. Kirjoita salasanasi tai valitse toinen kyttjnimi.");
+define("L_ERR_USR_4", "Vr salasana!.");
+define("L_ERR_USR_5", "Sinun tytyy kirjoittaa kyttjnimesi.");
+define("L_ERR_USR_6", "Kirjoita salasanasi.");
+define("L_ERR_USR_7", "Kirjoita e-mail osoitteesi.");
+define("L_ERR_USR_8", "Sinun tytyy kirjoittaa oikea e-mail osoite.");
+define("L_ERR_USR_9", "Tm kyttjnimi on jo kytss.");
+define("L_ERR_USR_10", "Vr kyttjnimi tai salasana.");
+define("L_ERR_USR_11", "Sinun tytyy olla yllpitj.");
+define("L_ERR_USR_12", "Olet yllpitj, sinua ei voi poistaa.");
+define("L_ERR_USR_13", "Sinun pit rekisterity voidaksesi luoda oman huoneen.");
+define("L_ERR_USR_14", "Sinun tytyy rekisterity ennen kuin voit chattailla.");
+define("L_ERR_USR_15", "Kirjoita koko nimesi.");
+define("L_ERR_USR_16", "Kyttnimi ei saa sislt vlej, pilkkua tai kenoviivaa (\\).");
+define("L_ERR_USR_17", "Tt huonetta ei ole olemassa, etk ole oikeutettu luomaan sit.");
+define("L_ERR_USR_18", "Kyttjnimesi sislsi kielletyn sanan.");
+define("L_ERR_USR_19", "Voit olla ainaostaan yhdess huoneessa kerrallaan.");
+define("L_ERR_USR_20", "Sinut on poistettu tst huoneesta tai chatista.");
+define("L_ERR_ROM_1", "Huoneen nimi ei voi sislt pistett tai kenoviivaa (\\).");
+define("L_ERR_ROM_2", "Huoneen nimess kielletty sana.");
+define("L_ERR_ROM_3", "Tm huone on jo olemassa julkisena.");
+define("L_ERR_ROM_4", "Epkelpo huoneen nimi.");
+
+// users frame or popup
+define("L_EXIT", "Poistu");
+define("L_DETACH", "Ikkunoi");
+define("L_EXPCOL_ALL", "Laajenna/Pienenn huone");
+define("L_CONN_STATE", "Yhteyden tila");
+define("L_CHAT", "Chat");
+define("L_USER", "kyttj");
+define("L_USERS", "kyttj");
+define("L_NO_USER", "Ei kyttji");
+define("L_ROOM", "Huone");
+define("L_ROOMS", "Huoneet");
+define("L_EXPCOL", "Laajenna/Pienenn huone");
+define("L_BEEP", "Piippaus/ei piippausta kvijn saapuessa");
+define("L_PROFILE", "Nyt profiili");
+define("L_NO_PROFILE", "No profile");
+
+// input frame
+define("L_HLP", "Ohjeet");
+define("L_BAD_CMD", "Tllist komentoa ei ole !");
+define("L_ADMIN", "%s on jo valvoja!");
+define("L_IS_MODERATOR", "%s on jo valvoja!");
+define("L_NO_MODERATOR", "Ainoastaan tmn huoneen valvoja voi kytt tt ksky.");
+define("L_MODERATOR", "%s on nyt tmn huoneen valvoja.");
+define("L_NONEXIST_USER", "%s ei ole nykyisess huoneessa.");
+define("L_NONREG_USER", "kyttj %s ei ole rekisteritynyt.");
+define("L_NONREG_USER_IP", "Hnen IP osoitteensa on: %s.");
+define("L_NO_KICKED", "%s on yllpitj tai valvoja, eik hnt voi poistaa.");
+define("L_KICKED", "%s on poistettu.");
+define("L_NO_BANISHED", "%s on yllpitj tai valvoja, eik hnt voi karkoittaa.");
+define("L_BANISHED", "Kyttj %s on onnistuneesti karkotettu.");
+define("L_SVR_TIME", "Palvelimen aika: ");
+define("L_NO_SAVE", "Ei talletettavia viestej!");
+define("L_NO_ADMIN", "Ainoastaan yllpitj voi kytt tt ksky.");
+define("L_ANNOUNCE", "ILMOITUS");
+define("L_INVITE", "%s pyyt sinua liittymn seuraansa <A HREF=\"#\" onClick=\"window.parent.runCmd('%s','%s')\">%s</A> huoneeseen.");
+define("L_INVITE_REG", " Sinun on rekisteridyttv ennen psy thn huoneeseen.");
+define("L_INVITE_DONE", "Kutsusi on lhetetty %s:lle");
+define("L_OK", "Lhet");
+
+// help popup
+define("L_HELP_TIT_1", "Hymit");
+define("L_HELP_TIT_2", "Viestin tekstin muuttaminen");
+define("L_HELP_FMT_1", "Voit lihavoida, kursivoida tai alleviivata teksti seuraavilla tageilla, jotka tulevat viestin alkuun ja loppuun &lt;B&gt; &lt;/B&gt;, &lt;I&gt; &lt;/I&gt; tai &lt;U&gt; &lt;/U&gt;.<BR>Esimerkiksi, &lt;B&gt;tm teksti&lt;/B&gt; Tm tuottaa <B>tm teksti</B>.");
+define("L_HELP_FMT_2", "Luodaksesi hyperlinkin viestiisi (e-mail tai URL), kirjoita haluamasi osoite ilman mitn tageja. Linkki luodaan automaattisesti.");
+define("L_HELP_TIT_3", "Komennot");
+define("L_HELP_USR", "kyttj");
+define("L_HELP_MSG", "Viesti");
+define("L_HELP_ROOM", "huone");
+define("L_HELP_CMD_0", "{} on vaadituille asetuksille, [] on vaihtoehtoisille.");
+define("L_HELP_CMD_1", "Aseta viestien nyttmr, 5 vhintn.");
+define("L_HELP_CMD_1a", "Aseta nytettvien viestien mr. Minimi ja oletus on 5.");
+define("L_HELP_CMD_1b", "Pivit viestikehys ja nyt n viimeisint viesti. Minimi ja oletus on 5.");
+define("L_HELP_CMD_2a", "Muuta viestien pivitystiheytt (sekunneissa).<BR>Jos n ei ole mritetty, tai on vhemmn kuin 3, vaihtaa ei pivityst ja 10s pivityksen vlill.");
+define("L_HELP_CMD_2b", "Muokkaa viestien ja kyttjlistan pivitystiheytt (sekunneissa).<BR>Jos n ei ole mritetty tai on vhemmn kuin 3, vaihtaa ei pivityst ja 10s pivityksen vlill.");
+define("L_HELP_CMD_3", "Knteinen viestien jrjestys.");
+define("L_HELP_CMD_4", "Liity toiseen huoneeseen. Luo uuden huoneen jos huonetta ei ole ja jos olet oikeutettu luomaan uuden huoneen.<BR>n 0 on yksityiselle 1 julkiselle huoneelle. Jos ei mritetty, oletus on 1.");
+define("L_HELP_CMD_5", "Poistu chatista vaihtoehtoisen viestin kirjoituksen jlkeen.");
+define("L_HELP_CMD_6", "Vlt nyttmst viestej, jos kyttjn nimi on ennalta mrtty.<BR>Aseta hylkys pois, kun nimi ja - on mritetty , kaikille kyttjille kun - on mutta nimi ei.<BR>Ilman vaihtoehtoja tm ksky aukaisee ikkunan, joka nytt kaikki kielletyt nimet.");
+define("L_HELP_CMD_7", "Palauta edellinen kirjoitettu teksti (ksky tai viesti).");
+define("L_HELP_CMD_8", "Nyt/Piilota aika viestien alussa.");
+define("L_HELP_CMD_9", "Karkoita kyttj chatista. Ainoastaan valvoja voi kytt tt ksky.");
+define("L_HELP_CMD_10", "Lhet yksityisviesti mrtylle kyttjlle (muut kyttjt eivt ne viesti).");
+define("L_HELP_CMD_11", "Nyt mritetyn kyttjn tiedot.");
+define("L_HELP_CMD_12", "Popup ikkuna kyttjprofiilin muokkaukseen.");
+define("L_HELP_CMD_13", "Muuttaa kyttjn poistumis ja saapumis ilmoituksen plle/pois nykyisest huoneesta.");
+define("L_HELP_CMD_14", "Sallii yllpitjn tai valvojan korottaa rekisterity kyttj kyseisen huoneen valvojaksi.");
+define("L_HELP_CMD_15", "Tyhjenn viestikehys ja nyt ainoastaan 5 viimeisint viesti.");
+define("L_HELP_CMD_16", "Tallenna viimeiset n viesti (huomautukset poislukien) HTML tiedostoon. Jos n ei ole mritetty, kaikki saatavilla olevat viestit tallennetaan.");
+define("L_HELP_CMD_17", "Sallii yllpitjn lhett ilmoituksen kaikille kyttjille riippumatta huoneesta, jossa he keskustelevat.");
+define("L_HELP_CMD_18", "Pyyd toisessa huoneessa keskustelevaa liittymn huoneeseen jossa olet.");
+define("L_HELP_CMD_19", "Sallii huoneen valvojan tai yllpitjn karkoittaa \"banish\" kyttj huoneesta yllpitjn mrittmksi ajaksi.<BR>Viimeksimainittu voi karkoittaa kyttjn mys muista huoneista kuin siit jossa hn itse keskustelee. Lisksi yllpitj voi kytt '<B>&nbsp;*&nbsp;</B>' asetusta karkoittaakseen \"ikuisesti\" kyttjn koko chatista.");
+define("L_HELP_CMD_20", "Describe what you're doing without refer yourself.");
+
+// messages frame
+define("L_NO_MSG", "Ei viestej tll hetkell ...");
+define("L_TODAY_DWN", "Tnn lhetetyt viestit alkavat alapuolelta");
+define("L_TODAY_UP", "Tnn lhetetyt viestit alkavat ylpuolelta");
+
+// message colors
+$TextColors = array(		"Valkoinen" => "#FFFFFF",
+				"Punainen" => "#FF0000",
+				"Vihre" => "#009900",
+				"Sininen" => "#0000FF",
+				"Violetti" => "#9900FF",
+				"Tummanpunainen" => "#990000",
+				"TummanVihre" => "#006600",
+				"TummanSininen" => "#000099",
+				"Ruskea" => "#996633",
+				"Vaaleansininen" => "#006699",
+				"Oranssi" => "#FF6600");
+
+//ignored popup
+define("L_IGNOR_TIT", "Kielletty");
+define("L_IGNOR_NON", "Ei kiellettyj kyttji");
+
+// whois popup
+define("L_WHOIS_ADMIN", "Yllpitj");
+define("L_WHOIS_MODER", "Valvoja");
+define("L_WHOIS_USER", "Kyttj");
+
+// Notification messages of user entrance/exit
+define("L_ENTER_ROM", "%s Saapui huoneeseen");
+define("L_EXIT_ROM", "%s Poistui huoneesta");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/finnish/localized.tutorial.php 0.15.0/chat/localization/finnish/localized.tutorial.php
--- 0.14.5/chat/localization/finnish/localized.tutorial.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/finnish/localized.tutorial.php	2004-04-01 03:07:19.000000000 -0600
@@ -0,0 +1,634 @@
+<?php
+// File : finnish.tutorial.php
+// Translation by Jani Peltola <webmaster@melnworld.com>
+
+// Get the names and values for vars sent by the script that called this one
+if (isset($HTTP_GET_VARS))
+{
+	while(list($name,$value) = each($HTTP_GET_VARS))
+	{
+		$$name = $value;
+	};
+};
+?>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+
+<HEAD>
+<TITLE>Suomenkielinen opastus <?php echo(APP_NAME." - ".APP_VERSION); ?></TITLE>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+<STYLE>
+A.topLink
+{
+	text-decoration: underline;
+	color: #0000C0;
+}
+
+A.topLink:hover, A.topLink:active
+{
+	color: #FF9900;
+	text-decoration: none;
+	font-weight: 800;
+}
+
+.redText
+{
+	font-weight: 800;
+	color: #FF0000;
+}
+</STYLE>
+</HEAD>
+
+<BODY BGCOLOR="#CCCCFF">
+
+<P><A NAME="top"></P>
+<TABLE BORDER="5" CELLPADDING="5">
+<TR>
+	<TD><FONT SIZE="+2">Tmn oppaan sislt</FONT></TD>
+</TR>
+</TABLE><BR>
+
+<P CLASS='redText'>
+VAROITUS!: Netscapen kyttjien on mriteltv selaimen kieli oletukseksi tai muuten kaikki viestien merkit korvautuvat kysymysmerkill '?'.<BR>
+Tm voidaan tehd seuraavasti: View/CharacterSet/your language Auto-Detect, sitten View/CharacterSet/SetDefault.
+</P>
+
+<?php
+if (C_MULTI_LANG == "1") 
+{
+	?>
+	<A HREF="#language" CLASS="topLink">Kielen valinta</A><BR>
+	<?php
+}
+?>
+<A HREF="#login" CLASS="topLink">Chattiin sisnkirjautuminen</A><BR>
+<A HREF="#register" CLASS="topLink">Rekisterityminen</A><BR>
+<A HREF="#modProfile" CLASS="topLink">Profiilin muokkaaminen<?php if (C_SHOW_DEL_PROF == "1") echo("/poistaminen"); ?> Profiilin</A><BR>
+<?php
+if (C_VERSION == "2") 
+{
+	?>
+	<A HREF="#create_room" CLASS="topLink">Huoneen luonti</A><BR>
+	<?php
+};
+if ($Ver == "H") 
+{
+	?>
+	<A HREF="#connection_state" CLASS="topLink">Yhteyden tila</A><BR>
+	<?php
+};
+?>
+<A HREF="#sending" CLASS="topLink">Viestin lhetys</A><BR>
+<A HREF="#users_list" CLASS="topLink">Kyttjlista</A><BR>
+<A HREF="#exit" CLASS="topLink">Chatista poistuminen</A><BR>
+<A HREF="#users_popup" CLASS="topLink">Tmnhetkisten kyttjien selvittminen ilman sisnkirjautumista</A><BR>
+<P>
+<A HREF="#customize" CLASS="topLink">Chat-nkymn muokkaaminen</A><BR>
+<P>
+<A HREF="#commands" CLASS="topLink">Piirteet ja kskyt:</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#help" CLASS="topLink">Help ksky</A><BR>
+<?php
+if (C_USE_SMILIES == "1")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#smilies" CLASS="topLink">Graafiset hymit</A><BR>
+	<?php
+};
+if (C_HTML_TAGS_KEEP != "none")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#text" CLASS="topLink">Tekstin muokkaaminen</A><BR>
+	<?php
+};
+?>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#invite" CLASS="topLink">Kyttjn kutsuminen nykyiseen huoneeseesi</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#changeroom" CLASS="topLink">Huoneesta toiseen vaihtaminen</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#private" CLASS="topLink">Yksityisviestit</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#actions" CLASS="topLink">Actions</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#ignore" CLASS="topLink">Toisten kyttjien huomiotta jttminen</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#whois" CLASS="topLink">Toisten kyttjien julkiset tiedot</A><BR>
+<?php
+if (C_SAVE != "0")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#save" CLASS="topLink">Viestien tallennus</A><BR>
+	<?php
+};
+?>
+<P>
+<A HREF="#moderator" CLASS="topLink">Erikois-kskyt valvojille ja/tai yllpitjlle:</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#announce" CLASS="topLink">Ilmoituksen lhetys</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#kick" CLASS="topLink">Kyttjn poisto</A><BR>
+<?php
+if (C_BANISH != "0")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#banish" CLASS="topLink">Kyttjn karkoitus</A><BR>
+	<?php
+};
+?>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#promote" CLASS="topLink">Kyttjn ylennys valvojaksi</A><BR>
+<P>
+<HR>
+<HR>
+
+
+<?php
+if (C_MULTI_LANG == "1") 
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="language"><B>Kielen valinta:</B></A></FONT>
+	<P>
+	Voit valita haluamasi kielen <?php echo(APP_NAME); ?> knnetyn kielen klikkaamalla lippua aloitussivulla. Esimerkissmme alapuolella, kyttj valitsee kielekseen ranskan:
+	<P ALIGN="center">
+	<IMG SRC="images/tutorials/flags.gif" HEIGHT="44" WIDTH="424" ALT="Liput kielen valintaan">
+	<BR><P ALIGN="right"><A HREF="#top">Takaisin alkuun</A></P>
+	<HR>
+	<?php
+}
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="login"><B>Sisn kirjautuminen:</B></A></FONT>
+<P>
+Jos olet jo rekisteritynyt, kirjaudu sisn chattiin yksinkertaisesti kirjoittamalla kyttjnimesi ja salasanasi. Tmn jlkeen valitset haluamasi huoneen valikosta ja painat 'Astu sisn' nappia.<BR>
+<?php
+if (C_REQUIRE_REGISTER == "1")
+{
+	?>
+	<P>
+	Muussa tapauksessa sinun tytyy <A HREF="#register">rekisterity</A> ensin.
+	<?php
+}
+else
+{
+	?>
+	<P>
+	Voit <A HREF="#register">rekisterity</A> ensin tai yksinketaisesti astua sisn huoneeseen, mutta tss tapauksessa kyttjtunnustasi ei varata (joku muu voi ottaa kyttjtunnuksesi kyttns, kun olet poistunut chatista).
+	<?php
+}
+?>
+<BR><P ALIGN="right"><A HREF="#top">Takaisin alkuun</A></P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="register"><B>Rekisterityminen:</B></A></FONT> 
+<P>
+Jos et ole viel rekisteritynyt<?php if (C_REQUIRE_REGISTER == "0") echo("ja haluaisit rekisterity"); ?>, valitse 'rekisterityminen' vaihtoehto, jonka jlkeen ilmestyy pieni popup-ikkuna.
+<P>	
+<UL>
+	<LI>Ensimmiseksi, luo itsellesi kyttjnimi<?php if (!C_EMAIL_PASWD) echo(" ja salasana"); ?> kirjoittamalla ne asianmukaisiin kohtiin. Kyttjnimesi on nimi, joka nytetn automaattisesti chat-huoneessa. Se ei voi sislt vlej, pilkkuja tai kenoviivoja (\).
+<?php if (C_NO_SWEAR == "1") echo(" Se ei voi myskn sislt \"rumia sanoja\"."); ?>
+	<LI>Seuraavaksi, kirjoita etunimesi, sukunimesi ja e-mail osoitteesi. Voidaksesi rekisterity, kaikki nm kohdat on tytettv. Sukupuoli on valinnainen. 
+	<LI>Jos sinulla on kotisivut, voit kirjoittaa osoitteen sille varattuun kohtaan.
+	<LI>Kielet kentt voi helpottaa muita kyttji tulevissa keskusteluissa. He pystyvt tarkistamaan mit kielt ymmrrt.
+	<LI>Viimeiseksi, jos haluat e-mail osoitteesi julkiseksi muille kyttjille, ruksaa ruutu "Nyt e-mail julkisesti". Jos haluat etteivt muut ne e-mil osoitettasi, jt ruutu ruksaamatta.
+	<LI>Sitten, 'Rekisteridy' nappia ja kyttjtunnuksesi luodaan. Jos haluat lopettaa rekisteritymisen kesken, paina 'Sulje' nappia.
+</UL>
+<P>
+<A NAME="modProfile"></A>Tietenkin rekisterityneet kyttjt voivat muokata<?php if (C_SHOW_DEL_PROF == "1") echo("/poistaa"); ?> omaa profiiliaan klikkaamalla asianmukaista <?php echo((C_SHOW_DEL_PROF == "0" ? "linkki" : "links")); ?>.<BR>
+<BR><P ALIGN="right"><A HREF="#top">Takaisin alkuun</A></P>
+<P>
+<HR>
+
+<?php
+if (C_VERSION == "2") 
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="create_room"><B>Huoneen luonti:</B></A></FONT> 
+	<P>
+	Rekisterityneet kyttjt voivat luoda huoneita. Yksityisiin huoneisiin voivat astua sisn ainoastaan kyttjt, jotka tietvt huoneen nimen. Nimi nytetn ainoastaan huoneesa sisll oleville keskustelijoille.<BR>
+	<P>
+	Huoneen nimi ei voi sislt pilkkua tai kenoviivaa (\).<?php if (C_NO_SWEAR == "1") echo(" Se ei voi myskn sislt \"rumia sanoja\"."); ?>
+	<BR><P ALIGN="right"><A HREF="#top">Takaisin alkuun</A></P>
+	<P>
+	<HR>
+	<?php
+};
+if ($Ver == "H")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="connection_state"><B>Yhteyden tila:</B></A></FONT> 
+	<P>
+	Yhteytesi tilan osoittava kuva sijaitsee kuvaruudun oikeassa ylkulmassa. Sill on kolme mahdollista muotoa :
+	<P>	
+	<UL>
+		<LI><IMG SRC="images/connectOff.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="No connection"> Kun yhteytt ei tarvita ;
+		<LI><IMG SRC="images/connectOn.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Connecting"> Kun yhteys on pll ;
+		<LI><IMG SRC="images/connectError.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Connection failed"> Kun yhteys on eponnistunut.
+	</UL>
+	<P>
+	Kolmannessa tapauksessa punaisen "napin" klikkaaminen laukaisee uuden yhteyden muodostamis yrityksen.
+	<BR><P ALIGN="right"><A HREF="#top">Takaisin alkuun</A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="sending"><B>Viestin lhetys:</B></A></FONT> 
+<P>
+Lhettksesi viestin chat huoneessa, kirjoita viestisi vasemmassa alakulmassa sijaitsevaan teksti-kentt ja paina Enteri. Kaikkien kyttjien lhettmt viestit nkyvt chat-ikkunassa.<BR>
+<?php if (C_NO_SWEAR == "1") echo("Huomaa ett \"rumia sanoja\" ei nytet viesteiss."); ?>
+<P>
+Voit vaihtaa tekstin vrin valitsemalla uuden vrin tekstikentn oikealla puolella olevasta valikosta.
+<BR><P ALIGN="right"><A HREF="#top">Takaisin alkuun</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="users_list"><B>Kyttjlista (ei popup-ikkuna):</B></A></FONT> 
+<P>
+<OL>
+	Kyttjlistalle on mritetty kaksi perus-snt:<BR>
+	<!-- To update
+	<LI>Pieni kuva (<IMG SRC="images/whoisOff.gif" WIDTH=5 HEIGHT=9 BORDER=0 ALT="kuka? kuvake">) nytetn kaikkien rekisterityjen kyttjien nimen edess ja sen klikkaaminen laukaisee <A HREF="#whois">kuka? popup-ikkunan</A> kyseisest kyttjst. Rekisteritymttmien kyttjien nimen edess on ainoastaan miinus-merkki.;<BR>
+	-->
+	<LI>a little icon that shows gender is displayed before the nick of a registered user (clicking on it will launch the <A HREF="#whois">whois popup</A> for this user), while unregistered users have nothing but blank spaces displayed before their nick;<BR>
+	<LI>Yllpitjn tai valvojan nimi on kursivoitu.
+</OL>
+<P><I>Esimerkki</I>, Allaolevasta kuvasta saat selville seuraavat asiat:
+<TABLE BORDER=0 CELLSPACING=10>
+<TR>
+	<TD>
+		<IMG SRC="images/tutorials/usersList.gif" WIDTH=128 HEIGHT=145 BORDER=0 ALT="kyttjlista">
+	</TD>
+	<TD>
+	<UL>
+		<LI>Nicolas on yllpitj tai yksi huoneen valvojista;<BR><BR>
+		<!-- To update
+		<LI>Lolo and Jezek2 ovat rekisterityneit kyttji ilman erityisoikeuksia;<BR>
+		<LI>Mary on vain rekisteritymtn kyttj.
+		-->
+		<LI>alien (whose gender is unknown), Jezek2 and Caridad are registered users with no extra "power" for the phpMyChat room;<BR><BR>
+		<LI>lolo is a simple unregistered user.
+	</UL>
+	</TD>
+</TR>
+</TABLE>
+<BR><P ALIGN="right"><A HREF="#top">Takaisin alkuun</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="exit"><B>Chatista poistuminen:</B></A></FONT>
+<P>
+Postuaksesi, klikkaa kerran "Poistu" linkki. Vaihtoehtoisesti voit mys kirjoittaa yhden seuraavista kskyist tekstikenttn:<BR>
+/exit<BR>
+/bye<BR>
+/quit
+Nit kskyj voidaan viel tydent viestill, joka nytetn poistuessasi chatista.
+<I>Esimerkki :</I> /quit Nhdn pian!
+<P>
+Lhett viestin "Nhdn pian!" poistuessasi.
+
+<BR><P ALIGN="right"><A HREF="#top">Takaisin alkuun</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="users_popup"><B>Tmnhetkisten kyttjien selvittminen ilman sisnkirjautumista:</B></A></FONT> 
+<P>
+Voit klikata kyttjien lukumrn nyttv linkki aloitussivulla tai jos olet jo keskustelemassa, klikkaa <IMG SRC="images/popup.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Users popup"> kuvaa ruudun oikeassa ylkulmassa avataksesi ikkunan, joka nytt tmnhetkisten kyttjien luettelon, sek huoneet joissa he ovat.<BR>
+Tmn ikkunan otsikko sislt kyttjien nimet, jos niit on alle kolme, mutta muutoin kyttjien lukumrn ja heidn huoneensa.
+<P>
+Klikkaamalla <IMG SRC="images/sound.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Merkkini"> kuvaa tmn ikkunan ylosassa, voit asettaa/poistaa merkkinen, joka piippaa uuden kyttjn saapuessa huoneeseen.
+<BR><P ALIGN="right"><A HREF="#top">Takaisin alkuun</A></P>
+<P>
+<HR>
+<HR>
+
+
+<P>
+<FONT SIZE="+1"><A NAME="customize"><B>Chat-nkymn muokkaaminen:</B></A></FONT>
+<P>
+On olemassa monia erilaisia tapoja chat-nkymn muokkaamiseen. Muuttaaksesi asetuksia, yksinkertaisesti vain kirjoitat haluamasi kskyn tekstikenttn ja painat Enter:i.
+<P>
+<UL>
+	<?php
+	if ($Ver == "H")
+	{
+		?>
+		<LI><B>Clear kskyll</B> voit tyhjent chat-nkymn ja nytt vain 5 viimeisint viesti.<BR>Kirjoita "/clear" ilman lainausmerkkej.
+		<P>
+		<?php
+	}
+	else
+	{
+		?>
+		<LI><B>Order kskyll</B> voit mritt ilmestyvtk uudet viestit ruudun yl- vai alareunaan.<BR>Kirjoita "/order" ilman lainausmerkkej.
+		<P>
+		<?php
+	};
+	?>
+	<LI><B>Notify kskyll</B> voit poistaa tai laittaa plle vaihtoehdon, joka ilmoittaa kvijn saapumisesta tai pooistumisesta. Tmn vaihtoehdon oletusarvo on <?php echo(C_NOTIFY ? "Pll" : "Pois plt"); ?> ja huomautukset <?php echo(C_NOTIFY ? "nkyvt" : "eivt ny"); ?>.<BR>Kirjoita "/notify" ilman lainausmerkkej.
+	<P>
+	<LI><B>Timestamp kskyll</B> voit joko nytt tai poistaa viestin lhetysajan viestien alusta sek mys serverin ajan alapalkista. Oletusarvo on <?php echo(C_SHOW_TIMESTAMP ? "pll" : "ei pll"); ?>.<BR>Kirjoita "/timestamp" ilman lainausmerkkej.
+	<P>
+	<LI><B>Refresh kskyll</B> voit muuttaa viestikentn pivitystiheytt. Tmn hetken oletusarvo on <?php echo(C_MSG_REFRESH); ?> sekuntia. Muuttaaksesi arvoa, kirjoita "/refresh n" ilman lainausmerkkej. n on pivitystyiheys sekunneissa.
+	<P>
+	<I>Esimerkki:</I> /refresh 5
+	<P>
+	Muuttaa pivitystiheyden 5 sekuntiin. *Huomaa!, jos n asetetaan alle kolmeksi (3) pivitys nollautuu eik pivityst tapahdu ollenkaan. (kytnnllinen silloin kun haluat lukea paljon vanhoja viestej ilman hirit)!*
+	<P>
+	<?php
+	if ($Ver == "L")
+	{
+		?>
+		<LI><B>Show kskyll</B> voit valita ruudullasi kerrallaan nkyvien viestien mrn. Muuttaaksesi oletusarvoa, kirjoita "/show n" ilman lainausmerkkej. n on nytettvien viestien lukumr.
+		<P>
+		<I>Esimerkki:</I> /show 50
+		<P>
+		Nytt 50 uusinta viesti ruudullasi. Jos kaikki viestit eivt mahdu ruudulle, viestikehyksen oikeaan reunaan ilmestyy vierityspalkki.</UL>
+		<?php
+	}
+	else
+	{
+		?>
+		<LI><B>Show ja Last kskyill</B> voit tyhjent ruudun ja nytt viimeiset <I>n</I> viesti. Kirjoita "/show n" tai "/last n" ilman lainausmerkkej. n on nytettvien viestien lukumr.
+		<P>
+		<I>Esimerkki:</I> /show 50 tai /last 50
+		<P>
+		Tyhjent viestikehyksen ja nytt 50 uusinta viesti. Jos kaikki viestit eivt mahdu kerralla kehykseen, oikeaan reunaan ilmestyy vierityspalkki.</UL>
+		<?php
+	};
+	?>
+	<BR><P ALIGN="right"><A HREF="#top">Takaisin alkuun</A></P>
+	<P>
+</UL>
+<HR>
+<HR>
+
+
+<P>
+<FONT SIZE="+2"><A NAME="commands"><B><U>Piirteet ja kskyt</U></B></A></FONT> 
+<P>
+
+<FONT SIZE="+1"><A NAME="help"><B>Help ksky:</B></A></FONT>
+<P>
+Ollessasi huoneessa sisll saat ohjetiedoston esille klikkaamalla <IMG SRC="images/helpOff.gif" WIDTH=15 HEIGHT=15 BORDER=0 ALT="?"> kuvaa tekstikentn vasemmalla puolella. Voit mys kirjoittaa <B>"/help" tai "/?" kskyt</B> viestikenttn.
+<BR><P ALIGN="right"><A HREF="#top">Takaisin alkuun</A></P>
+<P>
+<P>
+<HR>
+
+<?php
+if (C_USE_SMILIES == "1")
+{
+	include("./lib/smilies.lib.php");
+	$Nb = count($SmiliesTbl);
+	$ResultTbl = Array();
+	DisplaySmilies($ResultTbl,$SmiliesTbl,$Nb,"tutorial");
+	unset($SmiliesTbl);
+	?>
+	<FONT SIZE="+1"><A NAME="smilies"><B>Hymit:</B></A></FONT>
+	<P>Voit sisllytt viesteihisi pieni graafisia hymiit. Katso alapuolelta kunkin hymin esittmiseen tarvittavat koodit.
+	<P ALIGN="center">
+	<TABLE BORDER=0 CELLPADDING=3 CELLSPACING=5>
+	<?php
+	$i = "0";
+	$Nb = count($ResultTbl);
+	while($i < $Nb)
+	{
+		if ($i > 0) echo("\t");
+		echo("<TR VALIGN=\"BOTTOM\">\n");
+		echo("$ResultTbl[$i]");
+		echo("\t</TR>\n\t<TR>\n");
+		$i++;
+		echo("$ResultTbl[$i]");
+		echo("\t</TR>\n");
+		$i++;
+	};
+	unset($ResultTbl);
+	?>
+	</TABLE>
+	<P>
+	<I>Esimerkiksi</I>, tekstin "Hei Jani :)" lhettminen ilman lainausmerkkej tuottaa seuraavanlaisen viestin: Hei Jani <IMG SRC="images/smilies/smile1.gif" WIDTH=15 HEIGHT=15 ALT=":)">.
+	<BR><P ALIGN="right"><A HREF="#top">Takaisin alkuun</A></P>
+	<P>
+	<HR>
+	<?php
+};
+
+if (C_HTML_TAGS_KEEP != "none")
+{
+	?>
+	<FONT SIZE="+1"><A NAME="text"><B>Tekstin muokkaus:</B></A></FONT>
+	<P>
+	Teksti voidaan lihavoida, kursivoida tai alleviivata sulkemalla haluttu teksti seuraavien HTML tagien sisn: &LT;B&GT; &LT;/B&GT, &LT;I&GT; &LT;/I&GT; tai &LT;U&GT; &LT;/U&GT .
+	<P>
+	<I>Esimerkiksi</I>, &LT;B&GT;Tm teksti&LT;/B&GT; tuottaa <B>Tm teksti</B>.
+	<P>
+	Luodaksesi hyperlinkin e-mail tai URL osoitteesta, kirjoita koko osoite ilman HTML tageja. Hyperlinkki luodaan automaattisesti.
+	<BR><P ALIGN="right"><A HREF="#top">Takaisin alkuun</A></P>
+	<P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="invite"><B>Kyttjn kutsuminen nykyiseen huoneeseesi:</B></A></FONT>
+<P>
+Voit kytt <B>invite ksky</B> kyttjn kutsumiseen samaan huoneeseen, jossa sin olet.
+<P>
+<I>Esimerkiksi:</I> /invite Jani
+<P>
+Lhett Janille yksityisen viestin ja pyyt hnt liittymn seuraasi huoneeseen, jossa olet. Tm viesti sislt kohdehuoneen nimen ja nimi on lisksi suora linkki kyseiseen huoneeseen.
+<P>
+Huomaa, ett voit laittaa mys useamman kuin vain yhden nimen "/invite" kskyn yhteydess. (eli "/invite Jani,Helen,Alf"). Nimet on erotettava toisistaan pilkulla (,) ilman vlej.
+<BR><P ALIGN="right"><A HREF="#top">Takaisin alkuun</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="changeroom"><B>Huoneen vaihtaminen:</B></A></FONT>
+<P>
+Ruudun oikeassa reunassa nkyy lista eri huoneista ja niiden kyttjist. Poistuaksesi nykyisest huoneestasi ja siirtyksesi johonkin muuhun huoneeseen, sinun tytyy yksinkertaisesti vain klikata haluamasi huoneen nime. Tyhjt huoneet eivt ny listassa. Voit siirty tyhjn huoneeseen kirjoittamalla kskyn <B>"/join #huoneennimi"</B> ilman lainausmerkkej.
+<P>
+<I>Esimerkiksi:</I> /join #PunainenHuone 
+<P>
+Siirt sinut PunaiseenHuoneeseen.
+<?php
+if (C_VERSION == "2")
+{
+	echo(C_REQUIRE_REGISTER == "0" ? "<P>Jos olet rekisteritynyt kyttj, voit" : "<BR><P>Voit");
+	?>
+	 mys luoda uuden huoneen tll samalla kskyll. Mutta tss tapauksessa sinun tytyy mys mritt huoneen tyyppi : 0 tarkoittaa yksityist ja 1 julkista huonetta (oletusarvo).
+	<P>
+	<I>Esimerkiksi:</I> /join 0 #MinunHuoneeni 
+	<P>
+	Luo uuden yksityisen huoneen (olettean ettei saman nimist julkista huonetta ole luotu) nimelt MinunHuoneeni ja siirt sinut kyseiseen huoneeseen.
+	<P>
+	Huoneen nimi ei saa sislt pilkkua tai kenoviivaa (\).<?php if (C_NO_SWEAR == "1") echo(" Se ei voi myskn sislt \"rumia sanoja\"."); ?>
+	<?php
+}
+?>
+<BR><P ALIGN="right"><A HREF="#top">Takaisin alkuun</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B>Oman profiilin muokkaaminen sisll chatissa:</B></FONT>
+<P>
+<B>Profile ksky</B> luo erillisen pop-up-ikkunan, jossa voit muokata kyttjprofiiliasi ja muuttaa kaikkia muita tietoja paitsi kyttjnime ja salasanaa (Sinun on kytettv aloitussivun linkki muuttaaksesi kyttjnime ja salasanaa).<BR>Kirjoita /profile
+<BR><P ALIGN="right"><A HREF="#top">Takaisin alkuun</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B>Viimeisen lhettmsi viestin tai kskyn palautus:</B></FONT>
+<P>
+<B>! ksky</B> palauttaa viimeksi lhettmsi kskyn tai viestin.<BR>Kirjoita /!
+<BR><P ALIGN="right"><A HREF="#top">Takaisin alkuun</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B>Tietylle kyttjlle vastaaminen:</B></FONT>
+<P>
+Klikkamalla kerran toisen kyttjn nime listasta (ruudun oikeassa reunassa), heidn "kyttjnimens" ilmestyy tekstikenttn. Tll toiminnolla sinun on mahdollista helposti kohdistaa julkinen viestisi tietylle kyttjlle, mahdollisesti vastaukseksi johonkin jota hn on aikaisemin kirjoittanut.
+<BR><P ALIGN="right"><A HREF="#top">Takaisin alkuun</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="private"><B>Yksityiset viestit:</B></A></FONT>
+<P>
+Lhettksesi yksityisviestin toiselle kyttjlle omassa nykyisess huoneessasi, kirjoita ksky <B>"/msg kyttjnimi viesti" tai "/to kyttjnimi viesti"</B> ilman lainausmerkkej.
+<P>
+<I>Esimerkiksi, jos kyttjnimi on Jani:</I> /msg Jani Moi, kuinka voit?
+<P>
+Viesti nkyy tllin Janille ja sinulle itsellesi, mutta ei muille kyttjille.
+<P>
+Huomaa, ett viestin lhettjn kyttjnimen klikkaaminen chat-kehyksess siirt tmn kskyn automaattisesti tekstikenttn viesti varten.
+<BR><P ALIGN="right"><A HREF="#top">Takaisin alkuun</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="actions"><B>Actions:</B></A></FONT>
+<P>
+To describe what you're doing you can use the <B>command "/me action"</B> without quotes.
+<P>
+<I>For example:</I> If Jack sends the message "/me is smoking a cigarette" the message frame will shown "<B>* Jack</B>" is smoking a cigarette".
+<BR><P ALIGN="right"><A HREF="#top">Takaisin alkuun</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="ignore"><B>Muiden kyttjien huomiotta jttminen:</B></A></FONT>
+<P>
+Jttksesi toisen kyttjn lhettmt viestit huomioimatta, kirjoita ksky <B>"/ignore kyttjnimi"</B> ilman lainausmerkkej.
+<P>
+<I>Esimerkki:</I> /ignore Jani
+<P>
+Tst eteenpin et en ne Janin lhettmi viestej.
+<P>
+Nhdksesi listan kyttjist, joiden viestej ei nytet sinulle, kirjoita ksky <B>"/ignore"</B> ilman lainausmerkkej. 
+<P>
+Poistaaksesi huomioimatta jttmisen, kirjoita ksky <B>"/ignore - kyttjnimi"</B> ilman lainausmerkkej. Kskyss "-" on tavuviiva. <P> 
+<P>
+<I>Esimerkki:</I> /ignore - Jani 
+<P>
+Nyt kaikki Janin lhettmt vietit nkyvt jlleen ruudullasi, sislten mys Janin ennen tt komentoa lhettmt viestit.
+Jos et mrit kyttjnime tavuviivan (-) jlkeen, koko "huomioimattomuus" listasi tyhjenee.
+<P>
+Huomaa, ett voit laittaa useamman kuin yhden kyttjnimen "/ignore" kskyn yhteydess (eli "/ignore Jani,Helen,Alf" tai "/ignore - Jani,Alf"). Nimet on erotettava pilkulla (,) ilman vlej.
+<BR><P ALIGN="right"><A HREF="#top">Takaisin alkuun</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="whois"><B>Toisten kyttjien julkiset tiedot:</B></A></FONT>
+<P>
+Nhdksesi toisten kyttjien julkiset tiedot, kirjoita ksky <B>"/whois kyttjnimi"</B> ilman lainausmerkkej.
+<P>
+<I>Esimerkki:</I> /whois Jani
+<P>
+Jossa 'Jani' on kyttjnimi. Tm ksky luo erillisen pop-up-ikkunan, jossa nkyy kyttjn julkiset tiedot.
+<BR><P ALIGN="right"><A HREF="#top">Takaisin alkuun</A></P>
+<P>
+<HR>
+
+<?php
+if (C_SAVE != "0")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="save"><B>Viestien tallennus:</B></A></FONT>
+	<P>
+	Tallentaaksesi viestit (huomautukset mukana) paikalliseen HTML tiedostoon, kirjoita ksky <B>"/save n"</B> ilman lainausmerkkej.
+	<P>
+	<I>Esimerkiksi:</I> /save 5
+	<P>
+	Jossa '5' on tallennettavien viestien lukumr. Jos n ei ole mritelty, kaikki kyseisen huoneen saatavilla olevat viestit tallennetaan.
+	<BR><P ALIGN="right"><A HREF="#top">Takaisin alkuun</A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+<HR>
+
+
+<P>
+<FONT SIZE="+2"><A NAME="moderator"><B><U>Kskyj vain yllpidolle ja/tai valvojille</U></B></A></FONT> 
+
+<P>
+<FONT SIZE="+1"><A NAME="announce"><B>Ilmoituksen lhetys:</B></A></FONT>
+<P>
+Yllpitj voi lhett ilmoituksen kaikille kyttjille heidn huoneistaan riippumatta <B>announce</B> kskyll.
+<P>
+<I>Esimerkiksi: /announce Chat suljetaan pivityksen vuoksi tnn klo 20:00.</I>
+<BR><P ALIGN="right"><A HREF="#top">Takaisin alkuun</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="kick"><B>Kyttjn poistaminen:</B></FONT>
+<P>
+Valvojat voivat poistaa kyttjn ja yllpitj voi mpoistaa kyttjn tai valvojan <B>kick</B> kskyll. Poistettavan kyttjn on oltava samassa huoneessa.
+<P>
+<I>Esimerkiksi</I>, jos Jani olisi poistettava henkil:</I> /kick Jani</I>
+<BR><P ALIGN="right"><A HREF="#top">Takaisin alkuun</A></P>
+<P>
+<HR>
+
+<?php
+if (C_BANISH != "0")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="banish"><B>Kyttjn karkoitus:</B></A></FONT>
+	<P>
+	Valvoja voi karkoittaa kyttjn ja yllpitj voi karkoittaa valvojan tai kyttjn <B>ban</B> kskyll.<BR>
+	Yllpitj voi karkoittaa kyttjn mys muista huoneista kuin siit jossa hn itse on. Hn voi mys karkoittaa kyttjn ikuisiksi ajoiksi '<B>&nbsp;*&nbsp;</B>' merkill ennen karkoitettavan kyttjn nime.
+	<P>
+	<I>Esimerkiksi</I>, jos Jani olisi karkoitettava kyttj : <I>/ban Jani</I> tai <I>/ban * Jani</I>
+	<BR><P ALIGN="right"><A HREF="#top">Takaisin alkuun</A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="promote"><B>Kyttjn ylennys valvojaksi:</B></A></FONT>
+<P>
+Valvojat ja yllpitj voivat ylent kyttjn valvojaksi <B>promote</B> kskyll.
+<P>
+<I>Esimerkiksi</I>, jos Jani olisi ylennettv henkil:<I> /promote Jani</I>
+<P>
+Ainoastaan yllpitj voi peruuttaa ylennyksen (muuttaa valvoja kyttjksi) sille tarkoitetulla sivulla. Toiminnalle ei ole olemassa omaa ksky.
+<BR><P ALIGN="right"><A HREF="#top">Takaisin alkuun</A></P>
+<P>
+
+
+</BODY>
+</HTML>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/finnish/regex.txt 0.15.0/chat/localization/finnish/regex.txt
--- 0.14.5/chat/localization/finnish/regex.txt	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/finnish/regex.txt	2004-04-01 03:07:19.000000000 -0600
@@ -0,0 +1 @@
+fi|finnish
\ No newline at end of file
Binary files 0.14.5/chat/localization/french/flag.gif and 0.15.0/chat/localization/french/flag.gif differ
diff -ruN 0.14.5/chat/localization/french/localized.admin.php 0.15.0/chat/localization/french/localized.admin.php
--- 0.14.5/chat/localization/french/localized.admin.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/french/localized.admin.php	2004-04-01 03:07:19.000000000 -0600
@@ -0,0 +1,61 @@
+<?php
+// File : french.lang.php
+// Translation by Loc Chapeaux <lolo@phpheaven.net>
+
+// extra header for charset
+$Charset = "iso-8859-1";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// Top frame
+define("A_MENU_0", "Administration de %s");
+define("A_MENU_1", "Utilisateurs enregistrs");
+define("A_MENU_2", "Utilisateurs bannis");
+define("A_MENU_3", "Dpoussirage des salons");
+define("A_MENU_4", "Envoyer un e-mail");
+
+// Frame for registered users
+define("A_SHEET1_1", "Liste des utilisateurs enregistrs et de leurs droits");
+define("A_SHEET1_2", "Pseudo");
+define("A_SHEET1_3", "Autorisations");
+define("A_SHEET1_4", "Salons modrs");
+define("A_SHEET1_5", "Les salons modrs sont spars par une virgule sans espace (,).");
+define("A_SHEET1_6", "Supprimer les profils selectionns");
+define("A_SHEET1_7", "Modifier");
+define("A_SHEET1_8", "Il n'y a pas d'utilisateur enregistr hors vous-mme.");
+define("A_SHEET1_9", "Bannir les profils selectionns");
+define("A_SHEET1_10", "Vous devez maintenant vous rendre dans la feuille concernant les utiliseurs bannis afin d'affiner vos choix.");
+define("A_SHEET1_11", "Dernier accs");
+define("A_USER", "Utilisateur");
+define("A_MODER", "Modrateur");
+define("A_PAGE_CNT", "Page %s de %s");
+
+// Frame for banished users
+define("A_SHEET2_1", "Liste des utilisateurs bannis et des salons concerns");
+define("A_SHEET2_2", "IP");
+define("A_SHEET2_3", "Salons concerns");
+define("A_SHEET2_4", "Jusqu'au");
+define("A_SHEET2_5", "pas de limite");
+define("A_SHEET2_6", "Les salons sont spars par une virgule sans espace (,) s'ils sont moins de 4, au-del<BR>le sigle '<B>&nbsp;*&nbsp;</B>' bannit de tout salon.");
+define("A_SHEET2_7", "Rvoquer le bannissement des utilisateurs selectionns");
+define("A_SHEET2_8", "Aucun utilisateur n'est banni.");
+
+// Frame for cleaning rooms
+define("A_SHEET3_1", "Liste des salons existants");
+define("A_SHEET3_2", "Purger un salon qui n'appartient pas aux salons \"par dfaut\"<BR>supprimera aussi, pour les utilisateurs concerns, le statut de<BR>modrateur pour ce salon.");
+define("A_SHEET3_3", "Purger les salons selectionns");
+define("A_SHEET3_4", "Il n'est aucun salon contenant des messages.");
+
+// Frame for sending mails
+define("A_SHEET4_0", "Des variables requises n'ont pas t renseignes dans<BR>le script 'chat/admin/mail4admin.php'.");
+define("A_SHEET4_1", "Envoyer un e-mail");
+define("A_SHEET4_2", "A :");
+define("A_SHEET4_3", "Selectionner tout");
+define("A_SHEET4_4", "Objet :");
+define("A_SHEET4_5", "Message :");
+define("A_SHEET4_6", "Envoyer");
+define("A_SHEET4_7", "Les e-mails ont t envoys.");
+define("A_SHEET4_8", "Une erreur interne est survenue lors de l'envoi des e-mails.");
+define("A_SHEET4_9", "Aucun destinataire n'a t selectionn ou bien l'objet ou le message est vide !");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/french/localized.chat.php 0.15.0/chat/localization/french/localized.chat.php
--- 0.14.5/chat/localization/french/localized.chat.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/french/localized.chat.php	2004-04-01 03:07:20.000000000 -0600
@@ -0,0 +1,220 @@
+<?php
+// File : french.lang.php
+// Translation by Loc Chapeaux <lolo@phpheaven.net>
+
+// extra header for charset
+$Charset = "iso-8859-1";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// welcome page
+define("L_TUTORIAL", "Tutoriel");
+
+define("L_WEL_1", "Messages et pseudos sont respectivement effacs au bout de");
+define("L_WEL_2", "heures et de");
+define("L_WEL_3", "minutes ...");
+
+define("L_CUR_1", "Actuellement, il y a");
+define("L_CUR_2", "sur ce serveur.");
+define("L_CUR_3", "Utilisateurs actuellement connects");
+define("L_CUR_4", "utilisateurs dans des salons privs");
+
+define("L_SET_1", "Choisissez ...");
+define("L_SET_2", "votre pseudo");
+define("L_SET_3", "le nombre de messages  afficher");
+define("L_SET_4", "la frquence des mises  jour");
+define("L_SET_5", "Slectionnez un salon de discussion ...");
+define("L_SET_6", "salons par dfaut");
+define("L_SET_7", "Faites votre choix ...");
+define("L_SET_8", "autres salons publics");
+define("L_SET_9", "crez votre propre salon");
+define("L_SET_10", "public");
+define("L_SET_11", "priv");
+define("L_SET_12", "");
+define("L_SET_13", "Et maintenant vous pouvez");
+define("L_SET_14", "discuter");
+
+define("L_SRC", "est disponible gratuitement sur");
+
+define("L_SECS", "secondes");
+define("L_MIN", "minute");
+define("L_MINS", "minutes");
+
+// registration and admin stuff:
+define("L_REG_1", "votre mot de passe");
+define("L_REG_1r", "(utilisateurs enregistrs seuls)");
+define("L_REG_2", "Utilisateurs enregistrs");
+define("L_REG_3", "S'enregistrer");
+define("L_REG_4", "Editer son profil");
+define("L_REG_5", "Se dsenregistrer");
+define("L_REG_6", "Enregistrement d'un utilisateur");
+define("L_REG_7", "votre mot de passe");
+define("L_REG_8", "votre e-mail");
+define("L_REG_9", "Vous avez t enregistr.");
+define("L_REG_10", "Retour");
+define("L_REG_11", "Edition");
+define("L_REG_12", "Modification du profil d'un utilisateur");
+define("L_REG_13", "Dsenregistrement");
+define("L_REG_14", "Login");
+define("L_REG_15", "Entrer");
+define("L_REG_16", "Modifier");
+define("L_REG_17", "Votre profil a t modifi.");
+define("L_REG_18", "Vous avez t ject par le modrateur.");
+define("L_REG_19", "Voulez-vous vraiment vous dsenregistrer ?");
+define("L_REG_20", "Oui");
+define("L_REG_21", "Vous n'tes plus enregistr.");
+define("L_REG_22", "Non");
+define("L_REG_25", "Fermer");
+define("L_REG_30", "prnom");
+define("L_REG_31", "nom");
+define("L_REG_32", "WEB");
+define("L_REG_33", "e-mail visible via la commande /whois");
+define("L_REG_34", "Edition de votre profil");
+define("L_REG_35", "Administration");
+define("L_REG_36", "langues parles");
+define("L_REG_37", "Les champs marqus du sigle <span class=\"error\">*</span> doivent tre renseigns.");
+define("L_REG_39", "Le salon dans lequel vous discutiez a t dtruit par l'administrateur.");
+define("L_REG_45", "sexe");
+define("L_REG_46", "masculin");
+define("L_REG_47", "fminin");
+
+// e-mail validation stuff
+define("L_EMAIL_VAL_1", "Vos paramtres de connexion");
+define("L_EMAIL_VAL_2", "Bienvenue(e) sur notre chat.");
+define("L_EMAIL_VAL_Err", "Erreur interne, veuillez contacter l'administrateur&nbsp;: <a href=\"mailto:%s\">%s</a>.");
+define("L_EMAIL_VAL_Done", "Votre mot de passe vous a t envoy<BR>par e-mail.");
+
+// admin stuff
+define("L_ADM_1", "%s n'est plus modrateur pour ce salon.");
+define("L_ADM_2", "Vous n'tes plus enregistr.");
+
+//error messages
+define("L_ERR_USR_1", "Un utilisateur dispose dj de ce pseudo. Veuillez en choisir un autre.");
+define("L_ERR_USR_2", "Vous n'avez pas choisi votre pseudo or il en faut un !");
+define("L_ERR_USR_3", "Ce pseudo est celui d'un utilisateur enregistr.<BR>Entrez le mot de passe associ ou choisissez un autre pseudo.");
+define("L_ERR_USR_4", "Mot de passe invalide.");
+define("L_ERR_USR_5", "Vous devez choisir un pseudo.");
+define("L_ERR_USR_6", "Vous devez choisir un mot de passe.");
+define("L_ERR_USR_7", "Vous devez entrer votre adresse e-mail.");
+define("L_ERR_USR_8", "Adresse e-mail invalide.");
+define("L_ERR_USR_9", "Ce pseudo est dj reserv.");
+define("L_ERR_USR_10", "Pseudo et/ou mot de passe invalide(s).");
+define("L_ERR_USR_11", "Seul l'administrateur peut accder  cette page.");
+define("L_ERR_USR_12", "En tant qu'administrateur votre profil ne peut tre supprim.");
+define("L_ERR_USR_13", "Seuls les utilisateurs enregistrs sont autoriss  crer un salon.");
+define("L_ERR_USR_14", "Vous devez vous enregistrer.");
+define("L_ERR_USR_15", "Les champs nom et prnom ne sont pas correctement renseigns.");
+define("L_ERR_USR_16", "Un pseudo ne peut contenir ni espace, ni virgule, ni anti-slash (\\).");
+define("L_ERR_USR_17", "Ce salon n'existe pas et vous n'tes pas autoris  en crer un.");
+define("L_ERR_USR_18", "Mot interdit dans votre pseudo.");
+define("L_ERR_USR_19", "Vous ne pouvez discuter dans deux salons simultanment.");
+define("L_ERR_USR_20", "Vous avez t banni(e) du salon ou du chat.");
+define("L_ERR_ROM_1", "Le nom d'un salon ne peut contenir ni virgule, ni anti-slash (\\).");
+define("L_ERR_ROM_2", "Mot interdit dans le nom du salon  crer.");
+define("L_ERR_ROM_3", "Ce salon existe dj et son accs est public.");
+define("L_ERR_ROM_4", "Ce nom de salon est invalide.");
+
+// users frame or popup
+define("L_EXIT", "Quitter");
+define("L_DETACH", "Dtacher");
+define("L_EXPCOL_ALL", "Afficher/Rduire tout");
+define("L_CONN_STATE", "Etat de la connexion");
+define("L_CHAT", "Discuter");
+define("L_USER", "utilisateur");
+define("L_USERS", "utilisateurs");
+define("L_NO_USER", "Pas d'utilisateur");
+define("L_ROOM", "salon");
+define("L_ROOMS", "salons");
+define("L_EXPCOL", "Afficher/Rduire le salon");
+define("L_BEEP", "Bip ou non  l'entre d'un nouvel utilisateur");
+define("L_PROFILE", "Voir le profil");
+define("L_NO_PROFILE", "Pas de profil");
+
+// input frame
+define("L_HLP", "Aide");
+define("L_BAD_CMD", "Commande invalide !");
+define("L_ADMIN", "%s est dj administrateur !");
+define("L_IS_MODERATOR", "%s est dj modrateur !");
+define("L_NO_MODERATOR", "Cette commande est rserve au(x) modrateur(s) de ce salon.");
+define("L_MODERATOR", "%s est maintenant modrateur pour ce salon.");
+define("L_NONEXIST_USER", "Pas d'utilisateur %s dans le salon courant.");
+define("L_NONREG_USER", "%s n'est pas un utilisateur enregistr.");
+define("L_NONREG_USER_IP", "Son adresse IP est : %s.");
+define("L_NO_KICKED", "L'utilisateur %s est modrateur ou administrateur et ne peut tre ject.");
+define("L_KICKED", "L'utilisateur %s a t ject.");
+define("L_NO_BANISHED", "L'utilisateur %s est modrateur ou administrateur et ne peut tre banni.");
+define("L_BANISHED", "L'utilisateur %s a t banni.");
+define("L_SVR_TIME", "Heure serveur : ");
+define("L_NO_SAVE", "Aucun message  sauvegarder !");
+define("L_NO_ADMIN", "Cette commande est rserve  l'administrateur.");
+define("L_ANNOUNCE", "ANNONCE");
+define("L_INVITE", "%s vous suggre de la/le rejoindre dans le salon <a href=\"#\" onClick=\"window.parent.runCmd('%s','%s'); return false\">%s</a>.");
+define("L_INVITE_REG", " Ce salon n'est accessible qu'aux utilisateurs enregistrs.");
+define("L_INVITE_DONE", "Votre invitation a t envoye  %s.");
+define("L_OK", "Envoyer");
+
+// help popup
+define("L_HELP_TIT_1", "Emoticons");
+define("L_HELP_TIT_2", "Mises en forme du texte des messages");
+define("L_HELP_FMT_1", "Vos messages peuvent contenir du texte en gras, en italique ou soulign. Pour ce faire il vous suffit d'encadrer la section concerne par les tags &lt;B&gt; &lt;/B&gt;, &lt;I&gt; &lt;/I&gt; ou &lt;U&gt; &lt;/U&gt;.<BR>Par exemple, en tapant &lt;B&gt;ce texte&lt;/B&gt; vous obtiendrez <B>ce texte</B>.");
+define("L_HELP_FMT_2", "Pour obtenir des hyperliens (URL ou e-mail) tapez simplement l'adresse en question dans votre message sans aucun tag. Elle sera automatiquement traite.");
+define("L_HELP_TIT_3", "Commandes");
+define("L_HELP_USR", "utilisateur");
+define("L_HELP_MSG", "message");
+define("L_HELP_ROOM", "salon");
+define("L_HELP_CMD_0", "{} signale un paramtre ncessaire, [] un paramtre optionnel.");
+define("L_HELP_CMD_1a", "Dfinit le nombre de messages  afficher, 5 tant la valeur par dfaut et le minimum");
+define("L_HELP_CMD_1b", "Rinitialise le cadre des messages et affiche les n derniers d'entre eux, 5 tant la valeur par dfaut et le minimum.");
+define("L_HELP_CMD_2a", "Modifie le dlai de rafrachissement du cadre contenant les messages (n est exprim en secondes).<BR>Si n n'est pas spcifi ou est infrieur  3 le rafrachissement n'est plus assur.");
+define("L_HELP_CMD_2b", "Modifie le dlai de rafrachissement des cadres contenant les messages et la liste des utilisateurs connects (n est exprim en secondes).<BR>Si n n'est pas spcifi ou est infrieur  3 le rafrachissement n'est plus assur.");
+define("L_HELP_CMD_3", "Inverse l'ordre d'affichage des messages.");
+define("L_HELP_CMD_4", "Permet de se rendre dans un nouveau salon aprs l'avoir cr si ncessaire et si vous tes autoris  le faire.<BR>n prend la valeur 0 pour un salon priv et 1 pour un salon public (valeur par dfaut).");
+define("L_HELP_CMD_5", "Permet de quitter le chat aprs avoir envoy le message (optionnel).");
+define("L_HELP_CMD_6", "Supprime l'affichage des messages provenant d'un utilisateur si nick est spcifi.<BR>Restaure cet affichage si nick et - apparaissent tous deux ; si - l'est mais pas nick, restaure l'affichage des messages de tous les utilisateurs.<BR>Sans aucune des options, affiche une fentre qui contient l'ensemble des utilisateurs \"ignors\".");
+define("L_HELP_CMD_7", "Rappelle la dernire ligne envoye (commande ou message).");
+define("L_HELP_CMD_8", "Active/supprime l'affichage de l'heure  laquelle les messages ont t posts.");
+define("L_HELP_CMD_9", "Expulse un utilisateur du salon courant pour un modrateur, du chat pour l'administrateur. Commande rserve au modrateur du salon.");
+define("L_HELP_CMD_10", "Envoie un message priv  l'utilisateur spcifi (message invisible pour les autres).");
+define("L_HELP_CMD_11", "Affiche le profil de l'utilisateur spcifi.");
+define("L_HELP_CMD_12", "Permet de modifier son profil.");
+define("L_HELP_CMD_13", "Active/dsactive l'affichage des notifications pour l'entre/la sortie d'un utilisateur dans le salon courant.");
+define("L_HELP_CMD_14", "Permet  l'administrateur ou au(x) modrateur(s) du salon courant de rendre un autre utilisateur enregistr modrateur de ce mme salon.");
+define("L_HELP_CMD_15", "Rinitialise le cadre des messages en ne conservant que les 5 derniers d'entre eux.");
+define("L_HELP_CMD_16", "Sauvegarde les n derniers messages hors notifications dans un fichier HTML. Si n n'est pas spcifi, tous les messages disponibles seront concerns.");
+define("L_HELP_CMD_17", "Permet  l'administrateur d'envoyer une annonce visible par tous les utilisateurs quelque soit le salon dans lequel ils discutent.");
+define("L_HELP_CMD_18", "Suggre  un utilisateur discutant dans un autre salon de se joindre  votre salon de discussion.");
+define("L_HELP_CMD_19", "Permet au(x) modrateur(s) d'un salon ou  l'administrateur de \"bannir\" un utilisateur du salon pendant un temps dtermin par l'administrateur.<BR>Ce dernier peut bannir un utilisateur discutant dans un salon autre que le sien et utiliser le paramtre '<B>&nbsp;*&nbsp;</B>' pour bannir \" jamais\" un utilisateur du chat, tous salons confondus.");
+define("L_HELP_CMD_20", "Affiche ce que vous tes en train de faire sans qu'il soit besoin de taper votre pseudo en dbut de message.");
+
+// message frame
+define("L_NO_MSG", "Pas de message");
+define("L_TODAY_DWN", "Les messages envoys aujourd'hui commencent ci-dessous");
+define("L_TODAY_UP", "Les messages envoys aujourd'hui commencent ci-dessus");
+
+// message colors
+$TextColors = array(	"Noir" => "#000000",
+				"Rouge vif" => "#FF0000",
+				"Rouge" => "#990000",
+				"Vert vif" => "#009900",
+				"Vert" => "#006600",
+				"Bleu vif" => "#0000FF",
+				"Bleu lagon" => "#006699",
+				"Bleu" => "#000099",
+				"Violet" => "#9900FF",
+				"Marron" => "#996633",
+				"Carotte" => "#FF6600");
+
+//ignored popup
+define("L_IGNOR_TIT", "Ignors");
+define("L_IGNOR_NON", "Pas d'utilisateur ignor");
+
+// whois popup
+define("L_WHOIS_ADMIN", "Administrateur");
+define("L_WHOIS_MODER", "Modrateur");
+define("L_WHOIS_USER", "Utilisateur");
+
+// Notification messages of user entrance/exit
+define("L_ENTER_ROM", "%s entre dans ce salon");
+define("L_EXIT_ROM", "%s a quitt ce salon");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/french/localized.tutorial.php 0.15.0/chat/localization/french/localized.tutorial.php
--- 0.14.5/chat/localization/french/localized.tutorial.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/french/localized.tutorial.php	2004-04-01 03:07:21.000000000 -0600
@@ -0,0 +1,627 @@
+<?php
+// File : french.tutorial.php
+// Translation by Loc Chapeaux <lolo@phpheaven.net>
+
+// Get the names and values for vars sent by the script that called this one
+if (isset($HTTP_GET_VARS))
+{
+	while(list($name,$value) = each($HTTP_GET_VARS))
+	{
+		$$name = $value;
+	};
+};
+?>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+
+<HEAD>
+<TITLE>Tutoriel en franais pour <?php echo(APP_NAME." - ".APP_VERSION); ?></TITLE>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+<STYLE>
+A.topLink
+{
+	text-decoration: underline;
+	color: #0000C0;
+}
+
+A.topLink:hover, A.topLink:active
+{
+	color: #FF9900;
+	text-decoration: none;
+	font-weight: 800;
+}
+
+.redText
+{
+	font-weight: 800;
+	color: #FF0000;
+}
+</STYLE>
+</HEAD>
+
+<BODY BGCOLOR="#CCCCFF">
+<P><A NAME="top"></P>
+<TABLE BORDER="5" CELLPADDING="5">
+<TR>
+	<TD><FONT SIZE="+2">Table des matires</FONT></TD>
+</TR>
+</TABLE><BR>
+
+<P CLASS="redText">
+Attention : les utilisateurs de Netscape doivent dfinir leur langue comme encodage par dfaut sinon chacun des caractres des messages risque d'apparatre sous forme de '?'.<BR>
+Pour faire cela : Afficher/Encodage/votre langue, puis Afficher/Encodage/Definir le jeu de caractres par dfaut.
+</P>
+
+<?php
+if (C_MULTI_LANG == "1") 
+{
+	?>
+	<A HREF="#language" CLASS="topLink">Choisir sa langue</A><BR>
+	<?php
+}
+?>
+<A HREF="#login" CLASS="topLink">Entrer dans un salon de discussion</A><BR>
+<A HREF="#register" CLASS="topLink">S'enregistrer</A><BR>
+<A HREF="#modProfile" CLASS="topLink">Modifier<?php if (C_SHOW_DEL_PROF == "1") echo("/supprimer"); ?> son profil</A><BR>
+<?php
+if (C_VERSION == "2") 
+{
+	?>
+	<A HREF="#create_room" CLASS="topLink">Crer un salon de discussion</A><BR>
+	<?php
+};
+if ($Ver == "H") 
+{
+	?>
+	<A HREF="#connection_state" CLASS="topLink">Dtecter les erreurs de connexion</A><BR>
+	<?php
+};
+?>
+<A HREF="#sending" CLASS="topLink">Envoyer un message</A><BR>
+<A HREF="#users_list" CLASS="topLink">Les informations prsentes dans la liste des utilisateurs</A><BR>
+<A HREF="#exit" CLASS="topLink">Quitter un salon de discussion</A><BR>
+<A HREF="#users_popup" CLASS="topLink">Savoir qui est connect sans l'tre soi-mme</A><BR>
+<P>
+<A HREF="#customize" CLASS="topLink">Modifier les paramtres d'affichage</A><BR>
+<P>
+<A HREF="#commands" CLASS="topLink">Fonctionnalits et commandes :</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#help" CLASS="topLink">Aide en ligne</A><BR>
+<?php
+if (C_USE_SMILIES == "1")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#smilies" CLASS="topLink">Emoticons graphiques</A><BR>
+	<?php
+};
+if (C_HTML_TAGS_KEEP != "none")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#text" CLASS="topLink">Mise en forme du texte</A><BR>
+	<?php
+};
+?>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#invite" CLASS="topLink">Suggrer  utilisateur de venir dans le salon que vous occupez</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#changeroom" CLASS="topLink">Changer de salon de discussion</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#private" CLASS="topLink">Messages privs</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#actions" CLASS="topLink">Actions</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#ignore" CLASS="topLink">Ignorer les messages d'autres utilisateurs</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#whois" CLASS="topLink">Afficher les informations relatives  un autre utilisateur</A><BR>
+<?php
+if (C_SAVE != "0")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#save" CLASS="topLink">Sauvegarder les messages</A><BR>
+	<?php
+};
+?>
+<P>
+<A HREF="#moderator" CLASS="topLink">Commandes rserves aux modrateurs et/ou  l'administrateur :</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#announce" CLASS="topLink">Poster une annonce gnrale</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#kick" CLASS="topLink">Ejecter un utilisateur</A><BR>
+<?php
+if (C_BANISH != "0")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#banish" CLASS="topLink">Bannir un utilisateur</A><BR>
+	<?php
+};
+?>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#promote" CLASS="topLink">Faire accder un utilisateur au statut de modrateur</A><BR>
+
+<P>
+<HR>
+<HR>
+
+
+<?php
+if (C_MULTI_LANG == "1") 
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="language"><B>Choisir sa langue :</B></A></FONT>
+	<P>
+	Vous pouvez choisir la langue  utiliser parmi celles dans lesquelles <?php echo(APP_NAME); ?> a t traduit en cliquant sur le drapeau correspondant de la page d'accueil. Dans l'exemple ci-dessous, un utilisateur choisit le franais :
+	<P ALIGN="center">
+	<IMG SRC="images/tutorials/flags.gif" HEIGHT="44" WIDTH="424" ALT="Drapeau de slection de langue">
+	<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+	<HR>
+	<?php
+}
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="login"><B>Entrer dans un salon de discussion :</B></A></FONT>
+<P>
+Si vous vous tes dj enregistr, il vous suffit d'inscrire votre nom d'utilisateur et votre mot de passe dans les champs idoines. Slectionnez ensuite un salon de discussion et cliquez sur le bouton "Discuter..."<BR>
+<?php
+if (C_REQUIRE_REGISTER == "1")
+{
+	?>
+	<P>
+	Sinon vous devez commencer par vous <A HREF="#register">enregistrer</A>.
+	<?php
+}
+else
+{
+	?>
+	<P>
+	Sinon vous pouvez commencer par vous <A HREF="#register">enregistrer</A> ou simplement choisir un pseudo et un salon de discussion. Dans ce dernier cas votre pseudo ne sera pas rserv (d'autres utilisateurs pourront s'en servir une fois que vous vous serez dconnects).
+	<?php
+}
+?>
+<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="register"><B>S'enregistrer :</B></A></FONT> 
+<P>
+Si vous n'tes pas encore enregistr <?php if (C_REQUIRE_REGISTER == "0") echo("et que vouliez le faire"); ?>, cliquez sur le lien correspondant  cela sur la page d'accueil. Une petite fentre apparatra.
+<P>	
+<UL>
+	<LI>Choisissez d'abord votre pseudo<?php if (!C_EMAIL_PASWD) echo(" et votre mot de passe"); ?>. Votre pseudo est le nom d'utilisateur qui vous identifiera au sein des salons de discussions auxquels vous participerez. Il ne peut contenir ni caractre espace, ni virgule, ni anti-slash (\).
+<?php if (C_NO_SWEAR == "1") echo(" Il ne pourra pas non plus contenir de \"gros mots\"."); ?>
+	<LI>Entrez ensuite vos nom, prnom et adresse e-mail. Sans ces informations l'enregistrement de votre profil vous sera refus. L'information concernant votre sexe est facultative.
+	<LI>Si vous disposez d'un site web personnel, vous pouvez en indiquer l'adresse.
+	<LI>L'information concernant les langues que vous parlez pourra tre utile aux autres utilisateurs : il seront ainsi  mme de savoir dans quelle(s) langue(s) vous tes en mesure de les comprendre.
+	<LI>Enfin, en cochant la case correspondante vous pouvez choisir de rendre votre adresse e-mail visible pour les utilisateurs qui consulteront votre profil. Si vous prfrez que cette information reste cache, laissez la case vierge.
+	<LI>Il ne vous reste plus alors qu' cliquer sur le bouton "S'enregistrer" et votre profil sera cr. Pour sortir du processus d'enregistrement, vous pouvez cliquer sur le bouton "Fermer"  tout moment.
+</UL>
+<P>
+<A NAME="modProfile"></A>Bien videmment, un utilisateur enregistr peut modifier<?php if (C_SHOW_DEL_PROF == "1") echo("/effacer"); ?> son profil en cliquant sur <?php echo((C_SHOW_DEL_PROF == "0"? "le lien correspondant" : "les liens correspondants")); ?> de la page d'accueil.<BR>
+<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+<P>
+<HR>
+
+<?php
+if (C_VERSION == "2") 
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="create_room"><B>Crer un salon de discussion :</B></A></FONT> 
+	<P>
+	Un utilisateur enregistr peut crer son propre salon de discussion. S'il le dclare de type priv, seul un utilisateur en connaissant le nom (il en aura t inform par ailleurs) pourra y accder car ce nom n'apparatra nulle part, sauf pour ceux des utilisateurs qui discuteront dans ce mme salon.<BR>
+	<P>
+	Le nom d'un salon ne peut contenir ni virgule, ni anti-slash (\).<?php if (C_NO_SWEAR == "1") echo(" Il ne peut pas plus comprendre de \"gros mots\"."); ?>
+	<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+	<P>
+	<HR>
+	<?php
+};
+if ($Ver == "H")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="connection_state"><B>Dtecter les erreurs de connexion :</B></A></FONT> 
+	<P>
+	En haut  droite de votre cran est affich un sigle rsumant l'tat des connexions. Il peut prendre trois formes :
+	<P>	
+	<UL>
+		<LI><IMG SRC="images/connectOff.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Pas de connexion"> lorsqu'aucune connexion n'est requise ;
+		<LI><IMG SRC="images/connectOn.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Connexion en cours"> lorsqu'une tentative de connexion est en cours ;
+		<LI><IMG SRC="images/connectError.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Echec"> lorsqu'une tentative de connexion a chou.
+	</UL>
+	<P>
+	Dans le dernier de ces trois cas de figure, cliquer sur le "bouton" rouge r-engagera une tentative de connexion.
+	<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="sending"><B>Envoyer un message :</B></A></FONT> 
+<P>
+Pour envoyer un message, tapez votre texte dans la boite situ en bas et  gauche de votre cran, puis pressez le bouton "OK" ou tapez sur la touche "Entre" de votre clavier. Les messages qui ont ts envoys sont affichs dans le fentre principale.<BR>
+<?php if (C_NO_SWEAR == "1") echo("Notez que les \"gros mots\" contenus dans vos messages seront remplacs par une suite de caractres dfinie par l'administrateur."); ?>
+<P>
+Vous pouvez choisir la couleur dans laquelle seront affichs vos messages  l'aide de la liste disponible  droite de la "boite  messages".
+<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="users_list"><B>Les informations prsentes dans la liste des utilisateurs :</B></A></FONT> 
+<P>
+<OL>
+	Deux rgles de base ont t dfinies pour la liste des utilisateurs:<BR>
+	<LI>une petite icne est affiche devant le pseudo d'un utilisateur enregistr et dfinit son genre (cliquer sur cette icne activera la <A HREF="#whois">fentre affichant le profil</A> de cet utilisateur), alors que c'est une espace vide qui prcde le pseudo des utilisateurs non-enregistrs&nbsp;;<BR>
+	<LI>le pseudo de l'administrateur et ceux des modrateurs sont affichs en italique.
+</OL>
+<P><I>Par exemple</I>, de la capture d'cran ci-dessous on peut conclure que:
+<TABLE BORDER=0 CELLSPACING=10>
+<TR>
+	<TD>
+		<IMG SRC="images/tutorials/usersList.gif" WIDTH=128 HEIGHT=145 BORDER=0 ALT="Liste d'utilisateurs">
+	</TD>
+	<TD>
+	<UL>
+		<LI>Nicolas est l'administrateur ou bien l'un des modrateurs du salon "phpMyChat"&nbsp;;<BR><BR>
+		<LI>alien (de genre inconnu), Jezek2 et Caridad sont des utilisateurs enregistrs sans pouvoirs particuliers dans le salon "phpMyChat"&nbsp;;<BR><BR>
+		<LI>lolo est un simple utilisateur non-enregistr.
+	</UL>
+	</TD>
+</TR>
+</TABLE>
+<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="exit"><B>Quitter un salon de discussion :</B></A></FONT>
+<P>
+Pour sortir d'un salon de discussion, cliquez simplement sur le lien affich  cet effet en haut et  droite de votre cran. Vous pouvez encore utiliser l'une des trois commandes suivantes en la tapant dans la "boite  messages" :<BR>
+/exit<BR>
+/bye<BR>
+/quit
+<P>
+Ces commandes peuvent tre assorties d'un message qui sera affich avant votre dpart.
+<P>
+<I>Par exemple :</I> /quit A bientt !
+<P>
+affichera le message "A bientt !" puis vous renverra sur la page d'accueil.
+<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="users_popup"><B>Savoir qui est connect sans l'tre soi-mme :</B></A></FONT> 
+<P>
+En cliquant sur le lien affichant le nombre d'utilisateurs de la page d'accueil ou bien, une fois dans une salon, sur l'icne <IMG SRC="images/popup.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Liste des utilisateurs"> en haut et  droite de votre cran ,vous ouvrirez une petite fentre indpendante prsentant la liste des utilisateurs connects et des salons dans lesquels ils sont prsents en temps presque rl.<BR>
+Vous noterez que le titre de cette fentre est compos des pseudos des utilisateurs connects s'ils sont moins de trois, de leur nombre ainsi que de celui des salons ouverts sinon.
+<P>
+Dans cette mme fentre, cliquer sur l'icne <IMG SRC="images/sound.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Signal sonore"> vous permettra d'activer ou de dsactiver le systme de notification sonore  l'arrive d'un nouvel utilisateur.
+<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+<P>
+<HR>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="customize"><B>Modifier les paramtres d'affichage :</B></A></FONT>
+<P>
+Il est de multiples faons de modifier les paramtres d'affichage. Il vous suffit d'entrer la commande approprie dans la "boite  message".
+<P>
+<UL>
+	<?php
+	if ($Ver == "H")
+	{
+		?>
+		<LI>La <B>commande Clear</B> permet de rinitialiser le cadre des messages en ne conservant que les 5 derniers d'entre eux.<BR>Tapez "/clear" sans les guillemets.
+		<P>
+		<?php
+	}
+	else
+	{
+		?>
+		<LI>La <B>commande Order</B> inverse l'ordre d'affichage des messages (des plus rcents en haut aux plus rcents en bas et vice versa).<BR>Tapez "/order" sans les guillemets.
+		<P>
+		<?php
+	};
+	?>
+	<LI>La <B>commande Notify</B> vous permet de choisir s'il faut afficher ou pas les notifications concernant l'entre et la sortie des utilisateurs dans le salon courant. Par dfaut cette option est <?php echo(C_NOTIFY ? "active" : "dsactive"); ?> et les notifications <?php echo(C_NOTIFY ? "sont" : "ne sont pas"); ?> affiches.<BR>Tapez "/notify" sans les guillemets.
+	<P>
+	<LI>La <B>commande Timestamp</B> active ou supprime l'affichage de l'heure  laquelle les messages ont t posts ainsi que l'heure serveur dans la barre des tches. Par dfaut cette option est <?php echo(C_SHOW_TIMESTAMP ? "active" : "dsactive"); ?>.<BR>Tapez "/timestamp" sans les guillemets.
+	<P>
+	<LI>La <B>commande Refresh</B> permet de modifier le dlai de rafrachissement du cadre contenant les messages. La valeur par dfaut est de <?php echo(C_MSG_REFRESH); ?> secondes. Pour la modifier, tapez "/refresh n" sans les guillemets o n est le dlai qui vous convient exprim en secondes.
+	<P>
+	<I>Par exemple :</I> /refresh 5
+	<P>
+	provoquera un rafrachissement du cadre contenant les messages toutes les 5 secondes. *Attention, si n est infrieur  3 ou non spcifi, plus aucun rafrachissement n'est assur (ce qui permet de consulter un longue liste de messages sans tre perturb par des rechargements, par exemple) !*
+	<P>
+	<?php
+	if ($Ver == "L")
+	{
+		?>
+		<LI>La <B>commande Show</B> dfinit le nombre de messages  afficher dans la fentre principale. Pour modifier cette valeur, tapez "/show n" sans les guillemets o n correspond au nombre des messages dsirs.
+		<P>
+		<I>Par exemple :</I> /show 50
+		<P>
+		affichera les 50 messages les plus rcents. S'ils ne tiennent pas tous dans le cadre ddi  l'affichage des messages, une barre de dplacement apparatra  la droite de celui-ci.</UL>
+		<?php
+	}
+	else
+	{
+		?>
+		<LI>Les <B>commandes Show et Last</B> provoquent une rinitialisation de l'cran et l'affichage d'un nombre dfini de messages parmi les derniers reus. Tapez "/show n" ou "/last n" sans les guillemets o n correspond au nombre des messages  afficher.
+		<P>
+		<I>Par exemple :</I> /show 50 or /last 50
+		<P>
+		effacera l'cran avant d'afficher les 50 derniers messages publis dans le salon courant. S'ils ne tiennent pas tous dans le cadre ddi  l'affichage des messages, une barre de dplacement apparatra  la droite de celui-ci.</UL>
+		<?php
+	};
+	?>
+	<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+	<P>
+</UL>
+<HR>
+<HR>
+
+
+<P>
+<FONT SIZE="+2"><A NAME="commands"><B><U>Fonctionnalits et commandes</U></B></A></FONT> 
+<P>
+
+<FONT SIZE="+1"><A NAME="help"><B>Aide en ligne :</B></A></FONT>
+<P>
+Une fois entr dans un salon de discussion, vous pourrez obtenir de l'aide en cliquant sur l'image <IMG SRC="images/helpOff.gif" WIDTH=15 HEIGHT=15 BORDER=0 ALT="?"> qui est place  gauche de la "boite  messages". Vous pourrez encore utiliser les <B>commandes "/help" ou "/?"</B>  cet effet.
+<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+<P>
+<P>
+<HR>
+
+<?php
+if (C_USE_SMILIES == "1")
+{
+	include("./lib/smilies.lib.php");
+	$Nb = count($SmiliesTbl);
+	$ResultTbl = Array();
+	DisplaySmilies($ResultTbl,$SmiliesTbl,$Nb,"tutorial");
+	unset($SmiliesTbl);
+	?>
+	<FONT SIZE="+1"><A NAME="smilies"><B>Emoticons :</B></A></FONT>
+	<P>Vos messages peuvent tre agrments d'moticons graphiques. Vous trouverez ci-aprs les codes qu'il faut utiliser dans vos messages pour obtenir chacun de ces moticons lors de l'affichage dans le cadre ddi.
+	<P ALIGN="center">
+	<TABLE BORDER=0 CELLPADDING=3 CELLSPACING=5>
+	<?php
+	$i = "0";
+	$Nb = count($ResultTbl);
+	while($i < $Nb)
+	{
+		if ($i > 0) echo("\t");
+		echo("<TR VALIGN=\"BOTTOM\">\n");
+		echo("$ResultTbl[$i]");
+		echo("\t</TR>\n\t<TR>\n");
+		$i++;
+		echo("$ResultTbl[$i]");
+		echo("\t</TR>\n");
+		$i++;
+	};
+	unset($ResultTbl);
+	?>
+	</TABLE>
+	<P>
+	<I>Par exemple</I>, en tapant le texte "Salut Coco :)" sans les guillemets, le message "Salut Coco <IMG SRC="images/smilies/smile1.gif" WIDTH=15 HEIGHT=15 ALT=":)">" (sans guillemets) sera affich dans le cadre principal.
+	<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+	<P>
+	<HR>
+	<?php
+};
+
+if (C_HTML_TAGS_KEEP != "none")
+{
+	?>
+	<FONT SIZE="+1"><A NAME="text"><B>Mises en forme du texte des messages :</B></A></FONT>
+	<P>
+	Vos messages peuvent contenir du texte en gras, en italique ou soulign. Pour ce faire il vous suffit d'encadrer la section concerne par les balises HTML &lt;B&gt; &lt;/B&gt;, &lt;I&gt; &lt;/I&gt; ou &lt;U&gt; &lt;/U&gt;.
+	<P>
+	<I>Par exemple</I>, en tapant &lt;B&gt;ce texte&lt;/B&gt; vous obtiendrez <B>ce texte</B>.
+	<P>
+	Pour obtenir des hyperliens (URL ou e-mail) tapez simplement l'adresse en question dans votre message sans aucune balise. Elle sera automatiquement traite.
+	<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+	<P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="invite"><B>Suggrer  utilisateur de venir dans le salon que vous occupez :</B></A></FONT>
+<P>
+Vous pouvez avoir recours  la <B>commande invite</B> pour inciter un utilisateur  vous rejoindre dans votre salon de discussion courant.
+<P>
+<I>Par exemple :</I> /invite Coco 
+<P>
+enverra un message priv  Coco lui suggrant de venir discuter dans le salon que vous occupez. Ce message contiendra le nom de ce salon sous forme d'hyperlien.
+<P>
+Notez que vous pouvez mettre plusieurs noms  la suite pour cette commande ("/invite Coco,Hlne,Alf"). Ils doivent alors tre spars par une virgule sans espace.
+<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="changeroom"><B>Changer de salon de discussion :</B></A></FONT>
+<P>
+La liste affiche  droite de l'cran correspond  la liste des salons ouverts et des utilisateurs qui y sont prsents. Pour quitter votre salon de discussion et vous rendre immdiatement dans l'un de ceux qui sont affichs, cliquez simplement une fois sur le nom de ce dernier. Les salons vides d'occupants n'apparaissant pas dans la liste, il vous faudra faire appel  la <B>commande "/join #nom_de_salon"</B> (sans guillemets) pour vous y rendre sans passer par la page d'accueil.
+<P>
+<I>Par exemple :</I> /join #Salon_1 
+<P>
+vous transportera dans le Salon_1.
+<?php
+if (C_VERSION == "2")
+{
+	echo(C_REQUIRE_REGISTER == "0" ? "<P>Si vous tes un utilisateur enregistr, vous" : "<P>Vous");
+	?>
+	 pouvez aussi crer un nouveau salon  l'aide de cette mme commande. Mais il vous faudra alors prciser la nature de ce salon : 0 pour un salon priv, 1 pour un salon public (valeur par dfaut).
+	<P>
+	<I>Par exemple :</I> /join 0 #MonSalon 
+	<P>
+	crera le salon priv MonSalon ( condition qu'aucun salon public de mme nom n'existe dj) et vous y transfrera.
+	<P>
+	Le nom d'un salon ne peut contenir ni virgule, ni anti-slash (\).<?php if (C_NO_SWEAR == "1") echo(" Il ne peut pas plus comprendre de \"gros mots\"."); ?>
+	<?php
+}
+?>
+<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B>Modifier son profil une fois entr dans un salon :</B></FONT>
+<P>
+La <B>commande Profile</B> affichera une petite fentre dans laquelle vous pourrez modifier votre profil de faon limite : votre pseudo et votre mot de passe ne pourront en aucun cas tre concerns (utilisez le lien sur la page d'accueil pour ce faire).<BR>Tapez "/profile" sans guillemets.
+<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B>Rappeler le dernier message envoy ou la dernire commande excute :</B></FONT>
+<P>
+La <B>commande !</B> insre dans la "boite  message" le dernier texte qui y a t entr, qu'il s'agisse d'une commande ou d'un message.<BR>Tapez "/!" sans guillemets.
+<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B>Rpondre  un utilisateur en particulier :</B></FONT>
+<P>
+Cliquer une fois sur le nom d'un utilisateur apparaissant dans la liste situe  droite de votre cran insrera son nom dans la "boite  message". Ceci permet d'indiquer que le message que vous envoyez s'adresse particulirement  lui, par example.
+<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="actions"><B>Actions :</B></A></FONT>
+<P>
+Pour envoyer un message dcrivant ce que vous tes en train de faire vous pouvez avoir recours  la <B>command "/me action"</B> sans guillemets.
+<P>
+<I>Par exemple :</I> si Nicolas tape "/me boit un caf" le message "<B>* Nicolas</B> boit un caf" sera affich dans le cadre des messages.
+<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="private"><B>Messages privs :</B></A></FONT>
+<P>
+Pour faire parvenir un message priv  un utilisateur prsent dans le mme salon que vous, tapez la <B>commande "/msg pseudo texte_du_message" ou "/to pseudo texte_du_message"</B> sans les guillemets.
+<P>
+<I>Par exemple, si Coco est le nom de l'utilisateur auquel le message priv est destin :</I> /msg Coco Bonjour, comment vas-tu ?
+<P>
+Le message "Bonjour, comment vas-tu ?" (sans les guillemets) ne sera visible que de Coco et de vous.
+<P>
+Notez qu'en cliquant sur le nom d'un expditeur dans le cadre principal, cette commande sera automatiquement insre dans le champ d'entre des messages. 
+<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="ignore"><B>Ignorer les messages d'autres utilisateurs :</B></A></FONT>
+<P>
+Pour ne pas voir s'afficher les messages provenant d'un utilisateur particulier, utilisez la <B>commande "/ignore pseudo"</B> sans guillemets.
+<P>
+<I>Par exemple :</I> /ignore Coco
+<P>
+Ds lors, aucun des messages que Coco enverra ne seront affich dans le cadre principal du chat.
+<P>
+Pour visualiser l'ensemble des utilisateurs dont les messages sont ignors, tapez simplement la <B>commande "/ignore"</B> sans guillemets ni paramtre additionnel : une petite fentre indpendante listant l'ensemble de ces utilisateurs "ignors" s'affichera. 
+<P>
+Pour afficher  nouveau les messages d'un utilisateur qui tait prcdemment ignor, tapez la <B>commande "/ignore - pseudo"</B> sans guillemets o "-" est un trait d'union ou le sigle mathmatique "moins". 
+<P>
+<I>Par exemple :</I> /ignore - Coco 
+<P>
+Tous les messages en provenance de Coco seront affichs  nouveau, y compris ceux qui avaient t envoys avant que vous ayez tap la commande.
+Si vous ne spcifiez pas de pseudo aprs le trait d'union, la liste des utilisateurs ignors sera vide.
+<P>
+Notez que vous pouvez mettre plusieurs noms  la suite pour cette commande ("/ignore Coco,Hlne,Alf" ou "/ignore - Coco,Alf" par exemple). Ils doivent alors tre spars par une virgule sans espace.
+<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="whois"><B>Afficher les informations relatives  un autre utilisateur :</B></A></FONT>
+<P>
+Pour visualiser le profil d'un autre utilisateur, tapez la <B>commande "/whois pseudo"</B> sans guillemets.
+<P>
+<I>Par exemple :</I> /whois Coco
+<P>
+o 'Coco' est le pseudo de l'utilisateur. Cette commande provoquera l'affichage d'une petite fentre contenant les informations disponibles pour l'utilisateur Coco s'il s'agit d'un utilisateur enregistr.
+<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+<P>
+<HR>
+
+<?php
+if (C_SAVE != "0")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="save"><B>Sauvegarder les messages :</B></A></FONT>
+	<P>
+	Pour rcuprer sur votre disque un fichier HTML contenant les messages (hors notifications) publis dans le salon courant, ayez recours  la <B>commande "/save n"</B> sans guillemets.
+	<P>
+	<I>Par exemple :</I> /save 5
+	<P>
+	o '5' est le nombre de messages  sauvegarder. Si n n'est pas spcifi, tous les messages disponibles seront pris en compte.
+	<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+<HR>
+
+
+<P>
+<FONT SIZE="+2"><A NAME="moderator"><B><U>Commandes rserves aux modrateurs et/ou  l'administrateur</U></B></A></FONT> 
+
+<P>
+<FONT SIZE="+1"><A NAME="announce"><B>Poster une annonce gnrale :</B></A></FONT>
+<P>
+L'administrateur peut envoyer un message qui sera visible par tous les utilisateurs connects quelque soit le salon dans lequel ils discutent grce  la <B>commande announce</B>.
+<P>
+<I>Par exemple : /announce Mise  jour du chat  20h00 ce soir, risque de perturbations.</I>
+<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="kick"><B>Ejecter un utilisateur :</B></A></FONT>
+<P>
+Un modrateur peut jecter un utilisateur et l'administrateur peut faire de mme pour un modrateur ou un utilisateur  l'aide de la <B>commande kick</B>. Seul l'administrateur peut ejecter un utilisateur qui ne discute pas dans le mme salon que lui.
+<P>
+<I>Par exemple</I>, si Coco est le pseudo de l'utilisateur  jecter :</I> /kick Coco</I>
+<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+<P>
+<HR>
+
+<?php
+if (C_BANISH != "0")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="banish"><B>Bannir un utilisateur :</B></A></FONT>
+	<P>
+	Un modrateur peut bannir un utilisateur et l'administrateur peut faire de mme pour un modrateur ou un utilisateur  l'aide de la <B>commande ban</B>.<BR>
+	Seul l'administrateur peut bannir un utilisateur qui ne discute pas dans le mme salon que lui; il peut aussi bannir un utilisateur " jamais" du chat (tous salons confondus) un insrant le paramtre '<B>&nbsp;*&nbsp;</B>' avant le pseudo de ce dernier.
+	<P>
+	<I>Par exemple</I>, si Coco est le pseudo de l'utilisateur  bannir : <I>/ban Coco</I> ou <I>/ban * Coco</I>
+	<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="promote"><B>Faire accder un utilisateur au statut de modrateur :</B></A></FONT>
+<P>
+Il est possible pour l'administrateur ou un modrateur de transformer un simple utilisateur en modrateur pour le salon courant  l'aide de la <B>commande promote</B>.
+<P>
+<I>Par exemple</I>, si Coco est le pseudo de l'utilisateur  "promouvoir" :<I> /promote Coco</I>
+<P>
+L'opration inverse (rduire un modrateur au statut d'utilisateur) n'est accessible qu' l'administrateur via une page spcifique. Il n'existe pas de commande pour ce faire.
+<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+<P>
+
+
+</BODY>
+</HTML>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/french/regex.txt 0.15.0/chat/localization/french/regex.txt
--- 0.14.5/chat/localization/french/regex.txt	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/french/regex.txt	2004-04-01 03:07:21.000000000 -0600
@@ -0,0 +1 @@
+fr([-_][[:alpha:]]{2})?|french
\ No newline at end of file
Binary files 0.14.5/chat/localization/french_canadian/flag.gif and 0.15.0/chat/localization/french_canadian/flag.gif differ
diff -ruN 0.14.5/chat/localization/french_canadian/localized.admin.php 0.15.0/chat/localization/french_canadian/localized.admin.php
--- 0.14.5/chat/localization/french_canadian/localized.admin.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/french_canadian/localized.admin.php	2004-04-01 03:07:21.000000000 -0600
@@ -0,0 +1,61 @@
+<?php
+// File : french_canadian.lang.php
+// Translation to do... 
+
+// extra header for charset
+$Charset = "iso-8859-1";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// Top frame
+define("A_MENU_0", "Administration de %s");
+define("A_MENU_1", "Utilisateurs enregistrs");
+define("A_MENU_2", "Utilisateurs bannis");
+define("A_MENU_3", "Dpoussirage des salons");
+define("A_MENU_4", "Envoyer un e-mail");
+
+// Frame for registered users
+define("A_SHEET1_1", "Liste des utilisateurs enregistrs et de leurs droits");
+define("A_SHEET1_2", "Pseudonyme");
+define("A_SHEET1_3", "Autorisations");
+define("A_SHEET1_4", "Salons modrs");
+define("A_SHEET1_5", "Les salons modrs sont spars par une virgule sans espace (,).");
+define("A_SHEET1_6", "Supprimer les profils selectionns");
+define("A_SHEET1_7", "Modifier");
+define("A_SHEET1_8", "Il n'y a pas d'utilisateur enregistr hors vous-mme.");
+define("A_SHEET1_9", "Bannir les profils selectionns");
+define("A_SHEET1_10", "Vous devez maintenant vous rendre dans la feuille concernant les utiliseurs bannis afin d'affiner vos choix.");
+define("A_SHEET1_11", "Dernier accs");
+define("A_USER", "Utilisateur");
+define("A_MODER", "Modrateur");
+define("A_PAGE_CNT", "Page %s de %s");
+
+// Frame for banished users
+define("A_SHEET2_1", "Liste des utilisateurs bannis et des salons concerns");
+define("A_SHEET2_2", "IP");
+define("A_SHEET2_3", "Salons concerns");
+define("A_SHEET2_4", "Jusqu'au");
+define("A_SHEET2_5", "pas de limite");
+define("A_SHEET2_6", "Les salons sont spars par une virgule sans espace (,) s'ils sont moins de 4, au-del le sigle<BR>'<B>&nbsp;*&nbsp;</B>' bannit de tout salon.");
+define("A_SHEET2_7", "Rvoquer le bannissement des utilisateurs selectionns");
+define("A_SHEET2_8", "Aucun utilisateur n'est banni.");
+
+// Frame for cleaning rooms
+define("A_SHEET3_1", "Liste des salons existants");
+define("A_SHEET3_2", "Purger un salon qui n'appartient pas aux salons \"par dfaut\"<BR>supprimera aussi, pour les utilisateurs concerns, le statut de<BR>modrateur pour ce salon.");
+define("A_SHEET3_3", "Purger les salons selectionns");
+define("A_SHEET3_4", "Il n'est aucun salon contenant des messages.");
+
+// Frame for sending mails
+define("A_SHEET4_0", "Des variables requises n'ont pas t renseignes dans<BR>le script 'chat/admin/mail4admin.php'.");
+define("A_SHEET4_1", "Envoyer un e-mail");
+define("A_SHEET4_2", "A :");
+define("A_SHEET4_3", "Selectionner tout");
+define("A_SHEET4_4", "Objet :");
+define("A_SHEET4_5", "Message :");
+define("A_SHEET4_6", "Envoyer");
+define("A_SHEET4_7", "Les e-mails ont t envoys.");
+define("A_SHEET4_8", "Une erreur interne est survenue lors de l'envoi des e-mails.");
+define("A_SHEET4_9", "Aucun destinataire n'a t selectionn ou bien l'objet ou le message est vide !");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/french_canadian/localized.chat.php 0.15.0/chat/localization/french_canadian/localized.chat.php
--- 0.14.5/chat/localization/french_canadian/localized.chat.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/french_canadian/localized.chat.php	2004-04-01 03:07:21.000000000 -0600
@@ -0,0 +1,220 @@
+<?php
+// File : french_canadian.lang.php
+// Translation by Guylhem Aznar <guylhem@metalab.unc.edu>
+
+// extra header for charset
+$Charset = "iso-8859-1";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// welcome page
+define("L_TUTORIAL", "Tutoriel");
+
+define("L_WEL_1", "Messages et pseudonymes sont respectivement effacs au bout de");
+define("L_WEL_2", "heures et de");
+define("L_WEL_3", "minutes ...");
+
+define("L_CUR_1", "Actuellement, il y a");
+define("L_CUR_2", "sur ce serveur.");
+define("L_CUR_3", "Utilisateurs actuellement connects");
+define("L_CUR_4", "utilisateurs dans des salons privs");
+
+define("L_SET_1", "Choisissez ...");
+define("L_SET_2", "votre pseudonyme");
+define("L_SET_3", "le nombre de messages  afficher");
+define("L_SET_4", "la frquence des mises  jour");
+define("L_SET_5", "Slectionnez un salon de discussion ...");
+define("L_SET_6", "salons par dfaut");
+define("L_SET_7", "Faites votre choix ...");
+define("L_SET_8", "autres salons publics");
+define("L_SET_9", "crez votre propre salon");
+define("L_SET_10", "public");
+define("L_SET_11", "priv");
+define("L_SET_12", "");
+define("L_SET_13", "Et maintenant vous pouvez");
+define("L_SET_14", "discuter");
+
+define("L_SRC", "est disponible gratuitement sur");
+
+define("L_SECS", "secondes");
+define("L_MIN", "minute");
+define("L_MINS", "minutes");
+
+// registration stuff:
+define("L_REG_1", "votre mot de passe");
+define("L_REG_1r", "(utilisateurs enregistrs seuls)");
+define("L_REG_2", "Utilisateurs enregistrs");
+define("L_REG_3", "S'enregistrer");
+define("L_REG_4", "diter son profil");
+define("L_REG_5", "Se dsenregistrer");
+define("L_REG_6", "Enregistrement d'un utilisateur");
+define("L_REG_7", "votre mot de passe");
+define("L_REG_8", "votre courriel");
+define("L_REG_9", "Vous avez t enregistr.");
+define("L_REG_10", "Retour");
+define("L_REG_11", "dition");
+define("L_REG_12", "Modification du profil d'un utilisateur");
+define("L_REG_13", "Dsenregistrement");
+define("L_REG_14", "Login");
+define("L_REG_15", "Entrer");
+define("L_REG_16", "Modifier");
+define("L_REG_17", "Votre profil a t modifi.");
+define("L_REG_18", "Vous avez t ject par le modrateur.");
+define("L_REG_19", "Voulez-vous vraiment vous dsenregistrer ?");
+define("L_REG_20", "Oui");
+define("L_REG_21", "Vous n'tes plus enregistr.");
+define("L_REG_22", "Non");
+define("L_REG_25", "Fermer");
+define("L_REG_30", "prnom");
+define("L_REG_31", "nom");
+define("L_REG_32", "page perso");
+define("L_REG_33", "courriel visible via la commande /whois");
+define("L_REG_34", "dition de votre profil");
+define("L_REG_35", "Administration");
+define("L_REG_36", "langues parles");
+define("L_REG_37", "Les champs marqus du sigle <span class=\"error\">*</span> doivent tre renseigns.");
+define("L_REG_39", "Le salon dans lequel vous discutiez a t dtruit par l'administrateur.");
+define("L_REG_45", "sexe");
+define("L_REG_46", "masculin");
+define("L_REG_47", "fminin");
+
+// e-mail validation stuff
+define("L_EMAIL_VAL_1", "Vos paramtres de connexion");
+define("L_EMAIL_VAL_2", "Bienvenue(e) sur notre chat.");
+define("L_EMAIL_VAL_Err", "Erreur interne, veuillez contacter l'administrateur&nbsp;: <a href=\"mailto:%s\">%s</a>.");
+define("L_EMAIL_VAL_Done", "Votre mot de passe vous a t envoy<BR>par e-mail.");
+
+// admin stuff
+define("L_ADM_1", "%s n'est plus modrateur pour ce salon.");
+define("L_ADM_2", "Vous n'tes plus enregistr.");
+
+// error messages
+define("L_ERR_USR_1", "Un utilisateur dispose dj de ce pseudonyme. Veuillez en choisir un autre.");
+define("L_ERR_USR_2", "Vous n'avez pas choisi votre pseudonyme or il en faut un !");
+define("L_ERR_USR_3", "Ce pseudonyme est celui d'un utilisateur enregistr.<BR>Entrez le mot de passe associ ou choisissez un autre pseudonyme.");
+define("L_ERR_USR_4", "Mot de passe invalide.");
+define("L_ERR_USR_5", "Vous devez choisir un pseudonyme.");
+define("L_ERR_USR_6", "Vous devez choisir un mot de passe.");
+define("L_ERR_USR_7", "Vous devez entrer votre adresse courriel.");
+define("L_ERR_USR_8", "Courriel invalide.");
+define("L_ERR_USR_9", "Ce pseudonyme est dj reserv.");
+define("L_ERR_USR_10", "Pseudonyme et/ou mot de passe invalide(s).");
+define("L_ERR_USR_11", "Seul l'administrateur peut accder  cette page.");
+define("L_ERR_USR_12", "En tant qu'administrateur votre profil ne peut tre supprim.");
+define("L_ERR_USR_13", "Seuls les utilisateurs enregistrs sont autoriss  crer un salon.");
+define("L_ERR_USR_14", "Vous devez vous enregistrer.");
+define("L_ERR_USR_15", "Les champs nom et prnom ne sont pas correctement renseigns.");
+define("L_ERR_USR_16", "Un pseudonyme ne peut contenir ni espace, ni virgule, ni anti-slash (\\).");
+define("L_ERR_USR_17", "Ce salon n'existe pas et vous n'tes pas autoris  en crer un.");
+define("L_ERR_USR_18", "Mot interdit dans votre pseudonyme.");
+define("L_ERR_USR_19", "Vous ne pouvez discuter dans deux salons simultanment.");
+define("L_ERR_USR_20", "Vous avez t banni(e) du salon ou du chat.");
+define("L_ERR_ROM_1", "Le nom d'un salon ne peut contenir ni virgule, ni anti-slash (\\).");
+define("L_ERR_ROM_2", "Mot interdit dans le nom du salon  crer.");
+define("L_ERR_ROM_3", "Ce salon existe dj et son accs est public.");
+define("L_ERR_ROM_4", "Ce nom de salon est invalide.");
+
+// users frame or popup
+define("L_EXIT", "Quitter");
+define("L_DETACH", "Dtacher");
+define("L_EXPCOL_ALL", "Afficher/Rduire tout");
+define("L_CONN_STATE", "Etat de la connexion");
+define("L_CHAT", "Discuter");
+define("L_USER", "utilisateur");
+define("L_USERS", "utilisateurs");
+define("L_NO_USER", "Pas d'utilisateur");
+define("L_ROOM", "salon");
+define("L_ROOMS", "salons");
+define("L_EXPCOL", "Afficher/Rduire le salon");
+define("L_BEEP", "Bip ou non  l'entre d'un nouvel utilisateur");
+define("L_PROFILE", "Voir le profil");
+define("L_NO_PROFILE", "Pas de profil");
+
+// input frame
+define("L_HLP", "Aide");
+define("L_BAD_CMD", "Commande invalide !");
+define("L_ADMIN", "%s est dj administrateur !");
+define("L_IS_MODERATOR", "%s est dj modrateur !");
+define("L_NO_MODERATOR", "Cette commande est rserve au(x) modrateur(s) de ce salon.");
+define("L_MODERATOR", "%s est maintenant modrateur pour ce salon.");
+define("L_NONEXIST_USER", "Pas d'utilisateur %s dans le salon courant.");
+define("L_NONREG_USER", "%s n'est pas un utilisateur enregistr.");
+define("L_NONREG_USER_IP", "Son adresse IP est : %s.");
+define("L_NO_KICKED", "L'utilisateur %s est modrateur ou administrateur et ne peut tre ject.");
+define("L_KICKED", "L'utilisateur %s a t ject.");
+define("L_NO_BANISHED", "L'utilisateur %s est modrateur ou administrateur et ne peut tre banni.");
+define("L_BANISHED", "L'utilisateur %s a t banni.");
+define("L_SVR_TIME", "Heure serveur : ");
+define("L_NO_SAVE", "Aucun message  sauvegarder !");
+define("L_NO_ADMIN", "Cette commande est rserve  l'administrateur.");
+define("L_ANNOUNCE", "ANNONCE");
+define("L_INVITE", "%s vous suggre de la/le rejoindre dans le salon <a href=\"#\" onClick=\"window.parent.runCmd('%s','%s'); return false\">%s</a>.");
+define("L_INVITE_REG", " Ce salon n'est accessible qu'aux utilisateurs enregistrs.");
+define("L_INVITE_DONE", "Votre invitation a t envoye  %s.");
+define("L_OK", "Envoyer");
+
+// help popup
+define("L_HELP_TIT_1", "TROMBINES");
+define("L_HELP_TIT_2", "Mises en forme du texte des messages");
+define("L_HELP_FMT_1", "Vos messages peuvent contenir du texte en gras, en italique ou soulign. Pour ce faire il vous suffit d'encadrer la section concerne par les tags &lt;B&gt; &lt;/B&gt;, &lt;I&gt; &lt;/I&gt; ou &lt;U&gt; &lt;/U&gt;.<BR>Par exemple, en tapant &lt;B&gt;ce texte&lt;/B&gt; vous obtiendrez <B>ce texte</B>.");
+define("L_HELP_FMT_2", "Pour obtenir des hyperliens vers des sites internet ou des courriels tapez simplement l'adresse en question dans votre message sans aucun tag. Elle sera automatiquement traite.");
+define("L_HELP_TIT_3", "Commandes");
+define("L_HELP_USR", "utilisateur");
+define("L_HELP_MSG", "message");
+define("L_HELP_ROOM", "salon");
+define("L_HELP_CMD_0", "{} signale un paramtre ncessaire, [] un paramtre optionnel.");
+define("L_HELP_CMD_1a", "Dfinit le nombre de messages  afficher, 5 tant la valeur par dfaut et le minimum");
+define("L_HELP_CMD_1b", "Rinitialise le cadre des messages et affiche les n derniers d'entre eux, 5 tant la valeur par dfaut et le minimum.");
+define("L_HELP_CMD_2a", "Modifie le dlai de rafrachissement du cadre contenant les messages (n est exprim en secondes).<BR>Si n n'est pas spcifi ou est infrieur  3 le rafrachissement n'est plus assur.");
+define("L_HELP_CMD_2b", "Modifie le dlai de rafrachissement des cadres contenant les messages et la liste des utilisateurs connects (n est exprim en secondes).<BR>Si n n'est pas spcifi ou est infrieur  3 le rafrachissement n'est plus assur.");
+define("L_HELP_CMD_3", "Inverse l'ordre d'affichage des messages.");
+define("L_HELP_CMD_4", "Permet de se rendre dans un nouveau salon aprs l'avoir cr si ncessaire et si vous tes autoris  le faire.<BR>n prend la valeur 0 pour un salon priv et 1 pour un salon public (valeur par dfaut).");
+define("L_HELP_CMD_5", "Permet de quitter le chat aprs avoir envoy le message (optionnel).");
+define("L_HELP_CMD_6", "Supprime l'affichage des messages provenant d'un utilisateur si nick est spcifi.<BR>Restaure cet affichage si nick et - apparaissent tous deux ; si - l'est mais pas nick, restaure l'affichage des messages de tous les utilisateurs.<BR>Sans aucune des options, affiche une fentre qui contient l'ensemble des utilisateurs \"ignors\".");
+define("L_HELP_CMD_7", "Rappelle la dernire ligne envoye (commande ou message).");
+define("L_HELP_CMD_8", "Active/supprime l'affichage de l'heure  laquelle les messages ont t posts.");
+define("L_HELP_CMD_9", "Expulse un utilisateur du salon courant pour un modrateur, du chat pour l'administrateur. Commande rserve au modrateur du salon.");
+define("L_HELP_CMD_10", "Envoie un message priv  l'utilisateur spcifi (message invisible pour les autres).");
+define("L_HELP_CMD_11", "Affiche le profil de l'utilisateur spcifi.");
+define("L_HELP_CMD_12", "Permet de modifier son profil.");
+define("L_HELP_CMD_13", "Active/dsactive l'affichage des notifications pour l'entre/la sortie d'un utilisateur dans le salon courant.");
+define("L_HELP_CMD_14", "Permet  l'administrateur ou au(x) modrateur(s) du salon courant de rendre un autre utilisateur enregistr modrateur de ce mme salon.");
+define("L_HELP_CMD_15", "Rinitialise le cadre des messages en ne conservant que les 5 derniers d'entre eux.");
+define("L_HELP_CMD_16", "Sauvegarde les n derniers messages hors notifications dans un fichier HTML. Si n n'est pas spcifi, tous les messages disponibles seront concerns.");
+define("L_HELP_CMD_17", "Permet  l'administrateur d'envoyer une annonce visible par tous les utilisateurs quelque soit le salon dans lequel ils discutent.");
+define("L_HELP_CMD_18", "Suggre  un utilisateur discutant dans un autre salon de se joindre  votre salon de discussion.");
+define("L_HELP_CMD_19", "Permet au(x) modrateur(s) d'un salon ou  l'administrateur de \"bannir\" un utilisateur du salon pendant un temps dtermin par l'administrateur.<BR>Ce dernier peut bannir un utilisateur discutant dans un salon autre que le sien et utiliser le paramtre '<B>&nbsp;*&nbsp;</B>' pour bannir \" jamais\" un utilisateur du chat, tous salons confondus.");
+define("L_HELP_CMD_20", "Affiche ce que vous tes en train de faire sans qu'il soit besoin de taper votre pseudonyme en dbut de message.");
+
+//message frame
+define("L_NO_MSG", "Pas de message");
+define("L_TODAY_DWN", "Les messages envoys aujourd'hui commencent ci-dessous");
+define("L_TODAY_UP", "Les messages envoys aujourd'hui commencent ci-dessus");
+
+// message colors
+$TextColors = array(	"Noir" => "#000000",
+				"Rouge vif" => "#FF0000",
+				"Rouge" => "#990000",
+				"Vert vif" => "#009900",
+				"Vert" => "#006600",
+				"Bleu vif" => "#0000FF",
+				"Bleu lagon" => "#006699",
+				"Bleu" => "#000099",
+				"Violet" => "#9900FF",
+				"Marron" => "#996633",
+				"Carotte" => "#FF6600");
+
+//ignored popup
+define("L_IGNOR_TIT", "Ignors");
+define("L_IGNOR_NON", "Pas d'utilisateur ignor");
+
+// whois popup
+define("L_WHOIS_ADMIN", "Administrateur");
+define("L_WHOIS_MODER", "Modrateur");
+define("L_WHOIS_USER", "Utilisateur");
+
+// Notification messages of user entrance/exit
+define("L_ENTER_ROM", "%s entre dans ce salon");
+define("L_EXIT_ROM", "%s a quitt ce salon");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/french_canadian/localized.tutorial.php 0.15.0/chat/localization/french_canadian/localized.tutorial.php
--- 0.14.5/chat/localization/french_canadian/localized.tutorial.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/french_canadian/localized.tutorial.php	2004-04-01 03:07:22.000000000 -0600
@@ -0,0 +1,627 @@
+<?php
+// File : french_canadian.tutorial.php
+// Translation by Guylhem Aznar <guylhem@metalab.unc.edu>
+
+// Get the names and values for vars sent by the script that called this one
+if (isset($HTTP_GET_VARS))
+{
+	while(list($name,$value) = each($HTTP_GET_VARS))
+	{
+		$$name = $value;
+	};
+};
+?>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+
+<HEAD>
+<TITLE>Tutoriel en franais</TITLE>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+<STYLE>
+A.topLink
+{
+	text-decoration: underline;
+	color: #0000C0;
+}
+
+A.topLink:hover, A.topLink:active
+{
+	color: #FF9900;
+	text-decoration: none;
+	font-weight: 800;
+}
+
+.redText
+{
+	font-weight: 800;
+	color: #FF0000;
+}
+</STYLE>
+</HEAD>
+
+<BODY BGCOLOR="#CCCCFF">
+<P><A NAME="top"></P>
+<TABLE BORDER="5" CELLPADDING="5">
+<TR>
+	<TD><FONT SIZE="+2">Table des matires</FONT></TD>
+</TR>
+</TABLE><BR>
+
+<P CLASS="redText">
+Attention : les utilisateurs de Netscape doivent dfinir leur langue comme encodage par dfaut sinon chacun des caractres des messages risque d'apparatre sous forme de points d'interrogation.<BR>
+Pour faire cela : Afficher/Encodage/votre langue, puis Afficher/Encodage/Dfinir le jeu de caractres par dfaut.
+</P>
+
+<?php
+if (C_MULTI_LANG == "1") 
+{
+	?>
+	<A HREF="#language" CLASS="topLink">Choisir sa langue</A><BR>
+	<?php
+}
+?>
+<A HREF="#login" CLASS="topLink">Entrer dans un salon de discussion</A><BR>
+<A HREF="#register" CLASS="topLink">S'enregistrer</A><BR>
+<A HREF="#modProfile" CLASS="topLink">Modifier<?php if (C_SHOW_DEL_PROF == "1") echo("/supprimer"); ?> son profil</A><BR>
+<?php
+if (C_VERSION == "2") 
+{
+	?>
+	<A HREF="#create_room" CLASS="topLink">Crer un salon de discussion</A><BR>
+	<?php
+};
+if ($Ver == "H") 
+{
+	?>
+	<A HREF="#connection_state" CLASS="topLink">Dtecter les erreurs de connexion</A><BR>
+	<?php
+};
+?>
+<A HREF="#sending" CLASS="topLink">Envoyer un message</A><BR>
+<A HREF="#users_list" CLASS="topLink">Les informations prsentes dans la liste des utilisateurs</A><BR>
+<A HREF="#exit" CLASS="topLink">Quitter un salon de discussion</A><BR>
+<A HREF="#users_popup" CLASS="topLink">Savoir qui est connect sans l'tre soi-mme</A><BR>
+<P>
+<A HREF="#customize" CLASS="topLink">Modifier les paramtres d'affichage</A><BR>
+<P>
+<A HREF="#commands" CLASS="topLink">Fonctionnalits et commandes :</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#help" CLASS="topLink">Aide en ligne</A><BR>
+<?php
+if (C_USE_SMILIES == "1")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#smilies" CLASS="topLink">Trombines</A><BR>
+	<?php
+};
+if (C_HTML_TAGS_KEEP != "none")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#text" CLASS="topLink">Mise en forme du texte</A><BR>
+	<?php
+};
+?>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#invite" CLASS="topLink">Suggrer  utilisateur de venir dans le salon que vous occupez</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#changeroom" CLASS="topLink">Changer de salon de discussion</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#private" CLASS="topLink">Messages privs</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#actions" CLASS="topLink">Actions</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#ignore" CLASS="topLink">Ignorer les messages d'autres utilisateurs</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#whois" CLASS="topLink">Afficher les informations relatives  un autre utilisateur</A><BR>
+<?php
+if (C_SAVE != "0")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#save" CLASS="topLink">Sauvegarder les messages</A><BR>
+	<?php
+};
+?>
+<P>
+<A HREF="#moderator" CLASS="topLink">Commandes rserves aux modrateurs et/ou  l'administrateur :</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#announce" CLASS="topLink">Poster une annonce gnrale</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#kick" CLASS="topLink">Exclure un utilisateur</A><BR>
+<?php
+if (C_BANISH != "0")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#banish" CLASS="topLink">Bannir un utilisateur</A><BR>
+	<?php
+};
+?>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#promote" CLASS="topLink">Faire accder un utilisateur au statut de modrateur</A><BR>
+
+<P>
+<HR>
+<HR>
+
+
+<?php
+if (C_MULTI_LANG == "1") 
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="language"><B>Choisir sa langue :</B></A></FONT>
+	<P>
+	Vous pouvez choisir la langue  utiliser en cliquant sur le drapeau correspondant de la page d'accueil, si l'option multilingue a t valide.  Dans l'exemple ci-dessous, un utilisateur choisit le franais :
+	<P ALIGN="center">
+	<IMG SRC="tutorials/flags.gif" HEIGHT="44" WIDTH="424" ALT="Drapeau de slection de langue">
+	<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+	<HR>
+	<?php
+}
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="login"><B>Entrer dans un salon de discussion :</B></A></FONT>
+<P>
+Si vous vous tes dj enregistr, il vous suffit d'inscrire votre nom d'utilisateur, c'est  dire votre pseudonyme, et votre mot de passe dans les champs idoines. Slectionnez ensuite un salon de discussion et cliquez sur le bouton  Discuter... <BR>
+<?php
+if (C_REQUIRE_REGISTER == "1")
+{
+	?>
+	<P>
+	Sinon vous devez commencer par vous <A HREF="#register">enregistrer</A>.
+	<?php
+}
+else
+{
+	?>
+	<P>
+	Sinon vous pouvez commencer par vous <A HREF="#register">enregistrer</A> ou simplement choisir un pseudonyme et un salon de discussion. Dans ce dernier cas votre pseudonyme ne sera pas rserv : d'autres utilisateurs pourront s'en servir une fois que vous vous serez dconnects. Dans certains salons de discussions il est obligatoire de s'enregistrer.
+	<?php
+}
+?>
+<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="register"><B>S'enregistrer :</B></A></FONT> 
+<P>
+Si vous n'tes pas encore enregistr <?php if (C_REQUIRE_REGISTER == "0") echo("et que vouliez le faire"); ?>, cliquez sur le lien correspondant  cela sur la page d'accueil. Une petite fentre apparatra.
+<P>	
+<UL>
+	<LI>Choisissez d'abord votre pseudonyme <?php if (!C_EMAIL_PASWD) echo(" et votre mot de passe"); ?>. Votre pseudonyme ou nom d'utilisateur est votre identifiant au sein des salons de discussions auxquels vous participerez. Il ne peut contenir ni caractre espace, ni virgule, ni barre oblique renverse (\).
+<?php if (C_NO_SWEAR == "1") echo(" Il ne pourra pas non plus contenir de \"gros mots\"."); ?>
+	<LI>Entrez ensuite vos nom, prnom et courriel. Sans ces informations l'enregistrement de votre profil vous sera refus. L'indication du sexe est facultative.
+	<LI>Si vous disposez d'un site personnel, vous pouvez en indiquer l'adresse.
+	<LI>L'information concernant les langues que vous parlez pourra tre utile aux autres utilisateurs : il seront ainsi  mme de savoir dans quelle(s) langue(s) vous tes en mesure de les comprendre.
+	<LI>Enfin, en cochant la case correspondante vous pouvez choisir de rendre votre adresse lectronique visible pour les utilisateurs qui consulteront votre profil, qui pourront ainsi vous envoyer du courriel. Si vous prfrez que cette information reste cache, laissez la case vierge.
+	<LI>Il ne vous reste plus alors qu' cliquer sur le bouton  S'enregistrer  et votre profil sera cr. Pour sortir du processus d'enregistrement, vous pouvez cliquer sur le bouton  Fermer   tout moment.
+</UL>
+<P>
+<A NAME="modProfile"></A>Bien videmment, un utilisateur enregistr peut modifier<?php if (C_SHOW_DEL_PROF == "1") echo("/effacer"); ?> son profil en cliquant sur <?php echo((C_SHOW_DEL_PROF == "0"? "le lien correspondant" : "les liens correspondants")); ?> de la page d'accueil.<BR>
+<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+<P>
+<HR>
+
+<?php
+if (C_VERSION == "2") 
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="create_room"><B>Crer un salon de discussion:</B></A></FONT> 
+	<P>
+	Un utilisateur enregistr peut crer son propre salon de discussion. S'il le dclare de type priv, seul un utilisateur en connaissant le nom (il en aura t inform par ailleurs) pourra y accder car ce nom n'apparatra nulle part, sauf aux utilisateurs qui discuteront dans ce mme salon.<BR>
+	<P>
+	Le nom d'un salon ne peut contenir ni virgule, ni barre oblique renverse (\).<?php if (C_NO_SWEAR == "1") echo(" Il ne peut pas plus comprendre de \"gros mots\"."); ?>
+	<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+	<P>
+	<HR>
+	<?php
+};
+if ($Ver == "H")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="connection_state"><B>Dtecter les erreurs de connexion :</B></A></FONT> 
+	<P>
+	En haut  droite de votre cran est affich un sigle rsumant l'tat des connexions. Il peut prendre trois formes :
+	<P>	
+	<UL>
+		<LI><IMG SRC="images/connectOff.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Pas de connexion"> lorsqu'aucune connexion n'est requise ;
+		<LI><IMG SRC="images/connectOn.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Connexion en cours"> lorsqu'une tentative de connexion est en cours ;
+		<LI><IMG SRC="images/connectError.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Echec"> lorsqu'une tentative de connexion a chou.
+	</UL>
+	<P>
+	Dans le dernier de ces trois cas de figure, cliquer sur le "bouton" rouge r-engagera une tentative de connexion.
+	<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="sending"><B>Envoyer un message :</B></A></FONT> 
+<P>
+Pour envoyer un message, tapez votre texte dans la boite situ en bas et  gauche de votre cran, puis pressez le bouton  OK  ou tapez sur la touche  Entre  de votre clavier. Les messages qui ont ts envoys sont affichs dans le fentre principale.<BR>
+<?php if (C_NO_SWEAR == "1") echo("Notez que les \"gros mots\" contenus dans vos messages seront remplacs par une suite de caractres dfinie par l'administrateur."); ?>
+<P>
+Vous pouvez choisir la couleur dans laquelle seront affichs vos messages  l'aide de la liste disponible  droite de la  boite  messages .
+<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="users_list"><B>Les informations prsentes dans la liste des utilisateurs :</B></A></FONT> 
+<P>
+<OL>
+	Deux rgles de base ont t dfinies pour la liste des utilisateurs:<BR>
+	<LI>une petite icne est affiche devant le pseudonyme d'un utilisateur enregistr et dfinit son genre (cliquer sur cette icne activera la <A HREF="#whois">fentre affichant le profil</A> de cet utilisateur), alors que c'est une espace vide qui prcde le pseudonyme des utilisateurs non-enregistrs&nbsp;;<BR>
+	<LI>le pseudonyme de l'administrateur et ceux des modrateurs sont affichs en italique.
+</OL>
+<P><I>Par exemple</I>, de la capture d'cran ci-dessous on peut conclure que:
+<TABLE BORDER=0 CELLSPACING=10>
+<TR>
+	<TD>
+		<IMG SRC="images/tutorials/usersList.gif" WIDTH=128 HEIGHT=145 BORDER=0 ALT="Liste d'utilisateurs">
+	</TD>
+	<TD>
+	<UL>
+		<LI>Nicolas est l'administrateur ou bien l'un des modrateurs du salon&nbsp;;<BR><BR>
+		<LI>alien (de genre inconnu), Jezek2 et Caridad sont des utilisateurs enregistrs sans pouvoirs particuliers dans le salon&nbsp;;<BR><BR>
+		<LI>lolo est un simple utilisateur non-enregistr.
+	</UL>
+	</TD>
+</TR>
+</TABLE>
+<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="exit"><B>Quitter un salon de discussion :</B></A></FONT>
+<P>
+Pour sortir d'un salon de discussion, cliquez simplement sur le lien affich  cet effet en haut et  droite de votre cran. Vous pouvez encore utiliser l'une des trois commandes suivantes en la tapant dans la  boite  messages  :<BR>
+/exit<BR>
+/bye<BR>
+/quit
+<P>
+Ces commandes peuvent tre assorties d'un message qui sera affich avant votre dpart.
+<P>
+<I>Par exemple :</I> /quit  bientt !
+<P>
+affichera le message   bientt !  puis vous renverra sur la page d'accueil.
+<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="users_popup"><B>Savoir qui est connect sans l'tre soi-mme :</B></A></FONT> 
+<P>
+En cliquant sur le lien affichant le nombre d'utilisateurs de la page d'accueil ou bien, une fois dans une salon, sur l'icne <IMG SRC="images/popup.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Liste des utilisateurs"> en haut et  droite de votre cran, vous ouvrirez une petite fentre indpendante prsentant la liste des utilisateurs connects et des salons dans lesquels ils sont prsents en temps presque rl.<BR>
+Vous noterez que le titre de cette fentre est compos des pseudonymes des utilisateurs connects s'ils sont moins de trois, de leur nombre ainsi que de celui des salons ouverts sinon.
+<P>
+Dans cette mme fentre, cliquer sur l'icne <IMG SRC="images/sound.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Signal sonore"> vous permettra d'activer ou de dsactiver le systme de notification sonore  l'arrive d'un nouvel utilisateur.
+<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+<P>
+<HR>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="customize"><B>Modifier les paramtres d'affichage :</B></A></FONT>
+<P>
+Il est de multiples faons de modifier les paramtres d'affichage. Il vous suffit d'entrer la commande approprie dans la  boite  messages .
+<P>
+<UL>
+	<?php
+	if ($Ver == "H")
+	{
+		?>
+		<LI>L'effacement permet de rinitialiser le cadre des messages en ne conservant que les 5 derniers d'entre eux.<BR>Tapez "/clear" sans les guillemets.
+		<P>
+		<?php
+	}
+	else
+	{
+		?>
+		<LI>Le rangement inverse l'ordre d'affichage des messages (des plus rcents en haut aux plus rcents en bas et vice versa).<BR>Tapez "/order" sans les guillemets.
+		<P>
+		<?php
+	};
+	?>
+	<LI>La notification vous permet de choisir s'il faut afficher ou pas les notifications concernant l'entre et la sortie des utilisateurs dans le salon courant. Par dfaut cette option est <?php echo(C_NOTIFY ? "active" : "dsactive"); ?> et les notifications <?php echo(C_NOTIFY ? "sont" : "ne sont pas"); ?> affiches.<BR>Tapez "/notify" sans les guillemets.
+	<P>
+	<LI>Le datage active ou supprime l'affichage de l'heure  laquelle les messages ont t posts ainsi que l'heure serveur dans la barre des tches. Par dfaut cette option est <?php echo(C_SHOW_TIMESTAMP ? "active" : "dsactive"); ?>.<BR>Tapez "/timestamp" sans les guillemets.
+	<P>
+	<LI>Le dlai de rafrachissement du cadre contenant les messages peut tre modifi. La valeur par dfaut est de <?php echo(C_MSG_REFRESH); ?> secondes. Pour la modifier, tapez "/refresh n" sans les guillemets o n est le dlai qui vous convient exprim en secondes.
+	<P>
+	<I>Par exemple :</I> /refresh 5
+	<P>
+	provoquera un rafrachissement du cadre contenant les messages toutes les 5 secondes. *Attention, si n est infrieur  3 ou non spcifi, plus aucun rafrachissement n'est assur (ce qui permet de consulter un longue liste de messages sans tre perturb par des rechargements, par exemple) !*
+	<P>
+	<?php
+	if ($Ver == "L")
+	{
+		?>
+		<LI>Le nombre de messages  afficher dans la fentre principale peut tre dfini par une valeur n. Pour modifier cette valeur, tapez "/show n" sans les guillemets o n correspond au nombre des messages dsirs.
+		<P>
+		<I>Par exemple :</I> /show 50
+		<P>
+		affichera les 50 messages les plus rcents. S'ils ne tiennent pas tous dans le cadre ddi  l'affichage des messages, une barre de dplacement apparatra  la droite de celui-ci.</UL>
+		<?php
+	}
+	else
+	{
+		?>
+		<LI>Ces commandes provoquent une rinitialisation de l'cran et l'affichage d'un nombre dfini de messages parmi les derniers reus. Tapez "/show n" ou "/last n" sans les guillemets o n correspond au nombre des messages  afficher.
+		<P>
+		<I>Par exemple :</I> /show 50 or /last 50
+		<P>
+		effacera l'cran avant d'afficher les 50 derniers messages publis dans le salon courant. S'ils ne tiennent pas tous dans le cadre ddi  l'affichage des messages, une barre de dplacement apparatra  la droite de celui-ci.</UL>
+		<?php
+	};
+	?>
+	<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+	<P>
+</UL>
+<HR>
+<HR>
+
+
+<P>
+<FONT SIZE="+2"><A NAME="commands"><B><U>Fonctionnalits et commandes</U></B></A></FONT> 
+<P>
+
+<FONT SIZE="+1"><A NAME="help"><B>Aide en ligne :</B></A></FONT>
+<P>
+Une fois entr dans un salon de discussion, vous pourrez obtenir de l'aide en cliquant sur l'image <IMG SRC="images/helpOff.gif" WIDTH=15 HEIGHT=15 BORDER=0 ALT="?"> qui est place  gauche de la  boite  messages . Vous pourrez encore utiliser les <B>commandes "/help" ou "/?"</B>  cet effet.
+<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+<P>
+<P>
+<HR>
+
+<?php
+if (C_USE_SMILIES == "1")
+{
+	include("./lib/smilies.lib.php");
+	$Nb = count($SmiliesTbl);
+	$ResultTbl = Array();
+	DisplaySmilies($ResultTbl,$SmiliesTbl,$Nb,"tutorial");
+	unset($SmiliesTbl);
+	?>
+	<FONT SIZE="+1"><A NAME="smilies"><B>Trombines:</B></A></FONT>
+	<P>Vos messages peuvent tre agrments d'lments graphiques prsentant votre tat motionnel. Vous trouverez ci-aprs les codes qu'il faut utiliser dans vos messages pour obtenir chacun de ces moticons lors de l'affichage dans le cadre ddi.
+	<P ALIGN="center">
+	<TABLE BORDER=0 CELLPADDING=3 CELLSPACING=5>
+	<?php
+	$i = "0";
+	$Nb = count($ResultTbl);
+	while($i < $Nb)
+	{
+		if ($i > 0) echo("\t");
+		echo("<TR VALIGN=\"BOTTOM\">\n");
+		echo("$ResultTbl[$i]");
+		echo("\t</TR>\n\t<TR>\n");
+		$i++;
+		echo("$ResultTbl[$i]");
+		echo("\t</TR>\n");
+		$i++;
+	};
+	unset($ResultTbl);
+	?>
+	</TABLE>
+	<P>
+	<I>Par exemple</I>, en tapant le texte "Salut Coco :)" sans les guillemets, le message "Salut Coco <IMG SRC="images/smilies/smile1.gif" WIDTH=15 HEIGHT=15 ALT=":)">" (sans guillemets) sera affich dans le cadre principal.
+	<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+	<P>
+	<HR>
+	<?php
+};
+
+if (C_HTML_TAGS_KEEP != "none")
+{
+	?>
+	<FONT SIZE="+1"><A NAME="text"><B>Mises en forme du texte des messages :</B></A></FONT>
+	<P>
+	Vos messages peuvent contenir du texte en gras, en italique ou soulign. Pour ce faire il vous suffit d'encadrer la section concerne par les balises HTML &lt;B&gt; &lt;/B&gt;, &lt;I&gt; &lt;/I&gt; ou &lt;U&gt; &lt;/U&gt;.
+	<P>
+	<I>Par exemple</I>, en tapant &lt;B&gt;ce texte&lt;/B&gt; vous obtiendrez <B>ce texte</B>.
+	<P>
+	Pour obtenir des hyperliens vers des sites internet ou des adresses lectroniques, tapez simplement l'adresse en question dans votre message sans aucune balise. Elle sera automatiquement traite.
+	<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+	<P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="invite"><B>Suggrer  utilisateur de venir dans le salon que vous occupez :</B></A></FONT>
+<P>
+Vous pouvez avoir recours  une commande spciale pour inciter un utilisateur  vous rejoindre dans votre salon de discussion courant.
+<P>
+<I>Par exemple :</I> /invite Coco 
+<P>
+enverra un message priv  Coco lui suggrant de venir discuter dans le salon que vous occupez. Ce message contiendra le nom de ce salon sous forme d'hyperlien.
+<P>
+Notez que vous pouvez mettre plusieurs noms  la suite pour cette commande ("/invite Coco,Hlne,Alf"). Ils doivent alors tre spars par une virgule sans espace.
+<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="changeroom"><B>Changer de salon de discussion :</B></A></FONT>
+<P>
+La liste affiche  droite de l'cran correspond  la liste des salons ouverts et des utilisateurs qui y sont prsents. Pour quitter votre salon de discussion et vous rendre immdiatement dans l'un de ceux qui sont affichs, cliquez simplement une fois sur le nom de ce dernier. Les salons vides d'occupants n'apparaissant pas dans la liste, il vous faudra faire appel  la <B>commande "/join #nom_de_salon"</B> (sans guillemets) pour vous y rendre sans passer par la page d'accueil.
+<P>
+<I>Par exemple :</I> /join #Salon_1 
+<P>
+vous transportera dans le Salon_1.
+<?php
+if (C_VERSION == "2")
+{
+	echo(C_REQUIRE_REGISTER == "0" ? "<P>Si vous tes un utilisateur enregistr, vous" : "<P>Vous");
+	?>
+	 pouvez aussi crer un nouveau salon  l'aide de cette mme commande. Mais il vous faudra alors prciser la nature de ce salon : 0 pour un salon priv, 1 pour un salon public (valeur par dfaut).
+	<P>
+	<I>Par exemple :</I> /join 0 #MonSalon 
+	<P>
+	crera le salon priv MonSalon ( condition qu'aucun salon public de mme nom n'existe dj) et vous y transfrera.
+	<P>
+	Le nom d'un salon ne peut contenir ni virgule, ni anti-slash (\).<?php if (C_NO_SWEAR == "1") echo(" Il ne peut pas plus comprendre de \"gros mots\"."); ?>
+	<?php
+}
+?>
+<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B>Modifier son profil une fois entr dans un salon :</B></FONT>
+<P>
+Il est possible d'afficher une petite fentre dans laquelle vous pourrez modifier votre profil de faon limite : votre pseudonyme et votre mot de passe ne pourront en aucun cas tre changs (utilisez le lien sur la page d'accueil pour ce faire).<BR>Tapez "/profile" sans guillemets.
+<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B>Rappeler le dernier message envoy ou la dernire commande excute :</B></FONT>
+<P>
+La commande  !  insre dans la  boite  messages  le dernier texte qui y a t entr, qu'il s'agisse d'une commande ou d'un message.<BR>Tapez "/!" sans guillemets.
+<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B>Rpondre  un utilisateur en particulier :</B></FONT>
+<P>
+Cliquer une fois sur le nom d'un utilisateur apparaissant dans la liste situe  droite de votre cran insrera son nom dans la  boite  messages . Ceci permet d'indiquer que le message que vous envoyez s'adresse particulirement  lui, par example.
+<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="private"><B>Messages privs :</B></A></FONT>
+<P>
+Pour faire parvenir un message priv  un utilisateur prsent dans le mme salon que vous, tapez la <B>commande "/msg pseudonyme texte_du_message" ou "/to pseudonyme texte_du_message"</B> sans les guillemets.
+<P>
+<I>Par exemple, si Coco est le nom de l'utilisateur auquel le message priv est destin :</I> /msg Coco Bonjour, comment vas-tu ?
+<P>
+Le message "Bonjour, comment vas-tu ?" (sans les guillemets) ne sera visible que de Coco et de vous.
+<P>
+Notez qu'en cliquant sur le nom d'un expditeur dans le cadre principal, cette commande sera automatiquement insre dans le champ d'entre des messages. 
+<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="actions"><B>Actions :</B></A></FONT>
+<P>
+Pour envoyer un message dcrivant ce que vous tes en train de faire vous pouvez avoir recours  la <B>command "/me action"</B> sans guillemets.
+<P>
+<I>Par exemple :</I> si Nicolas tape "/me boit un caf" le message "<B>* Nicolas</B> boit un caf" sera affich dans le cadre des messages.
+<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="ignore"><B>Ignorer les messages d'autres utilisateurs :</B></A></FONT>
+<P>
+Pour ne pas voir s'afficher les messages provenant d'un utilisateur particulier, utilisez la commande "/ignore pseudo" sans guillemets.
+<P>
+<I>Par exemple :</I> /ignore Coco
+<P>
+Ds lors, aucun des messages que Coco enverra ne seront affich dans le cadre principal.
+<P>
+Pour visualiser l'ensemble des utilisateurs dont les messages sont ignors, tapez simplement la <B>commande "/ignore"</B> sans guillemets ni paramtre additionnel : une petite fentre indpendante listant l'ensemble de ces utilisateurs  ignors  s'affichera. 
+<P>
+Pour afficher  nouveau les messages d'un utilisateur qui tait prcdemment ignor, tapez la <B>commande "/ignore - pseudo"</B> sans guillemets o  -  est un trait d'union ou le sigle mathmatique  moins . 
+<P>
+<I>Par exemple :</I> /ignore - Coco 
+<P>
+Tous les messages en provenance de Coco seront affichs  nouveau, y compris ceux qui avaient t envoys avant que vous ayez tap la commande.
+Si vous ne spcifiez pas de pseudonyme aprs le trait d'union, la liste des utilisateurs ignors sera vide.
+<P>
+Notez que vous pouvez mettre plusieurs noms  la suite pour cette commande ("/ignore Coco,Hlne,Alf" ou "/ignore - Coco,Alf" par exemple). Ils doivent alors tre spars par une virgule sans espace.
+<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="whois"><B>Afficher les informations relatives  un autre utilisateur :</B></A></FONT>
+<P>
+Pour visualiser le profil d'un autre utilisateur, tapez la <B>commande "/whois pseudonyme"</B> sans guillemets.
+<P>
+<I>Par exemple :</I> /whois Coco
+<P>
+o  Coco  est le pseudonyme de l'utilisateur. Cette commande provoquera l'affichage d'une petite fentre contenant les informations disponibles pour l'utilisateur Coco s'il s'agit d'un utilisateur enregistr.
+<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+<P>
+<HR>
+
+<?php
+if (C_SAVE != "0")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="save"><B>Sauvegarder les messages :</B></A></FONT>
+	<P>
+	Pour rcuprer sur votre disque un fichier HTML contenant les messages (hors notifications) publis dans le salon courant, ayez recours  la commande "/save n" sans guillemets.
+	<P>
+	<I>Par exemple :</I> /save 5
+	<P>
+	o '5' est le nombre de messages  sauvegarder. Si n n'est pas spcifi, tous les messages disponibles seront pris en compte.
+	<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+<HR>
+
+
+<P>
+<FONT SIZE="+2"><A NAME="moderator"><B><U>Commandes rserves aux modrateurs et/ou  l'administrateur</U></B></A></FONT> 
+
+<P>
+<FONT SIZE="+1"><A NAME="announce"><B>Poster une annonce gnrale :</B></A></FONT>
+<P>
+L'administrateur peut envoyer un message qui sera visible par tous les utilisateurs connects quelque soit le salon dans lequel ils discutent grce  la <B>commande announce</B>.
+<P>
+<I>Par exemple :</I> /announce Mise  jour du site  20h00 ce soir, risque de perturbations.</I>
+<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="kick"><B>Exclure un utilisateur :</B></A></FONT>
+<P>
+Un modrateur peut exclure un utilisateur et l'administrateur peut faire de mme pour un modrateur ou un utilisateur  l'aide de la commande "kick". Seul l'administrateur peut exclure un utilisateur qui ne discute pas dans le mme salon que lui.
+<P>
+<I>Par exemple, si Coco est le pseudonyme de l'utilisateur  bannir :</I> /kick Coco</I>
+<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+<P>
+<HR>
+
+<?php
+if (C_BANISH != "0")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="banish"><B>Bannir un utilisateur :</B></A></FONT>
+	<P>
+	Un modrateur peut bannir un utilisateur et l'administrateur peut faire de mme pour un modrateur ou un utilisateur  l'aide de la <B>commande ban</B>.<BR>
+	Seul l'administrateur peut bannir un utilisateur qui ne discute pas dans le mme salon que lui; il peut aussi bannir un utilisateur " jamais" du chat (tous salons confondus) un insrant le paramtre '<B>&nbsp;*&nbsp;</B>' avant le pseudo de ce dernier.
+	<P>
+	<I>Par exemple</I>, si Coco est le pseudo de l'utilisateur  bannir : <I>/ban Coco</I> ou <I>/ban * Coco</I>
+	<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="promote"><B>Faire accder un utilisateur au statut de modrateur :</B></A></FONT>
+<P>
+Il est possible pour l'administrateur ou un modrateur de transformer un simple utilisateur en modrateur pour le salon courant  l'aide de la commande "promote".
+<P>
+<I>Par exemple, si Coco est le pseudonyme de l'utilisateur  "promouvoir" :</I> /promote Coco</I>
+<P>
+L'opration inverse, rduire un modrateur au statut d'utilisateur, n'est accessible qu' l'administrateur via une page spcifique. Il n'existe pas de commande pour ce faire.
+<BR><P ALIGN="right"><A HREF="#top">Dbut de la page</A></P>
+<P>
+
+
+</BODY>
+</HTML>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/french_canadian/regex.txt 0.15.0/chat/localization/french_canadian/regex.txt
--- 0.14.5/chat/localization/french_canadian/regex.txt	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/french_canadian/regex.txt	2004-04-01 03:07:22.000000000 -0600
@@ -0,0 +1 @@
+fr[-_]ca
\ No newline at end of file
Binary files 0.14.5/chat/localization/georgian/flag.gif and 0.15.0/chat/localization/georgian/flag.gif differ
Binary files 0.14.5/chat/localization/georgian/georgian_font.zip and 0.15.0/chat/localization/georgian/georgian_font.zip differ
diff -ruN 0.14.5/chat/localization/georgian/localized.chat.php 0.15.0/chat/localization/georgian/localized.chat.php
--- 0.14.5/chat/localization/georgian/localized.chat.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/georgian/localized.chat.php	2004-04-01 03:07:28.000000000 -0600
@@ -0,0 +1,230 @@
+<?php
+// File : georgian.lang.php
+// Translation by George Gongadze <webmaster@georgia-gateway.org>
+
+// extra header for charset
+$Charset = "x-user-defined";
+
+// There is no real official iso code for georgian charset. The var below
+// define the name of the font and of a zip file containing it. An english
+// message suggesting the user to download the file will be displayed at the
+// top of the start page.
+$FontPack = "georgian_font.zip";
+$FontName = "Geo_Times";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// welcome page
+define("L_TUTORIAL", "Tutorial");
+
+define("L_WEL_1", " ");
+define("L_WEL_2", ",   ");
+define("L_WEL_3", " ...");
+
+define("L_CUR_1", " ");
+define("L_CUR_2", "");
+define("L_CUR_3", " ");
+define("L_CUR_4", "  ");
+
+define("L_SET_1", "  ...");
+define("L_SET_2", " ");
+define("L_SET_3", " ");
+define("L_SET_4", " ");
+define("L_SET_5", "  ...");
+define("L_SET_6", " ");
+define("L_SET_7", "Make your choice ...");
+define("L_SET_8", "   ");
+define("L_SET_9", " ");
+define("L_SET_10", "public");
+define("L_SET_11", "private");
+define("L_SET_12", "");
+define("L_SET_13", " ");
+define("L_SET_14", "       ");
+
+define("L_SRC", "");
+
+define("L_SECS", "seconds");
+define("L_MIN", "minute");
+define("L_MINS", "minutes");
+
+// registration stuff:
+define("L_REG_1", "your password");
+define("L_REG_1r", "(only if you are registered)");
+define("L_REG_2", "Account management");
+define("L_REG_3", "Register");
+define("L_REG_4", "Edit your profile");
+define("L_REG_5", "Delete user");
+define("L_REG_6", "User registration");
+define("L_REG_7", "your password");
+define("L_REG_8", "your e-mail");
+define("L_REG_9", "You have successfully registered.");
+define("L_REG_10", "Back");
+define("L_REG_11", "Editing");
+define("L_REG_12", "Modifying user's informations");
+define("L_REG_13", "Deleting user");
+define("L_REG_14", "Login");
+define("L_REG_15", "Log In");
+define("L_REG_16", "Change");
+define("L_REG_17", "Your informations were successfully updated.");
+define("L_REG_18", "You have been kicked away from the room by a moderator.");
+define("L_REG_19", "Do you really want to be removed ?");
+define("L_REG_20", "Yes");
+define("L_REG_21", "You have been successfully removed.");
+define("L_REG_22", "No");
+define("L_REG_25", "Close");
+define("L_REG_30", "firstname");
+define("L_REG_31", "lastname");
+define("L_REG_32", "WEB");
+define("L_REG_33", "show e-mail in public information");
+define("L_REG_34", "Editing user profile");
+define("L_REG_35", "Administration");
+define("L_REG_36", "spoken languages");
+define("L_REG_37", "Fields with a <span class=\"error\">*</span> must be completed.");
+define("L_REG_39", "The room you were in have been removed by the administrator.");
+define("L_REG_45", "gender");
+define("L_REG_46", "male");
+define("L_REG_47", "Female");
+
+// e-mail validation stuff
+define("L_EMAIL_VAL_1", "Your settings to enter the chat");
+define("L_EMAIL_VAL_2", "Welcome to our chat server.");
+define("L_EMAIL_VAL_Err", "Internal error, please contact the administrator: <a href=\"mailto:%s\">%s</a>.");
+define("L_EMAIL_VAL_Done", "Your password has been sent to your e-mail address.");
+
+// admin stuff
+define("L_ADM_1", "%s is no more moderator for this room.");
+define("L_ADM_2", "You're no more a registered user.");
+
+//error messages
+define("L_ERR_USR_1", "This username is already in use. Please chose another.");
+define("L_ERR_USR_2", "You must chose a username.");
+define("L_ERR_USR_3", "This username is registered. Please type your password or chose another username.");
+define("L_ERR_USR_4", "You typed a wrong password.");
+define("L_ERR_USR_5", "You must type your username.");
+define("L_ERR_USR_6", "You must type your password.");
+define("L_ERR_USR_7", "You must type your e-mail.");
+define("L_ERR_USR_8", "You must type a correct e-mail address.");
+define("L_ERR_USR_9", "This username is already in use.");
+define("L_ERR_USR_10", "Wrong username or password.");
+define("L_ERR_USR_11", "You must be administrator.");
+define("L_ERR_USR_12", "You are administrator, so you cannot be removed.");
+define("L_ERR_USR_13", "To create your own room you must be registered.");
+define("L_ERR_USR_14", "You must be registered before chating.");
+define("L_ERR_USR_15", "You must type your full name.");
+define("L_ERR_USR_16", "Username cannot contain space, comma or backslash (\\).");
+define("L_ERR_USR_17", "This room doesn't exist and you are not allowed to create one.");
+define("L_ERR_USR_18", "Banned word found in your username.");
+define("L_ERR_USR_19", "You cannot be in more than one room at the same time.");
+define("L_ERR_USR_20", "You have been banished from this room or from the chat.");
+define("L_ERR_ROM_1", "Room's name cannot contain comma or backslash (\\).");
+define("L_ERR_ROM_2", "Banned word found in the room's name you want to create.");
+define("L_ERR_ROM_3", "This room already exist as a public one.");
+define("L_ERR_ROM_4", "Invalid room name.");
+
+// users frame or popup
+define("L_EXIT", "");
+define("L_DETACH", "");
+define("L_EXPCOL_ALL", "Expand/Collapse All");
+define("L_CONN_STATE", "Connection state");
+define("L_CHAT", "");
+define("L_USER", "");
+define("L_USERS", "");
+define("L_NO_USER", "  ");
+define("L_ROOM", "");
+define("L_ROOMS", "");
+define("L_EXPCOL", "Expand/Collapse room");
+define("L_BEEP", "Beep/no beep at user entrance");
+define("L_PROFILE", "Display profile");
+define("L_NO_PROFILE", "No profile");
+
+// input frame
+define("L_HLP", "Help");
+define("L_BAD_CMD", "  !");
+define("L_ADMIN", "%s is already administrator!");
+define("L_IS_MODERATOR", "%s is already moderator!");
+define("L_NO_MODERATOR", "Only the moderator of this room can use this command.");
+define("L_MODERATOR", "%s is now moderator for this room.");
+define("L_NONEXIST_USER", "User %s isn't in the current room.");
+define("L_NONREG_USER", "User %s isn't registered.");
+define("L_NONREG_USER_IP", "His IP is: %s.");
+define("L_NO_KICKED", "User %s is moderator or administrator and can't be kicked away.");
+define("L_KICKED", "User %s has successfully been kicked away.");
+define("L_NO_BANISHED", "User %s is moderator or administrator and can't be banished.");
+define("L_BANISHED", "User %s has successfully been banished.");
+define("L_SVR_TIME", "Server time: ");
+define("L_NO_SAVE", "No message to save!");
+define("L_NO_ADMIN", "Only the administrator can use this command.");
+define("L_ANNOUNCE", "ANNOUNCE");
+define("L_INVITE", "%s suggest you to join her/him into the <a href=\"#\" onClick=\"window.parent.runCmd('%s','%s')\">%s</a> room.");
+define("L_INVITE_REG", " You have to be registered to enter this room.");
+define("L_INVITE_DONE", "Your invitation has been sent to %s.");
+define("L_OK", "Send");
+
+// help popup
+define("L_HELP_TIT_1", "");
+define("L_HELP_TIT_2", "Text formating for messages");
+define("L_HELP_FMT_1", "You can put bolded, italicized or underlined text in messages by encasing the applicable sections of your text with either the &lt;B&gt; &lt;/B&gt;, &lt;I&gt; &lt;/I&gt; or &lt;U&gt; &lt;/U&gt; tags.<BR>For example, &lt;B&gt;this text&lt;/B&gt; will produce <B>this text</B>.");
+define("L_HELP_FMT_2", "To create a hyperlink (for e-mail or URL) in your message, simply type the corresponding address without any tag. The hyperlink will be created automatically.");
+define("L_HELP_TIT_3", "");
+define("L_HELP_USR", "");
+define("L_HELP_MSG", "message");
+define("L_HELP_ROOM", "");
+define("L_HELP_CMD_0", "{}  , []  .");
+define("L_HELP_CMD_1", "  5  .");
+define("L_HELP_CMD_1a", "Set number of messages to show, minimum and default are 5.");
+define("L_HELP_CMD_1b", "Reload the message frame and display the n latest messages, minimum and default are 5.");
+define("L_HELP_CMD_2a", "   ().<BR> n    -  3-.");
+define("L_HELP_CMD_2b", "Modify messages and users lists refresh delay (in seconds).<BR>If n is not specified or less than 3, toggles between no refresh and 10s refresh.");
+define("L_HELP_CMD_3", " .");
+// define("L_HELP_CMD_4", "  ,    .");
+define("L_HELP_CMD_4", "Join another room, creating it if it doesn't exist and if you're allowed to.<BR>n equals 0 for private and 1 for public, default to 1 if not specified.");
+define("L_HELP_CMD_5", "  [msg] .");
+// define("L_HELP_CMD_6", " (nick)  ,  nick   .<BR>    nick  -  .<BR>   - ,    .<BR>       nick-,    .");
+define("L_HELP_CMD_6", "Avoid diplaying messages from an user if nick is specified.<BR>Set ignoring off for an user when nick and - are both specified, for all users when - is but not nick.<BR>With no option, this command pops up a window that shows all ignored nicks.");
+define("L_HELP_CMD_7", "  .");
+define("L_HELP_CMD_8", "     .");
+define("L_HELP_CMD_9", "Kick away user from the chat. This command can only be used by a moderator.");
+define("L_HELP_CMD_10", "Send a private message to the specified user (other users won't see it).");
+define("L_HELP_CMD_11", "Show informations about specified user.");
+define("L_HELP_CMD_12", "Popup window for editing user's profile.");
+define("L_HELP_CMD_13", "Toggles notifications of user entrance/exit for the current room.");
+define("L_HELP_CMD_14", "Allow the administrator or moderator(s) of the curent room to promote another registered user to moderator for the same room.");
+define("L_HELP_CMD_15", "Clear the message frame and show only the last 5 messages.");
+define("L_HELP_CMD_16", "Save the last n messages (notifications ones excluded) to an HTML file. If n is not specified, all available messages will be taken into account.");
+define("L_HELP_CMD_17", "Allow the administrator to send an announce to all users whatever the room they are chatting into.");
+define("L_HELP_CMD_18", "Suggest an user chatting in an other room to join the one you are into.");
+define("L_HELP_CMD_19", "Allow the moderator(s) of a room or the administrator to \"banish\" an user from the room for a time defined by the administrator.<BR>The later can banish an user chatting in an other room than the one he is into and use the '<B>&nbsp;*&nbsp;</B>' setting to banish \"for ever\" an user from the chat as the whole.");
+define("L_HELP_CMD_20", "Describe what you're doing without refer yourself.");
+
+// messages frame
+define("L_NO_MSG", "   ...");
+define("L_TODAY_DWN", "The messages that have been sent today start below");
+define("L_TODAY_UP", "The messages that have been sent today start above");
+
+// message colors
+$TextColors = array(	"" => "#000000",
+				"" => "#FF0000",
+				"" => "#009900",
+				"" => "#0000FF",
+				"" => "#9900FF",
+				" " => "#990000",
+				" " => "#006600",
+				" " => "#000099",
+				"Maroon" => "#996633",
+				"" => "#006699",
+				"Carrot" => "#FF6600");
+
+// ignored popup
+define("L_IGNOR_TIT", "");
+define("L_IGNOR_NON", "   ");
+
+// whois popup
+define("L_WHOIS_ADMIN", "Administrator");
+define("L_WHOIS_MODER", "Moderator");
+define("L_WHOIS_USER", "User");
+
+// Notification messages of user entrance/exit
+define("L_ENTER_ROM", "%s enters this room");
+define("L_EXIT_ROM", "%s exit this room");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/georgian/regex.txt 0.15.0/chat/localization/georgian/regex.txt
--- 0.14.5/chat/localization/georgian/regex.txt	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/georgian/regex.txt	2004-04-01 03:07:28.000000000 -0600
@@ -0,0 +1 @@
+ka|georgian
\ No newline at end of file
Binary files 0.14.5/chat/localization/german/_flag.gif and 0.15.0/chat/localization/german/_flag.gif differ
Binary files 0.14.5/chat/localization/german/flag.gif and 0.15.0/chat/localization/german/flag.gif differ
diff -ruN 0.14.5/chat/localization/german/localized.admin.php 0.15.0/chat/localization/german/localized.admin.php
--- 0.14.5/chat/localization/german/localized.admin.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/german/localized.admin.php	2004-04-01 03:07:28.000000000 -0600
@@ -0,0 +1,63 @@
+<?php
+// File : german.lang.php
+// Translation by Robert Schaller <robert@schaller.com> & Wolfgang Schneider <schneider@bibelcenter.de>
+//    & Martin Sander <Martin.Sander@touch-screen.de> & Bernard Piller <bernard@bmpsystems.com>
+//    & Reinhard Hofmann <e9625556@student.tuwien.ac.at> & Christian Hacker <c.hacker@dreamer-chat.de>
+
+// extra header for charset
+$Charset = "iso-8859-1";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// Top frame
+define("A_MENU_0", "Administration fr %s");
+define("A_MENU_1", "Registrierte Benutzer");
+define("A_MENU_2", "Verbannte Benutzer");
+define("A_MENU_3", "Rume leeren");
+define("A_MENU_4", "e-Mails senden");
+
+// Frame for registered users
+define("A_SHEET1_1", "Liste registrierter Benutzer und deren Rechte");
+define("A_SHEET1_2", "Benutzername");
+define("A_SHEET1_3", "Rechte");
+define("A_SHEET1_4", "Moderierte Rume");
+define("A_SHEET1_5", "Moderierte Rume werden durch Komma (,) ohne Leerzeichen getrennt.");
+define("A_SHEET1_6", "Markierte entfernen");
+define("A_SHEET1_7", "ndern");
+define("A_SHEET1_8", "Es existiert kein registrierter Benutzer auer Dir.");
+define("A_SHEET1_9", "Markierte Profile verbannen");
+define("A_SHEET1_10", "Jetzt musst Du Deine Auswahl auf der Seite Verbannte Benutzer verfeinern.");
+define("A_SHEET1_11", "Letzte Verbindung");
+define("A_USER", "Benutzer");
+define("A_MODER", "Moderator");
+define("A_PAGE_CNT", "Page %s of %s");
+
+// Frame for banished users
+define("A_SHEET2_1", "Liste Verbannter Benutzer und der jeweiligen Rume");
+define("A_SHEET2_2", "IP");
+define("A_SHEET2_3", "Betroffener Raum");
+define("A_SHEET2_4", "Bis");
+define("A_SHEET2_5", "ohne Ende");
+define("A_SHEET2_6", "Rume werden durch Kommas (,) ohne Abstand getrennt, wenn es weniger als 4 sind, ansonsten verbannt das '<B>&nbsp;*&nbsp;</B>' Zeichen<BR>aus allen Rumen.");
+define("A_SHEET2_7", "Verbannung fr gewhlte(n) Benutzer aufheben");
+define("A_SHEET2_8", "Es existieren keine verbannten Benutzer.");
+
+// Frame for cleaning rooms
+define("A_SHEET3_1", "Liste der bestehenden Rume.");
+define("A_SHEET3_2", "Das Lschen eines \"nicht-Default\" Raumes entfernt auch alle Moderator<BR>Status dieses Raums.");
+define("A_SHEET3_3", "Gewhlte Rume lschen");
+define("A_SHEET3_4", "Es existiert kein Raum zum Lschen.");
+
+// Frame for sending mails
+define("A_SHEET4_0", "Du hast die erforderlichen Variablen in 'chat/admin/mail4admin.php'<BR>noch nicht angepasst.");
+define("A_SHEET4_1", "e-Mails versenden");
+define("A_SHEET4_2", "Empfnger:");
+define("A_SHEET4_3", "Alle auswhlen");
+define("A_SHEET4_4", "Betreff:");
+define("A_SHEET4_5", "Nachricht:");
+define("A_SHEET4_6", "Rundsendung starten");
+define("A_SHEET4_7", "Alle e-Mails wurden gesendet.");
+define("A_SHEET4_8", "Interner Fehler whrend des Sendevorganges.");
+define("A_SHEET4_9", "Adresse, Betreff oder Nachricht fehlt!");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/german/localized.chat.php 0.15.0/chat/localization/german/localized.chat.php
--- 0.14.5/chat/localization/german/localized.chat.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/german/localized.chat.php	2004-04-01 03:07:28.000000000 -0600
@@ -0,0 +1,223 @@
+<?php
+// File : german.lang.php
+// Translation by Silke Oettle <silke@beardedcollie.de> & Robert Schaller <robert@schaller.com>
+//    & Wolfgang Schneider <schneider@bibelcenter.de> & Martin Sander <Martin.Sander@touch-screen.de>
+//    & Bernard Piller <bernard@bmpsystems.com> & Reinhard Hofmann <e9625556@student.tuwien.ac.at>
+
+// extra header for charset
+$Charset = "iso-8859-1";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// welcome page
+define("L_TUTORIAL", "Tutorial");
+
+define("L_WEL_1", "Mitteilungen werden nach");
+define("L_WEL_2", "Stunden und Benutzernamen nach");
+define("L_WEL_3", "Minuten gelscht ...");
+
+define("L_CUR_1", "Es befinden sich momentan");
+define("L_CUR_2", "im Chat.");
+define("L_CUR_3", "Benutzer momentan in den Chatrumen");
+define("L_CUR_4", "Benutzer in privaten Rumen");
+
+define("L_SET_1", "Bitte whle ...");
+define("L_SET_2", "Dein Benutzername");
+define("L_SET_3", "die Anzahl angezeigter Mitteilungen");
+define("L_SET_4", "Zeit zwischen Updates");
+define("L_SET_5", "Whle bitte einen Raum aus ...");
+define("L_SET_6", "Voreingestellte Rume");
+define("L_SET_7", "Whle ...");
+define("L_SET_8", "Vom Benutzer erstellte ffentliche Rume");
+define("L_SET_9", "Erstelle Deinen eigenen");
+define("L_SET_10", "ffentlichen");
+define("L_SET_11", "privaten");
+define("L_SET_12", "Raum");
+define("L_SET_13", "Und jetzt,");
+define("L_SET_14", "auf in den Chat!");
+
+define("L_SRC", "ist kostenlos verfgbar bei");
+
+define("L_SECS", "Sekunden");
+define("L_MIN", "Minute");
+define("L_MINS", "Minuten");
+
+// registration stuff:
+define("L_REG_1", "Dein Passwort");
+define("L_REG_1r", "(nur wenn Du registriert bist)");
+define("L_REG_2", "Registrierte Benutzer");
+define("L_REG_3", "Registrieren");
+define("L_REG_4", "Benutzerprofil ndern");
+define("L_REG_5", "Benutzer lschen");
+define("L_REG_6", "Benutzerregistrierung");
+define("L_REG_7", "Dein Passwort");
+define("L_REG_8", "Deine E-Mail-Adresse");
+define("L_REG_9", "Du hast Dich erfolgreich registriert.");
+define("L_REG_10", "Zurck");
+define("L_REG_11", "Bearbeiten");
+define("L_REG_12", "Benutzerinformation ndern");
+define("L_REG_13", "Benutzer lschen");
+define("L_REG_14", "Anmeldung");
+define("L_REG_15", "Anmelden");
+define("L_REG_16", "ndern");
+define("L_REG_17", "Deine Daten wurden erfolgreich gendert.");
+define("L_REG_18", "Du wurdest vom Moderator aus dem Raum gekickt.");
+define("L_REG_19", "Willst Du wirklich gelscht werden?");
+define("L_REG_20", "Ja");
+define("L_REG_21", "Du wurdest erfolgreich gelscht.");
+define("L_REG_22", "Nein");
+define("L_REG_25", "Schlieen");
+define("L_REG_30", "Vorname");
+define("L_REG_31", "Nachname");
+define("L_REG_32", "Homepage");
+define("L_REG_33", "E-Mail-Adresse bei /whois Befehl anzeigen");
+define("L_REG_34", "Benutzerdaten ndern");
+define("L_REG_35", "Administration");
+define("L_REG_36", "Sprachen");
+define("L_REG_37", "Felder mit <span class=\"error\">*</span> mssen ausgefllt werden.");
+define("L_REG_39", "Der Raum in dem Du warst, wurde vom Administrator gelscht.");
+define("L_REG_45", "Geschlecht");
+define("L_REG_46", "mnnlich");
+define("L_REG_47", "weiblich");
+
+// e-mail validation stuff
+define("L_EMAIL_VAL_1", "Deine Einstellungen zum Einstieg in den Chat");
+define("L_EMAIL_VAL_2", "Willkommen auf unserem Chat-Server.");
+define("L_EMAIL_VAL_Err", "Interner Fehler, bitte kontaktiere den Administrator: <a href=\"mailto:%s\">%s</a>.");
+define("L_EMAIL_VAL_Done", "Dein Passwort wurde an Deine E-Mail-Adresse geschickt.");
+
+// admin stuff
+define("L_ADM_1", "%s ist nicht mehr Moderator fr diesen Raum.");
+define("L_ADM_2", "Du bist kein registrierter Benutzer mehr.");
+
+// error messages:
+define("L_ERR_USR_1", "Dieser Benutzername wird schon verwendet. Whle einen neuen.");
+define("L_ERR_USR_2", "Du musst einen Benutzernamen whlen.");
+define("L_ERR_USR_3", "Dieser Benutzername wird schon verwendet. Bitte gib das Passwort ein oder whle einen anderen Benutzernamen.");
+define("L_ERR_USR_4", "Du hast ein falsches Passwort angegeben.");
+define("L_ERR_USR_5", "Du mut einen Benutzernamen angeben.");
+define("L_ERR_USR_6", "Du mut ein Passwort angeben.");
+define("L_ERR_USR_7", "Du mut Dein E-Mail angeben.");
+define("L_ERR_USR_8", "Du mut eine korrekte E-Mail-Adresse angeben.");
+define("L_ERR_USR_9", "Dieser Benutzername ist bereits vergeben.");
+define("L_ERR_USR_10", "Falscher Benutzername oder Passwort.");
+define("L_ERR_USR_11", "Dafr mut Du Administrator sein.");
+define("L_ERR_USR_12", "Als Administrator knnen Sie nicht gelscht werden.");
+define("L_ERR_USR_13", "Du mut registriert sein, um eigene Rume anlegen zu knnen.");
+define("L_ERR_USR_14", "Du mut registriert sein, um zu chatten.");
+define("L_ERR_USR_15", "Du mut Deinen vollen Namen angeben.");
+define("L_ERR_USR_16", "Der Benutzername darf keine Leerzeichen, Kommata und Backslashes (\\) enthalten.");
+define("L_ERR_USR_17", "Dieser Raum existiert nicht und Du darfst keinen anlegen.");
+define("L_ERR_USR_18", "Dein Benutzername enthlt ein verbotenes Wort.");
+define("L_ERR_USR_19", "Du kannst nicht in mehreren Rumen zugleich sein.");
+define("L_ERR_USR_20", "Du wurdest aus diesem Raum oder aus dem Chat verbannt.");
+define("L_ERR_ROM_1", "Der Name des Raums darf keine Kommata und Backslashes (\\) enthalten.");
+define("L_ERR_ROM_2", "Der Name des Raumes den Du anlegen willst enthlt ein verbotenes Wort.");
+define("L_ERR_ROM_3", "Dieser Raum existiert schon als ffentlicher Raum.");
+define("L_ERR_ROM_4", "Ungltiger Raumname.");
+
+// users frame or popup
+define("L_EXIT", "Abmelden");
+define("L_DETACH", "Popup");
+define("L_EXPCOL_ALL", "Alles ausklappen/einklappen");
+define("L_CONN_STATE", "Verbindungs-Status");
+define("L_CHAT", "zur Anmeldung");
+define("L_USER", "Benutzer");
+define("L_USERS", "Benutzer");
+define("L_NO_USER", "Kein Benutzer");
+define("L_ROOM", "Raum");
+define("L_ROOMS", "Rume");
+define("L_EXPCOL", "Raum ausklappen/einklappen");
+define("L_BEEP", "Piep/Kein Piep bei Benutzer-Eintritt");
+define("L_PROFILE", "Profil anzeigen");
+define("L_NO_PROFILE", "No profile");
+
+// input frame
+define("L_HLP", "Hilfe");
+define("L_BAD_CMD", "Dies ist kein gltiger Befehl!");
+define("L_ADMIN", "%s ist bereits Administrator!");
+define("L_IS_MODERATOR", "%s ist bereits Moderator!");
+define("L_NO_MODERATOR", "Nur der Moderator dieses Raums darf diesen Befehl verwenden.");
+define("L_MODERATOR", "%s ist nun Moderator fr diesen Raum.");
+define("L_NONEXIST_USER", "Benutzer %s ist nicht in diesem Raum");
+define("L_NONREG_USER", "Benutzer %s ist nicht angemeldet.");
+define("L_NONREG_USER_IP", "Seine IP ist: %s.");
+define("L_NO_KICKED", "Der Benutzer %s ist Moderator oder Administrator und kann nicht gekickt werden.");
+define("L_KICKED", "Der Benutzer %s wurde erfolgreich gekickt.");
+define("L_NO_BANISHED", "Der Benutzer %s ist Moderator oder Administrator und kann nicht verbannt werden.");
+define("L_BANISHED", "Der Benutzer %s wurde erfolgreich verbannt.");
+define("L_SVR_TIME", "Server Zeit: ");
+define("L_NO_SAVE", "Keine Nachricht zum Speichern!");
+define("L_NO_ADMIN", "Nur der Administrator kann diesen Befehl verwenden.");
+define("L_ANNOUNCE", "ANKNDIGUNG");
+define("L_INVITE", "%s ldt Dich in den Raum <a href=\"#\" onClick=\"window.parent.runCmd('%s','%s')\">%s</a> ein.");
+define("L_INVITE_REG", " Du hast Dich zum Betritt fr diesen Raum registriert.");
+define("L_INVITE_DONE", "Deine Einladung wurde an %s geschickt.");
+define("L_OK", "Senden");
+
+// help popup
+define("L_HELP_TIT_1", "Smilies");
+define("L_HELP_TIT_2", "Text-Formatierungen der Nachrichten");
+define("L_HELP_FMT_1", "Du kannst den Text Deiner Nachrichten fett, kursiv oder unterstrichen formatieren, wenn Du den Text entweder mit &lt;B&gt; &lt;/B&gt;, &lt;I&gt; &lt;/I&gt; oder &lt;U&gt; &lt;/U&gt; Tags umgibst.<BR>z.B.: &lt;B&gt;dieser Text&lt;/B&gt; erzeugt <B>diesen Text</B>");
+define("L_HELP_FMT_2", "Um einen Hyperlink in einer Nachricht zu erzeugen (fr E-Mail oder eine URL), gib einfach die Adresse ohne einen Tag ein. Der Link wird automatisch erzeugt.");
+define("L_HELP_TIT_3", "Befehle");
+define("L_HELP_USR", "Benutzer");
+define("L_HELP_MSG", "Mitteilung");
+define("L_HELP_ROOM", "Raum");
+define("L_HELP_CMD_0", "{} steht fr eine erforderliche Einstellung, [] fr eine optionale.");
+define("L_HELP_CMD_1", "Einstellung der Anzahl angezeigter Mitteilungen, mindestens 5.");
+define("L_HELP_CMD_1a", "Einstellung der Anzahl angezeigter Mitteilungen, mindestens 5.");
+define("L_HELP_CMD_1b", "Nachrichten neu laden und die letzten n Nachrichten anzeigen, mindestens 5.");
+define("L_HELP_CMD_2a", "Einstellung der Verzgerung bei der Mitteilungsaktualisierung (in Sekunden).<br>Wird n nicht bestimmt oder ist n kleiner als 3, dann wird zwischen keiner Aktualisierung und 10 Sekunden gewechselt.");
+define("L_HELP_CMD_2b", "Einstellung der Verzgerung bei der Mitteilungsaktualisierung (in Sekunden).<br>Wird n nicht bestimmt oder ist n kleiner als 3, dann wird zwischen keiner Aktualisierung und 10 Sekunden gewechselt.");
+define("L_HELP_CMD_3", "Mitteilungsreihenfolge umkehren.");
+define("L_HELP_CMD_4", "Zu einem anderen Raum wechseln. Der Raum wird neu erstellt, falls er noch nicht existiert und man dazu die Erlaubnis hat.<BR>n = 0 fr private und n = 1 fr ffentliche Rume. Falls keine Eingabe erfolgt, wird n = 1 angenommen.");
+define("L_HELP_CMD_5", "Den Chat nach einer optionalen Mitteilung verlassen.");
+define("L_HELP_CMD_6", "Anzeige von Mitteilungen eines Benutzers ignorieren, wenn ein Benutzername angegeben ist.<BR>Anzeige fr alle Benutzer, wenn nur - ohne Benutzername angegeben wird.<BR>Ohne Zusatz ffnet dieser Befehl ein Fenster, in dem alle ignorierten Namen angezeigt werden.");
+define("L_HELP_CMD_7", "Den zuletzt getippten Text wieder anzeigen (Befehl oder Mitteilung).");
+define("L_HELP_CMD_8", "Zeitangabe vor Mitteilungen ein/aus.");
+define("L_HELP_CMD_9", "Schliet einen Benutzer vom Chat aus. Diesen Befehl kann nur der Moderator verwenden.");
+define("L_HELP_CMD_10", "Eine private Nachricht an den angegebenen Benutzer schicken (andere Benutzer sehen diese Nachricht nicht).");
+define("L_HELP_CMD_11", "Informationen zu einem angegebenen Benutzer anzeigen.");
+define("L_HELP_CMD_12", "Popup Fenster zur nderung des Benutzerprofils.");
+define("L_HELP_CMD_13", "Schaltet um ob Du ber das Kommen oder Gehen von Benutzern in einem Raum informiert wirst oder nicht.");
+define("L_HELP_CMD_14", "Erlaubt dem Administrator oder den Moderatoren des aktuellen Raumes Moderator von anderen Rumen eines registrierten Benutzers zu werden.");
+define("L_HELP_CMD_15", "Nachrichten lschen und nur die letzten 5 zeigen.");
+define("L_HELP_CMD_16", "Die letzten 5 Nachrichten als HTML-Datei speichern (ausgenommen Mitteilungen). Wird n nicht bestimmt, dann werden alle Nachrichten eingeschlossen.");
+define("L_HELP_CMD_17", "Erlaubt dem Administrator Ankndigungen an alle Benutzer zu senden, egal in welchem Raum diese chatten.");
+define("L_HELP_CMD_18", "Einem Benutzer eines anderen Raumes vorschlagen, in den eigenen zu wechseln.");
+define("L_HELP_CMD_19", "Erlaubt den Moderatoren/Administrator einen Benutzer fr eine vom Administrator bestimmte Zeit aus dem Raum zu \"verbannen\".<BR>Der Administrator kann auch Benutzer anderer Rume verbannen und die Einstellung '<B>&nbsp;*&nbsp;</B>' verwenden um Benutzer \"fr immer\" aus dem gesamten Chat zu verbannen.");
+define("L_HELP_CMD_20", "Beschreiben, was du grade tust, ohne Dich selbst zu erwhnen.");
+
+//message frame
+define("L_NO_MSG", "keine Mitteilungen.");
+define("L_TODAY_DWN", "Die Nachrichten werden von oben nach unten angezeigt");
+define("L_TODAY_UP", "Die Nachrichten werden von unten nach oben angezeigt");
+
+// message colors
+$TextColors = array(	"Schwarz" => "#000000",
+				"Rot" => "#FF0000",
+				"Grn" => "#009900",
+				"Blau" => "#0000FF",
+				"Lila" => "#9900FF",
+				"Dunkelrot" => "#990000",
+				"Dunkelgrn" => "#006600",
+				"Dunkelblau" => "#000099",
+				"Kastanienbraun" => "#996633",
+				"Aquablau" => "#006699",
+				"Orange" => "#FF6600");
+
+//ignored popup
+define("L_IGNOR_TIT", "Ignoriert");
+define("L_IGNOR_NON", "Keine ignorierten Benutzer");
+
+// whois popup
+define("L_WHOIS_ADMIN", "Administrator");
+define("L_WHOIS_MODER", "Moderator");
+define("L_WHOIS_USER", "Benutzer");
+
+// Notification messages of user entrance/exit
+define("L_ENTER_ROM", "%s betritt den Raum");
+define("L_EXIT_ROM", "%s verlt den Raum");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/german/localized.tutorial.php 0.15.0/chat/localization/german/localized.tutorial.php
--- 0.14.5/chat/localization/german/localized.tutorial.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/german/localized.tutorial.php	2004-04-01 03:07:29.000000000 -0600
@@ -0,0 +1,634 @@
+<?php
+// File : german.tutorial.php
+// Translation by Michael Schoening <m.schoening@ticketboy.de>
+// & Reinhard Hofmann <e9625556@student.tuwien.ac.at>
+
+// Get the names and values for vars sent by the script that called this one
+if (isset($HTTP_GET_VARS))
+{
+	while(list($name,$value) = each($HTTP_GET_VARS))
+	{
+		$$name = $value;
+	};
+};
+?>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+
+<HEAD>
+<TITLE>Deutsche Anleitung fr<?php echo(APP_NAME." - ".APP_VERSION); ?></TITLE>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+<STYLE>
+A.topLink
+{
+	text-decoration: underline;
+	color: #0000C0;
+}
+
+A.topLink:hover, A.topLink:active
+{
+	color: #FF9900;
+	text-decoration: none;
+	font-weight: 800;
+}
+
+.redText
+{
+	font-weight: 800;
+	color: #FF0000;
+}
+</STYLE>
+</HEAD>
+
+<BODY BGCOLOR="#CCCCFF">
+
+<P><A NAME="top"></P>
+<TABLE BORDER="5" CELLPADDING="5">
+<TR>
+	<TD><FONT SIZE="+2">Inhalt des Tutorials</FONT></TD>
+</TR>
+</TABLE><BR>
+
+<P CLASS="redText">
+Achtung: Netscape-Benutzer mssen ihre Sprache als Standardcodierung definieren, sonst wird jedes Nachrichtenzeichen durch '?' ersetzt.<BR>
+Dies kann so eingestellt werden: Anzeige/Zeichensatz/Auto-Detect ihre Sprache, dann Anzeige/Zeichensatz/StandardSetzen.
+</P>
+
+<?php
+if (C_MULTI_LANG == "1") 
+{
+	?>
+	<A HREF="#language" CLASS="topLink">Sprachauswahl</A><BR>
+	<?php
+};
+?>
+<A HREF="#login" CLASS="topLink">Einloggen im Chat</A><BR>
+<A HREF="#register" CLASS="topLink">Registrierung</A><BR>
+<A HREF="#modProfile" CLASS="topLink">Modifizieren<?php if (C_SHOW_DEL_PROF == "1") echo("/Lschen"); ?> Deines Profils</A><BR>
+<?php
+if (C_VERSION == "2") 
+{
+	?>
+	<A HREF="#create_room" CLASS="topLink">Raum erstellen</A><BR>
+	<?php
+};
+if ($Ver == "H") 
+{
+	?>
+	<A HREF="#connection_state" CLASS="topLink">Verbindungsstatus</A><BR>
+	<?php
+};
+?>
+<A HREF="#sending" CLASS="topLink">Nachricht senden</A><BR>
+<A HREF="#users_list" CLASS="topLink">Die Benutzerliste</A><BR>
+<A HREF="#exit" CLASS="topLink">Chatraum verlassen</A><BR>
+<A HREF="#users_popup" CLASS="topLink">Wissen wer chattet ohne eingeloggt zu sein</A><BR>
+<P>
+<A HREF="#customize" CLASS="topLink">Anpassen der Chatansicht</A><BR>
+<P>
+<A HREF="#commands" CLASS="topLink">Mglichkeiten und Befehle:</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#help" CLASS="topLink">Hilfe Befehl</A><BR>
+<?php
+if (C_USE_SMILIES == "1")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#smilies" CLASS="topLink">Grafische Smilies</A><BR>
+	<?php
+};
+if (C_HTML_TAGS_KEEP != "none")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#text" CLASS="topLink">Textformatierung</A><BR>
+	<?php
+};
+?>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#invite" CLASS="topLink">Einen Benutzer in Deinen derzeitigen Raum einladen</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#changeroom" CLASS="topLink">Von einen Chatraum in den anderen wechseln</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#private" CLASS="topLink">Private Nachrichten</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#actions" CLASS"topLink">Aktionen</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#ignore" CLASS="topLink">Andere Benutzer ignorieren</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#whois" CLASS="topLink">Informationen ber andere Benutzer bekommen</A><BR>
+<?php
+if (C_SAVE != "0")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#save" CLASS="topLink">Nachrichten speichern</A><BR>
+	<?php
+};
+?>
+<P>
+<A HREF="#moderator" CLASS="topLink">Spezielle Befehle fr Moderatoren und/oder den Administrator:</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#announce" CLASS="topLink">Sende eine Mitteilung</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#kick" CLASS="topLink">Benutzer rauswerfen</A><BR>
+<?php
+if (C_BANISH != "0")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#banish" CLASS="topLink">Einen Benutzer verbannen</A><BR>
+	<?php
+};
+?>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#promote" CLASS="topLink">Einen Benutzer zum Moderator ernennen</A><BR>
+<P>
+<HR>
+<HR>
+
+
+<?php
+if (C_MULTI_LANG == "1") 
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="language"><B>Sprachauswahl:</B></A></FONT>
+	<P>
+	Du kannst eine Sprache whlen in die <?php echo(APP_NAME); ?> bersetzt wurde, einfach durch klicken auf eine der Fahnen auf der Startseite. Im folgenden Beispiel wurde franzsisch gewhlt:
+	<P ALIGN="center">
+	<IMG SRC="images/tutorials/flags.gif" HEIGHT="44" WIDTH="424" ALT="Fahnen zur Benutzerauswahl">
+	<BR><P ALIGN="right"><A HREF="#top">Zurck nach oben</A></P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="login"><B>Login:</B></A></FONT>
+<P>
+Wenn Du bereits registriert bist, gib einfach Deinen Usernamen und Dein Passwort ein. Dann whle, welchen Chatraum Du betreten willst und drcke auf den Chat-Knopf.<BR>
+<?php
+if (C_REQUIRE_REGISTER == "1")
+{
+	?>
+	<P>
+	Ansonsten mut Du Dich zuerst  <A HREF="#register">registrieren</A> .
+	<?php
+}
+else
+{
+	?>
+	<P>
+	Oder Du kannst Dich <A HREF="#register">registrieren</A> oder einfach einen Raum betreten. Allerdings wird Dein Benutzername dann nicht reserviert (und andere Nutzer knnen diesen Namen benutzen, wenn Du die Seiten verlt).
+	<?php
+}
+?>
+<BR><P ALIGN="right"><A HREF="#top">Zurck nach oben</A></P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="register"><B>Um Dich zu registrieren:</B></A></FONT> 
+<P>
+Wenn Du noch nicht registriert bist <?php if (C_REQUIRE_REGISTER == "0") echo("und es tun willst"); ?>, whle bitte die Registrierungsoption. Ein kleines Popup-Fenster wird erscheinen.
+<P>	
+<UL>
+	<LI>Whle zunchst einen Benutzernamen<?php if (!C_EMAIL_PASWD) echo(" und ein Passwort"); ?> durch Eingabe in die jeweiligen Felder. Der Benutzername ist der Name, der im Chatraum erscheinen wird. Er darf keine Leerzeichen, Kommata oder Rckstriche enthalten(\).
+<?php if (C_NO_SWEAR == "1") echo(" Es drfen keine \"verbotenen Worte\" enthalten sein."); ?>
+	<LI>Dann flle die Felder Vorname, Nachname, und E-Mail-Adresse aus. Um Deinen Namen fr den Chat zu registrieren, mssen alle diese Angaben gemacht werden. Du kannst die Geschlechtsauswahl berspringen.
+	<LI>Falls Du eine Homepage hast, gib diese in das dafr vorgesehene Feld ein.
+	<LI>Gib an, welche Sprache Du bevorzugt sprichst (als Hilfe fr andere Nutzer).
+	<LI>Willst Du, dass andere Deine Mailadresse lesen knnen? Dann whle das bitte aus.
+	<LI>Drcke den Registrieren-Knopf und Du bist fertig. Willst Du Dich doch nicht registrieren, drcke den Stop-Knopf.
+</UL>
+<P>
+<A NAME="modProfile"></A>Natrlich kannst Du als registrierter Nutzer selber jederzeit Dein Profil ndern<?php if (C_SHOW_DEL_PROF == "1") echo("/lschen"); ?>. Klicke einfach auf den <?php echo((C_SHOW_DEL_PROF == "0" ? "Link" : "Link")); ?>.<BR>
+<BR><P ALIGN="right"><A HREF="#top">Zurck zum Anfang</A></P>
+<P>
+<HR>
+
+<?php
+if (C_VERSION == "2") 
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="create_room"><B>Um einen Chatraum zu erstellen:</B></A></FONT> 
+	<P>
+	Registrierte Benutzer knnen Rume erstellen. Privatrume knnen nur von Nutzern erreicht werden, die deren Namen kennen. Du wirst niemals angezeigt, nur denen die in diesem Raum selber sind.<BR>
+	<P>
+	Raumnamen drfen keine Kommata oder Rckstriche enthalten (\).<?php if (C_NO_SWEAR == "1") echo(" Es drfen keine \"verbotenen Worte\" enthalten sein."); ?>
+	<BR><P ALIGN="right"><A HREF="#top">Zurck zum Anfang</A></P>
+	<P>
+	<HR>
+	<?php
+};
+if ($Ver == "H")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="connection_state"><B>Verbindungsstatus:</B></A></FONT> 
+	<P>
+	Das Zeichen rechts oben reprsentiert Deinen Verbindungsstatus. Es kann drei Farben annehmen :
+	<P>	
+	<UL>
+		<LI><IMG SRC="images/connectOff.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Keine Verbindung"> wenn keine Verbindung ntig ist;
+		<LI><IMG SRC="images/connectOn.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Verbindung"> wenn eine Verbindung aufgebaut wird;
+		<LI><IMG SRC="images/connectError.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Verbindung fehlgeschlagen"> wenn kein Verbindungsaufbau mglich ist.
+	</UL>
+	<P>
+	Im letzten Fall kann durch klicken auf den roten "Knopf" versucht werden, die Verbindung wieder herzustellen.
+	<BR><P ALIGN="right"><A HREF="#top">Zurck zum Anfang</A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="sending"><B>Nachrichten senden:</B></A></FONT> 
+<P>
+Um eine Nachricht im Chatraum zu verffentlichen, tippe diese in das Feld unten links und drcke Enter/Return um sie zu senden. Die Nachrichten aller kannst Du im Chatfenster sehen.<BR>
+<?php if (C_NO_SWEAR == "1") echo("Beachte, da \"verbotene Worte\" aus der Nachricht entfernt werden."); ?>
+<P>
+Du kannst die Farbe Deiner Nachrichten durch Auswahl einer neuen Farbe rechts von der Texteingabe ndern. Einfach auf die neue Farbe klicken.
+<BR><P ALIGN="right"><A HREF="#top">Zurck zum Anfang</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="users_list"><B>Benutzerliste (nicht Popup-Fenster):</B></A></FONT> 
+<P>
+<OL>
+	Zwei Regeln gelten fr die Benutzerliste:<BR>
+	<!-- To update
+	<LI>ein kleines Zeichen (<IMG SRC="images/whoisOff.gif" WIDTH=5 HEIGHT=9 BORDER=0 ALT="Whois">) wird vor registrierten Benutzernamen angezeigt und beim Klicken darauf erscheint ein <A HREF="#whois">WhoIs Popup</A> fr diesen Benutzer, whrend unregistrierte Bnutzer nur ein Minuszeichen vor ihrem Namen haben;<BR>
+	-->
+	<LI>a little icon that shows gender is displayed before the nick of a registered user (clicking on it will launch the <A HREF="#whois">whois popup</A> for this user), while unregistered users have nothing but blank spaces displayed before their nick;<BR>
+	<LI>der Benutzername von Moderatoren/Administrator ist kursiv geschrieben.
+</OL>
+<P><I>Zum Beispiel</I>, kannst Du aus dem Bild unten erkennen, dass:
+<TABLE BORDER=0 CELLSPACING=10>
+<TR>
+	<TD>
+		<IMG SRC="images/tutorials/usersList.gif" WIDTH=128 HEIGHT=145 BORDER=0 ALT="Benutzerliste">
+	</TD>
+	<TD>
+	<UL>
+		<LI>Nicolas Administrator oder Moderator des Raumes ist;<BR><BR>
+		<!-- To update
+		<LI>lolo und Jezek2 normale registrierte Benutzer sind;<BR>
+		<LI>Mary ein normaler unregistrierter Benutzer ist.
+		-->
+		<LI>alien (whose gender is unknown), Jezek2 and Caridad are registered users with no extra "power" for the phpMyChat room;<BR><BR>
+		<LI>lolo is a simple unregistered user.
+	</UL>
+	</TD>
+</TR>
+</TABLE>
+<BR><P ALIGN="right"><A HREF="#top">Zurck zum Anfang</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="exit"><B>Chatraum verlassen:</B></A></FONT>
+<P>
+Um den Chat zu verlassen, klicke auf "Exit" oben rechts. Alternativ kannst Du folgenden Befehle benutzen, die Du einfach im Texteingabefeld eingibst:<BR>
+/exit<BR>
+/bye<BR>
+/quit<br>
+Die Befehle knnen noch durch eine Nachricht ergnzt werden, die du einfach nach dem Befehl dahinter eintippst..
+<I>Beispiel:</I> /quit Bis bald!
+<P>
+sendet diese Nachricht "Bis bald!" im Chatfenster. Danach wirst Du automatisch abgemeldet.
+
+<BR><P ALIGN="right"><A HREF="#top">Zurck zum Anfang</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="users_popup"><B>Wissen wer chattet ohne eingeloggt zu sein:</B></A></FONT> 
+<P>
+Du kannst auf den Link klicken, der Dir auf der Startseite die Anzahl der Benutzer momentan anzeigt. Wenn Du chattest, klicke auf das Bild  <IMG SRC="images/popup.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Benutzerliste"> in der oberen rechten Ecke des Bilder um ein Fenster zu ffnen, da Dir alle Benutzer und die Rume in denen sie sich befinden anzeigt.<BR>
+<P>
+Beim klick auf das  <IMG SRC="images/sound.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Piep">Bild am oberen Rand dieses Fensters stellt die Benachrichtigung bei neuen Nutzern an oder aus.
+<BR><P ALIGN="right"><A HREF="#top">Zurck zum Anfang</A></P>
+<P>
+<HR>
+<HR>
+
+
+<P>
+<FONT SIZE="+1"><A NAME="customize"><B>Anpassen der Chatansicht:</B></A></FONT>
+<P>
+Es gibt verschiedene Methoden, die Chatansicht zu ndern. Um die Vorgaben zu ndern, tippe den gewnschten Befehl in das Nachrichtenfeld und drcke Enter/Return.
+<P>
+<UL>
+	<?php
+	if ($Ver == "H")
+	{
+		?>
+		<LI>Der <B>Clear Befehl</B> erlaubt Dir, das Hauptfenster zu lschen und die letzten 5 Nachrichten anzuzeigen.<BR>Tippe "/clear" ohne Anfhrungszeichen.
+		<P>
+		<?php
+	}
+	else
+	{
+		?>
+		<LI>Der <B>Order Befehl</B> erlaubt es Dir inzustellen, ob neue Nachrichten obenhalb oder unterhalb der anderen Nachrichten erscheinen.<BR>Tippe "/order" ohne Anfhrungszeichen.
+		<P>
+		<?php
+	};
+	?>
+	<LI>Der <B>Notify Befehl</B> erlaubt die Einstellung, ob Du die Anzeige ber das Betreten oder Verlassen neuer User in den Raum sehen kannst. Standardmig ist die Option <?php echo(C_NOTIFY ? "on" : "off"); ?>  und die Benachrichtigung <?php echo(C_NOTIFY ? "will" : "won't"); ?> gesehen.<BR>Tippe "/notify" ohne Anfhrungszeichen.
+	<P>
+	<LI>Mit dem <B>Timestamp Befehl</B> Kannst Du die Zeit vor einer Nachricht an oder abschaltenr. Vorgabe ist <?php echo(C_SHOW_TIMESTAMP ? "on" : "off"); ?>.<BR>Tippe "/timestamp" ohne Anfhrungszeichen.
+	<P>
+	<LI>Der <B>Refresh Befehl</B> stellt die Zeit ein, in der Nachrichten auf dem Bildschirm aktualisiert werden. Vorgabe hier sind <?php echo(C_MSG_REFRESH); ?> Sekunden Um die Wiederholrate zu ndern tippe "/refresh n" ohne Anfhrungszeichen, wobei n die Anzahl Sekunden angibt.
+	<P>
+	<I>Beispiel:</I> /refresh 5
+	<P>
+	ndert die Rate auf 5 Sekunden. *Vorsicht, wenn n kleiner als 3 ist, wir die Wiederholrate auf 0 gesetzt  (ntzlich, wenn Du viele Nachrichten lesen willst, ohne gestrt zu werden)!*
+	<P>
+	<?php
+	if ($Ver == "L")
+	{
+		?>
+		<LI>Der <B>Show Befehl</B> erlaubt die Einstellung der maximal zulssigen Nachrichten pro Seite. Um die Vorgabe zu ndern tippe "/show n" ohne Anfhrungszeichen wobei n die Anzahl der sichtbaren Nachrichten darstellt..
+		<P>
+		<I>Zum Beispiel:</I> /show 50
+		<P>
+		lt maximal 50 Nachrichten pro Seite zu.Sollten diese nicht alle sichtbar sein, so kannst Du mit dem Scrollbalken am Fensterrand scrollen.</UL>
+		<?php
+	}
+	else
+	{
+		?>
+		<LI>Die <B>Show und Last Befehle</B> erlauben das Lschen des Bildschirms und das lesen der letzten <I>n</I> Nachrichten die gesendet wurden. Tippe "/show n" oder "/last n" ohne Anfhrungszeichen wobei N die Anzahl der sichbaren Nachrichten ist.
+		<P>
+		<I>Beispiel:</I> /show 50 or /last 50
+		<P>
+		lscht das Nachrichtenfenster und zeigt die 50 neuesten Nachrichten an. Auch hier erscheint ein Scrollbalken, wenn die Anzahl der Nachrichten nicht in die Ansicht pat.</UL>
+		<?php
+	};
+	?>
+	<BR><P ALIGN="right"><A HREF="#top">Zurck zum Anfang</A></P>
+	<P>
+</UL>
+<HR>
+<HR>
+
+
+<P>
+<FONT SIZE="+2"><A NAME="commands"><B><U>Mglichkeiten und Befehle</U></B></A></FONT> 
+<P>
+
+<FONT SIZE="+1"><A NAME="help"><B>Help Befehl:</B></A></FONT>
+<P>
+Wenn Du im Chatraum bist, kannst Du auf das  <IMG SRC="images/helpOff.gif" WIDTH=15 HEIGHT=15 BORDER=0 ALT="?"> Zeichen vor der Nachrichteneingabe klicken. Du kannst auch den  <B>"/help" oder "/?" Befehl</B> eingeben (ohne Anfhrungszeichen).
+<BR><P ALIGN="right"><A HREF="#top">Zurck zum Anfang</A></P>
+<P>
+<P>
+<HR>
+
+<?php
+if (C_USE_SMILIES == "1")
+{
+	include("./lib/smilies.lib.php");
+	$Nb = count($SmiliesTbl);
+	$ResultTbl = Array();
+	DisplaySmilies($ResultTbl,$SmiliesTbl,$Nb,"tutorial");
+	unset($SmiliesTbl);
+	?>
+	<FONT SIZE="+1"><A NAME="smilies"><B>Smilies:</B></A></FONT>
+	<P>Du kannst grafische Smilies in Deinen Nachrichten benutzen. Schau Dir die einzelnen Mglichkeiten unten an.
+	<P ALIGN="center">
+	<TABLE BORDER=0 CELLPADDING=3 CELLSPACING=5>
+	<?php
+	$i = "0";
+	$Nb = count($ResultTbl);
+	while($i < $Nb)
+	{
+		if ($i > 0) echo("\t");
+		echo("<TR VALIGN=\"BOTTOM\">\n");
+		echo("$ResultTbl[$i]");
+		echo("\t</TR>\n\t<TR>\n");
+		$i++;
+		echo("$ResultTbl[$i]");
+		echo("\t</TR>\n");
+		$i++;
+	};
+	unset($ResultTbl);
+	?>
+	</TABLE>
+	<P>
+	<I>Zum Beispiel</I> ergibt folgende Nachricht: "Hi Jack :)" ohne Anfhrungszeichen folgende Nachricht: Hi Jack <IMG SRC="images/smilies/smile1.gif" WIDTH=15 HEIGHT=15 ALT=":)"> im Nachrichtenfenster.
+	<BR><P ALIGN="right"><A HREF="#top">Zurck zum Anfang</A></P>
+	<P>
+	<HR>
+	<?php
+};
+
+if (C_HTML_TAGS_KEEP != "none")
+{
+	?>
+	<FONT SIZE="+1"><A NAME="text"><B>Textformatierung:</B></A></FONT>
+	<P>
+	Text kann sein: fett, schrggestellt oder unterstrichen durch einschlieen des Textes mit entweder den  &LT;B&GT; &LT;/B&GT, &LT;I&GT; &LT;/I&GT; oder &LT;U&GT; &LT;/U&GT HTML tags.
+	<P>
+	<I>Beispiel:</I> &LT;B&GT;dieser Text&LT;/B&GT; gibt aus <B>dieser Text</B>.
+	<P>
+	Um einen Internet-Link zu erzeugen, tippe einfach die eMail oder die URL ein (ohne HTML Formatierung). Der Link wird automatisch erzeugt.
+	<BR><P ALIGN="right"><A HREF="#top">Zurck zum Anfang</A></P>
+	<P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="invite"><B>Einen Benutzer in den derzeitigen Raum einladen:</B></A></FONT>
+<P>
+Du kannst den <B>invite Befehl</B> benutzen um einem Benutzer vorzuschlagen, in Deinen Raum zu wechseln.
+<P>
+<I>Zum Beispiel:</I> /invite Jack 
+<P>
+schickt eine private Einladungs-Nachricht an Jack. Diese Nachricht enthlt den Namen des Zielraumes als Link.
+<P>
+Beachte, dass mehr als ein Benutzername angegeben werden kann (z.B. "/invite Jack,Helen,Alf"). Diese mssen durch Kommata (,) ohne Abstnde angegeben werden.
+<BR><P ALIGN="right"><A HREF="#top">Zurck zum Anfang</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="changeroom"><B>Raumwechsel:</B></A></FONT>
+<P>
+Die Liste auf der Rechten Seite zeigt Chatrume und Benutzer an. Um den aktuellen Raum zu verlassen und in einen neuen zu wechslen, klicke einfach auf dessen Namen. Leere Rume erscheinen nicht in der Liste. Du kannst auch den <B>Befehl "/join #Raumname"</B> ohne Anfhrungszeichen eingeben.
+<P>
+<I>Beispiel:</I> /join #RedRoom 
+<P>
+fhrt Dich zu RedRoom.
+<?php
+if (C_VERSION == "2")
+{
+	echo(C_REQUIRE_REGISTER == "0" ? "<P>Wenn Du ein registrierter Benutzer bist, kannst Du" : "<BR><P>Du");
+	?>
+	 mit dem selben Befehl auch einen neuen Raum aufmachen. Du mut angeben, welchen Typ dieser hat: 0 steht fr privat, 1 fr ffentlich (Vorgabewert).
+	<P>
+	<I>Beispiel:</I> /join 0 #MeinRaum 
+	<P>
+	erffnet einen Privatraum mit dem Namen (nur wenn kein gleichlautender ffentlicher besteht) und wechselt Dich dorthin.
+	<P>
+	Raumnamen drfen keine Kommata oder Rckstriche enthalten(\).<?php if (C_NO_SWEAR == "1") echo(" Es drfen keine \"verbotenen Worte\" enthalten sein."); ?>
+	<?php
+}
+?>
+<BR><P ALIGN="right"><A HREF="#top">Zurck zum Anfang</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B>Das eigene Profil im Chat ndern:</B></FONT>
+<P>
+Der <B>Profile Befehl</B> ffnet ein separates Fenster in dem Du Dein Profil ndern kannst - auer Nutzername und Passwort  (das geht nur von der Startseite aus.).<BR>Tippe /profile
+<BR><P ALIGN="right"><A HREF="#top">Zurck zum Anfang</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B>Erneutes Aufrufen der letzten Nachricht oder des letzten Befehles:</B></FONT>
+<P>
+Der <B>! Befehl</B> ruft die letzte Eingabe erneut auf.<BR>Tippe /!
+<BR><P ALIGN="right"><A HREF="#top">Zurck zum Anfang</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B>Einem speziellen Benutzer antworten:</B></FONT>
+<P>
+Wenn Du auf den gewnschten Usernamen klickst (in der Liste rechts) erscheint "username>" im Eingabefeld. Damit ist es fr den angesprochenen einfacher, sich auch angesprochen zu fhlen. Diese Nachricht knnen ALLE lesen, sie ist nicht geheim.
+<BR><P ALIGN="right"><A HREF="#top">Zurck zum Anfang</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="private"><B>Private Nachrichten:</B></A></FONT>
+<P>
+Um eine private Nachricht an einen Benutzer in Deinem Ruam zu schicken, tippen den <B>Befehl "/msg Benutzername Nachrichtentext" oder "/to Benutzername Nachrichtentext"</B> ohne Anfhrungszeichen.
+<P>
+<I>Zum Beispiel, wenn Jack der Benutzername ist:</I> /msg Jack Wie geht es Dir?
+<P>
+Die Nachricht erscheint bei Dir und Jack, aber nicht bei den anderen.
+<P>
+Beachte, dass durch klicken auf den Sendernamen einer Nachricht automatisch dieser Befehl ins Eingabefeld geschrieben wird.
+<BR><P ALIGN="right"><A HREF="#top">Zurck zum Anfang</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="actions"><B>Aktionen:</B></A></FONT>
+<P>
+Um zu beschreiben, was Du grade tust, kannst Du den <B>Befehl "/me Tat"</B> ohne Anfhrungszeichen eingeben.
+<P>
+<I>For example:</I> If Jack sends the message "/me is smoking a cigarette" the message frame will shown "<B>* Jack</B>" is smoking a cigarette".
+<BR><P ALIGN="right"><A HREF="#top">Zurck zum Anfang</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="ignore"><B>Andere Benutzer ignorieren:</B></A></FONT>
+<P>
+Um die Nachrichten anderer zu ignorieren nutze den <B>Befehl "/ignore username"</B> ohne Anfhrungszeichen.
+<P>
+<I>Beispiel:</I> /ignore Jack
+<P>
+Von nun an erscheinen die Nachrichten von Jack nicht mehr auf Deinem Bildschirm.
+<P>
+Um eine Liste von Nutzern zu sehen, die Du ignorierst, nutze den <B>Befehl "/ignore"</B> ohne Anfhrungszeichen. 
+<P>
+Um den Nutzer nicht mehr zu ignorieren tippe den <B>Befehl "/ignore - username"</B> ohne Anfhrungszeichen ein, wobei "-" ein Minuszeichen ist. <P> 
+<P>
+<I>Beispiel:</I> /ignore - Jack 
+<P>
+Nun werden wieder alle Nachrichten von Jack angezeigt, inklusive der Nachrichten, die er whrend Deiner Ignoranz eingegeben hat.
+Lt Du einen Namen nach dem Minuszeichen weg, werden alle wieder normal angezeigt.
+<P>
+Beachte, dass Du mehrere Benutzernamen angeben kannst (z.B. "/ignore Jack,Helen,Alf" oder "/ignore - Jack,Alf"). Diese mssen durch Kommata (,) ohne Abstnde getrennt werden.
+<BR><P ALIGN="right"><A HREF="#top">Zurck zum Anfang</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="whois"><B>Nutzerinformationen bekommen:</B></A></FONT>
+<P>
+Tippe den <B>Befehl "/whois username"</B>ohne Anfhrungszeichen, um Informationen ber den Nutzer zu bekommen.
+<P>
+<I>Beispiel:</I> /whois Jack
+<P>
+Ein Popup-Fenster erscheint, in dem die Informationen ber Jack stehen.
+<BR><P ALIGN="right"><A HREF="#top">Zurck zum Anfang</A></P>
+<P>
+<HR>
+
+<?php
+if (C_SAVE != "0")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="save"><B>Nachrichten speichern:</B></A></FONT>
+	<P>
+	Um Nachrichten in ein lokales HTML-File zu exportieren (Benachrichtigungen ausgeschlossen) , tippe den <B>Befehl "/save n"</B> ohne Anfhrungszeichen.
+	<P>
+	<I>Beispiel:</I> /save 5
+	<P>
+	wobei 5 die Zahl der zu speichernden Nachrichten ist. Wird n nicht angegeben, werden alle Nachrichten des aktuellen Raumes gepeichert.
+	<BR><P ALIGN="right"><A HREF="#top">Zurck zum Anfang</A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+<HR>
+
+
+<P>
+<FONT SIZE="+2"><A NAME="moderator"><B><U>Befehle nur fr Moderatoren und/oder Administratoren</U></B></A></FONT> 
+
+<P>
+<FONT SIZE="+1"><A NAME="announce"><B>Mitteilung senden:</B></A></FONT>
+<P>
+Der Administrator kann an alle eine Nachricht senden, egal wo Du Dich befindest, mit dem <B>announce Befehl</B>.
+<P>
+<I>Beispiel:</I> /announce Das Chatsystem wird wegen berarbeitung um 5 Uhr heruntergefahren .</I>
+<BR><P ALIGN="right"><A HREF="#top">Zurck zum Anfang</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="kick"><B>Benutzer rauswerfen:</B></FONT>
+<P>
+Moderatoren knnen Benutzer und der Administrator kann Nutzer oder Moderatoren mit dem <B>kick Befehl</B> rauswerfen. Moderatoren mssen dazu im selben Raum wie der rauszuwerfende Benutzer sein.
+<P>
+<I>Beispiel, wenn der rauszuwerfende Benutzer Jack heit:</I> /kick Jack</I>
+<BR><P ALIGN="right"><A HREF="#top">Zurck zum Anfang</A></P>
+<P>
+<HR>
+
+<?php
+if (C_BANISH != "0")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="banish"><B>Benutzer verbannen:</B></A></FONT>
+	<P>
+	Moderatoren knnen Benutzer verbannen, der Administrator kann zustzlich Moderatoren verbannen mit dem <B>ban Befehl</B>.<BR>
+	Der Administrator kann auch Benutzer anderer Rume verbannen, wahlweise auch dauerhaft vom gesamten Chat mit der '<B>&nbsp;*&nbsp;</B>' Einstellung vor dem zu verbannenden Benutzernamen.
+	<P>
+	<I>Zum Beispiel</I>, wenn Jack der zu verbannende Benutzer ist : <I>/ban Jack</I> oder <I>/ban * Jack</I>
+	<BR><P ALIGN="right"><A HREF="#top">Zurck zum Anfang</A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="promote"><B>Benutzer zum Moderator ernennen:</B></A></FONT>
+<P>
+Moderatoren und Administratoren knnen andere Benutzer mit dem <B>promote Befehl</B> zu Moderatoren ernennen.
+<P>
+<I>Beispiel: /promote Jack</I>
+<P>
+Nur der Adminstrator kann auch umgekehrt die Rechte wieder entziehen. Dafr gibt es keinen Befehl, dies geschieht auf einer extra Seite
+<BR><P ALIGN="right"><A HREF="#top">Zurck zum Anfang</A></P>
+<P>
+
+
+</BODY>
+</HTML>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/german/regex.txt 0.15.0/chat/localization/german/regex.txt
--- 0.14.5/chat/localization/german/regex.txt	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/german/regex.txt	2004-04-01 03:07:29.000000000 -0600
@@ -0,0 +1 @@
+de([-_][[:alpha:]]{2})?|german
\ No newline at end of file
Binary files 0.14.5/chat/localization/greek/flag.gif and 0.15.0/chat/localization/greek/flag.gif differ
diff -ruN 0.14.5/chat/localization/greek/localized.admin.php 0.15.0/chat/localization/greek/localized.admin.php
--- 0.14.5/chat/localization/greek/localized.admin.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/greek/localized.admin.php	2004-04-01 03:07:29.000000000 -0600
@@ -0,0 +1,61 @@
+<?php
+// File : greek.lang.php
+// Translation by Symeon Charalabides <symeon@lycos.com>
+
+// extra header for charset
+$Charset = "iso-8859-7";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// Top frame
+define("A_MENU_0", "   %s");
+define("A_MENU_1", " ");
+define("A_MENU_2", " ");
+define("A_MENU_3", " ");
+define("A_MENU_4", " ");
+
+// Frame for registered users
+define("A_SHEET1_1", "      ");
+define("A_SHEET1_2", "");
+define("A_SHEET1_3", "'");
+define("A_SHEET1_4", " ");
+define("A_SHEET1_5", "      (,),  .");
+define("A_SHEET1_6", "  ");
+define("A_SHEET1_7", "");
+define("A_SHEET1_8", "    ");
+define("A_SHEET1_9", "  ");
+define("A_SHEET1_10", "          ");
+define("A_SHEET1_11", " ");
+define("A_USER", "");
+define("A_MODER", "");
+define("A_PAGE_CNT", " %s  %s");
+
+// Frame for banished users
+define("A_SHEET2_1", "     ");
+define("A_SHEET2_2", "IP");
+define("A_SHEET2_3", " ");
+define("A_SHEET2_4", "");
+define("A_SHEET2_5", "");
+define("A_SHEET2_6", "     (,)       4,   '<B>*</B>' <BR>'   .");
+define("A_SHEET2_7", "    ");
+define("A_SHEET2_8", "  ");
+
+// Frame for cleaning rooms
+define("A_SHEET3_1", "  ");
+define("A_SHEET3_2", "         ' .");
+define("A_SHEET3_3", "  ");
+define("A_SHEET3_4", "    .");
+
+// Frame for sending mails
+define("A_SHEET4_0", "       'chat/admin/mail4admin.php'.");
+define("A_SHEET4_1", " e-mails");
+define("A_SHEET4_2", ":");
+define("A_SHEET4_3", " ");
+define("A_SHEET4_4", ":");
+define("A_SHEET4_5", ":");
+define("A_SHEET4_6", " ");
+define("A_SHEET4_7", "  e-mail  .");
+define("A_SHEET4_8", "     e-mail.");
+define("A_SHEET4_9", "  ,   !");
+?>
diff -ruN 0.14.5/chat/localization/greek/localized.chat.php 0.15.0/chat/localization/greek/localized.chat.php
--- 0.14.5/chat/localization/greek/localized.chat.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/greek/localized.chat.php	2004-04-01 03:07:30.000000000 -0600
@@ -0,0 +1,221 @@
+<?php
+// File : greek.lang.php
+// Translation by Symeon Charalabides <symeon@lycos.com>
+//            and Nikos Kyriakidis <nikoskyr@hotmail.com>
+
+// extra header for charset
+$Charset = "iso-8859-7";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// welcome page
+define("L_TUTORIAL", "");
+
+define("L_WEL_1", "    ");
+define("L_WEL_2", "     ");
+define("L_WEL_3", ".");
+
+define("L_CUR_1", "   ");
+define("L_CUR_2", " .");
+define("L_CUR_3", "      ");
+define("L_CUR_4", "   ");
+
+define("L_SET_1", "");
+define("L_SET_2", "");
+define("L_SET_3", "   ");
+define("L_SET_4", "    ");
+define("L_SET_5", " ");
+define("L_SET_6", " ");
+define("L_SET_7", " ...");
+define("L_SET_8", "    ");
+define("L_SET_9", "   ");
+define("L_SET_10", "");
+define("L_SET_11", "");
+define("L_SET_12", "");
+define("L_SET_13", " ");
+define("L_SET_14", "");
+
+define("L_SRC", "   ");
+
+define("L_SECS", "");
+define("L_MIN", "");
+define("L_MINS", "");
+
+// registration stuff:
+define("L_REG_1", "");
+define("L_REG_1r", "(    )");
+define("L_REG_2", " ");
+define("L_REG_3", "");
+define("L_REG_4", " ");
+define("L_REG_5", " ");
+define("L_REG_6", " ");
+define("L_REG_7", "");
+define("L_REG_8", "e-mail");
+define("L_REG_9", " .");
+define("L_REG_10", "");
+define("L_REG_11", "");
+define("L_REG_12", "  ");
+define("L_REG_13", " ");
+define("L_REG_14", "");
+define("L_REG_15", "");
+define("L_REG_16", "");
+define("L_REG_17", "  .");
+define("L_REG_18", "     .");
+define("L_REG_19", "   ;");
+define("L_REG_20", "");
+define("L_REG_21", " .");
+define("L_REG_22", "");
+define("L_REG_25", "");
+define("L_REG_30", "");
+define("L_REG_31", "");
+define("L_REG_32", "URL");
+define("L_REG_33", " e-mail  /whois");
+define("L_REG_34", " ");
+define("L_REG_35", "");
+define("L_REG_36", "");
+define("L_REG_37", "  <span class=\"error\">*</span>   .");
+define("L_REG_39", "        .");
+define("L_REG_45", "");
+define("L_REG_46", "");
+define("L_REG_47", "");
+
+// e-mail validation stuff
+define("L_EMAIL_VAL_1", "      ");
+define("L_EMAIL_VAL_2", "    .");
+define("L_EMAIL_VAL_Err", " ,     : <A HREF=\"mailto:%s\">%s</A>.");
+define("L_EMAIL_VAL_Done", "      e-mail .");
+
+// admin stuff
+define("L_ADM_1", "/ %s      .");
+define("L_ADM_2", "    .");
+
+//error messages
+define("L_ERR_USR_1", "     .  .");
+define("L_ERR_USR_2", "    .");
+define("L_ERR_USR_3", "   .        .");
+define("L_ERR_USR_4", " .");
+define("L_ERR_USR_5", "    .");
+define("L_ERR_USR_6", "    .");
+define("L_ERR_USR_7", "    e-mail .");
+define("L_ERR_USR_8", "    e-mail.");
+define("L_ERR_USR_9", "     .");
+define("L_ERR_USR_10", "   .");
+define("L_ERR_USR_11", "   .");
+define("L_ERR_USR_12", " ,      (   ...)");
+define("L_ERR_USR_13", "         .");
+define("L_ERR_USR_14", "      .");
+define("L_ERR_USR_15", "     .");
+define("L_ERR_USR_16", "    ,  (,)  backslash (\\).");
+define("L_ERR_USR_17", "         .");
+define("L_ERR_USR_18", "    .");
+define("L_ERR_USR_19", "         .");
+define("L_ERR_USR_20", "       .");
+define("L_ERR_ROM_1", "     (,)  backslash (\\).");
+define("L_ERR_ROM_2", "    .");
+define("L_ERR_ROM_3", "      .");
+define("L_ERR_ROM_4", "   .");
+
+// users frame or popup
+define("L_EXIT", "");
+define("L_DETACH", "");
+define("L_EXPCOL_ALL", "/ ");
+define("L_CONN_STATE", " ");
+define("L_CHAT", "");
+define("L_USER", "");
+define("L_USERS", "");
+define("L_NO_USER", "  ");
+define("L_ROOM", "");
+define("L_ROOMS", "");
+define("L_EXPCOL", "/ ");
+define("L_BEEP", "     ");
+define("L_PROFILE", " ");
+define("L_NO_PROFILE", " ");
+
+// input frame
+define("L_HLP", "");
+define("L_BAD_CMD", "  !");
+define("L_ADMIN", "/ %s   !");
+define("L_IS_MODERATOR", "/ %s   !");
+define("L_NO_MODERATOR", "          .");
+define("L_MODERATOR", "/ %s     .");
+define("L_NONEXIST_USER", "/ %s      .");
+define("L_NONREG_USER", "/ %s   .");
+define("L_NONREG_USER_IP", " IP  %s.");
+define("L_NO_KICKED", "/ %s         .");
+define("L_KICKED", "/ %s  .");
+define("L_NO_BANISHED", "/ %s         .");
+define("L_BANISHED", "/ %s  .");
+define("L_SVR_TIME", " server: ");
+define("L_NO_SAVE", " !");
+define("L_NO_ADMIN", "        .");
+define("L_ANNOUNCE", "");
+define("L_INVITE", "/ %s       <A HREF=\"#\" OnClick=\"window.parent.runCmd('%s','%s')\">%s</A>.");
+define("L_INVITE_REG", "        .");
+define("L_INVITE_DONE", "     / %s.");
+define("L_OK", "");
+
+// help popup
+define("L_HELP_TIT_1", "A");
+define("L_HELP_TIT_2", "   ");
+define("L_HELP_FMT_1", "   ,      ,        &lt;B&gt; &lt;/B&gt;, &lt;I&gt; &lt;/I&gt;  &lt;U&gt; &lt;/U&gt; .<BR> , &lt;B&gt;&lt;/B&gt;   <B></B>.");
+define("L_HELP_FMT_2", "    ( e-mail  URL)   ,        .    .");
+define("L_HELP_TIT_3", "");
+define("L_HELP_USR", "");
+define("L_HELP_MSG", "");
+define("L_HELP_ROOM", "");
+define("L_HELP_CMD_0", "{}    , []  .");
+define("L_HELP_CMD_1a", "    ,  5.");
+define("L_HELP_CMD_1b", "        n,  5.");
+define("L_HELP_CMD_2a", "        ( ).<BR>  n        3,         10 .");
+define("L_HELP_CMD_2b", "       ( ).<BR>         3,    .");
+define("L_HELP_CMD_3", "    .");
+define("L_HELP_CMD_4", "   ,         .<BR>  n  0    1  .  1   .");
+define("L_HELP_CMD_5", "       .");
+define("L_HELP_CMD_6", "         .<BR>     \"-\" ()            \"-\"  .<BR> ,           .");
+define("L_HELP_CMD_7", "   (  ).");
+define("L_HELP_CMD_8", "/    .");
+define("L_HELP_CMD_9", "    .      .");
+define("L_HELP_CMD_10", "      (    ).");
+define("L_HELP_CMD_11", "   .");
+define("L_HELP_CMD_12", "     .");
+define("L_HELP_CMD_13", "/  /    .");
+define("L_HELP_CMD_14", "   /       .");
+define("L_HELP_CMD_15", "         5.");
+define("L_HELP_CMD_16", "   n  ( )   HTML.   n  ,     .");
+define("L_HELP_CMD_17", "        ,      .");
+define("L_HELP_CMD_18", "             .");
+define("L_HELP_CMD_19", "\"\"         /,     .<BR>            '   ,      '<B>*</B>'           .");
+define("L_HELP_CMD_20", "       .");
+
+// messages frame
+define("L_NO_MSG", "    ...");
+define("L_TODAY_DWN", "       ");
+define("L_TODAY_UP", "       ");
+
+// message colors
+$TextColors = array(		"" => "#000000",
+				"" => "#FF0000",
+				"" => "#009900",
+				"" => "#0000FF",
+				"" => "#9900FF",
+				" " => "#990000",
+				" " => "#006600",
+				" " => "#000099",
+				"" => "#996633",
+				"Aqua" => "#006699",
+				"" => "#FF6600");
+
+// ignored popup
+define("L_IGNOR_TIT", "");
+define("L_IGNOR_NON", "  ");
+
+// whois popup
+define("L_WHOIS_ADMIN", "");
+define("L_WHOIS_MODER", "");
+define("L_WHOIS_USER", "");
+
+// Notification messages of user entrance/exit
+define("L_ENTER_ROM", "/ %s   ");
+define("L_EXIT_ROM", "/ %s    ");
+?>
diff -ruN 0.14.5/chat/localization/greek/localized.tutorial.php 0.15.0/chat/localization/greek/localized.tutorial.php
--- 0.14.5/chat/localization/greek/localized.tutorial.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/greek/localized.tutorial.php	2004-04-01 03:07:30.000000000 -0600
@@ -0,0 +1,627 @@
+<?php
+// File : greek.tutorial.php
+// Translation by Symeon Charalabides <symeon@lycos.com>
+
+// Get the names and values for vars sent by the script that called this one
+if (isset($HTTP_GET_VARS))
+{
+	while(list($name,$value) = each($HTTP_GET_VARS))
+	{
+		$$name = $value;
+	};
+};
+?>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+
+<HEAD>
+<TITLE>    <?php echo(APP_NAME." - ".APP_VERSION); ?></TITLE>
+<META HTTP-EQUIV="Content-" "CONTENT=text/html; charset=iso-8859-7">
+<STYLE>
+A.topLink
+{
+	text-decoration: underline;
+	color: #0000C0;
+}
+
+A.topLink:hover, A.topLink:active
+{
+	color: #FF9900;
+	text-decoration: none;
+	font-weight: 800;
+}
+
+.redText
+{
+	font-weight: 800;
+	color: #FF0000;
+}
+</STYLE>
+</HEAD>
+
+<BODY BGCOLOR="#CCCCFF">
+
+<P><A NAME="top"></P>
+<TABLE BORDER="5" CELLPADDING="5">
+<TR>
+	<TD><FONT SIZE="+2"> </FONT></TD>
+</TR>
+</TABLE><BR>
+
+<P CLASS="redText">
+:   Netscape         ,         '?'.<BR>
+This can be done as follows: View/CharacterSet/your language Auto-Detect, then View/CharacterSet/SetDefault.
+</P>
+
+<?php
+if (C_MULTI_LANG == "1") 
+{
+	?>
+	<A HREF="#language" CLASS="topLink"> </A><BR>
+	<?php
+}
+?>
+<A HREF="#login" CLASS="topLink">  </A><BR>
+<A HREF="#register" CLASS="topLink"></A><BR>
+<A HREF="#modProfile" CLASS="topLink"><?php if (C_SHOW_DEL_PROF == "1") echo("/"); ?> </A><BR>
+<?php
+if (C_VERSION == "2")
+{
+	?>
+	<A HREF="#create_room" CLASS="topLink"> </A><BR>
+	<?php
+};
+if ($Ver == "H") 
+{
+	?>
+	<A HREF="#connection_state" CLASS="topLink"> </A><BR>
+	<?php
+};
+?>
+<A HREF="#sending" CLASS="topLink"> </A><BR>
+<A HREF="#users_list" CLASS="topLink"> </A><BR>
+<A HREF="#exit" CLASS="topLink">   </A><BR>
+<A HREF="#users_popup" CLASS="topLink">   </A><BR>
+<P>
+<A HREF="#customize" CLASS="topLink">  </A><BR>
+<P>
+<A HREF="#commands" CLASS="topLink">  :</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#help" CLASS="topLink"></A><BR>
+<?php
+if (C_USE_SMILIES == "1")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#smilies" CLASS="topLink"></A><BR>
+	<?php
+};
+if (C_HTML_TAGS_KEEP != "none")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#text" CLASS="topLink"> </A><BR>
+	<?php
+};
+?>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#invite" CLASS="topLink">    </A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#changeroom" CLASS="topLink"> </A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#private" CLASS="topLink"> </A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#actions" CLASS="topLink"></A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#ignore" CLASS="topLink">  </A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#whois" CLASS="topLink">  </A><BR>
+<?php
+if (C_SAVE != "0")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#save" CLASS="topLink"> </A><BR>
+	<?php
+};
+?>
+<P>
+<A HREF="#moderator" CLASS="topLink"> /:</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#announce" CLASS="topLink"></A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#kick" CLASS="topLink"></A><BR>
+<?php
+if (C_BANISH != "0")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#banish" CLASS="topLink"></A><BR>
+	<?php
+};
+?>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#promote" CLASS="topLink">  </A><BR>
+<P>
+<HR>
+<HR>
+
+
+<?php
+if (C_MULTI_LANG == "1") 
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="language"><B> :</B></A></FONT>
+	<P>
+	          <?php echo(APP_NAME); ?>         .   ,    :
+	<P ALIGN="center">
+	<IMG SRC="images/tutorials/flags.gif" HEIGHT="44" WIDTH="424" ALT="   ">
+	<BR><P ALIGN="right"><A HREF="#top"> </A></P>
+	<HR>
+	<?php
+}
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="login"><B>  :</B></A></FONT>
+<P>
+   ,         .  ,            ''.<BR>
+<?php
+if (C_REQUIRE_REGISTER == "1")
+{
+	?>
+	<P>
+	   <A HREF="#register"></A> .
+	<?php
+}
+else
+{
+	?>
+	<P>
+	   <A HREF="#register"></A> ,      ,         (      ).
+	<?php
+}
+?>
+<BR><P ALIGN="right"><A HREF="#top"> </A></P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="register"><B>  :</B></A></FONT>
+<P>
+    <?php if (C_REQUIRE_REGISTER == "0") echo("  "); ?>,  ''.     :
+<P>	
+<UL>
+	<LI>   <?php if (!C_EMAIL_PASWD) echo("  "); ?>      .         .     ,  (,)  backslash (\).
+<?php if (C_NO_SWEAR == "1") echo("     \" \"."); ?>
+	<LI>,   ,   e-mail .        .    .
+	<LI>  ,     URL   .
+	<LI>  ''       ,      (  ...)
+	<LI>      e-mail           . ,    .
+	<LI>   ''     .          ''.
+</UL>
+<P>
+<A NAME="modProfile"></A>,     <?php if (C_SHOW_DEL_PROF == "1") echo("/"); ?>     <?php echo((C_SHOW_DEL_PROF == "0" ? "  " : "  ")); ?>.<BR>
+<BR><P ALIGN="right"><A HREF="#top"> </A></P>
+<P>
+<HR>
+
+<?php
+if (C_VERSION == "2") 
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="create_room"><B> :</B></A></FONT>
+	<P>
+	     .             ( ...),           .<BR>
+	<P>
+	   (,)  backslash (\)   .<?php if (C_NO_SWEAR == "1") echo("      \" \"."); ?>
+	<BR><P ALIGN="right"><A HREF="#top"> </A></P>
+	<P>
+	<HR>
+	<?php
+};
+if ($Ver == "H")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="connection_state"><B>  :</B></A></FONT>
+	<P>
+	             .    3 :
+	<P>	
+	<UL>
+		<LI><IMG SRC="images/connectOff.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="No connection">    
+		<LI><IMG SRC="images/connectOn.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Connecting">    
+		<LI><IMG SRC="images/connectError.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Connection failed">    
+	</UL>
+	<P>
+	  ,    ''     .
+	<BR><P ALIGN="right"><A HREF="#top"> </A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="sending"><B> :</B></A></FONT>
+<P>
+      ,           Enter/Return.         .<BR>
+<?php if (C_NO_SWEAR == "1") echo("'   \" \"    ."); ?>
+<P>
+        ,          ''.
+<BR><P ALIGN="right"><A HREF="#top"> </A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="users_list"><B>   :</B></A></FONT> 
+<P>
+<OL>
+	        :<BR>
+	<LI>            ( ,   <A HREF="#whois">  </A> '   ),           <BR>
+	<LI>         
+</OL>
+<P><I> </I>,      :
+<TABLE BORDER=0 CELLSPACING=10>
+<TR>
+	<TD>
+		<IMG SRC="images/tutorials/usersList.gif" WIDTH=128 HEIGHT=145 BORDER=0 ALT=" ">
+	</TD>
+	<TD>
+	<UL>
+		<LI> Nicolas        phpMyChat<BR><BR>
+		<LI> alien ( ),  Jezek2   Caridad      ''    phpMyChat<BR><BR>
+		<LI>/ lolo    
+	</UL>
+	</TD>
+</TR>
+</TABLE>
+<BR><P ALIGN="right"><A HREF="#top"> </A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="exit"><B>   :</B></A></FONT>
+<P>
+     ,    "". ,           :<BR>
+/exit<BR>
+/bye<BR>
+/quit<BR>
+                  .
+<I> :</I> /quit  
+<P>
+    " "       .
+
+<BR><P ALIGN="right"><A HREF="#top"> </A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="users_popup"><B>     :</B></A></FONT> 
+<P>
+        , ,   ,     <IMG SRC="images/popup.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT=" ">    ,               ,    .<BR>
+            3,        .
+<P>
+   <IMG SRC="images/sound.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="">      /      .
+<BR><P ALIGN="right"><A HREF="#top"> </A></P>
+<P>
+<HR>
+<HR>
+
+
+<P>
+<FONT SIZE="+1"><A NAME="customize"><B>  :</B></A></FONT>
+<P>
+        .    ,           Enter/Return.
+<P>
+<UL>
+	<?php
+	if ($Ver == "H")
+	{
+		?>
+		<LI>  <B>Clear</B>          5 .<BR> "/clear"  .
+		<P>
+		<?php
+	}
+	else
+	{
+		?>
+		<LI>  <B>Order</B>              .<BR> "/order"  .
+		<P>
+		<?php
+	};
+	?>
+	<LI>  <B>Notify</B>                . ,   <?php echo(C_NOTIFY ? "" : " "); ?>      <?php echo(C_NOTIFY ? "" : " "); ?>.<BR> "/notify"  .
+	<P>
+	<LI>  <B>Timestamp</B>                    server   . ,   <?php echo(C_SHOW_TIMESTAMP ? "" : " "); ?>.<BR> "/timestamp"  .
+	<P>
+	<LI>  <B>Refresh</B>             .     <?php echo(C_MSG_REFRESH); ?> sec.   "/refresh n"    n     .
+	<P>
+	<I> :</I> /refresh 5
+	<P>
+	     5 sec. *:     n    3,     (      !)*
+	<P>
+	<?php
+	if ($Ver == "L")
+	{
+		?>
+		<LI>  <B>Show</B>          .      ,  "/show n"    n     .
+		<P>
+		<I> :</I> /show 50
+		<P>
+		      50     .</UL>
+		<?php
+	}
+	else
+	{
+		?>
+		<LI>  <B>Show</B>  <B>Last</B>         <I>n</I> .  "/show n"  "/last n"    n      .
+		<P>
+		<I> :</I> /show 50  /last 50
+		<P>
+		        50   .</UL>
+		<?php
+	};
+	?>
+	<BR><P ALIGN="right"><A HREF="#top"> </A></P>
+	<P>
+</UL>
+<HR>
+<HR>
+
+
+<P>
+<FONT SIZE="+2"><A NAME="commands"><B><U>  </U></B></A></FONT> 
+<P>
+
+<FONT SIZE="+1"><A NAME="help"><B>:</B></A></FONT>
+<P>
+            <IMG SRC="images/helpOff.gif" WIDTH=15 HEIGHT=15 BORDER=0 ALT="?">      .     "<B>/help</B>"  "<B>/?</B>".
+<BR><P ALIGN="right"><A HREF="#top"> </A></P>
+<P>
+<P>
+<HR>
+
+<?php
+if (C_USE_SMILIES == "1")
+{
+	include("./lib/smilies.lib.php");
+	$Nb = count($SmiliesTbl);
+	$ResultTbl = Array();
+	DisplaySmilies($ResultTbl,$SmiliesTbl,$Nb,"tutorial");
+	unset($SmiliesTbl);
+	?>
+	<FONT SIZE="+1"><A NAME="smilies"><B>:</B></A></FONT>
+	<P>      .         :
+	<P ALIGN="center">
+	<TABLE BORDER=0 CELLPADDING=3 CELLSPACING=5>
+	<?php
+	$i = "0";
+	$Nb = count($ResultTbl);
+	while($i < $Nb)
+	{
+		if ($i > 0) echo("\t");
+		echo("<TR VALIGN=\"BOTTOM\">\n");
+		echo("$ResultTbl[$i]");
+		echo("\t</TR>\n\t<TR>\n");
+		$i++;
+		echo("$ResultTbl[$i]");
+		echo("\t</TR>\n");
+		$i++;
+	};
+	unset($ResultTbl);
+	?>
+	</TABLE>
+	<P>
+	<I> </I>,   " Jack :)"        Jack <IMG SRC="images/smilies/smile1.gif" WIDTH=15 HEIGHT=15 ALT=":)">   .
+	<BR><P ALIGN="right"><A HREF="#top"> </A></P>
+	<P>
+	<HR>
+	<?php
+};
+
+if (C_HTML_TAGS_KEEP != "none")
+{
+	?>
+	<FONT SIZE="+1"><A NAME="text"><B> :</B></A></FONT>
+	<P>
+	     ,   ,      HTML &LT;B&GT; &LT;/B&GT, &LT;I&GT; &LT;/I&GT;  &LT;U&GT; &LT;/U&GT .
+	<P>
+	<I> </I>, &LT;B&GT;&LT;/B&GT;   <B></B>.
+	<P>
+	     e-mail  URL,     ( HTML).     .
+	<BR><P ALIGN="right"><A HREF="#top"> </A></P>
+	<P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="invite"><B>    :</B></A></FONT>
+<P>
+  <B>Invite</B>          .
+<P>
+<I> :</I> /invite Jack 
+<P>
+     Jack        .         ,     .
+<P>
+          (.. "/invite Jack,Helen,Alf").        (,),  .
+<BR><P ALIGN="right"><A HREF="#top"> </A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="changeroom"><B> :</B></A></FONT>
+<P>
+                .             ,       .       .         "<B>/join #</B>"  .
+<P>
+<I> :</I> /join #RedRoom 
+<P>
+    RedRoom.
+<?php
+if (C_VERSION == "2")
+{
+	echo(C_REQUIRE_REGISTER == "0" ? "<P>   , " : "<BR><P>");
+	?>
+	          ,      : 0  , 1   ( ).
+	<P>
+	<I> :</I> /join 0 #MyRoom 
+	<P>
+	     (        )  MyRoom     .
+	<P>
+	         (,)  backslash (\).<?php if (C_NO_SWEAR == "1") echo("      \" \"."); ?>
+	<?php
+}
+?>
+<BR><P ALIGN="right"><A HREF="#top"> </A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B>      :</B></FONT>
+<P>
+  <B>Profile</B>                       (         ' ).<BR> /profile
+<BR><P ALIGN="right"><A HREF="#top"> </A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B>     :</B></FONT>
+<P>
+  <B>!</B>           .<BR> /!
+<BR><P ALIGN="right"><A HREF="#top"> </A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B>   :</B></FONT>
+<P>
+           ,   ">"   .              ,       .
+<BR><P ALIGN="right"><A HREF="#top"> </A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="private"><B> :</B></A></FONT>
+<P>
+            ,    "<B>/msg  </B>"  "<B>/to  </B>"  .
+<P>
+<I> ,  Jack   :</I> /msg Jack    ;
+<P>
+      Jack  ,     .
+<P>
+'          ,         .
+<BR><P ALIGN="right"><A HREF="#top"> </A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="actions"><B>:</B></A></FONT>
+<P>
+     ,    "<B>/me </B>"  .
+<P>
+<I> :</I>   Jack    "/me , , ",      "<B>* Jack</B> , , ".
+<BR><P ALIGN="right"><A HREF="#top"> </A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="ignore"><B>  :</B></A></FONT>
+<P>
+       ,    "<B>/ignore </B>"  .
+<P>
+<I> :</I> /ignore Jack
+<P>
+   ,    Jack      .
+<P>
+      ,     "<B>/ignore</B>"  . 
+<P>
+        ,    "<B>/ignore - </B>"    "-"   .<P> 
+<P>
+<I> :</I> /ignore - Jack 
+<P>
+,      Jack          ,      .
+      ,  " "    .
+<P>
+'             ignore (.. "/ignore Jack,Helen,Alf"  "/ignore - Jack,Alf").      (,),  .
+<BR><P ALIGN="right"><A HREF="#top"> </A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="whois"><B>   :</B></A></FONT>
+<P>
+       ,    "/whois "</B>  .
+<P>
+<I> :</I> /whois Jack
+<P>
+ 'Jack'   .              Jack.
+<BR><P ALIGN="right"><A HREF="#top"> </A></P>
+<P>
+<HR>
+
+<?php
+if (C_SAVE != "0")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="save"><B> :</B></A></FONT>
+	<P>
+	    ( )   HTML ,    "/save n"</B>  .
+	<P>
+	<I> :</I> /save 5
+	<P>
+	 '5'        .  n,        .
+	<BR><P ALIGN="right"><A HREF="#top"> </A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+<HR>
+
+
+<P>
+<FONT SIZE="+2"><A NAME="moderator"><B><U>    /</U></B></A></FONT> 
+
+<P>
+<FONT SIZE="+1"><A NAME="announce"><B> :</B></A></FONT>
+<P>
+             ,    <B>Announce</B>.
+<P>
+<I> :</I> /announce      8-10    .
+<BR><P ALIGN="right"><A HREF="#top"> </A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="kick"><B> :</B></A></FONT>
+<P>
+                  <B>Kick</B>.
+<P>
+<I> </I>,  Jack     :</I> /kick Jack</I>
+<BR><P ALIGN="right"><A HREF="#top"> </A></P>
+<P>
+<HR>
+
+<?php
+if (C_BANISH != "0")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="banish"><B> :</B></A></FONT>
+	<P>
+	                   <B>Ban</B>.<BR>
+	              .            ,    '<B>&nbsp;*&nbsp;</B>'           .
+	<P>
+	<I> </I>,  Jack     , <I>/ban Jack</I>  <I>/ban * Jack</I>
+	<BR><P ALIGN="right"><A HREF="#top"> </A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="promote"><B>    :</B></A></FONT>
+<P>
+                <B>Promote</B>.
+<P>
+<I> </I>,  Jack       :<I> /promote Jack</I>
+<P>
+        (    )    .       .
+<BR><P ALIGN="right"><A HREF="#top"> </A></P>
+<P>
+
+
+</BODY>
+</HTML>
diff -ruN 0.14.5/chat/localization/greek/regex.txt 0.15.0/chat/localization/greek/regex.txt
--- 0.14.5/chat/localization/greek/regex.txt	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/greek/regex.txt	2004-04-01 03:07:30.000000000 -0600
@@ -0,0 +1 @@
+el|greek
\ No newline at end of file
Binary files 0.14.5/chat/localization/hungarian/flag.gif and 0.15.0/chat/localization/hungarian/flag.gif differ
diff -ruN 0.14.5/chat/localization/hungarian/localized.chat.php 0.15.0/chat/localization/hungarian/localized.chat.php
--- 0.14.5/chat/localization/hungarian/localized.chat.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/hungarian/localized.chat.php	2004-04-01 03:07:31.000000000 -0600
@@ -0,0 +1,221 @@
+<?php
+// File : hungarian.lang.php
+// Translation by: Trigon Informatics Ltd., Budapest,
+//                 Jobbgy Mikls <mike@trigon.hu>
+
+// extra header for charset
+$Charset = "iso-8859-1";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// welcome page
+define("L_TUTORIAL", "tmutat");
+
+define("L_WEL_1", "zenetek megtartsi ideje");
+define("L_WEL_2", "ra, felhasznli nevek fenntartsi ideje");
+define("L_WEL_3", "perc ...");
+
+define("L_CUR_1", "Jelenleg");
+define("L_CUR_2", "felhasznl van bejelentkezve.");
+define("L_CUR_3", "felhasznl van a szobkban");
+define("L_CUR_4", "felhasznl van sajt szobkban");
+
+define("L_SET_1", "Belps");
+define("L_SET_2", "Felhasznli nv");
+define("L_SET_3", "Megjelentend zenetek szma");
+define("L_SET_4", "Frisstsi idkorlt");
+define("L_SET_5", "Szoba kivlasztsa");
+define("L_SET_6", "Alaprtelmezett szobk");
+define("L_SET_7", "Vlassz egy szobt ...");
+define("L_SET_8", "Felhasznlk ltal ltrehozott szobk");
+define("L_SET_9", "Sajt szoba ltrehozsa");
+define("L_SET_10", "Nyilvnos");
+define("L_SET_11", "Sajt");
+define("L_SET_12", "szoba");
+define("L_SET_13", " ");
+define("L_SET_14", "Belps");
+
+define("L_SRC", "szabadon letlthet a kvetkez helyrl:");
+
+define("L_SECS", "msodperc");
+define("L_MIN", "perc");
+define("L_MINS", "perc");
+
+// registration stuff:
+define("L_REG_1", "Jelsz");
+define("L_REG_1r", "(csak ha mr regisztrltad magad)");
+define("L_REG_2", "Profilkezel");
+define("L_REG_3", "Regisztrls");
+define("L_REG_4", "Profil szerkesztse");
+define("L_REG_5", "Felhasznl trlse");
+define("L_REG_6", "Felhasznl regisztrlsa");
+define("L_REG_7", "Jelsz");
+define("L_REG_8", "E-mail");
+define("L_REG_9", "Sikeresen regisztrltunk.");
+define("L_REG_10", "Vissza");
+define("L_REG_11", "Szerkeszts");
+define("L_REG_12", "Felhasznli informcik mdostsa");
+define("L_REG_13", "Felhasznl trlse");
+define("L_REG_14", "Felhasznli nv");
+define("L_REG_15", "Bejelentkezs");
+define("L_REG_16", "Mdosts");
+define("L_REG_17", "Az informcikat sikeresen frisstettk.");
+define("L_REG_18", "Sorry, a modertor kidobott a szobbl.");
+define("L_REG_19", "Biztos hogy trlni akarod magad ?");
+define("L_REG_20", "Igen");
+define("L_REG_21", "Sikeresen trltnk a regisztrlt felhasznlk kzl.");
+define("L_REG_22", "Nem");
+define("L_REG_25", "Bezrs");
+define("L_REG_30", "Vezetknv");
+define("L_REG_31", "Keresztnv");
+define("L_REG_32", "WEB");
+define("L_REG_33", "E-mail megjelentse a nyilvnos informcikban");
+define("L_REG_34", "Felhasznli profil szerkesztse");
+define("L_REG_35", "Adminisztrci");
+define("L_REG_36", "Beszlt nyelvek");
+define("L_REG_37", "A <SPAN CLASS=error>*</SPAN>-gal jellt mezk kitltse ktelez.");
+define("L_REG_39", "Az adminisztrtor kitrlte a szobt, amelyben voltl.");
+define("L_REG_45", "Nem");
+define("L_REG_46", "Frfi");
+define("L_REG_47", "N");
+
+// e-mail validation stuff
+define("L_EMAIL_VAL_1", "A belpshez szksges belltsok.");
+define("L_EMAIL_VAL_2", "dvzl a chat szerver.");
+define("L_EMAIL_VAL_Err", "Bels hiba. Lpj kapcsolatba a rendszergazdval: <a href=\"mailto:%s\">%s</a>.");
+define("L_EMAIL_VAL_Done", "A jelszavadat elkldtk az e-mail cmedre.");
+
+// admin stuff
+define("L_ADM_1", "%s mr nem modertor ebben a szobban.");
+define("L_ADM_2", "Nem vagy regisztrlt felhasznl.");
+
+// error messages
+define("L_ERR_USR_1", "Ez a felhasznli nv mr foglalt. Vlassz egy msikat.");
+define("L_ERR_USR_2", "Adj meg egy felhasznli nevet.");
+define("L_ERR_USR_3", "Ez a felhasznli nv mr regisztrlva van. rd be a jelszt, vagy vlassz egy msik felhasznli nevet.");
+define("L_ERR_USR_4", "Rossz jelszt adtl meg.");
+define("L_ERR_USR_5", "rd be a felhasznli neved.");
+define("L_ERR_USR_6", "rd be a jelszavad.");
+define("L_ERR_USR_7", "rd be az e-mail cmedet.");
+define("L_ERR_USR_8", "Ne kamuzz, a rendes cmedet add meg.");
+define("L_ERR_USR_9", "Ez a felhasznli nv mr foglalt.");
+define("L_ERR_USR_10", "Rossz felhasznli nv vagy jelsz.");
+define("L_ERR_USR_11", "Nana, csak adminisztrtoroknak.");
+define("L_ERR_USR_12", "Te vagy a rendszergazda, ezrt nem tudod eltvoltani magad.");
+define("L_ERR_USR_13", "Sajt szoba ltrehozshoz regisztrlnod kell magad.");
+define("L_ERR_USR_14", "A beszlgets eltt regisztrlni kell magad.");
+define("L_ERR_USR_15", "rd be a teljes neved.");
+define("L_ERR_USR_16", "A felhasznli nvben nem lehetnek szkzk, veszzk illetve vissza per-jelek (\\).");
+define("L_ERR_USR_17", "Ez a szoba nem ltezik, s a szobt sajnos nem is hozhatod ltre.");
+define("L_ERR_USR_18", "Tiltott sz a felhasznli nvben.");
+define("L_ERR_USR_19", "Belegondoltl mr, hogy egyszerre csak egy szobban lehetsz?");
+define("L_ERR_USR_20", "Ki vagy tiltva ebbl a szobbl vagy a teljes chat-bl.");
+define("L_ERR_ROM_1", "A szoba nevben nem lehet vessz vagy vissza per-jel(\\).");
+define("L_ERR_ROM_2", "Tiltott sz a ltrehozni kvnt szoba nevben.");
+define("L_ERR_ROM_3", "Ez a szoba mr ltezik, s nyilvnos.");
+define("L_ERR_ROM_4", "rvnytelen szobanv.");
+
+// users frame or popup
+define("L_EXIT", "Kilps");
+define("L_DETACH", "Levlaszts");
+define("L_EXPCOL_ALL", "Mindet kibontja/bezrja");
+define("L_CONN_STATE", "Kapcsolat llapota");
+define("L_CHAT", "Chat");
+define("L_USER", "felhasznl");
+define("L_USERS", "felhasznl");
+define("L_NO_USER", "Itt nincs senki");
+define("L_ROOM", "szoba");
+define("L_ROOMS", "szoba");
+define("L_EXPCOL", "Szoba kibontsa/bezrsa");
+define("L_BEEP", "Van/nincs hangjelzs a belpskor");
+define("L_PROFILE", "Profil megjelentse");
+define("L_NO_PROFILE", "Nincs profil");
+
+// input frame
+define("L_HLP", "Sg");
+define("L_BAD_CMD", "Ez a parancs nem rvnyes !");
+define("L_ADMIN", "%s mr adminisztrtor !");
+define("L_IS_MODERATOR", "%s mr modertor!");
+define("L_NO_MODERATOR", "Ezt a parancsot a szoba modertora hasznlhatja.");
+define("L_MODERATOR", "%s mostmr ennek a szobnak a modertora.");
+define("L_NONEXIST_USER", "%s nincs az aktulis szobban.");
+define("L_NONREG_USER", "%s nincs regisztrlva.");
+define("L_NONREG_USER_IP", "Az IP cme: %s.");
+define("L_NO_KICKED", "%s egy modertor vagy adminisztrtor, gy nem lehet kidobni a szobbl.");
+define("L_KICKED", "%s kidobva.");
+define("L_NO_BANISHED", "%s egy modertor vagy adminisztrtor, gy nem lehet kitiltani a szobbl.");
+define("L_BANISHED", "%s kitiltva.");
+define("L_SVR_TIME", "Szerverid: ");
+define("L_NO_SAVE", "Nincs mentend zenet!");
+define("L_NO_ADMIN", "Ezt a parancsot csak az adminisztrtor hasznlhatja.");
+define("L_ANNOUNCE", "RTESTS");
+define("L_INVITE", "%s meghvott a(z) <a href=\"#\" onClick=\"window.parent.runCmd('%s','%s')\">%s</a> szobba.");
+define("L_INVITE_REG", " A szoba hasznlathoz regisztrlnod kell magad.");
+define("L_INVITE_DONE", "A rendszer elkldte a mgehvsodat a kvetkez felhasznlnak: %s.");
+define("L_OK", "Klds");
+
+// help popup
+define("L_HELP_TIT_1", "Arcok");
+define("L_HELP_TIT_2", "Szvegformz zenetek");
+define("L_HELP_FMT_1", "Az zenetekben hasznlhatsz flkvr, dlt s alhzott szvegeket a megfelel szvegrsz kijellsvel. Hasznld a &lt;B&gt; &lt;/B&gt;, &lt;I&gt; &lt;/I&gt; s &lt;U&gt; &lt;/U&gt; tagokat.<BR>Pldul: &lt;B&gt;ez a szveg&lt;/B&gt; <B>gy jelenik meg</B>.");
+define("L_HELP_FMT_2", "Ha linket (e-mail vagy URL) szeretnl beszrni a szvegbe, akkor egyszeren csak rd be a cmet. A script automatikusan ltrehozza a linket.");
+define("L_HELP_TIT_3", "Parancsok");
+define("L_HELP_USR", "felhasznl");
+define("L_HELP_MSG", "zenet");
+define("L_HELP_ROOM", "szoba");
+define("L_HELP_CMD_0", "A {} ktelez belltst, a [] pedig nem ktelez belltst jell.");
+define("L_HELP_CMD_1a", "A megjelentend zenetek szma. A minimlis - s egyben alaprtelmezett - rtk az 5.");
+define("L_HELP_CMD_1b", "zenetek jratltse, s az legutols n darab zenet megjelentse. A minimlis - s egyben alaprtelmezett - rtk az 5.");
+define("L_HELP_CMD_2a", "zenetlista frisstsi ksleltetsnek mdostsa (msodpercekben).<BR>Ha az n rtk nincs megadva, vagy kisebb mint 3, akkor a nincs frissts s a 10 msodperc kztt lehet vltogatni.");
+define("L_HELP_CMD_2b", "zenetlista frisstsi ksleltetsnek mdostsa (msodpercekben).<BR>Ha az n rtk nincs megadva, vagy kisebb mint 3, akkor a nincs frissts s a 10 msodperc kztt lehet vltogatni.");
+define("L_HELP_CMD_3", "Megfordtja az zenetek sorrendjt.");
+define("L_HELP_CMD_4", "Belp egy msik szobba, vagy ltrehozza azt (ha mg nem ltezik, s a felhasznlnak van jogosultsga szobk ltrehozsra).<BR>Az n rtke a sajt szobknl 0, a nyilvnos szobknl pedig 1. Az alaprtelmezett rtk az 1.");
+define("L_HELP_CMD_5", "Kilps a chatbl egy vlaszthat zenet megjelentse utn.");
+define("L_HELP_CMD_6", "Adott felhasznl zeneteinek mellzse, ha a felhasznli nv meg van adva.<BR>Adott felhasznl zenetinek mellzse, ha a felhasznl neve s a - egytt van megadva, illetve minden felhasznl zenetinek mellzse, ha a - van megadva felhasznli nv nlkl.<BR>Ha nincs megadva kapcsol, akkor ez a parancs egy ablakban megjelenti az sszes mellztt felhasznlt.");
+define("L_HELP_CMD_7", "Ez elzleg bert szveg ismtelt megjelentse (parancs vagy zenet).");
+define("L_HELP_CMD_8", "Id megjelentse/elrejtse az zenetek eltt.");
+define("L_HELP_CMD_9", "Felhasznl kidobsa a szobbl. Ezt a parancsot csak a modertor hasznlhatja.");
+define("L_HELP_CMD_10", "Magnzenet kldse a megadott felhasznlnak (a tbbi felhasznlnak nem jelenik meg).");
+define("L_HELP_CMD_11", "Informcik megjelentse egy adott felhasznlrl.");
+define("L_HELP_CMD_12", "Felhasznli profilszerkeszt ablak.");
+define("L_HELP_CMD_13", "Felhasznli belps/kilps megjelentsnek megjelentse/elrejtse az adott szobban.");
+define("L_HELP_CMD_14", "Adminisztrtorok s modertorok felhatalmazsa arra, hogy egy regisztrlt felhasznlt az adott szoba modertorv tegyenek.");
+define("L_HELP_CMD_15", "zenetek trlse s az utols 5 zenet megjelentse.");
+define("L_HELP_CMD_16", "Az utols n zenetet egy HTML fjlba menti (az rtestseket nem). Ha az n nincs megadva, akkor az sszes lehetsges zenetet menti.");
+define("L_HELP_CMD_17", "Az adminisztrtor ezzel a paranccsal kldhet zenetet az sszes szoba sszes felhasznljnak.");
+define("L_HELP_CMD_18", "Ms szobban beszlget felhasznl meghvsa abba a szobba, amelyben vagy.");
+define("L_HELP_CMD_19", "A szoba modertora vagy az adminisztrtor ezzel a paranccsal \"tilthat ki\" egy felhasznlt a szobbl az adminisztrtor ltal megadott idre. <BR>Ms szobban beszlget felhasznlt is kitilthat a '<B>&nbsp;*&nbsp;</B>' belltssal \"rkre\" a teljes chat-rl.");
+define("L_HELP_CMD_20", "Lerja, hogy ppen mit csinlsz.");
+
+// messages frame
+define("L_NO_MSG", "Nincs zenet ...");
+define("L_TODAY_DWN", "A ma elkldtt zenetetk alul kezddnek");
+define("L_TODAY_UP", "A ma elkldtt zenetetk fell kezddnek");
+
+// message colors
+$TextColors = array(	"Fekete" => "#000000",
+				"Piros" => "#FF0000",
+				"Zld" => "#009900",
+				"Kk" => "#0000FF",
+				"Lila" => "#9900FF",
+				"Sttvrs" => "#990000",
+				"Sttzld" => "#006600",
+				"Sttkk" => "#000099",
+				"Kk" => "#996633",
+				"Vilgoskk" => "#006699",
+				"Narancssrga" => "#FF6600");
+
+// ignored popup
+define("L_IGNOR_TIT", "zenetei nem jelennek meg");
+define("L_IGNOR_NON", "Mindenki zenetei megjelennek");
+
+// whois popup
+define("L_WHOIS_ADMIN", "Adminisztrtor");
+define("L_WHOIS_MODER", "Modertor");
+define("L_WHOIS_USER", "Felhasznl");
+
+// Notification messages of user entrance/exit
+define("L_ENTER_ROM", "%s belpett a szobba");
+define("L_EXIT_ROM", "%s kilpett a szobbl");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/hungarian/regex.txt 0.15.0/chat/localization/hungarian/regex.txt
--- 0.14.5/chat/localization/hungarian/regex.txt	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/hungarian/regex.txt	2004-04-01 03:07:31.000000000 -0600
@@ -0,0 +1 @@
+hu|hungarian
\ No newline at end of file
Binary files 0.14.5/chat/localization/icelandic/flag.gif and 0.15.0/chat/localization/icelandic/flag.gif differ
diff -ruN 0.14.5/chat/localization/icelandic/localized.chat.php 0.15.0/chat/localization/icelandic/localized.chat.php
--- 0.14.5/chat/localization/icelandic/localized.chat.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/icelandic/localized.chat.php	2004-04-01 03:07:31.000000000 -0600
@@ -0,0 +1,222 @@
+<?php
+// File : icelandic.lang.php
+// Translation by Andri skarsson <andri@bofh.is> aka Merlin
+
+// extra header for charset
+$Charset = "iso-8859-1";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// welcome page
+define("L_TUTORIAL", "Tutorial");
+
+define("L_WEL_1", "Skilaboum er eytt eftir");
+define("L_WEL_2", "klukkustundir og notendanfnum eftir");
+define("L_WEL_3", "mnutur ...");
+
+define("L_CUR_1", " essari stundu eru");
+define("L_CUR_2", " spjallinu.");
+define("L_CUR_3", "Notendur sem eru  essari stundu  spjallinu");
+
+define("L_CUR_4", "notendur  einkaspjalli");
+
+define("L_SET_1", "Vinsamlegast settu upp ...");
+define("L_SET_2", "notendanafni itt");
+define("L_SET_3", "fjlda skilaboa til a birta");
+define("L_SET_4", "bitmi milli uppfrslu");
+define("L_SET_5", "Veldu spjallrs ...");
+define("L_SET_6", "sjlfvaldar rsir");
+define("L_SET_7", "Veldu hr ...");
+define("L_SET_8", "almennar rsir stofnaar af notenda");
+define("L_SET_9", "bu til n eigin");
+define("L_SET_10", "almenna");
+define("L_SET_11", "einka");
+define("L_SET_12", "rs");
+define("L_SET_13", "San bara");
+define("L_SET_14", "spjallaru");
+
+define("L_SRC", "er keypis hj");
+
+define("L_SECS", "sekntur");
+define("L_MIN", "mnta");
+define("L_MINS", "mntur");
+
+// registration stuff:
+define("L_REG_1", "your password");
+define("L_REG_1r", "(only if you are registered)");
+define("L_REG_2", "Account management");
+define("L_REG_3", "Register");
+define("L_REG_4", "Edit your profile");
+define("L_REG_5", "Delete user");
+define("L_REG_6", "User registration");
+define("L_REG_7", "your password");
+define("L_REG_8", "your e-mail");
+define("L_REG_9", "You have been successfully registered.");
+define("L_REG_10", "Back");
+define("L_REG_11", "Editing");
+define("L_REG_12", "Modifying user's informations");
+define("L_REG_13", "Deleting user");
+define("L_REG_14", "Login");
+define("L_REG_15", "Log In");
+define("L_REG_16", "Change");
+define("L_REG_17", "Your informations were succesfully modified.");
+define("L_REG_18", "You have been kicked away from room by moderator.");
+define("L_REG_19", "Do you really want to be removed ?");
+define("L_REG_20", "Yes");
+define("L_REG_21", "You were successfully removed.");
+define("L_REG_22", "No");
+define("L_REG_25", "Close");
+define("L_REG_30", "firstname");
+define("L_REG_31", "lastname");
+define("L_REG_32", "WEB");
+define("L_REG_33", "show e-mail by /whois command");
+define("L_REG_34", "Editing user profile");
+define("L_REG_35", "Administration");
+define("L_REG_36", "spoken languages");
+define("L_REG_37", "Fields with a <span class=\"error\">*</span> must be completed.");
+define("L_REG_39", "The room you were in have been removed by the administrator.");
+define("L_REG_45", "gender");
+define("L_REG_46", "male");
+define("L_REG_47", "Female");
+
+// e-mail validation stuff
+define("L_EMAIL_VAL_1", "Your settings to enter the chat");
+define("L_EMAIL_VAL_2", "Welcome to our chat server.");
+define("L_EMAIL_VAL_Err", "Internal error, please contact the administrator: <a href=\"mailto:%s\">%s</a>.");
+define("L_EMAIL_VAL_Done", "Your password has been sent to your e-mail address.");
+
+// admin stuff
+define("L_ADM_1", "%s is no more moderator for this room.");
+define("L_ADM_2", "You're no more a registered user.");
+
+//error messages
+define("L_ERR_USR_1", "etta notendanafn er egar  notkun. Vinsamlegast velji anna.");
+define("L_ERR_USR_2", " verur a velja notendanafn");
+define("L_ERR_USR_3", "This username is registered. Please type your password or chose another username.");
+define("L_ERR_USR_4", "You typed a wrong password.");
+define("L_ERR_USR_5", "You must type your username.");
+define("L_ERR_USR_6", "You must type your password.");
+define("L_ERR_USR_7", "You must type your e-mail.");
+define("L_ERR_USR_8", "You must type a correct e-mail address.");
+define("L_ERR_USR_9", "This username is already in use.");
+define("L_ERR_USR_10", "Wrong username or password.");
+define("L_ERR_USR_11", "You must be administrator.");
+define("L_ERR_USR_12", "You are administrator, so you cannot be removed.");
+define("L_ERR_USR_13", "To create your own room you must be registered.");
+define("L_ERR_USR_14", "You must be registered before chating.");
+define("L_ERR_USR_15", "You must type your full name.");
+define("L_ERR_USR_16", "Username cannot contain space, comma or backslash (\\).");
+define("L_ERR_USR_17", "This room doesn't exist and you are not allowed to create one.");
+define("L_ERR_USR_18", "Banned word found in your username.");
+define("L_ERR_USR_19", "You cannot be in more than one room at the same time.");
+define("L_ERR_USR_20", "You have been banished from this room or from the chat.");
+define("L_ERR_ROM_1", "Room's name cannot contain comma or backslash (\\).");
+define("L_ERR_ROM_2", "Banned word found in the room's name you want to create.");
+define("L_ERR_ROM_3", "Spjallrs essi er egar til sem almenn rs.");
+define("L_ERR_ROM_4", "Rsarnafn ekki rtt");
+
+// users frame or popup
+define("L_EXIT", "Htta");
+define("L_DETACH", "Leysa");
+define("L_EXPCOL_ALL", "Breia r/Pakka inn");
+define("L_CONN_STATE", "Connection state");
+define("L_CHAT", "Spjall");
+define("L_USER", "notandi");
+define("L_USERS", "notendur");
+define("L_NO_USER", "Enginn notandi");
+define("L_ROOM", "rs");
+define("L_ROOMS", "rsir");
+define("L_EXPCOL", "Breia r/Pakka inn - rs");
+define("L_BEEP", "Beep/no beep at user entrance");
+define("L_PROFILE", "Display profile");
+define("L_NO_PROFILE", "No profile");
+
+// input frame
+define("L_HLP", "Hjlp");
+define("L_BAD_CMD", "Rng skipun.");
+define("L_ADMIN", "%s is already administrator!");
+define("L_IS_MODERATOR", "%s is already moderator!");
+define("L_NO_MODERATOR", "Only the moderator of this room can use this command.");
+define("L_MODERATOR", "%s is now moderator for this room.");
+define("L_NONEXIST_USER", "User %s isn't in the current room.");
+define("L_NONREG_USER", "User %s isn't registered.");
+define("L_NONREG_USER_IP", "His IP is: %s.");
+define("L_NO_KICKED", "User %s is moderator or administrator and can't be kicked away.");
+define("L_KICKED", "User %s was successfully kicked away.");
+define("L_NO_BANISHED", "User %s is moderator or administrator and can't be banished.");
+define("L_BANISHED", "User %s has successfully been banished.");
+define("L_SVR_TIME", "Server time: ");
+define("L_NO_SAVE", "No message to save!");
+define("L_NO_ADMIN", "Only the administrator can use this command.");
+define("L_ANNOUNCE", "ANNOUNCE");
+define("L_INVITE", "%s suggest you to join her/him into the <a href=\"#\" onClick=\"window.parent.runCmd('%s','%s')\">%s</a> room.");
+define("L_INVITE_REG", " You have to be registered to enter this room.");
+define("L_INVITE_DONE", "Your invitation has been sent to %s.");
+define("L_OK", "Send");
+
+// help popup
+define("L_HELP_TIT_1", "Broskallar");
+define("L_HELP_TIT_2", "Text formating for messages");
+define("L_HELP_FMT_1", "You can put bolded, italicized or underlined text in messages by encasing the applicable sections of your text with either the &lt;B&gt; &lt;/B&gt;, &lt;I&gt; &lt;/I&gt; or &lt;U&gt; &lt;/U&gt; tags.<BR>For example, &lt;B&gt;this text&lt;/B&gt; will produce <B>this text</B>.");
+define("L_HELP_FMT_2", "To create a hyperlink (for e-mail or URL) in your message, simply type the corresponding address without any tag. The hyperlink will be created automatically.");
+define("L_HELP_TIT_3", "Skipanir");
+define("L_HELP_USR", "notandi");
+define("L_HELP_MSG", "skilabo");
+define("L_HELP_ROOM", "rs");
+define("L_HELP_CMD_0", "{} er fyrir nausynlegar stillingar, [] er fyrir r fjlsu.");
+define("L_HELP_CMD_1", "Settu nmer snilegra skilaboa, 5 a minnstakosti");
+define("L_HELP_CMD_1a", "Set number of messages to show, minimum and default are 5.");
+define("L_HELP_CMD_1b", "Reload the message frame and display the n latest messages, minimum and default are 5.");
+define("L_HELP_CMD_2a", "Bitmi  breytingar  skilaboalista ( sekntum).<BR>Ef nmer er ekki fyllt t ea er minna en 3 skiptist milli engrar endurnjunar ea 10 sekntna endurnjun.");
+define("L_HELP_CMD_2b", "Modify messages and users lists refresh delay (in seconds).<BR>If n is not specified or less than 3, toggles between no refresh and 10s refresh.");
+define("L_HELP_CMD_3", "Sna skilaboarun vi");
+define("L_HELP_CMD_4", "Fara  ara rs, stofnar hana ef hn er ekki til ef  hefur heimild til ess.<BR>0 stendur fyrir einkaspjall og 1 fyrir spjall opi almenningi, sjlfvali 1 ef ekki er teki fram.");
+define("L_HELP_CMD_5", "Yfirgefa spjalli og mguleiki  a skrifa kveju.");
+define("L_HELP_CMD_6", "Birtir ekki skilabo fr notanda ef glunafn er teki fram.<BR>Birtir aftur skilabo fr notanda ef bi glunafn og - eru tekin fram, hunsun tekin af fyrir alla notendur ef - er en ekkert glunafn.<BR>Ef ekkert ert teki fram me essari skipun hendir hn upp glugga meommand llum hunsuum glunfnum.");
+define("L_HELP_CMD_7", "Recall the previous text typed (command or message).");
+define("L_HELP_CMD_8", "Show/Hide time before messages.");
+define("L_HELP_CMD_9", "Kick away user from the chat. This command can only be used by a moderator.");
+define("L_HELP_CMD_10", "Send a private message to the specified user (other users won't see it).");
+define("L_HELP_CMD_11", "Show informations about specified user.");
+define("L_HELP_CMD_12", "Popup window for editing user's profile.");
+define("L_HELP_CMD_13", "Toggles notifications of user entrance/exit for the current room.");
+define("L_HELP_CMD_14", "Allow the administrator or moderator(s) of the curent room to promote as moderator for the same room an other registered user.");
+define("L_HELP_CMD_15", "Clear the message frame and show only the last 5 messages.");
+define("L_HELP_CMD_16", "Save the last n messages (notifications ones excluded) to an HTML file. If n is not specified, all available messages will be taken into account.");
+define("L_HELP_CMD_17", "Allow the administrator to send an announce to all users whatever the room they are chatting into.");
+define("L_HELP_CMD_18", "Suggest an user chatting in an other room to join the one you are into.");
+define("L_HELP_CMD_19", "Allow the moderator(s) of a room or the administrator to \"banish\" an user from the room for a time defined by the administrator.<BR>The later can banish an user chatting in an other room than the one he is into and use the '<B>&nbsp;*&nbsp;</B>' setting to banish \"for ever\" an user from the chat as the whole.");
+define("L_HELP_CMD_20", "Describe what you're doing without refer yourself.");
+
+//message frame
+define("L_NO_MSG", "Engin skilabo");
+define("L_TODAY_DWN", "The messages that have been sent today start below");
+define("L_TODAY_UP", "The messages that have been sent today start above");
+
+// message colors
+$TextColors = array(	"Black" => "#000000",
+				"Rauur" => "#FF0000",
+				"Grnn" => "#009900",
+				"Blr" => "#0000FF",
+				"Fjlublr" => "#9900FF",
+				"Dkk rauur" => "#990000",
+				"Dkk grnn" => "#006600",
+				"Dkk blr" => "#000099",
+				"Ljs brnn" => "#996633",
+				"Ljs blr" => "#006699",
+				"Appelsnugulur" => "#FF6600");
+
+//ignored popup
+define("L_IGNOR_TIT", "Hunsaur");
+define("L_IGNOR_NON", "Enginn hunsaur notandi");
+
+// whois popup
+define("L_WHOIS_ADMIN", "Administrator");
+define("L_WHOIS_MODER", "Moderator");
+define("L_WHOIS_USER", "User");
+
+// Notification messages of user entrance/exit
+define("L_ENTER_ROM", "%s enters this room");
+define("L_EXIT_ROM", "%s exit this room");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/icelandic/regex.txt 0.15.0/chat/localization/icelandic/regex.txt
--- 0.14.5/chat/localization/icelandic/regex.txt	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/icelandic/regex.txt	2004-04-01 03:07:31.000000000 -0600
@@ -0,0 +1 @@
+is|icelandic
\ No newline at end of file
Binary files 0.14.5/chat/localization/italian/flag.gif and 0.15.0/chat/localization/italian/flag.gif differ
diff -ruN 0.14.5/chat/localization/italian/localized.admin.php 0.15.0/chat/localization/italian/localized.admin.php
--- 0.14.5/chat/localization/italian/localized.admin.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/italian/localized.admin.php	2004-04-01 03:07:31.000000000 -0600
@@ -0,0 +1,63 @@
+<?php
+// File : italian.lang.php
+// Translation by Andrea D'Alessandro <andrea@abol.it> & Massimo Fubini <massimo@tomato.it>
+//	& Giuliano Yurij Beccaria <yurij@e-pages.it> & Marco Borrini <borrini@tradimento.it>
+//	& Bartolotta Gioachino <developers@rockitalia.com> & Silvia M. Carrassi <silvia@ladysilvia.net>
+
+// extra header for charset
+$Charset = "iso-8859-1";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// Top frame
+define("A_MENU_0", "Amministrazione per %s");
+define("A_MENU_1", "Utenti registrati");
+define("A_MENU_2", "Banished users");
+define("A_MENU_3", "Pulisci aree");
+define("A_MENU_4", "Invia e-mails");
+
+// Frame for registered users
+define("A_SHEET1_1", "Lista degli utenti registrti e dei loro permessi");
+define("A_SHEET1_2", "Nome utente");
+define("A_SHEET1_3", "Permessi");
+define("A_SHEET1_4", "Chat moderate");
+define("A_SHEET1_5", "Le chat moderate sono reparate da una virgola (,) senza spazi.");
+define("A_SHEET1_6", "Rimuovi i profili contrassegnati");
+define("A_SHEET1_7", "Cambia");
+define("A_SHEET1_8", "Non ci sono utenti registrati eccetto te stesso.");
+define("A_SHEET1_9", "Bandisci profili selezionati");
+define("A_SHEET1_10", "Adesso devi andare sullo schedario degli utenti banditi per raffinare le tue scelte.");
+define("A_SHEET1_11", "Ultima connessione");
+define("A_USER", "Utente");
+define("A_MODER", "Moderatore");
+define("A_PAGE_CNT", "Page %s of %s");
+
+// Frame for banished users
+define("A_SHEET2_1", "Lista degli utenti banditi e aree interessate");
+define("A_SHEET2_2", "IP");
+define("A_SHEET2_3", "Aree interessate");
+define("A_SHEET2_4", "Fino a");
+define("A_SHEET2_5", "no end");
+define("A_SHEET2_6", "Aree sono separate da una virgola senza spazi (,) se sono meno di 4, diversamente l'asterisco '<B>&nbsp;*&nbsp;</B>' <BR>bandisce da tutte le aree.");
+define("A_SHEET2_7", "Rimuovi il bando per gli utenti selezionati");
+define("A_SHEET2_8", "Non ci sono utenti banditi.");
+
+// Frame for cleaning rooms
+define("A_SHEET3_1", "Elenco delle chat");
+define("A_SHEET3_2", "Svuotare una chat \"non-default\" rimuover anche tutti i moderatori<BR>della chat stessa.");
+define("A_SHEET3_3", "Svuota le chat selezionate");
+define("A_SHEET3_4", "Non ci sono aree da svuotare.");
+
+// Frame for sending mails
+define("A_SHEET4_0", "Non hai settato le variabili richieste<BR>nello script 'chat/admin/mail4admin.php'.");
+define("A_SHEET4_1", "Invia e-mails:");
+define("A_SHEET4_2", "A:");
+define("A_SHEET4_3", "Seleziona tutto");
+define("A_SHEET4_4", "Oggetto:");
+define("A_SHEET4_5", "Messaggi:");
+define("A_SHEET4_6", "Avvia invio");
+define("A_SHEET4_7", "Tutte le e-mails sono state inviate.");
+define("A_SHEET4_8", "Errore interno durante l'invio delle mails.");
+define("A_SHEET4_9", "Indirizzo/i, oggetto o messaggio mancante!");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/italian/localized.chat.php 0.15.0/chat/localization/italian/localized.chat.php
--- 0.14.5/chat/localization/italian/localized.chat.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/italian/localized.chat.php	2004-04-01 03:07:31.000000000 -0600
@@ -0,0 +1,223 @@
+<?php
+// File : italian.lang.php
+// Translation by Andrea D'Alessandro <andrea@abol.it> & Massimo Fubini <massimo@tomato.it>
+//	& Giuliano Yurij Beccaria <yurij@e-pages.it> & Marco Borrini <borrini@tradimento.it>
+//      & Bartolotta Gioachino <developers@rockitalia.com> & Silvia M. Carrassi <silvia@ladysilvia.net>
+
+// extra header for charset - Informazioni extra sul set di caratteri
+$Charset = "iso-8859-1";
+
+// medium font size in pt. - Dimensioni dei Font in punti
+$FontSize = 10;
+
+// welcome page - Pagina di Benvenuto
+define("L_TUTORIAL", "Guida pratica");
+
+define("L_WEL_1", "I messaggi verranno cancellati dopo");
+define("L_WEL_2", "ore e i nomi degli utenti dopo");
+define("L_WEL_3", "minuti...");
+
+define("L_CUR_1", "Attualmente ci sono");
+define("L_CUR_2", "nella chat.");
+define("L_CUR_3", "Utenti attualmente nelle chat pubbliche");
+define("L_CUR_4", "utenti nelle aree private");
+
+define("L_SET_1", "Inserisci ...");
+define("L_SET_2", "Nome utente");
+define("L_SET_3", "Numero massimo di messaggi da visualizzare");
+define("L_SET_4", "Tempo di aggiornamento");
+define("L_SET_5", "Seleziona un'area di chat ...");
+define("L_SET_6", "Aree di default");
+define("L_SET_7", "Fai la tua scelta ...");
+define("L_SET_8", "Aree pubbliche create dagli utenti");
+define("L_SET_9", "Crea la tua area");
+define("L_SET_10", "pubblica");
+define("L_SET_11", "privata");
+define("L_SET_12", "");
+define("L_SET_13", "Ora puoi");
+define("L_SET_14", "Entrare!");
+
+define("L_SRC", " disponibile gratuitamente su");
+
+define("L_SECS", "secondi");
+define("L_MIN", "minuto");
+define("L_MINS", "minuti");
+
+// registration - registrazione:
+define("L_REG_1", "password");
+define("L_REG_1r", "(solo se sei registrato)");
+define("L_REG_2", "Utenti registrati");
+define("L_REG_3", "Registrati");
+define("L_REG_4", "Imposta il tuo profilo");
+define("L_REG_5", "Cancella utenti");
+define("L_REG_6", "Registrazione utenti");
+define("L_REG_7", "la tua password");
+define("L_REG_8", "la tua e-mail");
+define("L_REG_9", "Sei stato registrato.");
+define("L_REG_10", "Indietro");
+define("L_REG_11", "Modifica");
+define("L_REG_12", "Modifico le informazioni sull'utente");
+define("L_REG_13", "Cancello l'utente");
+define("L_REG_14", "Login");
+define("L_REG_15", "Log In");
+define("L_REG_16", "Cambia");
+define("L_REG_17", "Le tue informazioni sono state modificate con successo.");
+define("L_REG_18", "Sei stato allontanato dalla chat dal moderatore.");
+define("L_REG_19", "Vuoi realmente essere rimosso?");
+define("L_REG_20", "Si");
+define("L_REG_21", "Sei stato rimosso con successo.");
+define("L_REG_22", "No");
+define("L_REG_25", "Chiudi");
+define("L_REG_30", "Nome");
+define("L_REG_31", "Cognome");
+define("L_REG_32", "WEB");
+define("L_REG_33", "Mostra l'e-mail al comando /whois");
+define("L_REG_34", "Modifica del profilo utente");
+define("L_REG_35", "Administrazione");
+define("L_REG_36", "lingue parlate");
+define("L_REG_37", "I campi con <span class=\"error\">*</span> devono essere completati.");
+define("L_REG_39", "La chat in cui eri  stata rimossa dall'Amministratore.");
+define("L_REG_45", "Sesso");
+define("L_REG_46", "maschile");
+define("L_REG_47", "femminile");
+
+// e-mail validation stuff
+define("L_EMAIL_VAL_1", "Le tue impostazioni per entrare nella chat.");
+define("L_EMAIL_VAL_2", "Benvenuto nel nostro chat server.");
+define("L_EMAIL_VAL_Err", "Internal error, per favore contattate l'amministratore: <a href=\"mailto:%s\">%s</a>.");
+define("L_EMAIL_VAL_Done", "La vostra password  stata inviata al vostro indirizzo email.");
+
+// admin stuff - Amministrazione
+define("L_ADM_1", "%s non  pi il moderatore di questa chat.");
+define("L_ADM_2", "Non sei pi un utente registrato.");
+
+//error messages - Messaggi di errore
+define("L_ERR_USR_1", "Questo nick  gia in uso. Seleziona un nuovo nick.");
+define("L_ERR_USR_2", "Devi scegliere un nome utente.");
+define("L_ERR_USR_3", "Questo username e' registrato. Usane un'altro.");
+define("L_ERR_USR_4", "Hai scritto una password sbagliata.");
+define("L_ERR_USR_5", "Devi avere uno username.");
+define("L_ERR_USR_6", "Devi scrivere una password.");
+define("L_ERR_USR_7", "Devi scrivere il tuo e-mail.");
+define("L_ERR_USR_8", "Devi scrivere un valido indirizzo e-mail.");
+define("L_ERR_USR_9", "Questo username e' gia' utilizzato.");
+define("L_ERR_USR_10", "Username o password sbagliata.");
+define("L_ERR_USR_11", "Devi essere un Amministratore.");
+define("L_ERR_USR_12", "Sei un Amministratore, quindi non puoi essere rimosso.");
+define("L_ERR_USR_13", "Per creare una tua chat devi essere registrato.");
+define("L_ERR_USR_14", "Per chattare devi essere registrato.");
+define("L_ERR_USR_15", "Devi scrivere il tuo nome.");
+define("L_ERR_USR_16", "L'Username non pu contenere spazi vuoti, virgole o backslash (\\).");
+define("L_ERR_USR_17", "Questa chat non esiste, tu non sei abilitato a crearne una nuova.");
+define("L_ERR_USR_18", "Nel tuo nome utente  stata trovata una parola censurabile.");
+define("L_ERR_USR_19", "Non puoi essere in pi di una chat contemporaneamente.");
+define("L_ERR_USR_20", "You have been banished from this room or from the chat.");
+define("L_ERR_ROM_1", "Il nome delle chat non pu contenere virgole o backslash (\\).");
+define("L_ERR_ROM_2", "Nel nome di chat  stata trovata una parola censurabile.");
+define("L_ERR_ROM_3", "Gi esiste un'area pubblica con questo nome.");
+define("L_ERR_ROM_4", "Nome area non valido.");
+
+// users frame or popup - frame utente o men a cascata
+define("L_EXIT", "Esci");
+define("L_DETACH", "Trasforma in finestra");
+define("L_EXPCOL_ALL", "Espandi/Chiudi tutto");
+define("L_CONN_STATE", "Connection state");
+define("L_CHAT", "Chat");
+define("L_USER", "utente");
+define("L_USERS", "utenti");
+define("L_NO_USER", "Nessun utente");
+define("L_ROOM", "area");
+define("L_ROOMS", "aree");
+define("L_EXPCOL", "Espandi/Chiudi area");
+define("L_NO_ADMIN", "Solo l'amministratore pu usare questo comando.");
+define("L_BEEP", "Beep/no beep all'ingresso dell utente");
+define("L_PROFILE", "Mostra il Profilo utente");
+define("L_NO_PROFILE", "No profile");
+
+// input frame - frame di inserimento
+define("L_HLP", "Aiuto");
+define("L_BAD_CMD", "Questo non  un comando valido !");
+define("L_ADMIN", "%s  gi amministratore !");
+define("L_IS_MODERATOR", "%s  gi moderatore !");
+define("L_NO_MODERATOR", "Solo il moderatore pu usare questo comando.");
+define("L_MODERATOR", "%s  ora moderatore di questa chat.");
+define("L_NONEXIST_USER", "L'utente %s non  in questa chat.");
+define("L_NONREG_USER", "L'utente %s non  registrato.");
+define("L_NONREG_USER_IP", "Il suo IP : %s.");
+define("L_NO_KICKED", "L'utente %s  moderatore o amministratore e non pu essere allontanato dalla chat.");
+define("L_KICKED", "L'utente %s  stato allontanato con successo.");
+define("L_NO_BANISHED", "L'utente %s un moderatore o amministratore e non pu essre bandito.");
+define("L_BANISHED", "L'utente %s stato bandito con successo.");
+define("L_SVR_TIME", "Server time: ");
+define("L_NO_SAVE", "Nesun messaggio da salvare!");
+define("L_ANNOUNCE", "ANNUNCIO");
+define("L_INVITE", "%s ti invita ad unirti a lei/lui nella chat <a href=\"#\" onClick=\"window.parent.runCmd('%s','%s')\">%s</a>.");
+define("L_INVITE_REG", " Devi essere registrato per accedere in quest'area.");
+define("L_INVITE_DONE", "Il tuo invito  stato inviato a %s.");
+define("L_OK", "Invia");
+
+// help popup - men di aiuto
+define("L_HELP_TIT_1", "Smilies");
+define("L_HELP_TIT_2", "Formattazione dei testi per i messaggi");
+define("L_HELP_FMT_1", "Puoi usare elementi di decorazione del testo come <B>grassetto</B>, <I>italic</I> o <U>sottolineato</U> racchiudendo la parte di testo interessata con &lt;B&gt; &lt;/B&gt;, &lt;I&gt; &lt;/I&gt; or &lt;U&gt; &lt;/U&gt; tags.<BR>Per esempio, &lt;B&gt;questo testo&lt;/B&gt; produrr&agrave <B>questo testo</B>.");
+define("L_HELP_FMT_2", "Per creare un hyperlink (per e-mail o URL) nel tuo messaggio, digita semplicemente il testo senza alcun tag. L'hyperlink sar creato automaticamente.");
+define("L_HELP_TIT_3", "Comandi");
+define("L_HELP_USR", "utente");
+define("L_HELP_MSG", "messaggio");
+define("L_HELP_ROOM", "area");
+define("L_HELP_CMD_0", "{}  un comando obbligatorio, []  opzionale.");
+define("L_HELP_CMD_1", "Imposta il numero di messaggi da visualizzare, minimo 5");
+define("L_HELP_CMD_1a", "Imposta il numero di messaggi da mostrare, il minimo sono 5.");
+define("L_HELP_CMD_1b", "Ricarica il frame dei messaggi e mostra gli ultimi, il minimo sono 5.");
+define("L_HELP_CMD_2a", "Modifica il tempo di aggiornamento dell'elenco messaggi (in secondi).<BR>Se n non viene specificato o  minore di 3, selezionare tra nessun aggiornamento e 10s di aggiornamento.");
+define("L_HELP_CMD_2b", "Modifica il tempo di aggiornamento degli elenchi di utenti e messaggi (in secondi).<BR>Se n non viene specificato o  minore di 3, selezionare tra nessun aggiornamento e 10s di aggiornamento.");
+define("L_HELP_CMD_3", "Inverte l'ordine dei messaggi.");
+define("L_HELP_CMD_4", "Entra in un'altra area, creandola se non esiste e se ti  consentito.<BR>n  0 se  privata e 1 se  pubblica, il valore di default  1 se non specificato.");
+define("L_HELP_CMD_5", "Abbandona la chat dopo aver scritto il messaggio opzionale.");
+define("L_HELP_CMD_6", "Ignora i messaggi di un utente se viene specificato il suo nick.<BR>Per ripristinare la normale visualizzazione dei messaggi  sufficiente inserire un \"-\" e il nick, quando invece viene inserito solo il \"-\" viene ripristinata la visualizzazione di tutti gli utenti.<BR>Senza alcuna opzione, questo comando mostra i nick attualmente ignorati.");
+define("L_HELP_CMD_7", "Richiama l'ultima linea inserita (comando o messaggio).");
+define("L_HELP_CMD_8", "Mostra/Nasconde l'orario prima dei messaggi.");
+define("L_HELP_CMD_9", "Allontana un utente dalla chat. Questo comando pu$ograve essere usato solo dal moderatore.");
+define("L_HELP_CMD_10", "Invia un messaggio ad un utente specifico (gli altri utenti non lo vedranno).");
+define("L_HELP_CMD_11", "Mostra le informazioni su un utente specifico.");
+define("L_HELP_CMD_12", "Nuova finestra per modificare il profilo utente.");
+define("L_HELP_CMD_13", "Attiva le informazioni sull'ingresso o uscita dalla chat corrente.");
+define("L_HELP_CMD_14", "Abilita l'amministratore o il moderatore della chat a creare nuovi moderatori tra gli utenti registrati.");
+define("L_HELP_CMD_15", "Cancella il frame dei messaggi e mostra gli ultimi 5.");
+define("L_HELP_CMD_16", "Salva gli ultimi n messaggi (notifiche escluse) in un file HTML. Se n non  specificato, verranno inseriti tutti i messaggi.");
+define("L_HELP_CMD_17", "Abilita l'amministratore a mandare messaggi agli utenti in tutte le chat.");
+define("L_HELP_CMD_18", "Invita un utente di un'altra chat a partecipare alla tua.");
+define("L_HELP_CMD_19", "Consente al moderatore di un area o all'amministratore di \"bandire\" o \"bannare\" un utente dall'area per un periodo definito dall'amministratore.<BR>Si potr bannare un utente che st chattando in un altra area (diversa da quella in cui ci si trova) usando l'asterisco '<B>&nbsp;*&nbsp;</B>' per bannarlo \"per sempre\" da tutta la chat.");
+define("L_HELP_CMD_20", "Describe what you're doing without refer yourself.");
+
+//message frame - frame segnalazioni messaggi
+define("L_NO_MSG", "Nessun messaggio");
+define("L_TODAY_DWN", "The messages that have been sent today start below");
+define("L_TODAY_UP", "The messages that have been sent today start above");
+
+// message colors - colore messaggi
+$TextColors = array(	"Nero" => "#000000",
+				"Rosso" => "#FF0000",
+				"Verde" => "#009900",
+				"Blu" => "#0000FF",
+				"Porpora" => "#9900FF",
+				"Rosso scuro" => "#990000",
+				"Verde scuro" => "#006600",
+				"Blu scuro" => "#000099",
+				"Marrone" => "#996633",
+				"Blu acqua" => "#006699",
+				"Arancione" => "#FF6600");
+
+//ignored popup
+define("L_IGNOR_TIT", "Ignorato");
+define("L_IGNOR_NON", "Nessun utente ignorato");
+
+// whois popup
+define("L_WHOIS_ADMIN", "Administratore");
+define("L_WHOIS_MODER", "Moderatore");
+define("L_WHOIS_USER", "Utente");
+
+// Notification messages of user entrance/exit
+define("L_ENTER_ROM", "%s entra nella chat");
+define("L_EXIT_ROM", "%s esce dalla chat");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/italian/localized.tutorial.php 0.15.0/chat/localization/italian/localized.tutorial.php
--- 0.14.5/chat/localization/italian/localized.tutorial.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/italian/localized.tutorial.php	2004-04-01 03:07:33.000000000 -0600
@@ -0,0 +1,630 @@
+<?php
+// File : italian.tutorial.php
+// Translation by Marco Borrini <marco.borrini@tradimento.it>
+//      & Bartolotta Gioachino <developers@rockitalia.com>
+//		& Silvia M. Carrassi <silvia@ladysilvia.net>
+//		& Daniele <danybec@tin.it>
+
+// Get the names and values for vars sent by the script that called this one
+if (isset($HTTP_GET_VARS))
+{
+	while(list($name,$value) = each($HTTP_GET_VARS))
+	{
+		$$name = $value;
+	};
+};
+?>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+
+<HEAD>
+<TITLE>Tutorial italiano per <?php echo(APP_NAME." - ".APP_VERSION); ?></TITLE>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+<STYLE>
+A.topLink
+{
+	text-decoration: underline;
+	color: #0000C0;
+}
+
+A.topLink:hover, A.topLink:active
+{
+	color: #FF9900;
+	text-decoration: none;
+	font-weight: 800;
+}
+
+.redText
+{
+	font-weight: 800;
+	color: #FF0000;
+}
+</STYLE>
+</HEAD>
+
+<BODY BGCOLOR="#CCCCFF">
+<P><A NAME="top"></P>
+<TABLE BORDER="5" CELLPADDING="5">
+<TR>
+	<TD><FONT SIZE="+2">Contenuti di questo Tutorial</FONT></TD>
+</TR>
+</TABLE><BR>
+
+<P CLASS="redText">
+Attenzione: gli utenti di Netscape devono definire la loro lingua come decodifica standard altrimenti ogni carattere nei messaggi sara' sostituito da un '?'.<BR>
+Si puo' fare cosi': View/CharacterSet/your language Auto-Detect, then View/CharacterSet/SetDefault.
+</P>
+
+<?php
+if (C_MULTI_LANG == "1")
+{
+	?>
+	<A HREF="#language" CLASS="topLink">Scegliere una lingua</A><BR>
+	<?php
+}
+?>
+<A HREF="#login" CLASS="topLink">Entrare nella chat</A><BR>
+<A HREF="#register" CLASS="topLink">Registrarsi</A><BR>
+<A HREF="#modProfile" CLASS="topLink">Modificare<?php if (C_SHOW_DEL_PROF == "1") echo("/eliminare"); ?> il proprio profilo</A><BR>
+<?php
+if (C_VERSION == "2")
+{
+	?>
+	<A HREF="#create_room" CLASS="topLink">Creare una stanza</A><BR>
+	<?php
+};
+if ($Ver == "H")
+{
+	?>
+	<A HREF="#connection_state" CLASS="topLink">Understanding connection state</A><BR>
+	<?php
+};
+?>
+<A HREF="#sending" CLASS="topLink">Mandare un messaggio</A><BR>
+<A HREF="#users_list" CLASS="topLink">Comprendere la lista degli utenti</A><BR>
+<A HREF="#exit" CLASS="topLink">Lasciare la stanza di chat</A><BR>
+<A HREF="#users_popup" CLASS="topLink">Sapere chi sta chattando senza essere collegati</A><BR>
+<P>
+<A HREF="#customize" CLASS="topLink">Personalizzare la vista della chat</A><BR>
+<P>
+<A HREF="#commands" CLASS="topLink">Caratteristiche e comandi:</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#help" CLASS="topLink">Comando Help</A><BR>
+<?php
+if (C_USE_SMILIES == "1")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#smilies" CLASS="topLink">Smilies grafici</A><BR>
+	<?php
+};
+if (C_HTML_TAGS_KEEP != "none")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#text" CLASS="topLink">Formattazione del testo</A><BR>
+	<?php
+};
+?>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#invite" CLASS="topLink">Inviti un utente ad entrare nella tua area di chat corrente</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#changeroom" CLASS="topLink">Cambiare da una area di chat ad un'altra</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#private" CLASS="topLink">Messaggi privati</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#actions" CLASS="topLink">Azioni</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#ignore" CLASS="topLink">Ignorare altri utenti</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#whois" CLASS="topLink">Ottenere informazioni pubbliche sugli altri utenti</A><BR>
+<?php
+if (C_SAVE != "0")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#save" CLASS="topLink">Salvare i messaggi</A><BR>
+	<?php
+};
+?>
+<P>
+<A HREF="#moderator" CLASS="topLink">Comandi speciali per i moderatori e/o l'amministratore:</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#announce" CLASS="topLink">Mandare un avviso</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#kick" CLASS="topLink">Cacciare un utente</A><BR>
+<?php
+if (C_BANISH != "0")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#banish" CLASS="topLink">Bannare un utente</A><BR>
+	<?php
+};
+?>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#promote" CLASS="topLink">Promuovere un utente a moderatore</A><BR>
+<P>
+<HR>
+<HR>
+
+
+<?php
+if (C_MULTI_LANG == "1")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="language"><B>Scegliere una lingua:</B></A></FONT>
+	<P>
+	Potete scegliere una lingua tra le quali <?php echo(APP_NAME); ?> e' stato tradotto cliccando su una delle bandierine nella pagina iniziale. Nell'esempio qui sotto, un utente ha scelto la lingua francese:
+	<P ALIGN="center">
+	<IMG SRC="images/tutorials/flags.gif" HEIGHT="44" WIDTH="424" ALT="Bandiere per la scelta della lingua">
+	<BR><P ALIGN="right"><A HREF="#top">Torna all'inizio</A></P>
+	<HR>
+	<?php
+}
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="login"><B>Entrata:</B></A></FONT>
+<P>
+Se vi siete gi registrati, potete semplicemente Entrare inserendo il vostro nome utente e la password. Dopo selezionate la stanza di chat dove vorreste entrare per poi premere il bottone 'Entra'.<BR>
+<?php
+if (C_REQUIRE_REGISTER == "1")
+{
+	?>
+	<P>
+	Altrimenti dovrete <A HREF="#register">registrarvi</A> per prima cosa.
+	<?php
+}
+else
+{
+	?>
+	<P>
+	Altrimenti potrete <A HREF="#register">registrarvi</A> per prima cosa oppure entrare semplicemnete in una stanza ma il vostro nome utente non verr riservato (un altro utente potr utilizzare lo stesso username una volta che vi sarete scollegati).
+	<?php
+}
+?>
+<BR><P ALIGN="right"><A HREF="#top">Torna all'inizio</A></P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="register"><B>Per registrarsi:</B></A></FONT>
+<P>
+Se non siete ancora registrati<?php if (C_REQUIRE_REGISTER == "0") echo(" e volete farlo"); ?>, prego scegliete l'opzione di registrazione. Apparir una piccola finestra pop-up.
+<P>
+<UL>
+	<LI>Primo, create uno pseudonimo<?php if (!C_EMAIL_PASWD) echo(" e una password"); ?> per voi digitandolo nello spazio appropriato. Lo pseudonimo che sceglierete sar il nome che comparir automaticamente nella chat. Non pu contenere spazi, virgole o backslash (\).
+<?php if (C_NO_SWEAR == "1") echo(" Non pu contenere \"swear words\"."); ?>
+	<LI>Secondo, inserite il vostro nome, cognome e il vostro indirizzo email. Per far in modo che ci si registri alla chat, tutte queste informazioni devono essere fornite. Potete non specificare il vostro sesso.
+	<LI>Se avete una homepage, potete inserire l'URL in questo campo..
+	<LI>Il campo della lingua pu aiutare altri utenti in future discussioni: essi sapranno quale lingue voi potere capire.
+	<LI>Infine, se volete permettere che la vostra email sia visibile dagli altri partecipanti della stanza di chat, potete spuntare la casellina di fianco a "mostra l'email nelle informazioni pubbliche". Se non
+desiderate che sia visibile il vostro indirizzo email, lasciate la casella non spuntata.
+	<LI>Dopo, premete il bottone Registrati e verr creato il vostro account. Se volete interrompere la registrazione in qualunque momento, premete il tasto Chiudi.
+</UL>
+<P>
+<A NAME="modProfile"></A>Ovviamente, gli utenti registrati saranno in grado di modificare<?php if (C_SHOW_DEL_PROF == "1") echo("/cancellare"); ?> il proprio profilo personale cliccando sugli appropriati <?php echo((C_SHOW_DEL_PROF == "0" ? "link" : "links")); ?>.<BR>
+<BR><P ALIGN="right"><A HREF="#top">Torna all'inizio</A></P>
+<P>
+<HR>
+
+<?php
+if (C_VERSION == "2")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="create_room"><B>Per creare una stanza:</B></A></FONT>
+	<P>
+	Gli utenti registrati possono creare stanze. Quelle private potranno essere visitate solo dagli utenti che conoscono il loro nome e non saranno mai visulaizzate eccetto per gli utenti che ci stanno dentro.<BR>
+	<P>
+	I nomi di stanze non possono contenere virgole o backslash (\).<?php if (C_NO_SWEAR == "1") echo(" Non possono poi contenere \"parole vietate\"."); ?>
+	<BR><P ALIGN="right"><A HREF="#top">Torna all'inizio</A></P>
+	<P>
+	<HR>
+	<?php
+};
+if ($Ver == "H")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="connection_state"><B>Understanding connection state:</B></A></FONT>
+	<P>
+	Un segnale che rappresenta lo stato della vostra connessione  situato all'angolo destro in alto dello schermo. Pu essere di tre forme:
+	<P>
+	<UL>
+		<LI><IMG SRC="images/connectOff.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Nessuna connessione"> Quando non  richiesta una connessione ;
+		<LI><IMG SRC="images/connectOn.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Connessione in corso"> Quando c' una connessione in corso ;
+		<LI><IMG SRC="images/connectError.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Connessione fallita"> Quando fallisce una connessione.
+	</UL>
+	<P>
+	Nel terzo caso, cliccando sul pulsante "rosso" lancer un nuovo tentativo di connessione.
+	<BR><P ALIGN="right"><A HREF="#top">Torna all'inizio</A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="sending"><B>Inviare messaggi:</B></A></FONT>
+<P>
+Per inviare un messaggio nella stanza di chat, digitate il vostro testo nel campo nell'angolo inferiore a sinistra e poi premete il tasto Invio per inviarlo. I messaggi di tutti gli utenti scrolleranno nella zona dell chat.<BR>
+<?php if (C_NO_SWEAR == "1") echo("Fate attenzione che le  \"parole vietate\" non saranno visualizzate."); ?>
+<P>
+Potete cambiare il colore del testo del vostro messaggio scegliendo un nuovo colore dalla lista delle scelte alla destra del campo invio testo.
+<BR><P ALIGN="right"><A HREF="#top">Torna all'inizio</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="users_list"><B>Comprendere la lista degli utenti (non per la finestra popup degli utenti):</B></A></FONT>
+<P>
+<OL>
+	Sono state definite due aggiunte per la lista degli utenti:<BR>
+	<LI>una piccola icona  e' visualizzata prima del nickname di un utente registrato (e cliccando su esso si fara' partire la <A HREF="#whois">finestra popup</A> per questo utente), mentre gli utenti non registrati avranno solamente un segno '-' prima del loro nickname;<BR>
+	<LI>il nome utente di un amministratore o di un moderatore e' in corsivo.
+</OL>
+<P><I>Per esempio</I>, dall'immagine di qui sotto potere capire che:
+<TABLE BORDER=0 CELLSPACING=10>
+<TR>
+	<TD>
+		<IMG SRC="images/tutorials/usersList.gif" WIDTH=128 HEIGHT=145 BORDER=0 ALT="lista utenti">
+	</TD>
+	<TD>
+	<UL>
+		<LI>Nicolas e' l'amministratore o uno dei moderatori dell'area phpMyChat;<BR><BR>
+		<LI>alien (il cui genere  sconosciuto), Jezek2 e Caridad sono utenti registrati senza alcun privilegio extra per la stanza phpMyChat;<BR><BR>
+		<LI>lolo  semplicemente un utente non registrato.
+	</UL>
+	</TD>
+</TR>
+</TABLE>
+<BR><P ALIGN="right"><A HREF="#top">Torna all'inizio</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="exit"><B>Uscire dall'area di chat:</B></A></FONT>
+<P>
+Per uscire dalla chat, cliccate semplicemente su 'Esci'. Oppure potete inserire uno dei seguenti comandi nel vostra casella di testo:<BR>
+/exit<BR>
+/bye<BR>
+/quit
+Questi comandi possono essere completati con un messaggio da inviare prima che voi lasciate la stanza di chat.
+<I>Per esempio :</I> /quit CU soon!
+<P>
+invier il messaggio "CU soon!" nel frame principale dopodich si uscir.
+
+<BR><P ALIGN="right"><A HREF="#top">Torna all'inizio</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="users_popup"><B>Conoscere chi sta chattando senza essere collegati:</B></A></FONT>
+<P>
+Potete cliccare sul collegamento che mostra il numero di utenti collegati alla pagina iniziale o, se state chattando, sull'immagine <IMG SRC="images/popup.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Lista degli utenti"> nell'angolo alto a destra dello schermo per aprire una finestra indipendente che mostrer la lista degli utenti collegati e le stanze in cui stanno in tempo quasi reale.<BR>
+Il titolo della finestra contiene i nomi utente se sono meno di tre, altrimenti il numero degli utenti e le stanze attive.
+<P>
+Cliccando sull'icona <IMG SRC="images/sound.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Beeps"> sopra questo popup abiliter/disabiliter l'uso di suoni per l'entrata degli utenti.
+<BR><P ALIGN="right"><A HREF="#top">Torna all'inizio della pagina</A></P>
+<P>
+<HR>
+<HR>
+
+
+<P>
+<FONT SIZE="+1"><A NAME="customize"><B>Personalizzare la visualizzazione della chat:</B></A></FONT>
+<P>
+Ci sono molti differenti modi di personalizzare l'aspetto della cha. Per cambiare le impostazioni, digitate semplicemente il comando appropriato nel vostro campo testo e premete il tasto 'Invio'.
+<P>
+<UL>
+	<?php
+	if ($Ver == "H")
+	{
+		?>
+		<LI>Il <B>comando Clear</B> vi permette di pulire lo schermo principale della chat e di visualizzare gli ultimi 5 messaggi inviati sullo schermo.<BR>Digiate "/clear" senza virgolette.
+		<P>
+		<?php
+	}
+	else
+	{
+		?>
+		<LI>Il <B>comando Order</B> vi permette di far visualizzare i nuovi messaggi all'inizio dello schermo o alla fine.<BR>Digitate "/order" senza virgolette.
+		<P>
+		<?php
+	};
+	?>
+	<LI>Il <B>comando Notify</B> vi permette di abilitare/disabilitare l'opzione con cui si possono vedere i messaggi di notifica quando gli altri utenti entrano/escono dalla stanza della chat. Di base questa opzione  <?php echo(C_NOTIFY ? "abilitata" : "disabilitata"); ?> e le notifiche <?php echo(C_NOTIFY ? "saranno" : "non saranno"); ?> viste.<BR>Digitate "/notify" senza virgolette.
+	<P>
+	<LI>Il <B>comando Timestamp</B> vi permette di abilitare/disabilitare l'opzione con cui viene visualizzato l'ora del messaggio che viene postato prima di ogni messaggio e l'ora del server nella barra di stato. Di norma questa opzione  <?php echo(C_SHOW_TIMESTAMP ? "abilitata" : "disabilitata"); ?>.<BR>Digitate "/timestamp" senza virgolette.
+	<P>
+	<LI>Il <B>comando Refresh</B> vi permette di aggiustare il ritmo con cui i messaggi digitati sono ri-visualizzati sul vostro schermo. Il ritmo standard  correntemente di <?php echo(C_MSG_REFRESH); ?> secondi. Per cambiare il ritmo digitate "/refresh n" senza virgolette dove n  il tempo in secondi del nuovo ritmo di ri-visualizzazione.
+	<P>
+	<I>Per esempio:</I> /refresh 5
+	<P>
+	cambier il ritmo a 5 secondi. *Attenzione, se n  settato a meno di 3 secondi, la ri-visualizzazione viene resettata proprio per non fare la ri-visualizzazione (utile se volete leggere molti messaggi senza essere disturbati)!*
+	<P>
+	<?php
+	if ($Ver == "L")
+	{
+		?>
+		<LI>Il <B>comando Show</B> vi permette di aggiustare il numero di messaggi visualizzabili sul vostro schermo. per cambiare il valore di base, digitate "/show n" senza virgolette dove n  il numero di messaggi da visualizzare.
+		<P>
+		<I>Per esempio:</I> /show 50
+		<P>
+		far in modo che i 50 messaggi pi nuovi siano visibili sul vostro schermo. Se tutti i messaggi non possono essere visualizzari dentro la finestra della chat, apparir una barra di scorrimento sul lato destro della schermata dei messaggi.</UL>
+		<?php
+	}
+	else
+	{
+		?>
+		<LI>I <B> comandi Show e Last</B> vi permettono di ripulire lo schermo e di visualizzare gli ultimi <I>n</I> messaggi inviati sul vostro schermo. Digitate /show n" o "/last n" senza virgolette dove n  il numero di messaggi da visualizzare.
+		<P>
+		<I>Per esempio:</I> /show 50 o /last 50
+		<P>
+		ripulirer il frame dei messaggi e far in modo che i 50 messaggi pi nuovi siano visibili sul vostro schermo. Se tutti i messaggi non potranno essere visualizzati all'interno della schermata dei messaggi, apparir una barra di scorrimento sul lato destro di quest'ultima.</UL>
+		<?php
+	};
+	?>
+	<BR><P ALIGN="right"><A HREF="#top">Torna all'inizio</A></P>
+	<P>
+</UL>
+<HR>
+<HR>
+
+
+<P>
+<FONT SIZE="+2"><A NAME="commands"><B><U>Caratteristiche e Comandi</U></B></A></FONT>
+<P>
+
+<FONT SIZE="+1"><A NAME="help"><B>Comando Help:</B></A></FONT>
+<P>
+Una volta all'interno di una stanza di chat, potete avviare il popup di aiuto cliccando sull'immagine <IMG SRC="images/helpOff.gif" WIDTH=15 HEIGHT=15 BORDER=0 ALT="? AIUTO"> che si trova appena prima del frame di invio messaggi. Potete anche digitare i <B>comandi "/help" o "/?"</B> nel campo invio messaggi.
+<BR><P ALIGN="right"><A HREF="#top">Torna all'inizio</A></P>
+<P>
+<P>
+<HR>
+
+<?php
+if (C_USE_SMILIES == "1")
+{
+	include("./lib/smilies.lib.php");
+	$Nb = count($SmiliesTbl);
+	$ResultTbl = Array();
+	DisplaySmilies($ResultTbl,$SmiliesTbl,$Nb,"tutorial");
+	unset($SmiliesTbl);
+	?>
+	<FONT SIZE="+1"><A NAME="smilies"><B>Smilies:</B></A></FONT>
+	<P>Potete avere dei simpatici smilies dentro i vostri messaggi. Guaradte sotto il codice che dovete inserire nel messaggio per ottenere uno di questi smiles.
+	<P ALIGN="center">
+	<TABLE BORDER=0 CELLPADDING=3 CELLSPACING=5>
+	<?php
+	$i = "0";
+	$Nb = count($ResultTbl);
+	while($i < $Nb)
+	{
+		if ($i > 0) echo("\t");
+		echo("<TR VALIGN=\"BOTTOM\">\n");
+		echo("$ResultTbl[$i]");
+		echo("\t</TR>\n\t<TR>\n");
+		$i++;
+		echo("$ResultTbl[$i]");
+		echo("\t</TR>\n");
+		$i++;
+	};
+	unset($ResultTbl);
+	?>
+	</TABLE>
+	<P>
+	<I>Per esempio</I>, inviando il teso, "Hi Jack :)" senza virgolette verra' visualizzato il messaggio Hi Jack <IMG SRC="images/smilies/smile1.gif" WIDTH=15 HEIGHT=15 ALT=":)"> nel frame principale.
+	<BR><P ALIGN="right"><A HREF="#top">Torna all'inizio</A></P>
+	<P>
+	<HR>
+	<?php
+};
+
+if (C_HTML_TAGS_KEEP != "none")
+{
+	?>
+	<FONT SIZE="+1"><A NAME="text"><B>Formattazione di testo:</B></A></FONT>
+	<P>
+	Il testo puo' essere in grassetto, corsivo o sottolineato delimitando la sezioni di testo da applicare con i tag HTML &LT;B&GT; &LT;/B&GT, &LT;I&GT; &LT;/I&GT; or &LT;U&GT; &LT;/U&GT.
+	<P>
+	<I>Per esempio</I>, &LT;B&GT;questo testo&LT;/B&GT; produrr <B>questo testo</B>.
+	<P>
+	Per creare un collegamento ipertestuale per un indirizzo email o un URL, digitate l'indirizzo (senza alcun tag HTML). Il collegamento ipertestuale verr creato automaticamente.
+	<BR><P ALIGN="right"><A HREF="#top">Torna all'inizio</A></P>
+	<P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="invite"><B>Invitare un utente ad entrare nella vostra area di chat corrente:</B></A></FONT>
+<P>
+Potete usare il <B>comando invite</B> per suggerire ad un utente di partecipare all'area dove state chattando.
+<P>
+<I>Per esempio:</I> /invite Jack
+<P>
+inviera' un messaggio provato a Jack invitandolo ad unirvi con voi nella vostra area di chat corrente. Questo messaggio contiene il nome della area di chat e questo nome apparira' come un link.
+<P>
+Notate che potete inserire pi di un nomeutente nel comando /invite (per es. "/invite Jack,Helen,Alf"). Essi devono essere divisi da una virgola (,) senza spazi.
+<BR><P ALIGN="right"><A HREF="#top">Torna all'inizio</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="changeroom"><B>Cambiare stanza:</B></A></FONT>
+<P>
+L'elenco sulla destra dello schermo fornisce una lista delle stanze di chat e gli utenti che stanno correntemente in quella stanza. Per lasciare una stanza per spostarsi in una di queste, cliccate semplicemente sul nome di quella stanza. Le stanze vuote non appaiono sulal lista. Potete anche spostarvi in una stanza vuota digitando <B>comando "/join #nomestanza"</B> senza virgolette.
+<P>
+<I>Per esempio:</I> /join #RedRoom
+<P>
+vi porter in RedRoom.
+<?php
+if (C_VERSION == "2")
+{
+	echo(C_REQUIRE_REGISTER == "0" ? "<P>Se siete un utente registrato, voi" : "<BR><P>Voi");
+	?>
+	 potete anche creare una nuova stanza con lo stesso commando. Ma dopo dovrete specificarne il tipo: 0 sta per privata,1 per pubblica (valore di norma).
+	<P>
+	<I>Per esempio:</I> /join 0 #MiaStanza
+	<P>
+	creer una nuova stanza privata (dando per scontato che una pubblica con lo stesso nome non sia gi stata creata) chiamata MiaStanza e vi porter all'interno di essa.
+	<P>
+	I nomi di stanze non possono contenere spazi o backslash (\).<?php if (C_NO_SWEAR == "1") echo(" Non pu contenere parole vietate"); ?>
+	<?php
+}
+?>
+<BR><P ALIGN="right"><A HREF="#top">Torna all'inizio</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B>Modificare il proprio profilo all'interno della chat:</B></FONT>
+<P>
+Il <B>comando Profile</B> crea una finestra pop-up separata nella quale  possibile modificare il proprio profilo utente e modificare tranne che per il cotro username e la password (dovrete usare il link all'inizio della pagina d'ingresso.<BR>Digitate /profile
+<BR><P ALIGN="right"><A HREF="#top">Torna all'inizio</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B>Richiamare l'ultimo messaggio o comando che avete inviato:</B></FONT>
+<P>
+Il <B>comando !</b> richiama l'ultimo messaggio o comando che avete inviato.<BR>Digitate  /!
+<BR><P ALIGN="right"><A HREF="#top">Torna all'inizio</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B>Rispondere ad un utente specifico:</B></FONT>
+<P>
+Cliccando una volta sul nome di un altro utente nella vostra stanza di chat (alla destra dello schermo) far s che appaia "nomeutente>" nel vostro campo invio messaggi. Questa caratteristica permette di dirigere facilmente un messaggio pubblico ad un utente, forse in risposta a qualcosa che egli/lei aveva postatao sopra.
+<BR><P ALIGN="right"><A HREF="#top">Torna all'inizio</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="private"><B>Messaggi privati:</B></A></FONT>
+<P>
+Per inviare un messaggio privato ad un altro utente nella vostra stanza, digitate il <B>comando "/msg nomeutente testomessaggio" oppure "/to nomeutente testomessaggio"</B> senza apici.
+<P>
+<I>Per esempio, dove Jack  il nome utente:</I> /msg Jack Io sono qua, come stai?
+<P>
+Il messaggio apparir a Jack e a voi stessi, ma nessun altro utente lo vedr.
+<P>
+Osservate che cliccando su un nick di qualcuno che ha scritto nel frame principale, verr aggiunto automaticamente questo comando nel campo invio messaggi.
+<BR><P ALIGN="right"><A HREF="#top">Torna all'inizio</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="actions"><B>Azioni:</B></A></FONT>
+<P>
+Per descrivere cosa stai facendo potete usare il <B>comando "/me action"</B> senza virgolette.
+<P>
+<I>Per esempio:</I> Se Jack manda il messaggio "/me sta fumando una sigaretta" il messaggio che comparir sar "<B>* Jack</B>" sta fumando una sigaretta".
+<BR><P ALIGN="right"><A HREF="#top">Torna all'inizio</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="ignore"><B>Ignorare altri utenti:</B></A></FONT>
+<P>
+Per ignorare tutti i messaggi di un altro utente, digitate il <B>comando '/ignore nomeutente'</B> senza virgolette.
+<P>
+<I>Per esempio:</I> /ignore Jack
+<P>
+Da questo momento in poi, nessun messaggio proveninete dall'utente Jack sar visualizzato sullo schermo.
+<P>
+Per avere la liste degli utenti i cui messaggi sono ignorati, basta che digitate il <B>comando '/ignore'</B> senza virgolette.
+<P>
+Per ripristinare la visualizzazione dei mesaggi di un utente ignorato, digitate il <B>comando '/ignore - nomeutente'</B> senza virgolette dove '-'  un trattino. <P>
+<P>
+<I>Per esempio:</I> /ignore - Jack
+<P>
+Adesso tutti i messaggi di Jack postati durante la sessione corrente di chat saranno visualizzati sul vostro schermo, inclusi quelli digitati prima di questo messaggio.
+Se non specificate un nomeutente dopo hyphen, la vostra 'lista degli ignorati' sar ripulita.
+<P>
+Notate che potete inserire pi di un nomeutente nel comando /ignore (per es. '/ignore Jack,Helen,Alf' oppure '/ignore - Jack,Alf'). Essi devono essere divisi da una virgola (,) senza spazi.
+<BR><P ALIGN="right"><A HREF="#top">Torna all'inizio</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="whois"><B>Ottenere informazioni sugli altri utenti:</B></A></FONT>
+<P>
+Per vedere informazioni pubbliche su un altro utente, digitate il <B>comando '/whois nomeutente'</B> senza virgolette.
+<P>
+<I>Per esempio:</I> /whois Jack
+<P>
+dove 'Jack'  il nome utente. Questo comando creerer una finestra popup separata che mostrer le informazioni pubblicamente disponibili per quel utente.
+<BR><P ALIGN="right"><A HREF="#top">Torna all'inizio</A></P>
+<P>
+<HR>
+
+<?php
+if (C_SAVE != "0")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="save"><B>Salvare i messaggi:</B></A></FONT>
+	<P>
+	Per esportare i messaggi (messaggi di notifica esclusi) su un file HTML locale, digitate il <B>comando "/save n"</B> senza virgolette.
+	<P>
+	<I>Per esempio:</I> /save 5
+	<P>
+	dove '5'  il numero di messaggi da salvare. Se n non  specificato, tutti i messaggi disponibili inviati nella stanza corrente saranno presi in considerazione.
+	<BR><P ALIGN="right"><A HREF="#top">Torna all'inizio</A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+<HR>
+
+
+<P>
+<FONT SIZE="+2"><A NAME="moderator"><B><U>Comandi solo per l'amministratore e/o moderatori</U></B></A></FONT> 
+
+<P>
+<FONT SIZE="+1"><A NAME="announce"><B>Invia un annuncio:</B></A></FONT>
+<P>
+L'amministratore pu inviare un annuncio a tutti gli altri utenti in qualunque stanza essi stiano chattando con il <B>comando announce</B>.
+<P>
+<I>Per esempio:</I> /announce La chat sar disattivata per manutenzione stasera alle 20.00.</I>
+<BR><P ALIGN="right"><A HREF="#top">Torna all'inizio</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="kick"><B>Cacciare un utente:</B></FONT>
+<P>
+I moderatori possono cacciare un utente, mentre l'amministratore pu cacciare un utente o un moderatore con il <B>comando kick</B>. A parte l'amministratore, l'utente da allontanare deve stare nella stanza corrente.
+<P>
+<I>Per esempio, se Jack  il nome dell'utente da cacciare via:</I> /kick Jack</I>
+<BR><P ALIGN="right"><A HREF="#top">Torna all'inizio</A></P>
+<P>
+<HR>
+
+<?php
+if (C_BANISH != "0")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="banish"><B>Bandire un utente:</B></A></FONT>
+	<P>
+	I Moderatori possono bandire un utente e l'amministratore pu bandire un utente o un moderatore con il comando <b>ban</b>.<BR>
+	L'amministratore pu bandire un utente da un altra area nella quale st chattando. Pu anche bandire per sempre un utente e dall'area dove si trova e dalla chat intera utilizzando l'asterisco '<B>&nbsp;*&nbsp;</B>' che deve essere inserito prima del nick dell'utente che si vuole bandire.
+	<P>
+	<I>Per esempio:</I>, Se Jack  il nome dell'utente da bandire: <I>/ban Jack</I> o <I>/ban * Jack</I>
+	<BR><P ALIGN="right"><A HREF="#top">Torna all'inizio</A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="promote"><B>Promuovere un utente a moderatore:</B></A></FONT>
+<P>
+Moderatori e amministratori possono promuovere un altro utente a moderatore con il <B>comando promote</B>.
+<P>
+<I>Per esempio</I>, se Jack  il nome dell'utente da promuovere:<I> /promote Jack</I>
+<P>
+Solo l'amministratore pu accedere al comando opposto (ridurre un moderatore a semplice utente) in una pagina separata. Non esiste nessun comando per fare ci.
+<BR><P ALIGN="right"><A HREF="#top">Torna all'inizio</A></P>
+<P>
+
+
+</BODY>
+</HTML>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/italian/regex.txt 0.15.0/chat/localization/italian/regex.txt
--- 0.14.5/chat/localization/italian/regex.txt	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/italian/regex.txt	2004-04-01 03:07:33.000000000 -0600
@@ -0,0 +1 @@
+it|italian
\ No newline at end of file
Binary files 0.14.5/chat/localization/japanese/flag.gif and 0.15.0/chat/localization/japanese/flag.gif differ
diff -ruN 0.14.5/chat/localization/japanese/localized.admin.php 0.15.0/chat/localization/japanese/localized.admin.php
--- 0.14.5/chat/localization/japanese/localized.admin.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/japanese/localized.admin.php	2004-04-01 03:07:33.000000000 -0600
@@ -0,0 +1,61 @@
+<?php
+// File : japanese.admin.php
+// Translation by Yosuke Hamamoto <yosuke@key-net.ne.jp>
+
+// extra header for charset
+$Charset = "x-euc-jp";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// Top frame
+define("A_MENU_0", "%s δ⡼");
+define("A_MENU_1", "Ͽ줿桼");
+define("A_MENU_2", "줿桼");
+define("A_MENU_3", "");
+define("A_MENU_4", "᡼");
+
+// Frame for registered users
+define("A_SHEET1_1", "Ͽ줿桼ȸ¤ɽ");
+define("A_SHEET1_2", "桼̾");
+define("A_SHEET1_3", "");
+define("A_SHEET1_4", "ǥ졼Ǥ");
+define("A_SHEET1_5", "ǥ졼Ǥϥڡ̵Υ(,)ʬƤޤ");
+define("A_SHEET1_6", "å줿桼");
+define("A_SHEET1_7", "ѹ");
+define("A_SHEET1_8", "ʳϿ줿桼Ϥޤ");
+define("A_SHEET1_9", "å줿桼");
+define("A_SHEET1_10", "ѹϡ줿桼Υڡ򸫤Ƥ");
+define("A_SHEET1_11", "Ǹ³");
+define("A_USER", "桼");
+define("A_MODER", "ǥ졼");
+define("A_PAGE_CNT", "%s ڡ ( %s ڡ)");
+
+// Frame for banished users
+define("A_SHEET2_1", "줿桼ȿۤΥꥹ");
+define("A_SHEET2_2", "IPɥ쥹");
+define("A_SHEET2_3", "ۤ");
+define("A_SHEET2_4", "ޤ");
+define("A_SHEET2_5", "ʱ");
+define("A_SHEET2_6", "ϥڡʤǥ(,)ǶڤƤޤİʾ夢ϡάޤ");
+define("A_SHEET2_7", "åդ桼");
+define("A_SHEET2_8", "줿桼Ϥޤ");
+
+// Frame for cleaning rooms
+define("A_SHEET3_1", "ߤΥꥹ");
+define("A_SHEET3_2", "ȤƤΥǥ졼Ϻޤ");
+define("A_SHEET3_3", "򤵤줿");
+define("A_SHEET3_4", "Ϥޤ");
+
+// Frame for sending mails
+define("A_SHEET4_0", "'chat/admin/mail4admin.php'ˤ꤬äƤޤ");
+define("A_SHEET4_1", "᡼");
+define("A_SHEET4_2", ":");
+define("A_SHEET4_3", "");
+define("A_SHEET4_4", "̾:");
+define("A_SHEET4_5", "å:");
+define("A_SHEET4_6", "Ϥ");
+define("A_SHEET4_7", "ƤΥ᡼ޤ");
+define("A_SHEET4_8", "᡼ƤˡInternal errorȯޤ");
+define("A_SHEET4_9", "ɥ쥹̾ޤϥåϤƤޤ");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/japanese/localized.chat.php 0.15.0/chat/localization/japanese/localized.chat.php
--- 0.14.5/chat/localization/japanese/localized.chat.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/japanese/localized.chat.php	2004-04-01 03:07:33.000000000 -0600
@@ -0,0 +1,220 @@
+<?php
+// File : japanese.lang.php
+// Translation by Yosuke Hamamoto <yosuke@key-net.ne.jp>
+
+// extra header for charset
+$Charset = "x-euc-jp";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// welcome page
+define("L_TUTORIAL", "åȤ");
+
+define("L_WEL_1", "å");
+define("L_WEL_2", "ָ˺ޤ桼");
+define("L_WEL_3", "ʬȯ̵Ⱥޤ");
+
+define("L_CUR_1", "ߥåȤ˻äƤͿ");
+define("L_CUR_2", "");
+define("L_CUR_3", "桼ϡåȥ롼ˤޤ");
+define("L_CUR_4", "桼ϡץ饤١ȥ롼ˤޤ");
+
+define("L_SET_1", "桼");
+define("L_SET_2", "ʤ̾");
+define("L_SET_3", "åɽԿ");
+define("L_SET_4", "ư");
+define("L_SET_5", "");
+define("L_SET_6", "");
+define("L_SET_7", "򤷤Ʋ");
+define("L_SET_8", "桼ä");
+define("L_SET_9", "ʤ");
+define("L_SET_10", "ץ");
+define("L_SET_11", "ץ饤١");
+define("L_SET_12", "");
+define("L_SET_13", "åȤ");
+define("L_SET_14", "");
+
+define("L_SRC", "ϡ̵Ǥ");
+
+define("L_SECS", "");
+define("L_MIN", "ʬ");
+define("L_MINS", "ʬ");
+
+// registration stuff:
+define("L_REG_1", "ѥ");
+define("L_REG_1r", "(ϿƤʤͤ)");
+define("L_REG_2", "Խ");
+define("L_REG_3", "Ͽ");
+define("L_REG_4", "ץեѹ");
+define("L_REG_5", "桼");
+define("L_REG_6", "桼Ͽ");
+define("L_REG_7", "ѥ");
+define("L_REG_8", "᡼륢ɥ쥹");
+define("L_REG_9", "Ͽλޤ");
+define("L_REG_10", "");
+define("L_REG_11", "ԽƤޤ");
+define("L_REG_12", "桼ξѹƤޤ");
+define("L_REG_13", "桼Ƥޤ");
+define("L_REG_14", "");
+define("L_REG_15", "");
+define("L_REG_16", "ѹ");
+define("L_REG_17", "桼ѹޤ");
+define("L_REG_18", "ʤϡǥ졼ɤФޤ");
+define("L_REG_19", "˺Ƥ⤤Ǥ");
+define("L_REG_20", "Ϥ");
+define("L_REG_21", "桼κޤ");
+define("L_REG_22", "");
+define("L_REG_25", "Ĥ");
+define("L_REG_30", "̾");
+define("L_REG_31", "");
+define("L_REG_32", "HP");
+define("L_REG_33", "᡼륢ɥ쥹");
+define("L_REG_34", "桼ѹ桦");
+define("L_REG_35", "⡼");
+define("L_REG_36", "Ѹ");
+define("L_REG_37", "<span class=\"error\">*</span>ιܤɬϤƤ");
+define("L_REG_39", "ʤϴԤˤޤ");
+define("L_REG_45", "");
+define("L_REG_46", "");
+define("L_REG_47", "");
+
+// e-mail validation stuff
+define("L_EMAIL_VAL_1", "åȤ뤿");
+define("L_EMAIL_VAL_2", "åȤˤ褦");
+define("L_EMAIL_VAL_Err", "Internal error Ǥ (<a href=\"mailto:%s\">%s</a>)ϢƤ");
+define("L_EMAIL_VAL_Done", "ѥɤϡΥ᡼륢ɥ쥹ޤ");
+
+// admin stuff
+define("L_ADM_1", "%s ϡ⤦ǥ졼ǤϤޤ");
+define("L_ADM_2", "ϡ⤦åϿԤǤϤޤ");
+
+//error messages
+define("L_ERR_USR_1", "̾ʥϥɥ̾ˤϤǤïȤäƤޤ");
+define("L_ERR_USR_2", "̾ʥϥɥ̾ˤƲ");
+define("L_ERR_USR_3", "ꤵ줿桼̾ϴϿƤޤ̤Υ桼̾ꤷƤ");
+define("L_ERR_USR_4", "ѥɥ顼");
+define("L_ERR_USR_5", "桼̾ϤƤ");
+define("L_ERR_USR_6", "ѥɤϤƤ");
+define("L_ERR_USR_7", "᡼륢ɥ쥹ϤƤ");
+define("L_ERR_USR_8", "᡼륢ɥ쥹ηפޤ󡣳ǧƤ");
+define("L_ERR_USR_9", "Υ桼̾ϴϿƤޤ");
+define("L_ERR_USR_10", "桼̾ȥѥɤפޤ");
+define("L_ERR_USR_11", "Ԥθ¤ɬפǤ");
+define("L_ERR_USR_12", "ԤϺ뤳Ȥޤ");
+define("L_ERR_USR_13", "ʤ뤿ˤϡϿƤʤȽޤ");
+define("L_ERR_USR_14", "åȤ򤹤ˤϡɬϿɬפǤ");
+define("L_ERR_USR_15", "ʤ̾ΤϤƤ");
+define("L_ERR_USR_16", "桼̾ˤϡڡ䥳ޡޤХåڡ(\\)ϴޤޤ");
+define("L_ERR_USR_17", "¸ߤޤ󡣤ޤˤ븢¤ޤ");
+define("L_ERR_USR_18", "ػѸ줬桼̾ȯޤ");
+define("L_ERR_USR_19", "ĤƱ˵Ͻޤ");
+define("L_ERR_USR_20", "ʤϥåȤ⤷ϣĤޤ");
+define("L_ERR_ROM_1", "̾ˤϥޤХåå (\\)ϴޤޤ");
+define("L_ERR_ROM_2", "ػѸ줬̾ȯޤ");
+define("L_ERR_ROM_3", "̾ϡξǸƤޤ");
+define("L_ERR_ROM_4", "̵̾Ǥ");
+
+// users frame or popup
+define("L_EXIT", "");
+define("L_DETACH", "");
+define("L_EXPCOL_ALL", "Ÿ/̤ޤ");
+define("L_CONN_STATE", "³");
+define("L_CHAT", "å");
+define("L_USER", "");
+define("L_USERS", "");
+define("L_NO_USER", "");
+define("L_ROOM", "");
+define("L_ROOMS", "");
+define("L_EXPCOL", "Ÿ/̤ޤ");
+define("L_BEEP", "桼ä˥ӡײĤ餹/Ĥ餵ʤ");
+define("L_PROFILE", "ץեɽ");
+define("L_NO_PROFILE", "No profile");
+
+// input frame
+define("L_HLP", "إ");
+define("L_BAD_CMD", "ͭʥޥ̾ǤϤޤ");
+define("L_ADMIN", "%s ϴ˴ԤǤ");
+define("L_IS_MODERATOR", "%s ϴ˥ǥ졼Ǥ");
+define("L_NO_MODERATOR", "ǥ졼ΤߤΥޥɤѤǤޤ");
+define("L_MODERATOR", "%s ϤΥǥ졼Ȥꤵޤ");
+define("L_NONEXIST_USER", "%s ϡ߻ꤵ줿ˤϵޤ");
+define("L_NONREG_USER", "%s ϡϿ줿桼ǤϤޤ");
+define("L_NONREG_USER_IP", "桼IPɥ쥹ϡ %s Ǥ");
+define("L_NO_KICKED", "桼 %s ϡԤǥ졼Ǥ뤿ᡢǤޤ");
+define("L_KICKED", "桼 %s ϡޤ");
+define("L_NO_BANISHED", "桼 %s ϡԤǥ졼Ǥ뤿ᡢǤޤ");
+define("L_BANISHED", "桼 %s ϡޤ");
+define("L_SVR_TIME", "С: ");
+define("L_NO_SAVE", "¸åޤ");
+define("L_NO_ADMIN", "ԤΤߤΥޥɤѤǤޤ");
+define("L_ANNOUNCE", "ʥ");
+define("L_INVITE", "%s ʤ <a href=\"#\" onClick=\"window.parent.runCmd('%s','%s')\">%s</a> ˾Ҳ𤷤Ƥޤ.");
+define("L_INVITE_REG", " 뤿ˤϡϿɬפǤ");
+define("L_INVITE_DONE", "ʸϡ%s ޤ");
+define("L_OK", "");
+
+// help popup
+define("L_HELP_TIT_1", "");
+define("L_HELP_TIT_2", "ƥȤԽƤޤ");
+define("L_HELP_FMT_1", "&lt;B&gt; &lt;/B&gt;, &lt;I&gt; &lt;/I&gt; ޤ &lt;U&gt; &lt;/U&gt; Ѥ뤳ȤˤäơΡʤɤʸդ뤳ȤǽǤ<BR>㤨С, &lt;B&gt;ƥ&lt;/B&gt; Ǥ <B>ƥ</B> ͤˤʤޤ");
+define("L_HELP_FMT_2", "ۡڡɥ쥹ˤϼưǥ󥯤դޤ(פǤ)");
+define("L_HELP_TIT_3", "ޥ");
+define("L_HELP_USR", "桼");
+define("L_HELP_MSG", "å");
+define("L_HELP_ROOM", "");
+define("L_HELP_CMD_0", "{} ɬܤꡢ[] ϥץɽޤ");
+define("L_HELP_CMD_1a", "ɽԤꤷޤϣǤ");
+define("L_HELP_CMD_1b", "ե졼򹹿ɽåοǤϣǤ");
+define("L_HELP_CMD_2a", "åȤι֤ꤷޤ<BR>ꤵƤʤޤϣðꤵ줿ϡôֳ֤ǹޤ");
+define("L_HELP_CMD_2b", "桼ΥꥹȤ򹹿֤ꤷޤ<BR>ꤵƤʤޤϣðꤵ줿ϡôֳ֤ǹޤ");
+define("L_HELP_CMD_3", "åΥꥹȤդˤޤ");
+define("L_HELP_CMD_4", "¾ޤޤ¸ߤʤ̾ꤵ줿ϡ¤˸¤ꡢޤ<BR>0 ϥץ饤١ȥåȤ 1 ϸʥåȤؤޤ(ϣǤ)");
+define("L_HELP_CMD_5", "ꤵ줿ʸΥåɽˡåȥ롼ޤ");
+define("L_HELP_CMD_6", "nick ꤵƤϡΥ桼Υåɽޤ<BR>ƱˡǹԤޤ <BR>̵򤷤Ƥ桼ΥꥹȤɽޤ");
+define("L_HELP_CMD_7", "ǤäåޥɤƤӽФޤ");
+define("L_HELP_CMD_8", "å˻֤ɽ/ޤ");
+define("L_HELP_CMD_9", "ꤵ줿桼ɤФޤǥ졼ΤߤΥޥɤѤǤޤ");
+define("L_HELP_CMD_10", "ץ饤١ȥåޤ(¾οͤϤΥå򸫤ޤ)");
+define("L_HELP_CMD_11", "ꤵ줿桼ξɽޤ");
+define("L_HELP_CMD_12", "桼ξѹޤ");
+define("L_HELP_CMD_13", "äɽåɽޤ");
+define("L_HELP_CMD_14", "ߤδԤǥ졼ˡ¾ϿƤ桼ǥ졼ˤ뤳Ȥޤ");
+define("L_HELP_CMD_15", "åõơǸΣĤΥåɽޤ");
+define("L_HELP_CMD_16", "ꤵ줿ʬΥåHTML¸뤳ȤǽǤޤꤵƤʤϡƤΥå¸ޤ");
+define("L_HELP_CMD_17", "Ԥʥ󥹤򤹤뤳Ȥޤ");
+define("L_HELP_CMD_18", "¾Υ桼åȤ˾Ԥޤ");
+define("L_HELP_CMD_19", "Ԥǥ졼˻ꤵ줿֤桼뤳Ȥޤ");
+define("L_HELP_CMD_20", "򤷤Ƥɽޤ");
+
+// messages frame
+define("L_NO_MSG", "åϤޤ");
+define("L_TODAY_DWN", "ä줿åϲϤޤޤ");
+define("L_TODAY_UP", "ä줿åϾ嵭Ϥޤޤ");
+
+// message colors
+$TextColors = array(	"" => "#000000",
+						"" => "#FF0000",
+						"" => "#009900",
+						"" => "#0000FF",
+						"" => "#9900FF",
+						"뿧" => "#990000",
+						"" => "#006600",
+						"" => "#000099",
+						"" => "#996633",
+						"" => "#006699",
+						"" => "#FF6600");
+
+// ignored popup
+define("L_IGNOR_TIT", "̵");
+define("L_IGNOR_NON", "̵ꥹȤˤïäƤޤ");
+
+// whois popup
+define("L_WHOIS_ADMIN", "");
+define("L_WHOIS_MODER", "ǥ졼");
+define("L_WHOIS_USER", "桼");
+
+// Notification messages of user entrance/exit
+define("L_ENTER_ROM", "%s ޤ");
+define("L_EXIT_ROM", "%s ༼ޤ");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/japanese/localized.tutorial.php 0.15.0/chat/localization/japanese/localized.tutorial.php
--- 0.14.5/chat/localization/japanese/localized.tutorial.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/japanese/localized.tutorial.php	2004-04-01 03:07:34.000000000 -0600
@@ -0,0 +1,633 @@
+<?php
+// File : japanese.tutorial.php
+// Translation by Yosuke Hamamoto <yosuke@key-net.ne.jp>
+
+// Get the names and values for vars sent by the script that called this one
+if (isset($HTTP_GET_VARS))
+{
+	while(list($name,$value) = each($HTTP_GET_VARS))
+	{
+		$$name = $value;
+	};
+};
+?>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+
+<HEAD>
+<TITLE><?php echo(APP_NAME." - ".APP_VERSION); ?>Υ塼ȥꥢ ܸ</TITLE>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=x-euc-jp">
+<STYLE>
+A.topLink
+{
+	text-decoration: underline;
+	color: #0000C0;
+}
+
+A.topLink:hover, A.topLink:active
+{
+	color: #FF9900;
+	text-decoration: none;
+	font-weight: 800;
+}
+
+.redText
+{
+	font-weight: 800;
+	color: #FF0000;
+}
+</STYLE>
+</HEAD>
+
+<BODY BGCOLOR="#CCCCFF">
+
+<P><A NAME="top"></P>
+<TABLE BORDER="5" CELLPADDING="5">
+<TR>
+	<TD><FONT SIZE="+2">塼ȥꥢ</FONT></TD>
+</TR>
+</TABLE><BR>
+
+<P CLASS="redText">
+ٹ: NetscapeΥ桼ϡˤƤ򤷤ʤȡ? ֤Ƥޤޤ<BR>
+ɽ->ʸ->ܸ ư򡢤ơɽ->ʸ->ɸʸɥåȤ򤹤ȤǤޤ
+</P>
+
+<?php
+if (C_MULTI_LANG == "1") 
+{
+	?>
+	<A HREF="#language" CLASS="topLink">򤹤</A><BR>
+	<?php
+}
+?>
+<A HREF="#login" CLASS="topLink">åȤ˥󤹤</A><BR>
+<A HREF="#register" CLASS="topLink">Ͽ</A><BR>
+<A HREF="#modProfile" CLASS="topLink">ץեѹ<?php if (C_SHOW_DEL_PROF == "1") echo("/"); ?></A><BR>
+<?php
+if (C_VERSION == "2") 
+{
+	?>
+	<A HREF="#create_room" CLASS="topLink"></A><BR>
+	<?php
+};
+if ($Ver == "H") 
+{
+	?>
+	<A HREF="#connection_state" CLASS="topLink">³Ȥϡ</A><BR>
+	<?php
+};
+?>
+<A HREF="#sending" CLASS="topLink">å</A><BR>
+<A HREF="#users_list" CLASS="topLink">桼ΥꥹȤ</A><BR>
+<A HREF="#exit" CLASS="topLink">åȥ롼Ф/</A><BR>
+<A HREF="#users_popup" CLASS="topLink">ï򤻤˥åȤƤΤΤ</A><BR>
+<P>
+<A HREF="#customize" CLASS="topLink">åȤɽѹ</A><BR>
+<P>
+<A HREF="#commands" CLASS="topLink">ħȥޥ</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#help" CLASS="topLink">إץޥ</A><BR>
+<?php
+if (C_USE_SMILIES == "1")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#smilies" CLASS="topLink">β</A><BR>
+	<?php
+};
+if (C_HTML_TAGS_KEEP != "none")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#text" CLASS="topLink">ƥȤΥեޥå</A><BR>
+	<?php
+};
+?>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#invite" CLASS="topLink">¾Υ桼ΥåȤ˾Ԥ</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#changeroom" CLASS="topLink">¾Υåȥ롼˰ư</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#private" CLASS="topLink">ץ饤١ȥå</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#actions" CLASS="topLink">ư</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#ignore" CLASS="topLink">¾Υ桼̵뤹</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#whois" CLASS="topLink">¾Υ桼ξ</A><BR>
+<?php
+if (C_SAVE != "0")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#save" CLASS="topLink">å¸</A><BR>
+	<?php
+};
+?>
+<P>
+<A HREF="#moderator" CLASS="topLink">ǥ졼ȴԤ̤ʥޥ</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#announce" CLASS="topLink">ʥ󥹥Ȥ</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#kick" CLASS="topLink">桼ɤФ</A><BR>
+<?php
+if (C_BANISH != "0")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#banish" CLASS="topLink">桼</A><BR>
+	<?php
+};
+?>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#promote" CLASS="topLink">桼ǥ졼ꤹ</A><BR>
+<P>
+<HR>
+<HR>
+
+
+<?php
+if (C_MULTI_LANG == "1") 
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="language"><B>򤹤:</B></A></FONT>
+	<P>
+	Υåȥƥ¿θƤޤΤᡢΥåȤ¾θϡåȤΥȥåץڡˤ򥯥åƤ㤨СǤϡ桼ϥե󥹸Ǥޤ
+	<P ALIGN="center">
+	<IMG SRC="images/tutorials/flags.gif" HEIGHT="44" WIDTH="424" ALT="">
+	<BR><P ALIGN="right"><A HREF="#top">ȥåפ</A></P>
+	<HR>
+	<?php
+}
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="login"><B>:</B></A></FONT>
+<P>
+Ͽ줿桼ʤС桼̾ȥѥɤϤȡꤿåȥ롼򤹤뤳Ȥˤäơ󤬤Ǥޤ<BR>
+<?php
+if (C_REQUIRE_REGISTER == "1")
+{
+	?>
+	<P>
+	ϿƤʤʤС<A HREF="#register">Ͽ</A>򤷤Ƥ
+	<?php
+}
+else
+{
+	?>
+	<P>
+	ϿƤʤʤС<A HREF="#register">Ͽ</A>Ѥޤ뤫ȤȤäƤȤξϡ¾Υ桼ʤδ˾Ƥ桼̾ȤäƤǽޤ
+	<?php
+}
+?>
+<BR><P ALIGN="right"><A HREF="#top">ȥåפ</A></P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="register"><B>Ͽ뤿:</B></A></FONT> 
+<P>
+ϿƤʤʤС<?php if (C_REQUIRE_REGISTER == "0") echo("Ͽϡ"); ?>Ͽ򤷤Ƥʥɥݥåץåפ(ФƤ)ޤ
+<P>	
+<UL>
+	<LI>ޤϤˡ桼̾<?php if (!C_EMAIL_PASWD) echo("ȥѥ"); ?> ơϿͤϿեˡȤͤϡʤ̾ΥܥåϤƤ桼̾ϡåȥ롼ǤʤΥϥɥ̾Ȥʤꤽ̾ɽޤ桼̾ˤϥޤ䥹ڡޤХåå(\)ϴޤޤ
+<?php if (C_NO_SWEAR == "1") echo("դԲǽǤ"); ?>
+	<LI>ˡ̾᡼륢ɥ쥹ϤƤ(Ͽͤ) Ͽ줿桼ˤʤ뤿ˤϡԲķǤ̤ϡɤǤ⤤Ǥ
+	<LI>ۡڡСϤƤ(ץ)
+	<LI>ϡ¾Υ桼ȤΥåȤɬפˤʤ뤫⤷ޤ
+	<LI>Ǹˡï⤬ʤΥ᡼륢ɥ쥹򸫤뤳Ȥ褦ꤹϡåƤ
+	<LI>Ͽܥ򲡤ȤˤäơʤΥȤޤĤǤ⼭᤿ȤϡĤܥ򲡤Ƥ
+</UL>
+<P>
+<A NAME="modProfile"></A>Ͽ줿桼ϡʬξѹ<?php if (C_SHOW_DEL_PROF == "1") echo("/"); ?> ޤ<BR>
+<BR><P ALIGN="right"><A HREF="#top">ȥåפ</A></P>
+<P>
+<HR>
+
+<?php
+if (C_VERSION == "2") 
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="create_room"><B>åȥ롼()뤿:</B></A></FONT> 
+	<P>
+	Ͽ줿桼ϡåȥ롼뤳ȤǽǤץ饤١ȥåȤϡ̾ΤäƤ桼뤳ȤǤ̾ϸξˤɽޤ<BR>
+	<P>
+	̾ˤϥޤХåå(\)ϴޤޤ<?php if (C_NO_SWEAR == "1") echo("դޤޤ"); ?>
+	<BR><P ALIGN="right"><A HREF="#top">ȥåפ</A></P>
+	<P>
+	<HR>
+	<?php
+};
+if ($Ver == "H")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="connection_state"><B>³Ȥϡ:</B></A></FONT> 
+	<P>
+	³򼨤ϡåȤαˤޤˤϡĤμबޤ
+	<P>	
+	<UL>
+		<LI><IMG SRC="images/connectOff.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="ʤ"> ³ʤ ;
+		<LI><IMG SRC="images/connectOn.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="³"> ³ԤƤޤ ;
+		<LI><IMG SRC="images/connectError.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="³"> ³˼Ԥޤ
+	</UL>
+	<P>
+	³˼Ԥ硢֤Υפ򥯥åפ뤳Ȥˤꡢ⤦³ߤޤ
+	<BR><P ALIGN="right"><A HREF="#top">ȥåפ</A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="sending"><B>å:</B></A></FONT> 
+<P>
+åȤ˥åˤϡˤ벣ĹΥܥå˥åϤơ󥿡()򲡤Ƥåϡξˤåȥܥåɽޤ<BR>
+<?php if (C_NO_SWEAR == "1") echo("դäƤ礬̵뤵ޤ"); ?>
+<P>
+ޤ顼ܥå꿧򤹤뤳Ȥˤꡢʸοѹ뤳ȤǽǤ
+<BR><P ALIGN="right"><A HREF="#top">ȥåפ</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="users_list"><B>桼ΥꥹȤΤ:</B></A></FONT> 
+<P>
+<OL>
+	桼ΥꥹȤˤĤơĤΥ롼뤬ޤ:<BR>
+	<-- To update
+	<LI>桼ˤ뾮ʥ (<IMG SRC="images/whoisOff.gif" WIDTH=5 HEIGHT=9 BORDER=0 ALT="ץե륢">)ϡΥ桼ϿƤȤɽΥ򥯥å뤳Ȥˤꡢ<A HREF="#whois">ץե륦ɥ</A> ɽޤϿƤʤ桼ˤϥޥʥ󤷤դޤ;<BR>
+	-->
+	<LI>a little icon that shows gender is displayed before the nick of a registered user (clicking on it will launch the <a href="#whois">whois popup</a> for this user), while unregistered users have nothing but blank spaces displayed before their nick;<BR>
+	<LI>ǥ졼ȴͤ̾ϡΤȤʤޤ
+</OL>
+<P><I>㤨С</I>β򸫤ƷФƤߤȡ
+<TABLE BORDER=0 CELLSPACING=10>
+<TR>
+	<TD>
+		<IMG SRC="images/tutorials/usersList.gif" WIDTH=99 HEIGHT=131 BORDER=0 ALT="桼ꥹ">
+	</TD>
+	<TD>
+	<UL>
+		<LI>Nicolas ϡԤǥ졼Ǥ;<BR>
+		<!-- To update
+		<LI>lolo  Jezek2 Ͽ줿桼Ǥ;<BR>
+		<LI>Mary ϿƤʤȤǤ롣
+		-->
+		<LI>alien (whose gender is unknown), Jezek2 and Caridad are registered users with no extra "power" for the phpMyChat room;<BR><BR>
+		<LI>lolo is a simple unregistered user.
+	</UL>
+	</TD>
+</TR>
+</TABLE>
+<BR><P ALIGN="right"><A HREF="#top">ȥåפ</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="exit"><B>åȥ롼Ф/:</B></A></FONT>
+<P>
+åȥ롼ФˤϡФ򥯥åƤ⤷ϡΤΤɤ줫ĤΥޥɤǤޤ:<BR>
+/exit<BR>
+/bye<BR>
+/quit
+ΥޥɤϡǸ˥åäƥåȤФȤ˻Ѥޤ
+<I>㤨 :</I> /quit CU soon!
+<P>
+ȤΤϡ"CU soon!" Ȥåäơθ˼ưǥåȤФޤ
+
+<BR><P ALIGN="right"><A HREF="#top">ȥåפ</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="users_popup"><B>ï򤻤˥åȤƤΤΤ:</B></A></FONT> 
+<P>
+åȤΥȥåץڡˤ󥯤ѤƤɤ줯餤οͿåȤ򤷤ƤΤޤåȤ򤷤Ƥˤϡˤ <IMG SRC="images/popup.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="桼Υݥåץå"> 򥯥åˤꡢɥɽ졢ͥåȤ򤷤ƤΤꥢ륿ˤ狼ޤ<BR>
+ɥ̾ϥ桼̾ޤߡĤ⾯ʤϡɽޤ
+<P>
+ӡץ<IMG SRC="images/sound.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="ӡ">򥯥å뤳Ȥˤꡢ桼äƤȤΥӡײäդǤޤ
+<BR><P ALIGN="right"><A HREF="#top">ȥåפ</A></P>
+<P>
+<HR>
+<HR>
+
+
+<P>
+<FONT SIZE="+1"><A NAME="customize"><B>åȤɽ򥫥ޥ:</B></A></FONT>
+<P>
+åȤθ(ɽ)Ѥˡϡ󤢤ޤѤϡʥޥɤϤƤ
+<P>
+<UL>
+	<?php
+	if ($Ver == "H")
+	{
+		?>
+		<LI><B>ꥢ ޥ</B> ѤȡǸǤ줿ĤΥåĤƤ¾Υåõޤ<BR>"/clear"ǤäƤ( "" פޤ)
+		<P>
+		<?php
+	}
+	else
+	{
+		?>
+		<LI><B> ޥ</B>ϡåɽ뤫ɽ뤫ѹޤ<BR>"/order"ǤäƤ( "" פޤ)
+		<P>
+		<?php
+	};
+	?>
+	<LI><B>Τ餻 ޥ</B>ϡ桼äƤޤϽФƤäˤΥåɽ뤫ǤޤǤϡ<?php echo(C_NOTIFY ? "ɽ" : "ɽʤ"); ?>ꤵƤޤ<BR>"/notify"ǤäƤ( "" פޤ)
+	<P>
+	<LI><B> ޥ</B>ϡơСˤ֤åˤ֤ɽ뤫ʤꤷޤǤϡ<?php echo(C_SHOW_TIMESTAMP ? "ɽ" : "ɽʤ"); ?>ȤʤäƤޤ<BR>"/timestamp"ǤäƤ( "" פޤ)
+	<P>
+	<LI><B>եå ޥ</B> ϡåȤι֤ǤޤߤǤϡ<?php echo(C_MSG_REFRESH); ?> äꤵƤޤѹ뤿ˤϡ"/refresh n" ϤƤ( "" פޤ) ޤn ˤϻ()ޤ
+	<P>
+	<I>㤨:</I> /refresh 5
+	<P>
+	ȣäǹޤðꤷƤޤȡ򤷤ʤѤդƤƤ
+	<P>
+	<?php
+	if ($Ver == "L")
+	{
+		?>
+		<LI>The <B>ɽ ޥ</B>ϡΥ꡼ǸåιԿѹޤѹˤϡ"/show n" ϤƤ( "" פޤ) 
+		<P>
+		<I>㤨:</I> /show 50
+		<P>
+		ꤹȡޤǤʤΥåȥ꡼Ǹ뤳Ȥˤʤޤ٤ɽǤʤϡСɽޤ</UL>
+		<?php
+	}
+	else
+	{
+		?>
+		<LI><B>ɽ  饹 ޥ</B>ϡåȤɽƤŤåơǸϤ줿<I>n</I>ĤɽǽǤ"/show n"  "/last n" ȥפƤơ("")̵Ǥޤn ϡɬꤷƤ
+		<P>
+		<I>㤨:</I> /show 50  /last 50
+		<P>
+		ϡǸǤ줿ĤΥåĤơɽޤƤΥåɽʤϡСɽޤ</UL>
+		<?php
+	};
+	?>
+	<BR><P ALIGN="right"><A HREF="#top">ȥåפ</A></P>
+	<P>
+</UL>
+<HR>
+<HR>
+
+
+<P>
+<FONT SIZE="+2"><A NAME="commands"><B><U>ħȥޥ</U></B></A></FONT> 
+<P>
+
+<FONT SIZE="+1"><A NAME="help"><B>إץޥ:</B></A></FONT>
+<P>
+åȤ򤷤Ƥ硢åܥåβˤ<IMG SRC="images/helpOff.gif" WIDTH=15 HEIGHT=15 BORDER=0 ALT="?"> 򥯥åˤꡢإץɥФޤޤ<B>"/help"  "/?" </B>ǤĤȤǤ⡢Ʊ̤ޤ
+<BR><P ALIGN="right"><A HREF="#top">ȥåפ</A></P>
+<P>
+<P>
+<HR>
+
+<?php
+if (C_USE_SMILIES == "1")
+{
+	include("./lib/smilies.lib.php");
+	$Nb = count($SmiliesTbl);
+	$ResultTbl = Array();
+	DisplaySmilies($ResultTbl,$SmiliesTbl,$Nb,"tutorial");
+	unset($SmiliesTbl);
+	?>
+	<FONT SIZE="+1"><A NAME="smilies"><B>:</B></A></FONT>
+	<P>줿ʸǤĤȤˤäơɽƤβФȤޤ
+	<P ALIGN="center">
+	<TABLE BORDER=0 CELLPADDING=3 CELLSPACING=5>
+	<?php
+	$i = "0";
+	$Nb = count($ResultTbl);
+	while($i < $Nb)
+	{
+		if ($i > 0) echo("\t");
+		echo("<TR VALIGN=\"BOTTOM\">\n");
+		echo("$ResultTbl[$i]");
+		echo("\t</TR>\n\t<TR>\n");
+		$i++;
+		echo("$ResultTbl[$i]");
+		echo("\t</TR>\n");
+		$i++;
+	};
+	unset($ResultTbl);
+	?>
+	</TABLE>
+	<P>
+	<I>㤨</I>"Jack 󡢤 :)" ǤĤȡ<br>Jack 󡢤 <IMG SRC="images/smilies/smile1.gif" WIDTH=15 HEIGHT=15 ALT=":)"><br>ɽޤ
+	<BR><P ALIGN="right"><A HREF="#top">ȥåפ</A></P>
+	<P>
+	<HR>
+	<?php
+};
+
+if (C_HTML_TAGS_KEEP != "none")
+{
+	?>
+	<FONT SIZE="+1"><A NAME="text"><B>ƥȥեޥå:</B></A></FONT>
+	<P>
+	&LT;B&GT; &LT;/B&GT, &LT;I&GT; &LT;/I&GT;  &LT;U&GT; &LT;/U&GT ȤȤˤꡢʸˤꥤåˤꥢ饤դޤ
+	<P>
+	<I>㤨</I>&LT;B&GT;ƥ&LT;/B&GT; ǤĤȡ <B>ƥ</B>Ȥʤޤ
+	<P>
+	ۡڡΥɥ쥹ʤɤ˥󥯤դϡΤޤޥɥ쥹ǤĤȡưǥ󥯤դ褦ˤʤޤ
+	<BR><P ALIGN="right"><A HREF="#top">ȥåפ</A></P>
+	<P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="invite"><B>¾Υ桼Υåȥ롼˾Ԥ:</B></A></FONT>
+<P>
+<B>ԥޥ</B>Ѥ뤳Ȥǡ¾Υ桼ߤåȥ롼˾Ԥ뤳Ȥޤ
+<P>
+<I>㤨:</I> /invite Jack 
+<P>
+ϤȡJack ˥ץ饤١ȥå졢åȥ롼ξԤ򤷤ޤ
+<P>
+ԥޥɤϡͰʾΥ桼ˤޤ ( "/invite Jack,Helen,Alf") ̾ϡޤǶڤ졢ġڡޤǤϤޤ
+<BR><P ALIGN="right"><A HREF="#top">ȥåפ</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="changeroom"><B>ѹ:</B></A></FONT>
+<P>
+¦ˤΤΥꥹȤǡäƤ桼ΥꥹȤɽƤޤưϡư򥯥åȡߤư༼ޤï⤤ʤϡꥹȤˤɽޤ <B>"/join #roomname"</B>ǤĤȤǡï⤤ʤ뤳Ȥޤ<P>
+<I>㤨:</I> /join #֤ 
+<P>
+ǤĤȡ֤˰ư뤳Ȥޤ
+<?php
+if (C_VERSION == "2")
+{
+	echo(C_REQUIRE_REGISTER == "0" ? "<P>Ͽ줤Ƥ桼ʤС" : "<BR><P>ϡ");
+	?>
+	ƱޥɤȤȤˤꡢޤξϡɤΥפꤿΤꤷʤФޤ: 0 ϥץ饤١ȥå, 1 ϸʥåȤǤ
+	<P>
+	<I>㤨:</I> /join 0 # 
+	<P>
+	ǤĤȡȤ򿷤ץ饤١ȥåȤȤƺޤȤ̾ˤäϡ뤳Ȥޤ
+	<P>
+	̾ˤϡޤХåå(\)ޤޤ<?php if (C_NO_SWEAR == "1") echo("ޤդޤޤ"); ?>
+	<?php
+}
+?>
+<BR><P ALIGN="right"><A HREF="#top">ȥåפ</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B>åȤκ˥ץեѹ:</B></FONT>
+<P>
+<B>ץե륳ޥ</B> ϡȤΥץեѹ뤳Ȥν륳ޥɤǤ˥å͡(桼̾)ȥѥɤѹǤޤ<BR> /profile ǤäƤ
+<BR><P ALIGN="right"><A HREF="#top">ȥåפ</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B>å䥳ޥɤƤӽФ:</B></FONT>
+<P>
+<B>! ޥ</B>ϡľǤäå䥳ޥɤƤӽФޤ<BR> /! ǤäƤ
+<BR><P ALIGN="right"><A HREF="#top">ȥåפ</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B>¾Υ桼:</B></FONT>
+<P>
+åȤκ˥桼̾(¦ΥꥹȤ)򥯥åȡ"username>"ȡåܥåǤޤεǽѤǡ¾Υ桼˴ñ˱뤳Ȥޤ
+<BR><P ALIGN="right"><A HREF="#top">ȥåפ</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="private"><B>ץ饤١ȥå:</B></A></FONT>
+<P>
+Υåȥ롼ˤ桼˥ץ饤١ȥåˤϡ<B>"/msg username messagetext"  "/to username messagetext"</B>ǤäƤ
+<P>
+<I>㤨СJack ˥ץ饤١ȥåꤿȤȡ:</I> /msg Jack ޤơ
+<P>
+åϤʤ Jack ʳˤɽޤ
+<P>
+ޤ¦Υåե졼Υ桼̾򥯥åȡñޤ
+<BR><P ALIGN="right"><A HREF="#top">ȥåפ</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="actions"><B>ư:</B></A></FONT>
+<P>
+ʤ߲򤷤ƤΤɽˤϡ<B>"/me action"</B>ǤäƤ
+<P>
+<I>㤨:</I> ⤷ Jack "/me ϤӤ򤷤" ǤĤȡ"<B>* Jack</B>" ϤӤ򤷤" ɽޤ
+<BR><P ALIGN="right"><A HREF="#top">ȥåפ</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="ignore"><B>桼̵뤹:</B></A></FONT>
+<P>
+Υ桼Υå̵뤹ϡ<B>"/ignore username"</B>ȥڡ̵ǤäƤ
+<P>
+<I>㤨:</I> /ignore Jack
+<P>
+ΥޥɤǤäִ֤顢Jack Υåϰ̵뤵ޤ
+<P>
+̵뤷Ƥ桼ΥꥹȤ򸫤ϡ<B>"/ignore"</B>ȥơ("")̵ǤäƤ
+<P>
+桼̵뵡ǽȤϡ<B>/ignore - username</B> ǤäƤ<P>
+<P>
+<I>㤨:</I> /ignore - Jack 
+<P>
+ǤĤȡJack ޤǤǤäƤåȤ줫Ǥĥå褦ˤʤޤ
+桼̾Ǥʤȡ̵ꥹȤƤΥ桼ޤ
+<P>
+Ͱʾ̵̾륳ޥɤǤĤȤϲǽǤ( "/ignore Jack,Helen,Alf"  "/ignore - Jack,Alf") ̾ϡޤǶڤ졢ġڡޤǤϤޤ
+<BR><P ALIGN="right"><A HREF="#top">ȥåפ</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="whois"><B>¾Υ桼ξ:</B></A></FONT>
+<P>
+¾Υ桼ξ(줿ʪ)򸫤뤿ˤϡ<B>"/whois username"</B> ȥڡ̵ǤäƤ
+<P>
+<I>㤨:</I> /whois Jack
+<P>
+Jack ȤΤϡΤꤿ桼̾ǤΥޥɤϡ˥ɥޤ
+<BR><P ALIGN="right"><A HREF="#top">ȥåפ</A></P>
+<P>
+<HR>
+
+<?php
+if (C_SAVE != "0")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="save"><B>å¸:</B></A></FONT>
+	<P>
+	ʬΥԥ塼˥åȤΥå¸ˤϡڡ̵ <B>command "/save n"</B>ǤäƤ
+	<P>
+	<I>㤨:</I> /save 5
+	<P>
+	ȤΤϡå¸ɽޤn ʤϡƤΥǡ¸ޤ
+	<BR><P ALIGN="right"><A HREF="#top">ȥåפ</A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+<HR>
+
+
+<P>
+<FONT SIZE="+2"><A NAME="moderator"><B><U>Ԥȥǥ졼ѤΥޥ</U></B></A></FONT> 
+
+<P>
+<FONT SIZE="+1"><A NAME="announce"><B>ʥ󥹥Ȥ:</B></A></FONT>
+<P>
+ԤϡƤ˥ʥ󥹤ޤ桼˹ΤȤˤϡȤƤΩޤ<B>ʥ󥹥ޥ</B>Ȥޤ
+<P>
+<I>㤨: /announce 룸飱֤ۤɥᥤƥʥ󥹤򤷤ޤ</I>
+<BR><P ALIGN="right"><A HREF="#top">ȥåפ</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="kick"><B>桼ɤФ:</B></FONT>
+<P>
+Ԥȥǥ졼ϡ<B>ɤФޥ</B>Ѥ뤳Ȥǡ桼򤽤ΥåȤɤФȤޤξ硢桼ϴԤǥ졼åȤˤʤФʤޤ
+<P>
+<I>㤨</I>Jack ɤФ:</I> /kick Jack</I>
+<BR><P ALIGN="right"><A HREF="#top">ȥåפ</A></P>
+<P>
+<HR>
+
+<?php
+if (C_BANISH != "0")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="banish"><B>桼:</B></A></FONT>
+	<P>
+	Ԥȥǥ졼ϡ桼ޤˤϡ<B>ޥ</B>ѤޤԤϴڡǤޤ<BR>
+	ԤϡԼȤ桼ˤʤƤ뤳ȤޤԤϡΥ桼ʱ뤳ȤǽǤ'<B>&nbsp;*&nbsp;</B>'ȤȤǡƤޤ
+	<P>
+	<I>㤨</I>Jack 桼̾äȤȡ : <I>/ban Jack</I>  <I>/ban * Jack</I>Ȥʤޤ
+	<BR><P ALIGN="right"><A HREF="#top">ȥåפ</A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="promote"><B>桼ǥ졼Ǥ̿:</B></A></FONT>
+<P>
+Ԥȥǥ졼ϡ <B>Ǥ̿ޥ</B>Ѥ뤳Ȥˤäơ¾Υ桼ǥ졼Ǥ̿ޤ
+<P>
+<I>㤨</I>Ǥ̿桼 Jack Ȥ:<I> /promote Jack</I>
+<P>
+Ԥǥ졼̤Υ桼᤹ǽȤޤεǽˤϥޥɤϤʤڡΤߤǼ¹ԲǽǤ
+<BR><P ALIGN="right"><A HREF="#top">ȥåפ</A></P>
+<P>
+
+
+</BODY>
+</HTML>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/japanese/regex.txt 0.15.0/chat/localization/japanese/regex.txt
--- 0.14.5/chat/localization/japanese/regex.txt	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/japanese/regex.txt	2004-04-01 03:07:34.000000000 -0600
@@ -0,0 +1 @@
+ja|japanese
\ No newline at end of file
Binary files 0.14.5/chat/localization/korean/flag.gif and 0.15.0/chat/localization/korean/flag.gif differ
diff -ruN 0.14.5/chat/localization/korean/localized.admin.php 0.15.0/chat/localization/korean/localized.admin.php
--- 0.14.5/chat/localization/korean/localized.admin.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/korean/localized.admin.php	2004-04-01 03:07:34.000000000 -0600
@@ -0,0 +1,61 @@
+<?php
+// File : korean.admin.php
+// Translation by Hongki Lee <genius@mail.chonga.pe.kr> & TaeHwan Bae <bth1202@hanmail.net>
+
+// extra header for charset
+$Charset = "euc-kr";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// Top frame
+define("A_MENU_0", "%s  ");
+define("A_MENU_1", "ϵ ");
+define("A_MENU_2", "ѵ ");
+define("A_MENU_3", "ȭ");
+define("A_MENU_4", "̸Ϻ");
+
+// Frame for registered users
+define("A_SHEET1_1", "ϵ ڰ  ");
+define("A_SHEET1_2", "ڸ");
+define("A_SHEET1_3", "");
+define("A_SHEET1_4", "ִ ");
+define("A_SHEET1_5", "   ĸ(,) иǾֽϴ.");
+define("A_SHEET1_6", " ");
+define("A_SHEET1_7", "");
+define("A_SHEET1_8", " ϰ ϵ ڰ ϴ.");
+define("A_SHEET1_9", "");
+define("A_SHEET1_10", "ѵ  Ͽ Ȯغʽÿ.");  
+define("A_SHEET1_11", " ");
+define("A_USER", "");
+define("A_MODER", "");
+define("A_PAGE_CNT", "%s / %s ");
+
+// Frame for banished users
+define("A_SHEET2_1", "ѵ ڿ  ȭ");
+define("A_SHEET2_2", "IP");
+define("A_SHEET2_3", " ȭ");
+define("A_SHEET2_4", "");
+define("A_SHEET2_5", "ⰣѾ");
+define("A_SHEET2_6", "4   (,) еǸ,  <B>*&nbsp;</B>'  ǥϸ  ȭ   ϴ.");
+define("A_SHEET2_7", "õ ڿ   Ǯݴϴ.");
+define("A_SHEET2_8", "  ڰ  ʽϴ.");
+
+// Frame for cleaning rooms
+define("A_SHEET3_1", " ȭ ");
+define("A_SHEET3_2", "\"⺻ ƴ ȭ\" Ұϸ شϴ    ϴ.");
+define("A_SHEET3_3", "õ ȭ ");
+define("A_SHEET3_4", " ȭ ϴ.");
+
+// Frame for sending mails
+define("A_SHEET4_0", "'chat/admin/mail4admin.php' script <BR>ʿ  ؾ մϴ.");
+define("A_SHEET4_1", "̸ ");
+define("A_SHEET4_2", "޴:");
+define("A_SHEET4_3", " ");
+define("A_SHEET4_4", ":");
+define("A_SHEET4_5", ":");
+define("A_SHEET4_6", "");
+define("A_SHEET4_7", " ̸ ϴ.");
+define("A_SHEET4_8", "̸  ߿ ο ߻߽ϴ.");
+define("A_SHEET4_9", "ּ, Ȥ  ϴ!");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/korean/localized.chat.php 0.15.0/chat/localization/korean/localized.chat.php
--- 0.14.5/chat/localization/korean/localized.chat.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/korean/localized.chat.php	2004-04-01 03:07:34.000000000 -0600
@@ -0,0 +1,220 @@
+<?php
+// File: korean.lang.php
+// Translation by Hongki Lee <genius@mail.chonga.pe.kr> & TaeHwan Bae <bth1202@hanmail.net>
+
+// extra header for charset
+$Charset = "euc-kr";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// welcome page
+define("L_TUTORIAL", " ");
+
+define("L_WEL_1", "ȭ  ");
+define("L_WEL_2", "ð Ŀ, ̸");
+define("L_WEL_3", " Ŀ ϴ.");
+
+define("L_CUR_1", "");
+define("L_CUR_2", " äԴϴ.");
+define("L_CUR_3", " ڰ  ȭ濡 ֽϴ.");
+define("L_CUR_4", " ڰ  ȭ濡 ֽϴ.");
+
+define("L_SET_1", "ϼ...");
+define("L_SET_2", "ڸ");
+define("L_SET_3", " α ȭ鿡 ǥ ..");
+define("L_SET_4", " Ʈ ̿ ŸӾƿ ֽϴ.");
+define("L_SET_5", "ȭ ..");
+define("L_SET_6", "⺻ ȭ");
+define("L_SET_7", "ϼ.");
+define("L_SET_8", "ڰ   ȭ ");
+define("L_SET_9", "ȭ ");
+define("L_SET_10", "");
+define("L_SET_11", "");
+define("L_SET_12", "ȭ ̸");
+define("L_SET_13", "");
+define("L_SET_14", "ȭ ");
+
+define("L_SRC", "  Ӱ 밡մϴ.:");
+
+define("L_SECS", "");
+define("L_MIN", "");
+define("L_MINS", "");
+
+// registration stuff:
+define("L_REG_1", "йȣ");
+define("L_REG_1r", "(  츸 )");
+define("L_REG_2", " /");
+define("L_REG_3", "");
+define("L_REG_4", "  ");
+define("L_REG_5", " ");
+define("L_REG_6", " ");
+define("L_REG_7", "йȣ");
+define("L_REG_8", "emailּ");
+define("L_REG_9", "Ͽ ߽ϴ.");
+define("L_REG_10", "ڷ");
+define("L_REG_11", "");
+define("L_REG_12", "  ϰ ֽϴ.");
+define("L_REG_13", "ڸ ϰ ֽϴ.");
+define("L_REG_14", "α");
+define("L_REG_15", "α");
+define("L_REG_16", "");
+define("L_REG_17", "  Ǿϴ.");
+define("L_REG_18", "忡  ȭ Ѱܳϴ.");
+define("L_REG_19", " Ͻðڽϱ?");
+define("L_REG_20", "");
+define("L_REG_21", " ");
+define("L_REG_22", "ƴϿ");
+define("L_REG_25", "ݱ");
+define("L_REG_30", "̸");
+define("L_REG_31", "");
+define("L_REG_32", "Ȩ");
+define("L_REG_33", "/whoisɿ emailּ ");
+define("L_REG_34", "  ");
+define("L_REG_35", "");
+define("L_REG_36", "𱹾");
+define("L_REG_37", "<span class=\"error\">*</span> ǥõ κ ݵ äֽʽÿ.");
+define("L_REG_39", "ڿ ȭ ŵǾϴ.");
+define("L_REG_45", "");
+define("L_REG_46", "");
+define("L_REG_47", "");
+
+// e-mail validation stuff
+define("L_EMAIL_VAL_1", "ȭ  ݿǾϴ.");
+define("L_EMAIL_VAL_2", "äü   ȯմϴ.");
+define("L_EMAIL_VAL_Err", " (Internal Error)Դϴ. <a href=\"mailto:%s\">%s</a>  ֽʽÿ.");
+define("L_EMAIL_VAL_Done", "н尡  e-mail ּҷ ߼۵Ǿϴ.");
+
+// admin stuff
+define("L_ADM_1", "%s ̻  ȭ  ƴմϴ.");
+define("L_ADM_2", "̻ ϵ ڰ ƴմϴ.");
+
+// error messages
+define("L_ERR_USR_1", "ڴ ̹ Դϴ.");
+define("L_ERR_USR_2", "ڸ ؾմϴ.");
+define("L_ERR_USR_3", " ڸ ϵ Դϴ. ٸ  ֽʽÿ.");
+define("L_ERR_USR_4", "н带  ϰ 弼.");
+define("L_ERR_USR_5", "ڸ Էֽʽÿ.");
+define("L_ERR_USR_6", "йȣ Էֽʽÿ.");
+define("L_ERR_USR_7", "emailּҸ Էֽʽÿ.");
+define("L_ERR_USR_8", "ùٸ emailּҸ ־ֽʽÿ.");
+define("L_ERR_USR_9", " ڸ ̹ ϵǾֽϴ.");
+define("L_ERR_USR_10", "ùٸ   ̳ йȣԴϴ.");
+define("L_ERR_USR_11", " Դϴ.");
+define("L_ERR_USR_12", " ̹Ƿ   ϴ.");
+define("L_ERR_USR_13", "  ؼ   ϼžմϴ.");
+define("L_ERR_USR_14", "ȭ Ͻñ    ϼžմϴ.");
+define("L_ERR_USR_15", "̸  ϼžմϴ.");
+define("L_ERR_USR_16", "ڸ ̳ ĸ, ׸   ȵ˴ϴ.");
+define("L_ERR_USR_17", " ȭ ̻  ʽϴ.    ϴ.");
+define("L_ERR_USR_18", " ̸ Banished word մϴ.");
+define("L_ERR_USR_19", "ÿ ϳ ̻ ȭ濡   ϴ.");
+define("L_ERR_USR_20", "ȭκ   Դϴ.");
+define("L_ERR_ROM_1", "̸ ̳ ĸ(,) ׸  (\)  ȵ˴ϴ.");
+define("L_ERR_ROM_2", "ȭ̸   ܾ ̽ϴ.");
+define("L_ERR_ROM_3", " ȭ  · մϴ.");
+define("L_ERR_ROM_4", "߸ ȭ̸.");
+
+// users frame or popup
+define("L_EXIT", "");
+define("L_DETACH", "â");
+define("L_EXPCOL_ALL", " Ȯ/");
+define("L_CONN_STATE", " ");
+define("L_CHAT", "ȭ");
+define("L_USER", " ");
+define("L_USERS", " ");
+define("L_NO_USER", "ƹ");
+define("L_ROOM", "ȭ");
+define("L_ROOMS", "ȭ");
+define("L_EXPCOL", "ȭ Ȯ/");
+define("L_BEEP", "ڰ   On/Off");
+define("L_PROFILE", "  ǥ");
+define("L_NO_PROFILE", "No profile");
+
+// input frame
+define("L_HLP", "");
+define("L_BAD_CMD", "ɾ ƲȽϴ.");
+define("L_ADMIN", "%s ̹ Դϴ!");
+define("L_IS_MODERATOR", "%s ̹ Դϴ!");
+define("L_NO_MODERATOR", "常   ִ Դϴ.");
+define("L_MODERATOR", "%s ݺ  ȭ Դϴ.");
+define("L_NONEXIST_USER", "%s   濡 ϴ.");
+define("L_NONREG_USER", "%s ϵ ʾҽϴ.");
+define("L_NONREG_USER_IP", " IP : %s.");
+define("L_NO_KICKED", "%s ̰ų ̹Ƿ ߹  ϴ.");
+define("L_KICKED", "%s ߹Ǿϴ.");
+define("L_NO_BANISHED", "%s ̰ų ̹Ƿ    ϴ.");
+define("L_BANISHED", "%s  Ǿϴ.");
+define("L_SVR_TIME", " ð: ");
+define("L_NO_SAVE", " ޼ ϴ!");
+define("L_NO_ADMIN", "ڿԸ ־ Դϴ.");
+define("L_ANNOUNCE", "˸");
+define("L_INVITE", "%s <a href=\"#\" onClick=\"window.parent.runCmd('%s','%s')\">%s</a> 濡  û߽ϴ.");
+define("L_INVITE_REG", " ̹濡  ڵ Ǿ־ մϴ.");
+define("L_INVITE_DONE", "%s û߽ϴ.");
+define("L_OK", "");
+
+// help popup
+define("L_HELP_TIT_1", "ǥ( ׸)");
+define("L_HELP_TIT_2", "ȭ ٹ̱");
+define("L_HELP_FMT_1", "&lt;B&gt; &lt;/B&gt;, &lt;I&gt; &lt;/I&gt; or &lt;U&gt; &lt;/U&gt; ±׵ ̿ ۾, ,    ֽϴ. .<BR>, &lt;B&gt;ȳϼ?&lt;/B&gt; <B>ȳϼ? </B> ǥõ˴ϴ.");
+define("L_HELP_FMT_2", "۸ũ ޼ ߰ϰ  ٸ ±׾ ڵ URL̳ emailּҸ ؼϿ ũ  ݴϴ.");
+define("L_HELP_TIT_3", "ɵ");
+define("L_HELP_USR", "");
+define("L_HELP_MSG", "޼");
+define("L_HELP_ROOM", "");
+define("L_HELP_CMD_0", "{} ݵ ʿ ̰,  []  Դϴ. ");
+define("L_HELP_CMD_1a", "ȭ鿡 ǥõ ޼   մϴ. ּ 5̻Դϴ.");
+define("L_HELP_CMD_1b", "ȭ ȭ ϰ, n ֱ ޼ ǥݴϴ. n ּҰ 5Դϴ.");
+define("L_HELP_CMD_2a", "ʴ ȭ   մϴ.<BR>࿡ 3ϰų   ȭ   ʰų 10  ϵ մϴ.");
+define("L_HELP_CMD_2b", "޼    ð մϴ. ð  ʰų 3    ʰų 10 Žð ۵˴ϴ.");
+define("L_HELP_CMD_3", "޼   ݴ մϴ.");
+define("L_HELP_CMD_4", "ٸ ȭ濡 մϴ.,  ְ ȭ   ϰԵ˴ϴ.<BR>n 0̸ , 1̸ Դϴ.   Դϴ.");
+define("L_HELP_CMD_5", " ޼  ȭ ϴ.");
+define("L_HELP_CMD_6", "ȭ  ,  ޼ Űźմϴ.<BR>Ϸ ȭ - Բ ϸ ˴ϴ. ȭ  ʰ - ϸ Űźڸ  Ǯݴϴ.<BR>ɼ   Űź  â  ݴϴ.");
+define("L_HELP_CMD_7", "ֱٿ Է ޼ ٽ θϴ.");
+define("L_HELP_CMD_8", "޼ µ  Ÿ  ð մϴ.");
+define("L_HELP_CMD_9", "忡 ־ ,  ڸ ȭκ ߹մϴ.");
+define("L_HELP_CMD_10", "( ڿ) ӼӸ ϴ.");
+define("L_HELP_CMD_11", "   ݴϴ.");
+define("L_HELP_CMD_12", "  â  ݴϴ.");
+define("L_HELP_CMD_13", " ȭ  ڿ  ˷ִ  մϴ.");
+define("L_HELP_CMD_14", " ȭ ̳ ڿԸ ־ ,  ȭ濡 ִ ϵ ٸ ڿ   οմϴ.");
+define("L_HELP_CMD_15", "ȭâ ޼  ֱ 5 ޼ ݴϴ.");
+define("L_HELP_CMD_16", " ޼  ֱ n ޼ HTMLϷ մϴ. n    尡 ޼ ˴ϴ.");
+define("L_HELP_CMD_17", "ڿԸ ־  ü ȭ ڿ ޼ ϴ.");
+define("L_HELP_CMD_18", "ٸ ȭ ڸ ûմϴ.");
+define("L_HELP_CMD_19", "ڰ  ð ̳ ڰ ȭκ ڸ    ֵ մϴ. ߿ ڰ  װ ִ ȭ溸ٴ ٸ ȭ濡 ȭ  ϵ  ڸ ų  , '<B>&nbsp;*&nbsp;</B>' ؼ,  ȭ濡       ֽϴ.");
+define("L_HELP_CMD_20", "Describe what you're doing without refer yourself.");
+
+// messages frame
+define("L_NO_MSG", " ƹ ޼ ϴ.");
+define("L_TODAY_DWN", "  ޼ Ʒ ۵˴ϴ");
+define("L_TODAY_UP", "  ޼  ۵˴ϴ");
+
+// message colors
+$TextColors = array(	"Black" => "#000000",
+					"Red" => "#FF0000",
+					"Green" => "#009900",
+					"Blue" => "#0000FF",
+					"Purple" => "#990099",
+					"Dark red" => "#990000",
+					"Dark green" => "#006600",
+					"Dark blue" => "#000099",
+					"Maroon" => "#996633",
+					"Aqua blue" => "#006699",
+					"Carrot" => "#F5671B");
+
+// ignored popup
+define("L_IGNOR_TIT", "Űź");
+define("L_IGNOR_NON", "Űź  .");
+
+// whois popup
+define("L_WHOIS_ADMIN", "");
+define("L_WHOIS_MODER", "");
+define("L_WHOIS_USER", "");
+
+// Notification messages of user entrance/exit
+define("L_ENTER_ROM", "%s  ϼ̽ϴ.");
+define("L_EXIT_ROM", "%s  ̽ϴ.");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/korean/localized.tutorial.php 0.15.0/chat/localization/korean/localized.tutorial.php
--- 0.14.5/chat/localization/korean/localized.tutorial.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/korean/localized.tutorial.php	2004-04-01 03:07:35.000000000 -0600
@@ -0,0 +1,641 @@
+<?php
+// File : korean.tutorial.php
+// Translation by Hongki Lee <genius@mail.chonga.pe.kr> & TaeHwan Bae <bth1202@hanmail.net>
+
+// Get the names and values for vars sent by the script that called this one
+if (isset($HTTP_GET_VARS))
+{
+	while(list($name,$value) = each($HTTP_GET_VARS))
+	{
+		$$name = $value;
+	};
+};
+?>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+
+<HEAD>
+<TITLE><?php echo(APP_NAME." - ".APP_VERSION); ?>  ѱ   </TITLE>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=euc-kr">
+<STYLE>
+A.topLink
+{
+	text-decoration: underline;
+	color: #0000C0;
+}
+
+A.topLink:hover, A.topLink:active
+{
+	color: #FF9900;
+	text-decoration: none;
+	font-weight: 800;
+}
+
+.redText
+{
+	font-weight: 800;
+	color: #FF0000;
+}
+</STYLE>
+</HEAD>
+
+<BODY BGCOLOR="#CCCCFF">
+<P><A NAME="top"></P>
+<TABLE BORDER="5" CELLPADDING="5">
+<TR>
+	<TD><FONT SIZE="+2">  </FONT></TD>
+</TR>
+</TABLE><BR>
+
+<P CLASS="redText">
+: Netscapeڴ شϴ  ⺻ encoding ؾմϴ. ׷  ڵ ǥ ǥõ Դϴ. (View)/ڼ(CharacterSet)/ѱ(ڵ) Ͻð,  ޴ ⺻  Ͻʽÿ.
+</P>
+
+<?php
+if (C_MULTI_LANG == "1") 
+{
+	?>
+	<A HREF="#language" CLASS="topLink"> </A><BR>
+	<?php
+}
+?>
+<A HREF="#login" CLASS="topLink">α</A><BR>
+<A HREF="#register" CLASS="topLink"> </A><BR>
+<A HREF="#modProfile" CLASS="topLink"> <?php if (C_SHOW_DEL_PROF == "1") echo("/"); ?></A><BR>
+<?php
+if (C_VERSION == "2") 
+{
+	?>
+	<A HREF="#create_room" CLASS="topLink">ȭ </A><BR>
+	<?php
+};
+if ($Ver == "H") 
+{
+	?>
+	<A HREF="#connection_state" CLASS="topLink">ӻ¿  </A><BR>
+	<?php
+};
+?>
+<A HREF="#sending" CLASS="topLink">޼ </A><BR>
+<A HREF="#users_list" CLASS="topLink"> Ͽ </A><BR>
+<A HREF="#exit" CLASS="topLink">ȭ </A><BR>
+<A HREF="#users_popup" CLASS="topLink"> ȭ    </A><BR>
+<P>
+<A HREF="#customize" CLASS="topLink">ȭ ȭ     ɵ</A><BR>
+<P>
+<A HREF="#commands" CLASS="topLink">Ư¡  :</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#help" CLASS="topLink"> </A><BR>
+<?php
+if (C_USE_SMILIES == "1")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#smilies" CLASS="topLink">ǥ( ׸)</A><BR>
+	<?php
+};
+if (C_HTML_TAGS_KEEP != "none")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#text" CLASS="topLink">ؽƮ ٹ̱</A><BR>
+	<?php
+};
+?>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#invite" CLASS="topLink"> ûϱ</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#changeroom" CLASS="topLink">ȭ ٲٱ</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#private" CLASS="topLink">ͼӸϱ</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#actions" CLASS="topLink">Actions</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#ignore" CLASS="topLink">ٸ  ޼ Űźϱ</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#whois" CLASS="topLink">ٸ   </A><BR>
+<?php
+if (C_SAVE != "0")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#save" CLASS="topLink">޼ ϱ</A><BR>
+	<?php
+};
+?>
+<P>
+<A HREF="#moderator" CLASS="topLink">ڿ   </A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#announce" CLASS="topLink"> ޼ </A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#kick" CLASS="topLink"> ߹ϱ</A><BR>
+<?php
+if (C_BANISH != "0")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#banish" CLASS="topLink"> ϱ</A><BR>
+	<?php
+};
+?>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#promote" CLASS="topLink">  ֱ</A><BR>
+<P>
+<HR>
+<HR>
+
+
+<?php
+if (C_MULTI_LANG == "1") 
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="language"><B> :</B></A></FONT>
+	<P>
+	Ʒ  ϴ  ϴ  Դϴ. Ͻô  Ͻø    ڷ ǥõ˴ϴ.
+	<P ALIGN="center">
+	<IMG SRC="images/tutorials/flags.gif" HEIGHT="44" WIDTH="424" ALT="   ">
+	<BR><P ALIGN="right"><A HREF="#top"></A></P>
+	<HR>
+	<?php
+}
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="login"><B>α:</B></A></FONT>
+<P>
+̹   ¶, ̸ йȣ ְ Ͻø ˴ϴ. ׸  ȭ  Ŀ ȭ  ư ϸ ˴ϴ.<BR>
+<?php
+if (C_REQUIRE_REGISTER == "1")
+{
+	?>
+	<P>
+	ƴϸ <A HREF="#register"></A> ؾմϴ.
+	<?php
+}
+else
+{
+	?>
+	<P>
+	ƴϸ <A HREF="#register"></A>ϰų     ȭ   ֽϴ.
+	ȭ  Ƿ ϴ ѹ α׾ƿϸ ٸ ڰ  ȭ ȭ濡   ֽϴ.
+	<?php
+}
+?>
+<BR><P ALIGN="right"><A HREF="#top"></A></P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="register"><B> :</B></A></FONT> 
+<P>
+  ʾҴٸ <?php if (C_REQUIRE_REGISTER == "0") echo("( ϰ ʹٸ)"); ?>,  ɼ Ͻʽÿ.  ˾ â ߰ ˴ϴ.
+<P>	
+<UL>
+	<LI>,  ̸<?php if (!C_EMAIL_PASWD) echo(" йȣ"); else echo("");?> ԷϽʽÿ.  ̸ ȭ濡 ڵ ǥõǴ ̸Դϴ. ̳ ĸ(,) ׸ (\)   ϴ. 
+ <?php if (C_NO_SWEAR == "1") echo(" ׸ \" ܾ(swear word)\"   ϴ.."); ?>
+	<LI>ι°, ̸ email ּҸ ԷϽʽÿ. ȭ   ؼ ռ    Էϼžϸ, ̳ Ȩ Է ŵ ˴ϴ.
+	<LI>Ȩ  ִٸ URL ŵ ˴ϴ.
+	<LI>𱹾 ʵ ߿ ٸ ڵ鿡 ڰ    ˸  ֵ ݴϴ.
+	<LI>, whois  emailּҸ    üũڽԴϴ.  ϸ üũϽø ˴ϴ.
+	<LI>׸  []ư , ˴ϴ. ׸ ϵ   ִµ, ̶ [ݱ] ø ˴ϴ.
+</UL>
+ ϵ ڴ ڱڽ  ʿ /  ֽϴ.
+<BR><P ALIGN="right"><A HREF="#top"></A></P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="register"><B>  /:</B></A></FONT> 
+<P>
+<A NAME="modProfile"></A> ϵ ڴ  <?php if (C_SHOW_DEL_PROF == "1") echo("/"); ?> մϴ.<BR>
+<BR><P ALIGN="right"><A HREF="#top"></A></P>
+<P>
+<HR>
+
+<?php
+if (C_VERSION == "2") 
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="create_room"><B>ȭ :</B></A></FONT> 
+	<P>
+	ϵ ڴ ȭ   ֽϴ.  ȭ ǥõ , ȭ ̸ ˾ƾ   ֽϴ.
+	<P>
+	ȭ ̸ ĸ(,) (\)   ϴ. <?php if (C_NO_SWEAR == "1") echo(" \" ܾ(swear words)\"    ϴ."); ?>
+	<BR><P ALIGN="right"><A HREF="#top"></A></P>
+	<P>
+	<HR>
+	<?php
+};
+if ($Ver == "H")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="connection_state"><B> ¿ :</B></A></FONT> 
+	<P>
+	ȭ    ,   ¸ ǥϰ ֽϴ.
+	<P>	
+	<UL>
+		<LI><IMG SRC="images/connectOff.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="">  ʿ ;
+		<LI><IMG SRC="images/connectOn.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="">   ;
+		<LI><IMG SRC="images/connectError.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="ӽ"> ӿ  .
+	</UL>
+	<P>
+	°   ư Ŭϸ   õմϴ.
+	<BR><P ALIGN="right"><A HREF="#top"></A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="sending"><B>޼ :</B></A></FONT> 
+<P>
+ȭ濡 ޼ , ȭ Ʒ ִ ȭԷâ Է ϰ Ű ˴ϴ. ٸ ڵ ޼ ޼ â  پ ũѵ˴ϴ.
+<?php if (C_NO_SWEAR == "1") echo("\" ܾ(swear words)\" Ե  ޼κ ŵ˴ϴ."); ?>
+<P>
+ȭԷâ ʿ ޼    ֽϴ.
+<BR><P ALIGN="right"><A HREF="#top"></A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="users_list"><B> Ͽ :</B></A></FONT> 
+<P>
+<OL>
+	     ΰ ⺻ Ư¡ ִ:<BR>
+	<!-- To update
+	<LI>(<IMG SRC="images/whoisOff.gif" WIDTH=5 HEIGHT=9 BORDER=0 ALT="whois">) ȭ տ ǥõǸ, Ŭ whois â ߰ ˴ϴ.  ڴ տ - ǥõ˴ϴ.
+	-->
+	<LI>a little icon that shows gender is displayed before the nick of a registered user (clicking on it will launch the <A HREF="#whois">whois popup</A> for this user), while unregistered users have nothing but blank spaces displayed before their nick;<BR>
+	<LI>̳   ȭ ü ǥõ˴ϴ.
+</OL>
+<P><I> </I>, Ʒ ׸     ϴ.:
+<TABLE BORDER=0 CELLSPACING=10>
+<TR>
+	<TD>
+		<IMG SRC="images/tutorials/usersList.gif" WIDTH=128 HEIGHT=145 BORDER=0 ALT=" ">
+	</TD>
+	<TD>
+	<UL>
+		<LI>Nicolas ̰ų Դϴ.<BR><BR>
+		<!-- To update
+		<LI>lolo Jezek2 ٸ   ϵ Դϴ.<BR>
+		<LI>Mary  Դϴ.
+		-->
+		<LI>alien (whose gender is unknown), Jezek2 and Caridad are registered users with no extra "power" for the phpMyChat room;<BR><BR>
+		<LI>lolo is a simple unregistered user.
+	</UL>
+	</TD>
+</TR>
+</TABLE>
+<BR><P ALIGN="right"><A HREF="#top"></A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="exit"><B>ȭ :</B></A></FONT>
+<P>
+ȭ ؼ, ȭ   [] Ŭϰų, Ʒ ɾ ȭԷâ Էϸ ˴ϴ <BR>
+/exit<BR>
+/bye<BR>
+/quit
+<BR>
+<I>  :</I> /quit  ô!
+<P>
+ ޼ ȭ鿡 " ô!" ǥϰ ȭ ϴ.
+<BR><P ALIGN="right"><A HREF="#top"></A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="users_popup"><B> ȭ    :</B></A></FONT> 
+<P>
+ ӵ ڼ Ŭϰų, ȭ߿   <IMG SRC="images/popup.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT=" Ʈ"> Ŭؼ â    ǽð    ֽϴ.<BR>
+ڰ 3  ȭ濡,  â 񿡼   ֽϴ.
+<P>
+ â ܿ <IMG SRC="images/sound.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="">  ڰ  Ҹ ϴ.
+<BR><P ALIGN="right"><A HREF="#top"></A></P>
+<P>
+<HR>
+<HR>
+
+
+<P>
+<FONT SIZE="+1"><A NAME="customize"><B>ȭ ȭ     ɵ:</B></A></FONT>
+<P>
+ȭ ȭ ϰ ϴ    ֽϴ.  ٲٴ  ѵ, ȭ Է â   ־ְ Enter ⸸ ϸ ˴ϴ.
+<P>
+<UL>
+	<?php
+	if ($Ver == "H")
+	{
+		?>
+		<LI> <B> clear </B> ȭ  ȭ ְ,  ֱ 5 ޼ ݴϴ.<BR> ǥ  ʰ "/clear"  Էϸ ˴ϴ.
+		<P>
+		<?php
+	}
+	else
+	{
+		?>
+		<LI> <B> order </B> ȭ   ֱ ȭ ޼  Ʒ  ǥ ΰ   ΰ ݴϴ.. <BR>  ǥ  ʰ "/order"  Էϸ ˴ϴ. 
+		<P>
+		<?php
+	};
+	?>
+	<LI> <B>notify </B> ٸ ڰ ȭ  ˸ ޼   θ ϵ ݴϴ. ⺻ ɼ 
+	<?php echo(C_NOTIFY ? "" : ""); ?> Ǿ ְ, ˸ ޼ <?php echo(C_NOTIFY ? " " : " "); ?> Դϴ.<BR>ǥ  ʰ "/notify" Էϸ ˴ϴ.
+	<P>
+	<LI> <B>timestamp </B> ޽  ð   θ   ֽϴ. ⺻ <?php echo(C_SHOW_TIMESTAMP ? "ֱ" : " ʱ"); ?> Ǿ ֽϴ..<BR>ǥ  ʰ "/timestamp" Էϸ ˴ϴ.
+	<P>
+	<LI> <B>refresh </B> ޼   ֱ ȭ     ֽϴ. ⺻  <?php echo(C_MSG_REFRESH); ?>ʷ Ǿ ֽϴ.  ֱ⸦ ٲٷ ǥ  ʰ "/refresh n" Էϰ ο ֱ n ʸŭ ð ־ָ ˴ϴ. 
+	<P>
+	<I> :</I> /refresh 5
+	<P>
+	   ֱ⸦ 5ʷ ٲپ ݴϴ. *, ࿡ n 3    ȵ˴ϴ. (ȭ鿡  ۵ ö  ٸ ޼  ʰ   ֽϴ.)*
+	<P>
+	<?php
+	if ($Ver == "L")
+	{
+		?>
+		<LI> <B>show </B> ȭ鿡  ޼ ǥ  ݴϴ. ⺻ ٲٷ, ǥ  ʰ "/show n" Էϸ ˴ϴ.  n    Դϴ.
+		<P>
+		<I> :</I> /show 50
+		<P>
+		  ȭ鿡 50 ο ޼ ֵ մϴ. ࿡  ȭ鿡 ǥõ   ũѹٰ Ÿ ˴ϴ.
+		<?php
+	}
+	else
+	{
+		?>
+		<LI><B>show last </B> ȭ   <I>n</I> ޼ ȭ鿡 ǥϵ մϴ.
+		ǥ  ʰ "/show n"̳ "/last n" Էϸ ˴ϴ. n ǥ  Դϴ.
+		<P>
+		<I> :</I> /show 50 or /last 50
+		<P>
+		ȭ  50 ο ޼ ֵ մϴ. ࿡  ȭ鿡 ǥõ   ũѹٰ Ÿ ˴ϴ.
+		<?php
+	};
+	?>
+	<BR><P ALIGN="right"><A HREF="#top"></A></P>
+	<P>
+</UL>
+<HR>
+<HR>
+
+
+<P>
+<FONT SIZE="+2"><A NAME="commands"><B><U>Ư¡  </U></B></A></FONT> 
+<P>
+
+<FONT SIZE="+1"><A NAME="help"><B> </B></A></FONT>
+<P>
+ȭ濡 ϴ ϸ, <IMG SRC="images/helpOff.gif" WIDTH=15 HEIGHT=15 BORDER=0 ALT="?">   Ŭؼ  â   ֽϴ. ȭ Է â <B>"/help"  "/?" </B> Էص ˴ϴ. 
+<BR><P ALIGN="right"><A HREF="#top"></A></P>
+<P>
+<P>
+<HR>
+
+<?php
+if (C_USE_SMILIES == "1")
+{
+	include("./lib/smilies.lib.php");
+	$Nb = count($SmiliesTbl);
+	$ResultTbl = Array();
+	DisplaySmilies($ResultTbl,$SmiliesTbl,$Nb,"tutorial");
+	unset($SmiliesTbl);
+	?>
+	<FONT SIZE="+1"><A NAME="smilies"><B>ǥ( ׸):</B></A></FONT>
+	<P>޼  ׸   ֽϴ. Ʒ  ׸ ǥ  ִ  ڵԴϴ.
+	<P ALIGN="center">
+	<TABLE BORDER=0 CELLPADDING=3 CELLSPACING=5>
+	<?php
+	$i = "0";
+	$Nb = count($ResultTbl);
+	while($i < $Nb)
+	{
+		if ($i > 0) echo("\t");
+		echo("<TR VALIGN=\"BOTTOM\">\n");
+		echo("$ResultTbl[$i]");
+		echo("\t</TR>\n\t<TR>\n");
+		$i++;
+		echo("$ResultTbl[$i]");
+		echo("\t</TR>\n");
+		$i++;
+	};
+	unset($ResultTbl);
+	?>
+	</TABLE>
+	<P>
+	<I></I>, "ȳ ö :)" Է ϸ ȳ ö <IMG SRC="images/smilies/smile1.gif" WIDTH=15 HEIGHT=15 ALT=":)"> ǥõ Դϴ.
+	<BR><P ALIGN="right"><A HREF="#top"></A></P>
+	<P>
+	<HR>
+	<?php
+};
+
+if (C_HTML_TAGS_KEEP != "none")
+{
+	?>
+	<FONT SIZE="+1"><A NAME="text"><B> ٹ̱:</B></A></FONT>
+	<P>
+	ڴ , ,  &LT;B&GT; &LT;/B&GT, &LT;I&GT; &LT;/I&GT; ׸ &LT;U&GT; &LT;/U&GT   HTML ±׸ Ͽ ǥ  ֽϴ.
+	<P>
+	<I> </I>, &LT;B&GT; &LT;/B&GT; ̷ <B> </B> ǥõ ̴ϴ..
+	<P>
+	ڿ ּҳ URL  ۸ũ , ׳ (HTML± )  ּҸ Էϸ ˴ϴ. ۸ũ ڵ  ϴ.
+	<BR><P ALIGN="right"><A HREF="#top"></A></P>
+	<P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="invite"><B> ûϱ:</B></A></FONT>
+<P>
+<B>invite </B> ڸ û  ֽϴ.
+<P>
+<I> :</I> /invite Jack
+<P>
+̶ ϸ Jack ͼӸ  ȭ濡 ׸ ûѴٴ ޼  ̴ϴ.  ޼ û  ִ ȭ ٷ  ִ ũ ϰ ֽϴ.
+<P>
+"/invite Jack,Helen,Alf"  ϸ   û  ֽϴ. ݵ  ĸ(,) ڸ ؾմϴ.
+<BR><P ALIGN="right"><A HREF="#top"></A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="changeroom"><B>ȭ ٲٱ:</B></A></FONT>
+<P>
+ ȭ  ȭ ȭ濡 ִ   ݴϴ.  ȭ濡 ٸ ȭ  Ѵٸ, ܼ ٸ ȭ Ŭϸ ˴ϴ.   Ͽ ǥõ ʽϴ. ǥ  <B>"/join #ȭ̸" </B>ε ٲ  ֽϴ.
+<P>
+<I> :</I> /join #RedRoom 
+<P>
+  ϸ RedRoom Űܰϴ.
+<?php
+if (C_VERSION == "2")
+{
+	echo(C_REQUIRE_REGISTER == "0" ? "<P>ϵ ڶ " : "<BR><P>");
+	?>
+	Ƹ Ʒ  ϸ ο     Դϴ. 0̶  , 1(⺻)   ȭ  Դϴ. 
+	<P>
+	<I> :</I> /join 0 #MyRoom 
+	<P>
+	 ο  ȭ   ̵մϴ. (  ȭ濡   ̸  ʾ մϴ.)
+	<P>
+	ȭ ̸ ĸ(,) (\)   ϴ. <?php if (C_NO_SWEAR == "1") echo(" \" ܾ\"    ϴ."); ?>
+	<?php
+}
+?>
+<BR><P ALIGN="right"><A HREF="#top"></A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B>ȭ濡 ڽ  ϱ:</B></FONT>
+<P>
+<B>profile </B> ڽ    ֵ â  ݴϴ. ⼭ йȣ ȭ ٲ  ϴ.(  ó α ȭ鿡 մϴ.) <BR> /profile̶ Էϸ ˴ϴ.
+<BR><P ALIGN="right"><A HREF="#top"></A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B> Էߴ  ޼  ҷ:</B></FONT>
+<P>
+<B>! </B>  Էµ ޼ ҷݴϴ.<BR> /! Էϸ ˴ϴ.
+<BR><P ALIGN="right"><A HREF="#top"></A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B>Ư ڿ ϱ:</B></FONT>
+<P>
+ Ͽ ٸ  ̸ ѹ Ŭϸ  ̸ ȭ Էâ "ȭ>"  ǥõ˴ϴ. ȭ ޼ տ  Ǹ,  ޼  Ȯϴ.
+<BR><P ALIGN="right"><A HREF="#top"></A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="private"><B>ͼӸ ϱ:</B></A></FONT>
+<P>
+ͼӸ  ؼ <B>"/msg ȭ ޼" "/to ȭ ޼"</B> ǥ  ԷϽø ˴ϴ.
+<P>
+<I> ,  ̸ Jack̶:</I> "/msg Jack ȳ? ?"  Էϸ˴ϴ.
+<P>
+ ޼ Jack οԸ ǥõ Դϴ.
+<P>
+̰ ȭ ǥâ ޼   ȭ Ŭϸ ڵ  Էâ Է â ߰˴ϴ.
+<BR><P ALIGN="right"><A HREF="#top"></A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="actions"><B>Actions:</B></A></FONT>
+<P>
+To describe what you're doing you can use the <B>command "/me action"</B> without quotes.
+<P>
+<I>For example:</I> If Jack sends the message "/me is smoking a cigarette" the message frame will shown "<B>* Jack</B>" is smoking a cigarette".
+<BR><P ALIGN="right"><A HREF="#top"></A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="ignore"><B>ٸ  ޼ Űźϱ:</B></A></FONT>
+<P>
+ٸ   ޼  , "/ignore username" ǥ  ԷϽø ˴ϴ.
+<P>
+<I> :</I> /ignore Jack
+<P>
+   ĺʹ  ޼  ʰ ˴ϴ.
+<P>
+ źڷ    ׳ <B>"/ignore"</B> ǥ  Էϸ ˴ϴ.
+<P>
+ źθ  Ϸ <B>"/ignore - username"</B> ǥ  ־ָ ˴ϴ.    "-"  ־ִ Դϴ. 
+<P>
+<I> :</I> /ignore - Jack 
+<P>
+  ĺʹ Jack ޼   ְ ˴ϴ. ࿡ "-"ڿ  ̸    ź 
+  ˴ϴ.
+<P>
+"/ignore Jack,Helen,Alf"  "/ignore - Jack,Alf"    ĸ(,)  ڸ  Ȥ
+  ֽϴ.
+<BR><P ALIGN="right"><A HREF="#top"></A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="whois"><B>ٸ    :</B></A></FONT>
+<P>
+ٸ     ؼ <b>"/whois username"</B> ǥ  Էϸ ˴ϴ.
+<P>
+<I> :</I> /whois Jack
+<P>
+̸ 'Jack'   â   Դϴ.
+<BR><P ALIGN="right"><A HREF="#top"></A></P>
+<P>
+<HR>
+
+<?php
+if (C_SAVE != "0")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="save"><B>޼ ϱ:</B></A></FONT>
+	<P>
+	ڽ ǻͿ HTML  · Ϸ  쿡, <B>"/save n"</B> ǥ  Էϸ ˴ϴ.  n  ޼ Դϴ.
+	<P>
+	<I> :</I> /save 5
+	<P>
+	5 ޼ ˴ϴ. ࿡ n ٸ 尡  ȭ ޼  ϰ ˴ϴ.
+	<BR><P ALIGN="right"><A HREF="#top"></A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+<HR>
+
+
+<P>
+<FONT SIZE="+2"><A NAME="moderator"><B><U>ڿ   </U></B></A></FONT> 
+
+<P>
+<FONT SIZE="+1"><A NAME="announce"><B> ޼ :</B></A></FONT>
+<P>
+<B>announce </B> ڴ  ڿ    ֽϴ.
+<P>
+<I> : /announce ȭ ý ù 8ÿ   񽺰 Ұ ϴ.</I>
+<BR><P ALIGN="right"><A HREF="#top"></A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="kick"><B> ߹ϱ:</B></FONT>
+<P>
+ ڸ, ڴ ̳ ڸ <B>kick </B> ѾƳ  ֽϴ. ڸ ϰ  ȭ濡 ־߸ ѾƳ  ֽϴ.
+<P>
+<I> </I>, Jack̶ ڸ ѾƳ ʹٸ </I> /kick Jack</I> Էϸ ˴ϴ.
+<BR><P ALIGN="right"><A HREF="#top"></A></P>
+<P>
+<HR>
+
+<?php
+if (C_BANISH != "0")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="banish"><B> ϱ:</B></A></FONT>
+	<P>
+	 ڸ, ڴ ̳ ڸ <B>banish </B>  ų  ֽϴ.<BR>
+	ڴ ȭϰ ִ  ƴ ٸ 濡 ִ ڿ ؼ     ֽϴ. ׸ ڴ '<B>&nbsp;*&nbsp;</B>  ȭ տ ־  ڸ     ֽϴ.
+	<P>
+	<I> </I>, Jack̶ ڸ Ϸ Ѵٸ <I>/ban Jack</I> ̳ <I>/ban * Jack</I> Էϸ ˴ϴ.
+	<BR><P ALIGN="right"><A HREF="#top"></A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="promote"><B>  ֱ:</B></A></FONT>
+<P>
+̳ ڴ <B>promote </B> ٸ ڿ   ο  ֽϴ.
+<P>
+<I> </I>, Jack̶    ְ  <I> /promote Jack</I>̶ ϸ ˴ϴ.
+<P>
+ڸ Ư    Ż  ֽϴ. ̰    ʽϴ.
+<BR><P ALIGN="right"><A HREF="#top"></A></P>
+<P>
+
+
+</BODY>
+</HTML>
diff -ruN 0.14.5/chat/localization/korean/regex.txt 0.15.0/chat/localization/korean/regex.txt
--- 0.14.5/chat/localization/korean/regex.txt	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/korean/regex.txt	2004-04-01 03:07:35.000000000 -0600
@@ -0,0 +1 @@
+ko|korean
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/languages.lib.php 0.15.0/chat/localization/languages.lib.php
--- 0.14.5/chat/localization/languages.lib.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/languages.lib.php	2004-04-01 03:06:40.000000000 -0600
@@ -0,0 +1,71 @@
+<?php
+if (!isset($ChatPath)) $ChatPath = "";
+
+// Available languages
+$AvailableLanguages = array();
+$languageDirectories = dir('./'.$ChatPath.'localization/');
+while($name = $languageDirectories->read())
+{
+	if(is_dir('./'.$ChatPath.'localization/'.$name)
+		&& file_exists('./'.$ChatPath.'localization/'.$name.'/regex.txt')
+		&& file_exists('./'.$ChatPath.'localization/'.$name.'/localized.chat.php')
+		&& file_exists('./'.$ChatPath.'localization/'.$name.'/flag.gif'))
+	{
+		list($key) = file('./'.$ChatPath.'localization/'.$name.'/regex.txt');
+		$AvailableLanguages[$key] = $name;
+	};
+};
+$languageDirectories->close();
+if (!function_exists("krsort")) include("./${ChatPath}localization/sort_languages.php");
+krsort($AvailableLanguages);
+
+function Detect($Str,$From)
+{
+	global $AvailableLanguages;
+	global $L;
+
+	$NotFound = true;
+	reset($AvailableLanguages);
+	while($NotFound && list($key, $name) = each($AvailableLanguages))
+	{
+		if (($From == 1 && eregi("^(".trim($key).")$",$Str)) || ($From == 2 && eregi("(\(|\[|;[[:space:]])(".trim($key).")(;|\]|\))",$Str)))
+		{
+			$L = $AvailableLanguages[$key];
+			$NotFound = false;
+		};
+	};
+};
+
+// finds the appropriate language file
+if (isset($HTTP_COOKIE_VARS["CookieLang"]))
+	$CookieLang = $HTTP_COOKIE_VARS["CookieLang"];
+if (!isset($HTTP_ACCEPT_LANGUAGE))
+	$HTTP_ACCEPT_LANGUAGE = getenv("HTTP_ACCEPT_LANGUAGE");
+if (!isset($HTTP_USER_AGENT))
+	$HTTP_USER_AGENT = getenv("HTTP_USER_AGENT");
+
+if ((isset($L) && $L != "" && is_dir('./'.$ChatPath.'localization/'.$L)) || C_MULTI_LANG == 0)
+{
+}	
+elseif (isset($CookieLang)
+		&& is_dir('./'.$ChatPath.'localization/'.$CookieLang)
+		&& file_exists('./'.$ChatPath.'localization/'.$CookieLang.'/localized.chat.php'))
+{
+	$L = $CookieLang;
+}
+elseif ($HTTP_ACCEPT_LANGUAGE != "")
+{	
+	$Accepted = explode(",", $HTTP_ACCEPT_LANGUAGE);
+	Detect($Accepted[0],1);
+}
+elseif ($HTTP_USER_AGENT != "")
+{	
+	Detect($HTTP_USER_AGENT,2);
+};
+
+//if no language detected set default one
+if (!isset($L)) $L = C_LANGUAGE;
+
+//put language in a cookie
+setcookie("CookieLang", $L, time() + 60*60*24*365);		// cookie expires in one year
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/languages.lib.php3 0.15.0/chat/localization/languages.lib.php3
--- 0.14.5/chat/localization/languages.lib.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/localization/languages.lib.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,71 +0,0 @@
-<?php
-if (!isset($ChatPath)) $ChatPath = "";
-
-// Available languages
-$AvailableLanguages = array();
-$languageDirectories = dir('./'.$ChatPath.'localization/');
-while($name = $languageDirectories->read())
-{
-	if(is_dir('./'.$ChatPath.'localization/'.$name)
-		&& file_exists('./'.$ChatPath.'localization/'.$name.'/regex.txt')
-		&& file_exists('./'.$ChatPath.'localization/'.$name.'/localized.chat.php3')
-		&& file_exists('./'.$ChatPath.'localization/'.$name.'/flag.gif'))
-	{
-		list($key) = file('./'.$ChatPath.'localization/'.$name.'/regex.txt');
-		$AvailableLanguages[$key] = $name;
-	};
-};
-$languageDirectories->close();
-if (!function_exists("krsort")) include("./${ChatPath}localization/sort_languages.php3");
-krsort($AvailableLanguages);
-
-function Detect($Str,$From)
-{
-	global $AvailableLanguages;
-	global $L;
-
-	$NotFound = true;
-	reset($AvailableLanguages);
-	while($NotFound && list($key, $name) = each($AvailableLanguages))
-	{
-		if (($From == 1 && eregi("^(".$key.")$",$Str)) || ($From == 2 && eregi("(\(|\[|;[[:space:]])(".$key.")(;|\]|\))",$Str)))
-		{
-			$L = $AvailableLanguages[$key];
-			$NotFound = false;
-		};
-	};
-};
-
-// finds the appropriate language file
-if (isset($HTTP_COOKIE_VARS["CookieLang"]))
-	$CookieLang = $HTTP_COOKIE_VARS["CookieLang"];
-if (!isset($HTTP_ACCEPT_LANGUAGE))
-	$HTTP_ACCEPT_LANGUAGE = getenv("HTTP_ACCEPT_LANGUAGE");
-if (!isset($HTTP_USER_AGENT))
-	$HTTP_USER_AGENT = getenv("HTTP_USER_AGENT");
-
-if ((isset($L) && $L != "" && is_dir('./'.$ChatPath.'localization/'.$L)) || C_MULTI_LANG == 0)
-{
-}	
-elseif (isset($CookieLang)
-		&& is_dir('./'.$ChatPath.'localization/'.$CookieLang)
-		&& file_exists('./'.$ChatPath.'localization/'.$CookieLang.'/localized.chat.php3'))
-{
-	$L = $CookieLang;
-}
-elseif ($HTTP_ACCEPT_LANGUAGE != "")
-{	
-	$Accepted = explode(",", $HTTP_ACCEPT_LANGUAGE);
-	Detect($Accepted[0],1);
-}
-elseif ($HTTP_USER_AGENT != "")
-{	
-	Detect($HTTP_USER_AGENT,2);
-};
-
-//if no language detected set default one
-if (!isset($L)) $L = C_LANGUAGE;
-
-//put language in a cookie
-setcookie("CookieLang", $L, time() + 60*60*24*365);		// cookie expires in one year
-?>
\ No newline at end of file
Binary files 0.14.5/chat/localization/malay/flag.gif and 0.15.0/chat/localization/malay/flag.gif differ
diff -ruN 0.14.5/chat/localization/malay/localized.chat.php 0.15.0/chat/localization/malay/localized.chat.php
--- 0.14.5/chat/localization/malay/localized.chat.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/malay/localized.chat.php	2004-04-01 03:07:35.000000000 -0600
@@ -0,0 +1,220 @@
+<?php
+// File : malay.lang.php
+// Translated by Nazri Hussain <nazrih@mimos.my>
+
+// extra header for charset
+$Charset = "iso-8859-1";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// welcome page
+define("L_TUTORIAL", "Tutorial");
+
+define("L_WEL_1", "Mesej akan dipadam selepas");
+define("L_WEL_2", "jam dan nama samaran selepas");
+define("L_WEL_3", "minit ...");
+
+define("L_CUR_1", "Sekarang ini terdapat");
+define("L_CUR_2", "di dalam bilik borak.");
+define("L_CUR_3", "Pengguna yang aktif dalam bilik borak");
+define("L_CUR_4", "pengguna di dalam bilik sulit");
+
+define("L_SET_1", "Sila masukkan ...");
+define("L_SET_2", "Nama samaran anda");
+define("L_SET_3", "Bilangan baris mesej yang ingin dipaparkan");
+define("L_SET_4", "Masa tamat antara setiap pengemaskinian mesej");
+define("L_SET_5", "Pilih bilik borak yang ingin disertai ...");
+define("L_SET_6", "Bilik borak umum");
+define("L_SET_7", "Sila buat pilihan anda ...");
+define("L_SET_8", "bilik borak umum yang diaktifkan pengguna");
+define("L_SET_9", "bina bilik borak baru");
+define("L_SET_10", "umum");
+define("L_SET_11", "sulit");
+define("L_SET_12", "bilik");
+define("L_SET_13", "Jom le");
+define("L_SET_14", "berborak");
+
+define("L_SRC", "boleh didapati secara percuma di");
+
+define("L_SECS", "saat");
+define("L_MIN", "minit");
+define("L_MINS", "minit");
+
+// registration stuff:
+define("L_REG_1", "katalaluan anda");
+define("L_REG_1r", "(jika anda pengguna berdaftar)");
+define("L_REG_2", "Pengurusan Akaun");
+define("L_REG_3", "Daftar");
+define("L_REG_4", "Ubah profil anda");
+define("L_REG_5", "Padam pengguna");
+define("L_REG_6", "Pendaftaran pengguna");
+define("L_REG_7", "katalaluan anda");
+define("L_REG_8", "emel anda");
+define("L_REG_9", "Tahniah ! Anda telah menjadi pengguna berdaftar.");
+define("L_REG_10", "Kembali");
+define("L_REG_11", "Mengedit");
+define("L_REG_12", "Mengubah maklumat profil pengguna");
+define("L_REG_13", "Memadam pengguna");
+define("L_REG_14", "Log masuk");
+define("L_REG_15", "Log masuk");
+define("L_REG_16", "Ubah");
+define("L_REG_17", "Profil milik anda telah diubah.");
+define("L_REG_18", "Anda telah ditendang keluar dari bilik borak ini oleh Pengendali Sistem.");
+define("L_REG_19", "Adakah anda pasti ?");
+define("L_REG_20", "Ya");
+define("L_REG_21", "Anda telah berjaya dipadam dari pangkalan data.");
+define("L_REG_22", "Tidak");
+define("L_REG_25", "Tutup");
+define("L_REG_30", "nama anda");
+define("L_REG_31", "nama bapa");
+define("L_REG_32", "WEB");
+define("L_REG_33", "paparkan emel anda di umum");
+define("L_REG_34", "Mengubah profil pengguna");
+define("L_REG_35", "Pentadbiran");
+define("L_REG_36", "bahasa yang digunakan");
+define("L_REG_37", "Ruangan dengan tanda <span class=\"error\">*</span> ini perlu diisi oleh pengguna.");
+define("L_REG_39", "Maaf ! Bilik berborak anda telah dipadam oleh pengendali bagi sistem chat ini.");
+define("L_REG_45", "jantina");
+define("L_REG_46", "Lelaki");
+define("L_REG_47", "Perempuan");
+
+// e-mail validation stuff
+define("L_EMAIL_VAL_1", "Configurasi anda untuk memasuki bilik borak");
+define("L_EMAIL_VAL_2", "Selamat datang ke pelayan borak kami.");
+define("L_EMAIL_VAL_Err", "Ralat dalaman, sila hubungi pentadbir sistem : <a href=\"mailto:%s\">%s</a>.");
+define("L_EMAIL_VAL_Done", "Katalaluan anda telah dihantar ke <BR>alamat emel.");
+
+// admin stuff
+define("L_ADM_1", "%s bukan lagi pentadbir bagi bilik borak ini.");
+define("L_ADM_2", "Anda bukan lagi pengguna berdaftar.");
+
+// error messages
+define("L_ERR_USR_1", "Nama Samaran ini telah diambil. Sila pilih yang lain.");
+define("L_ERR_USR_2", "Anda perlu memilih satu nama samaran.");
+define("L_ERR_USR_3", "Nama Samaran ini telah didaftarkan. Sila pilih katalaluan anda atau pilih nama samaran lain.");
+define("L_ERR_USR_4", "Anda memasukkan katalaluan yang salah.");
+define("L_ERR_USR_5", "Anda perlu memasukkan nama samaran anda.");
+define("L_ERR_USR_6", "Anda perlu memasukkan katalaluan anda.");
+define("L_ERR_USR_7", "Anda perlu memasukkan alamat emel anda.");
+define("L_ERR_USR_8", "Anda perlu memasukkan alamat emel yang sah.");
+define("L_ERR_USR_9", "Nama samaran ini telah diambil.");
+define("L_ERR_USR_10", "Nama samaran atau katalaluan anda salah.");
+define("L_ERR_USR_11", "Anda perlu menjadi pentadbir sistem.");
+define("L_ERR_USR_12", "Anda adalah pentadbir sistem, jadi anda tidak boleh dipadam.");
+define("L_ERR_USR_13", "Untuk membuat bilik sulit, anda perlu mendaftar sebagai pengguna yang sah.");
+define("L_ERR_USR_14", "Anda perlu berdaftar sebelum boleh berborak.");
+define("L_ERR_USR_15", "Anda perlu memasukkan nama penuh anda.");
+define("L_ERR_USR_16", "Nama samaran tidak boleh mengandungi ruangan kosong, koma atau sengkang (\\).");
+define("L_ERR_USR_17", "Bilik ini tidak wujud, dan anda tidak dibenarkan untuk menbuatnya.");
+define("L_ERR_USR_18", "Terdapat perkataan yang tidak dibenarkan didalam nama samaran anda.");
+define("L_ERR_USR_19", "Anda tidak dibenarkan berada di bilik yang berlainan dalam masa yang sama.");
+define("L_ERR_USR_20", "Anda telah disekat dari memasuki bilik borak ini atau semua bilik borak.");
+define("L_ERR_ROM_1", "Nama bilik borak tidak boleh mengandungi koma atau sengkang (\\).");
+define("L_ERR_ROM_2", "Perkataan yang tidak dibenarkan dijumpai dalam nama bilik borak yang anda ingin bina.");
+define("L_ERR_ROM_3", "Bilik borak ini telahpun wujud sebagai bilik borak umum.");
+define("L_ERR_ROM_4", "Nama bilik borak tidak sah.");
+
+// users frame or popup
+define("L_EXIT", "Keluar");
+define("L_DETACH", "Tanggal");
+define("L_EXPCOL_ALL", "Kembangkan/Jatuhkan Semua");
+define("L_CONN_STATE", "Status Hubungan");
+define("L_CHAT", "Tutup");
+define("L_USER", "pengguna");
+define("L_USERS", "pengguna");
+define("L_NO_USER", "Tiada Pengguna");
+define("L_ROOM", "bilik");
+define("L_ROOMS", "bilik");
+define("L_EXPCOL", "Kembangkan/Jatuhkan");
+define("L_BEEP", "Beep/jangan beep apabila pengguna masuk");
+define("L_PROFILE", "Paparkan profil");
+define("L_NO_PROFILE", "No profile");
+
+// input frame
+define("L_HLP", "Bantuan");
+define("L_BAD_CMD", "Arahan ini tidak sah!");
+define("L_ADMIN", "%s telahpun menjadi pentadbir (administrator)!");
+define("L_IS_MODERATOR", "%s telahpun menjadi pentadbir (moderator)!");
+define("L_NO_MODERATOR", "Hanya pentadbir bilik borak ini sahaja yang boleh menggunakan arahan ini.");
+define("L_MODERATOR", "%s sekarang adalah pentadbir bagi bilik borak ini.");
+define("L_NONEXIST_USER", "Pengguna %s tidak berada didalam bilik ini.");
+define("L_NONREG_USER", "Pengguna %s belum didaftar sebagai pengguna yang sah.");
+define("L_NONREG_USER_IP", "IP beliau ialah: %s.");
+define("L_NO_KICKED", "Pengguna %s adalah pentadbir dan beliau tidak boleh ditendang keluar.");
+define("L_KICKED", "Pengguna %s telah ditendang keluar oleh pentadbir sistem chat.");
+define("L_NO_BANISHED", "Pengguna %s adalah pentadbir dan beliau tidak boleh dihalang masuk.");
+define("L_BANISHED", "Pengguna %s telah berjaya dihalang masuk.");
+define("L_SVR_TIME", "Masa Bagi Pelayan: ");
+define("L_NO_SAVE", "Tiada mesej untuk disimpan!");
+define("L_NO_ADMIN", "Hanya pentadbir boleh menggunakan arahan ini.");
+define("L_ANNOUNCE", "PERHATIAN");
+define("L_INVITE", "%s meminta anda untuk memasuki <a href=\"#\" onClick=\"window.parent.runCmd('%s','%s')\">%s</a>bilik boraknya.");
+define("L_INVITE_REG", " Anda perlu menjadi pengguna berdaftar untuk memasuki bilik borak ini.");
+define("L_INVITE_DONE", "Jemputan anda telahpun dihantar kepada %s.");
+define("L_OK", "Hantar");
+
+// help popup
+define("L_HELP_TIT_1", "Senyuman");
+define("L_HELP_TIT_2", "Format teks untuk mesej");
+define("L_HELP_FMT_1", "Anda boleh meletakkan teks tebal, teks senget atau teks bergaris bawah didalam mesej anda dengan memasukkan teks tersebut didalam kurungan berserta dengan salah satu dari tag berikut &lt;B&gt; &lt;/B&gt;,&lt;I&gt; &lt;/I&gt; or &lt;U&gt; &lt;/U&gt;.<BR>Sebagai contohnya, &lt;B&gt;teks ini&lt;/B&gt; akan menghasilkan <B>teks ini</B>.");
+define("L_HELP_FMT_2", "Untuk membuat pautan (untuk emel atau URL) di dalam mesej anda, cuma taipkan alamat emelnya tanpa sebarang tag. Pautannya akan dibuat dengan secara automatik.");
+define("L_HELP_TIT_3", "Arahan");
+define("L_HELP_USR", "pengguna");
+define("L_HELP_MSG", "mesej");
+define("L_HELP_ROOM", "bilik");
+define("L_HELP_CMD_0", "{} adalah setting yang perlu diisi, manakala [] adalah pilihan.");
+define("L_HELP_CMD_1a", "Set bilangan mesej yang ingin dipaparkan. Minimanya adalah 5.");
+define("L_HELP_CMD_1b", "Papar n mesej yang terbaru, minimanya adalah 5.");
+define("L_HELP_CMD_2a", "Ubah senarai masa lengahan mesej yang terbaru (didalam unit saat).<BR>Jika n tidak dinyatakan atau kurang dari 3, jadikan ia tidak dipaparkan dan 10 saat sekali papar mesej yang terbaru.");
+define("L_HELP_CMD_2b", "Ubah senarai masa lengahan mesej dan senarai pengguna (didalam unit saat).<BR>Jika n tidak dinyatakan atau kurang dari 3, jadikan ia tidak dipaparkan dan 10 saat sekali papar mesej yang terbaru.");
+define("L_HELP_CMD_3", "Terbalikkan susunan mesej.");
+define("L_HELP_CMD_4", "Sertai bilik borak lain, jika bilik borak itu tiada, cipta satu jika dibenarkan.<BR>n bersamaan dengan 0 untuk bilik sulit dan 1 untuk bilik umum, jika tidak dinyatakan ianya akan mengambil nilai 1.");
+define("L_HELP_CMD_5", "Tinggalkan bilik borak selepas memaparkan mesej pilihan.");
+define("L_HELP_CMD_6", "Jangan paparkan mesej dari pengguna jika nama samarannya dinyatakan.<BR>Pengabaian akan diaktifkan bagi pengguna jika nama samarannya dan - dinyatakan, bagi semua pengguna apabila - bukan nama samaran.<BR>Tanpa sebarang arahan tambahan lain, arahan ini akan menyebabkan tetingkap pop keluar dan akan memaparkan semua nama samaran yang diabaikan.");
+define("L_HELP_CMD_7", "Panggil arahan yang lepas yang pernah ditaip (arahan atau mesej).");
+define("L_HELP_CMD_8", "Paparkan/Sorok masa sebelum setiap mesej.");
+define("L_HELP_CMD_9", "Tendang keluar pengguna dari bilik borak. Arahan ini hanya untuk pentadbir sistem borak.");
+define("L_HELP_CMD_10", "Hantar mesej sulit pada pengguna yang dinyatakan (pengguna lain tidak akan nampak).");
+define("L_HELP_CMD_11", "Paparkan maklumat tentang pengguna yang dinyatakan.");
+define("L_HELP_CMD_12", "Keluarkan tetingkap untuk ubah profil pengguna.");
+define("L_HELP_CMD_13", "Ubah notasi apabila seseorang pengguna keluar/masuk dari bilik borak semasa.");
+define("L_HELP_CMD_14", "Benarkan pentadbir sistem borak bagi bilik ini untuk menjemput pengguna berdaftar lain menjadi pentadbir bagi bilik yang sama.");
+define("L_HELP_CMD_15", "Bersihkan mesej dan paparkan hanya 5 mesej yang terakhir.");
+define("L_HELP_CMD_16", "Simpan n mesej yang terakhir (notasi tidak termasuk) ke format fail HTML. Jika n tidak dinyatakan, ambil semua mesej.");
+define("L_HELP_CMD_17", "Benarkan pentadbir sistem borak ini untuk menghantar pengumuman kepada semua pengguna didalam bilik borak ini.");
+define("L_HELP_CMD_18", "Jemput pengguna lain untuk menyertai bilik borak yang anda sedang sertai.");
+define("L_HELP_CMD_19", "Benarkan pentadbir sistem borak untuk \"menghalang\" seseorang pengguna dari memasuki bilik borak untuk sesuatu masa tertentu yang telah ditetapkan oleh pentadbir.<BR>Pentadbir juga boleh menghalang seseorang pengguna dari memasuki terus ke semua bilik borak dengan menggunakan '<B>&nbsp;*&nbsp;</B>'.");
+define("L_HELP_CMD_20", "Terangkan apa yang anda sedang lakukan tanpa merujuk kepada diri anda sendiri.");
+
+// messages frame
+define("L_NO_MSG", "Buat masa ini tiada mesej lagi ...");
+define("L_TODAY_DWN", "Mesej yang pernah dihantar untuk hari ini bermula dibawah ini");
+define("L_TODAY_UP", "Mesej yang pernah dihantar untuk hari ini bermula diatas");
+
+// message colors
+$TextColors = array(	"Black" => "#000000",
+				"Red" => "#FF0000",
+				"Green" => "#009900",
+				"Blue" => "#0000FF",
+				"Purple" => "#9900FF",
+				"Dark red" => "#990000",
+				"Dark green" => "#006600",
+				"Dark blue" => "#000099",
+				"Maroon" => "#996633",
+				"Aqua blue" => "#006699",
+				"Carrot" => "#FF6600");
+
+// ignored popup
+define("L_IGNOR_TIT", "Diabaikan");
+define("L_IGNOR_NON", "Tiada pengguna yang diabaikan");
+
+// whois popup
+define("L_WHOIS_ADMIN", "Pentadbir");
+define("L_WHOIS_MODER", "Pengendali");
+define("L_WHOIS_USER", "Pengguna");
+
+// Notification messages of user entrance/exit
+define("L_ENTER_ROM", "%s masuk ke bilik borak ini");
+define("L_EXIT_ROM", "%s keluar dari bilik borak ini");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/malay/regex.txt 0.15.0/chat/localization/malay/regex.txt
--- 0.14.5/chat/localization/malay/regex.txt	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/malay/regex.txt	2004-04-01 03:07:35.000000000 -0600
@@ -0,0 +1 @@
+ms|malay
\ No newline at end of file
Binary files 0.14.5/chat/localization/norwegian/flag.gif and 0.15.0/chat/localization/norwegian/flag.gif differ
diff -ruN 0.14.5/chat/localization/norwegian/localized.chat.php 0.15.0/chat/localization/norwegian/localized.chat.php
--- 0.14.5/chat/localization/norwegian/localized.chat.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/norwegian/localized.chat.php	2004-04-01 03:07:36.000000000 -0600
@@ -0,0 +1,221 @@
+<?php
+// File : norwegian.lang.php
+// Translation by Arne Brune Olsen <router@router.nu>
+
+// extra header for charset
+$Charset = "iso-8859-1";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// welcome page
+define("L_TUTORIAL", "Tutorial");
+
+define("L_WEL_1", "Meldinger slettes etter");
+define("L_WEL_2", "timer og brukernavn etter");
+define("L_WEL_3", "minutter ...");
+
+define("L_CUR_1", "Det er ");
+define("L_CUR_2", "som chatter her.");
+define("L_CUR_3", "Chattere i rommet");
+define("L_CUR_4", "Chattere i private rom");
+
+define("L_SET_1", "Vr snill  Velg ...");
+define("L_SET_2", "Ditt brukernavn...");
+define("L_SET_3", "Antall meldinger som skal vises");
+define("L_SET_4", "Hvor ofte du vil oppdatere");
+define("L_SET_5", "Velg et chatte rom ...");
+define("L_SET_6", "Standard rom");
+define("L_SET_7", "Gjr ditt valg ...");
+define("L_SET_8", "pne (public) rom laget av brukere");
+define("L_SET_9", "Lag ditt eget");
+define("L_SET_10", "offisielle");
+define("L_SET_11", "private");
+define("L_SET_12", "rom");
+define("L_SET_13", "Trykk her for  starte chatten");
+define("L_SET_14", "chat");
+
+define("L_SRC", "er gratis tilgjengelig p");
+
+define("L_SECS", "sekunder");
+define("L_MIN", "minutt");
+define("L_MINS", "minutter");
+
+// registration stuff:
+define("L_REG_1", "your password");
+define("L_REG_1r", "(only if you are registered)");
+define("L_REG_2", "Account management");
+define("L_REG_3", "Register");
+define("L_REG_4", "Edit your profile");
+define("L_REG_5", "Delete user");
+define("L_REG_6", "User registration");
+define("L_REG_7", "your password");
+define("L_REG_8", "your e-mail");
+define("L_REG_9", "You have been successfully registered.");
+define("L_REG_10", "Back");
+define("L_REG_11", "Editing");
+define("L_REG_12", "Modifying user's informations");
+define("L_REG_13", "Deleting user");
+define("L_REG_14", "Login");
+define("L_REG_15", "Log In");
+define("L_REG_16", "Change");
+define("L_REG_17", "Your informations were succesfully modified.");
+define("L_REG_18", "You have been kicked away from room by moderator.");
+define("L_REG_19", "Do you really want to be removed ?");
+define("L_REG_20", "Yes");
+define("L_REG_21", "You were successfully removed.");
+define("L_REG_22", "No");
+define("L_REG_25", "Close");
+define("L_REG_30", "firstname");
+define("L_REG_31", "lastname");
+define("L_REG_32", "WEB");
+define("L_REG_33", "show e-mail by /whois command");
+define("L_REG_34", "Editing user profile");
+define("L_REG_35", "Administration");
+define("L_REG_36", "spoken languages");
+define("L_REG_37", "Fields with a <span class=\"error\">*</span> must be completed.");
+define("L_REG_39", "The room you were in have been removed by the administrator.");
+define("L_REG_45", "gender");
+define("L_REG_46", "male");
+define("L_REG_47", "Female");
+
+// e-mail validation stuff
+define("L_EMAIL_VAL_1", "Your settings to enter the chat");
+define("L_EMAIL_VAL_2", "Welcome to our chat server.");
+define("L_EMAIL_VAL_Err", "Internal error, please contact the administrator: <a href=\"mailto:%s\">%s</a>.");
+define("L_EMAIL_VAL_Done", "Your password has been sent to your e-mail address.");
+
+// admin stuff
+define("L_ADM_1", "%s is no more moderator for this room.");
+define("L_ADM_2", "You're no more a registered user.");
+
+//error messages
+define("L_ERR_USR_1", "Dette brukernavnet er allerede i bruk. Vennligst velg et annet.");
+define("L_ERR_USR_2", "Du m velge et brukernavn.");
+define("L_ERR_USR_3", "This username is registered. Please type your password or chose another username.");
+define("L_ERR_USR_4", "You typed a wrong password.");
+define("L_ERR_USR_5", "You must type your username.");
+define("L_ERR_USR_6", "You must type your password.");
+define("L_ERR_USR_7", "You must type your e-mail.");
+define("L_ERR_USR_8", "You must type a correct e-mail address.");
+define("L_ERR_USR_9", "This username is already in use.");
+define("L_ERR_USR_10", "Wrong username or password.");
+define("L_ERR_USR_11", "You must be administrator.");
+define("L_ERR_USR_12", "You are administrator, so you cannot be removed.");
+define("L_ERR_USR_13", "To create your own room you must be registered.");
+define("L_ERR_USR_14", "You must be registered before chating.");
+define("L_ERR_USR_15", "You must type your full name.");
+define("L_ERR_USR_16", "Username cannot contain space, comma or backslash (\\).");
+define("L_ERR_USR_17", "This room doesn't exist and you are not allowed to create one.");
+define("L_ERR_USR_18", "Banned word found in your username.");
+define("L_ERR_USR_19", "You cannot be in more than one room at the same time.");
+define("L_ERR_USR_20", "You have been banished from this room or from the chat.");
+define("L_ERR_ROM_1", "Room's name cannot contain comma or backslash (\\).");
+define("L_ERR_ROM_2", "Banned word found in the room's name you want to create.");
+define("L_ERR_ROM_3", "Dette rommet finnes allerede.");
+define("L_ERR_ROM_4", "Feil rom navn.");
+
+// users frame or popup
+define("L_EXIT", "Avslutt");
+define("L_DETACH", "Eget vindu");
+define("L_EXPCOL_ALL", "Ekspander/Kollaps Alle");
+define("L_CONN_STATE", "Connection state");
+define("L_CHAT", "Chat");
+define("L_USER", "bruker");
+define("L_USERS", "brukere");
+define("L_NO_USER", "Ingen brukere");
+define("L_ROOM", "rom");
+define("L_ROOMS", "rom");
+define("L_EXPCOL", "Ekspander/Kollaps rom");
+define("L_BEEP", "Beep/no beep at user entrance");
+define("L_PROFILE", "Display profile");
+define("L_NO_PROFILE", "No profile");
+
+// input frame
+define("L_HLP", "Hjelp");
+define("L_BAD_CMD", "Dette er ikke en gyldig kommando!");
+define("L_ADMIN", "%s is already administrator!");
+define("L_IS_MODERATOR", "%s is already moderator!");
+define("L_NO_MODERATOR", "Only the moderator of this room can use this command.");
+define("L_MODERATOR", "%s is now moderator for this room.");
+define("L_NONEXIST_USER", "User %s isn't in the current room.");
+define("L_NONREG_USER", "User %s isn't registered.");
+define("L_NONREG_USER_IP", "His IP is: %s.");
+define("L_NO_KICKED", "User %s is moderator or administrator and can't be kicked away.");
+define("L_KICKED", "User %s was successfully kicked away.");
+define("L_NO_BANISHED", "User %s is moderator or administrator and can't be banished.");
+define("L_BANISHED", "User %s has successfully been banished.");
+define("L_SVR_TIME", "Server time: ");
+define("L_NO_SAVE", "No message to save!");
+define("L_NO_ADMIN", "Only the administrator can use this command.");
+define("L_ANNOUNCE", "ANNOUNCE");
+define("L_INVITE", "%s suggest you to join her/him into the <a href=\"#\" onClick=\"window.parent.runCmd('%s','%s')\">%s</a> room.");
+define("L_INVITE_REG", " You have to be registered to enter this room.");
+define("L_INVITE_DONE", "Your invitation has been sent to %s.");
+define("L_OK", "Send");
+
+// help popup
+define("L_HELP_TIT_1", "Smilefjes");
+define("L_HELP_TIT_2", "Text formating for messages");
+define("L_HELP_FMT_1", "You can put bolded, italicized or underlined text in messages by encasing the applicable sections of your text with either the &lt;B&gt; &lt;/B&gt;, &lt;I&gt; &lt;/I&gt; or &lt;U&gt; &lt;/U&gt; tags.<BR>For example, &lt;B&gt;this text&lt;/B&gt; will produce <B>this text</B>.");
+define("L_HELP_FMT_2", "To create a hyperlink (for e-mail or URL) in your message, simply type the corresponding address without any tag. The hyperlink will be created automatically.");
+define("L_HELP_TIT_3", "Kommandoer");
+define("L_HELP_USR", "bruker");
+define("L_HELP_MSG", "melding");
+define("L_HELP_ROOM", "rom");
+define("L_HELP_CMD_0", "{} for ndvendige instillinger, [] for opsjoner.");
+define("L_HELP_CMD_1", "Sett antall meldinger  vise, minimum 5.");
+define("L_HELP_CMD_1a", "Set number of messages to show, minimum and default are 5.");
+define("L_HELP_CMD_1b", "Reload the message frame and display the n latest messages, minimum and default are 5.");
+define("L_HELP_CMD_2a", "Setter oppfriskningstid for meldingsvisningen (i sekunder).<BR>Dersom n ikke er spesifisert eller mindre enn 3, s toggles det mellom ingen oppfriskning og 10 sekunds oppfriskning.");
+define("L_HELP_CMD_2b", "Modify messages and users lists refresh delay (in seconds).<BR>If n is not specified or less than 3, toggles between no refresh and 10s refresh.");
+define("L_HELP_CMD_3", "Inverter meldingsrekkeflge.");
+define("L_HELP_CMD_4", "Bytt rom, lager nytt dersom det ikke eksisterer og du har tilgang.<BR>n lik 0 for privat og 1 for pne rom, default er 1.");
+define("L_HELP_CMD_5", "Forlat chatten etter meldingen er sendt.");
+define("L_HELP_CMD_6", "Ikke vis meldinger fra en bruker hvis nicknavn er spesifisert.<BR>Sett ignorer av for en bruker nr nicknavn og - er begge spesifisert, for alle brukere nr - er men ingen nicknavn.<BR>Uten opsjoner s popper det opp et vindu som viser alle ignorerte brukere.");
+define("L_HELP_CMD_7", "Gjenta siste kommando/melding.");
+define("L_HELP_CMD_8", "Vis/Gjem tidsstempel forand meldingene.");
+define("L_HELP_CMD_9", "Kick away user from the chat. This command can only be used by a moderator.");
+define("L_HELP_CMD_10", "Send a private message to the specified user (other users won't see it).");
+define("L_HELP_CMD_11", "Show informations about specified user.");
+define("L_HELP_CMD_12", "Popup window for editing user's profile.");
+define("L_HELP_CMD_13", "Toggles notifications of user entrance/exit for the current room.");
+define("L_HELP_CMD_14", "Allow the administrator or moderator(s) of the curent room to promote as moderator for the same room an other registered user.");
+define("L_HELP_CMD_15", "Clear the message frame and show only the last 5 messages.");
+define("L_HELP_CMD_16", "Save the last n messages (notifications ones excluded) to an HTML file. If n is not specified, all available messages will be taken into account.");
+define("L_HELP_CMD_17", "Allow the administrator to send an announce to all users whatever the room they are chatting into.");
+define("L_HELP_CMD_18", "Suggest an user chatting in an other room to join the one you are into.");
+define("L_HELP_CMD_19", "Allow the moderator(s) of a room or the administrator to \"banish\" an user from the room for a time defined by the administrator.<BR>The later can banish an user chatting in an other room than the one he is into and use the '<B>&nbsp;*&nbsp;</B>' setting to banish \"for ever\" an user from the chat as the whole.");
+define("L_HELP_CMD_20", "Describe what you're doing without refer yourself.");
+
+//message frame
+define("L_NO_MSG", "Det er ingen meldinger her n ...");
+define("L_TODAY_DWN", "The messages that have been sent today start below");
+define("L_TODAY_UP", "The messages that have been sent today start above");
+
+// message colors
+$TextColors = array(	"Sort" => "#000000",
+				"Rd" => "#FF0000",
+				"Grnn" => "#009900",
+				"Bl" => "#0000FF",
+				"Fiolett" => "#9900FF",
+				"Mrkerd" => "#990000",
+				"Mrkegrnn" => "#006600",
+				"Mrkebl" => "#000099",
+				"Lysebrun" => "#996633",
+				"Havet" => "#006699",
+				"Gulrot" => "#FF6600");
+
+//ignored popup
+define("L_IGNOR_TIT", "Ignorert");
+define("L_IGNOR_NON", "Ingen ignorerte brukere");
+
+// whois popup
+define("L_WHOIS_ADMIN", "Administrator");
+define("L_WHOIS_MODER", "Moderator");
+define("L_WHOIS_USER", "User");
+
+// Notification messages of user entrance/exit
+define("L_ENTER_ROM", "%s enters this room");
+define("L_EXIT_ROM", "%s exit this room");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/norwegian/regex.txt 0.15.0/chat/localization/norwegian/regex.txt
--- 0.14.5/chat/localization/norwegian/regex.txt	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/norwegian/regex.txt	2004-04-01 03:07:36.000000000 -0600
@@ -0,0 +1 @@
+no|norwegian
\ No newline at end of file
Binary files 0.14.5/chat/localization/polish/flag.gif and 0.15.0/chat/localization/polish/flag.gif differ
diff -ruN 0.14.5/chat/localization/polish/localized.admin.php 0.15.0/chat/localization/polish/localized.admin.php
--- 0.14.5/chat/localization/polish/localized.admin.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/polish/localized.admin.php	2004-04-01 03:07:36.000000000 -0600
@@ -0,0 +1,61 @@
+<?php
+// File : polish.lang.php
+// Translation by Krzysztof Szatanik (Diablo/MAO) <diabl0@linuxpl.org>
+
+// extra header for charset
+$Charset = "iso-8859-2";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// Top frame
+define("A_MENU_0", "Administration for %s");
+define("A_MENU_1", "Registered users");
+define("A_MENU_2", "Banished users");
+define("A_MENU_3", "Clean rooms");
+define("A_MENU_4", "Send mails");
+
+// Frame for registered users
+define("A_SHEET1_1", "List of registered users and their permissions");
+define("A_SHEET1_2", "Nick");
+define("A_SHEET1_3", "Uprawnienia");
+define("A_SHEET1_4", "Kanay zarzdzane");
+define("A_SHEET1_5", "Zarzdzane kanay s oddzielone przecinkami (,) bez spacji.");
+define("A_SHEET1_6", "Usunicie sprawdzone");
+define("A_SHEET1_7", "Zmie");
+define("A_SHEET1_8", "There is no registered user except yourself.");
+define("A_SHEET1_9", "Banish checked profiles");
+define("A_SHEET1_10", "Now you have to move to the banished users sheet to refine your choices.");
+define("A_SHEET1_11", "Last connection");
+define("A_USER", "Uytkownik");
+define("A_MODER", "Zarzdca");
+define("A_PAGE_CNT", "Page %s of %s");
+
+// Frame for banished users
+define("A_SHEET2_1", "List of banished users and concerned rooms");
+define("A_SHEET2_2", "IP");
+define("A_SHEET2_3", "Concerned rooms");
+define("A_SHEET2_4", "Until");
+define("A_SHEET2_5", "no end");
+define("A_SHEET2_6", "rooms are splitted by comma without spaces (,) if they are less than 4, else the '<B>&nbsp;*&nbsp;</B>' sign<BR>banish from all rooms.");
+define("A_SHEET2_7", "Remove banishment for checked user(s)");
+define("A_SHEET2_8", "There is no banished user.");
+
+// Frame for cleaning rooms
+define("A_SHEET3_1", "Lista istniejcych kanaw");
+define("A_SHEET3_2", "Clean a \"non-default\" room will also remove all moderator<BR>status for this room.");
+define("A_SHEET3_3", "Wyczy zaznacone kanay.");
+define("A_SHEET3_4", "There is no room to clean.");
+
+// Frame for sending mails
+define("A_SHEET4_0", "You haven't set required variables in the<BR>'chat/admin/mail4admin.php' script.");
+define("A_SHEET4_1", "Send e-mails");
+define("A_SHEET4_2", "To:");
+define("A_SHEET4_3", "Select all");
+define("A_SHEET4_4", "Subject:");
+define("A_SHEET4_5", "Messages:");
+define("A_SHEET4_6", "Start sending");
+define("A_SHEET4_7", "All e-mails have been sent.");
+define("A_SHEET4_8", "Internal error while sending the mails.");
+define("A_SHEET4_9", "Addresse(s), subject or message is missing!");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/polish/localized.chat.php 0.15.0/chat/localization/polish/localized.chat.php
--- 0.14.5/chat/localization/polish/localized.chat.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/polish/localized.chat.php	2004-04-01 03:07:37.000000000 -0600
@@ -0,0 +1,221 @@
+<?php
+// File : polish.lang.php
+// Translation by Krzysztof Szatanik (Diablo/MAO) <diabl0@linuxpl.org>
+// based on old translation of Piotr Gapiski <narg@narg.dhs.org>
+
+// extra header for charset
+$Charset = "iso-8859-2";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// welcome page
+define("L_TUTORIAL", "Przewodnik");
+
+define("L_WEL_1", "Wiadomoci zostan skasowane po");
+define("L_WEL_2", "godzinach a nazwy uytkownikw po");
+define("L_WEL_3", "minutach ...");
+
+define("L_CUR_1", "Aktualnie w systemie jest");
+define("L_CUR_2", ".");
+define("L_CUR_3", "uytkownikw w kanaach publicznych");
+define("L_CUR_4", "uzytkownikw w kananach prywatnych");
+
+define("L_SET_1", "Prosz wprowad ...");
+define("L_SET_2", "nazwa uytkownika (nick)");
+define("L_SET_3", "liczba wywietlanych wiadomoci");
+define("L_SET_4", "odstp czasowy do odswieenia wiadomoci");
+define("L_SET_5", "Wybierz kana tematyczny ...");
+define("L_SET_6", "kana tematyczny");
+define("L_SET_7", "Wybierz ...");
+define("L_SET_8", "publiczny kana utworzony przez uytkownika");
+define("L_SET_9", "utwrz swj wasny");
+define("L_SET_10", "publiczny");
+define("L_SET_11", "prywatny");
+define("L_SET_12", "kana");
+define("L_SET_13", "Potem tylko");
+define("L_SET_14", "poacz sie!");
+
+define("L_SRC", "jest dostpny na");
+
+define("L_SECS", "sekund");
+define("L_MIN", "minuta");
+define("L_MINS", "minuty");
+
+// registration stuff:
+define("L_REG_1", "twoje haso");
+define("L_REG_1r", "(tylko jeeli jeste zarejestrowany)");
+define("L_REG_2", "Zarejestrowani uytkownicy");
+define("L_REG_3", "Zarejestruj si");
+define("L_REG_4", "Edytuj swoje ustawienia");
+define("L_REG_5", "Wyrejestruj si");
+define("L_REG_6", "Rejestracja uytkownika");
+define("L_REG_7", "twoje haso");
+define("L_REG_8", "twj e-mail");
+define("L_REG_9", "Zostae poprawnie zarejestrowany.");
+define("L_REG_10", "Powrt");
+define("L_REG_11", "Edycja");
+define("L_REG_12", "Zmiana informacji o uytkowniku");
+define("L_REG_13", "Kasowanie uytkownika");
+define("L_REG_14", "Wejcie");
+define("L_REG_15", "Wejd");
+define("L_REG_16", "Zmie");
+define("L_REG_17", "Twoje ustawienia zostay zmienione.");
+define("L_REG_18", "Zostae wyrzucony z kanau przez zarzdc.");
+define("L_REG_19", "Czy na pewno chcesz si usun? ");
+define("L_REG_20", "Tak");
+define("L_REG_21", "Twoje informacje osobiste zostay skasowane z bazy danych i zostae wyrejestrowany.");
+define("L_REG_22", "Nie");
+define("L_REG_25", "Zamknij");
+define("L_REG_30", "Imi");
+define("L_REG_31", "Nazwisko");
+define("L_REG_32", "Strona");
+define("L_REG_33", "Pokazuj adres e-mail przez komend /whois");
+define("L_REG_34", "Edycja ustawie uytkownika");
+define("L_REG_35", "Administracja");
+define("L_REG_36", "uywane jzyki");
+define("L_REG_37", "Pola pomidzy <span class=\"error\">*</span> musz by wypenione.");
+define("L_REG_39", "Kana w ktrym bye zosta usunity przez administratora.");
+define("L_REG_45", "gender");
+define("L_REG_46", "male");
+define("L_REG_47", "Female");
+
+// e-mail validation stuff
+define("L_EMAIL_VAL_1", "Your settings to enter the chat");
+define("L_EMAIL_VAL_2", "Welcome to our chat server.");
+define("L_EMAIL_VAL_Err", "Internal error, please contact the administrator: <a href=\"mailto:%s\">%s</a>.");
+define("L_EMAIL_VAL_Done", "Your password has been sent to your e-mail address.");
+
+// admin stuff
+define("L_ADM_1", "%s is no more moderator for this room.");
+define("L_ADM_2", "You're no more a registered user.");
+
+//error messages
+define("L_ERR_USR_1", "Nazwa jest ju w uyciu. Prosz wybierz inn nazw uytkownika.");
+define("L_ERR_USR_2", "Musisz wybra nazw uytkownika.");
+define("L_ERR_USR_3", "Ten nick jest ju zarejestrowany. Prosz poda haso lub wybra innego nicka.");
+define("L_ERR_USR_4", "Podae ze haso.");
+define("L_ERR_USR_5", "Musisz poda swj nick.");
+define("L_ERR_USR_6", "Musisz poda swoje haso.");
+define("L_ERR_USR_7", "Musisz poda swj adres e-mail.");
+define("L_ERR_USR_8", "Musisz poda prawidowy adres e-mail.");
+define("L_ERR_USR_9", "Ten nick jest ju w uyciu.");
+define("L_ERR_USR_10", "Zy nick lub haso.");
+define("L_ERR_USR_11", "Musisz by administratorem.");
+define("L_ERR_USR_12", "Jeste administratorem, wic nie moesz si usun.");
+define("L_ERR_USR_13", "Aby stworzy wasny kana musisz by zarejestrowanym uytkownikiem.");
+define("L_ERR_USR_14", "Musisz si zarejestrowa zanim zaczniesz pogawdki.");
+define("L_ERR_USR_15", "Musisz poda swoje pene imi i nazwisko.");
+define("L_ERR_USR_16", "Nick nie moe zawiera spacji, kropek, przecinkw czy ukonikw (\\).");
+define("L_ERR_USR_17", "Ten kana nie istnieje a ty nie jeste uprawniony do tworzenia kanaw.");
+define("L_ERR_USR_18", "Zakazane sowo znalezione twojej nazwie uytkownika.");
+define("L_ERR_USR_19", "Nie moesz przebywa jednoczenie na kilku kanaach.");
+define("L_ERR_USR_20", "You have been banished from this room or from the chat.");
+define("L_ERR_ROM_1", "Nazwy kanaw nie mog zawiera spacji lub ukonikw (\\).");
+define("L_ERR_ROM_2", "Zakazane sowo wystpuje w nazwie kanau ktury chcesz utworzy.");
+define("L_ERR_ROM_3", "Ten kana nadal istnieje jako publiczny.");
+define("L_ERR_ROM_4", "Nieprawidowa nazwa kanau.");
+
+// users frame or popup
+define("L_EXIT", "Wyjcie");
+define("L_DETACH", "Odczenie");
+define("L_EXPCOL_ALL", "Expand/Collapse All");
+define("L_CONN_STATE", "Connection state");
+define("L_CHAT", "Poaczenie");
+define("L_USER", "uytkownik(w)");
+define("L_USERS", "uytkownik(w)");
+define("L_NO_USER", "brak uytkownikw");
+define("L_ROOM", "kana");
+define("L_ROOMS", "kanay");
+define("L_EXPCOL", "Expand/Collapse room");
+define("L_BEEP", "Wydaj dwik/nie wydawaj dwiku kiedy kto wchodzi na kana.");
+define("L_PROFILE", "Display profile");
+define("L_NO_PROFILE", "No profile");
+
+// input frame
+define("L_HLP", "Pomoc");
+define("L_BAD_CMD", "To nie jest prawidowe polecenie!");
+define("L_ADMIN", "%s jest administratorem !");
+define("L_IS_MODERATOR", "%s jest zarzdc !");
+define("L_NO_MODERATOR", "Tylko zarzdca kanau moe uywa tej komendy.");
+define("L_MODERATOR", "%s jest teraz zarzdc tego kanau.");
+define("L_NONEXIST_USER", "Uytkownik %s nie znajduje si na tym kanale.");
+define("L_NONREG_USER", "Uytkownik %s nie jest zarejestrowany.");
+define("L_NONREG_USER_IP", "His IP is: %s.");
+define("L_NO_KICKED", "Uytkownik %s jest zarzdc lub administratorem i nie moe zosta wyrzucony z tego kanau.");
+define("L_KICKED", "Uytkownik %s zosta wyrzucony z kanau.");
+define("L_NO_BANISHED", "User %s is moderator or administrator and can't be banished.");
+define("L_BANISHED", "User %s has successfully been banished.");
+define("L_SVR_TIME", "Godzina: ");
+define("L_NO_SAVE", "No message to save!");
+define("L_NO_ADMIN", "Only the administrator can use this command.");
+define("L_ANNOUNCE", "ANNOUNCE");
+define("L_INVITE", "%s suggest you to join her/him into the <a href=\"#\" onClick=\"window.parent.runCmd('%s','%s')\">%s</a> room.");
+define("L_INVITE_REG", " You have to be registered to enter this room.");
+define("L_INVITE_DONE", "Your invitation has been sent to %s.");
+define("L_OK", "Send");
+
+// help popup
+define("L_HELP_TIT_1", "Umieszki");
+define("L_HELP_TIT_2", "Formatowanie tekstu dla wiadomoci");
+define("L_HELP_FMT_1", "Moesz uywa pogrubienia, pochylenia lub podkrelenia w wiadomociach uywajc odpowiednich znacznikw HTML: &lt;B&gt; &lt;/B&gt;, &lt;I&gt; &lt;/I&gt; lub &lt;U&gt; &lt;/U&gt; tags.<BR>Na przykad, &lt;B&gt;ten tekst&lt;/B&gt; wywietli <B>ten tekst</B>.");
+define("L_HELP_FMT_2", "Aby utworzy link (dla adresu e-mail lub strony WWW) w twojej wiadomoci po prostu podaj ten adres bez adnych tagw HTML'a. Odnonik zostanie stworzony automatycznie.");
+define("L_HELP_TIT_3", "Polecenia");
+define("L_HELP_USR", "uytkownik(w)");
+define("L_HELP_MSG", "wiadomoci");
+define("L_HELP_ROOM", "kana");
+define("L_HELP_CMD_0", "{} jest dla wymaganych parametrw, natomiast [] jest dla opcjonalnych.");
+define("L_HELP_CMD_1a", "Ustawia ilo wiadomoci jednoczenie wywietlanych w oknie (minimum i domylnie 5).");
+define("L_HELP_CMD_1b", "Wczytuje ponownie okno wiadomoci i wywietla n ostatnich wiadomosci (warto minimalna n to 5).");
+define("L_HELP_CMD_2a", "Zmienia czstotliwo odwierzania wiadomoci (w sekundach).<BR>jeli n nie jest podane lub mniejsze od 3, zamienia pomidzy brakiem odwierzania i odwierzaniem co 10 sekund.");
+define("L_HELP_CMD_2b", "Modify messages and users lists refresh delay (in seconds).<BR>If n is not specified or less than 3, toggles between no refresh and 10s refresh.");
+define("L_HELP_CMD_3", "Odwr kolejno wywietlania wiadomoci.");
+define("L_HELP_CMD_4", "Docz do innego kanau, tworzc go jeeli dotychczas nie istnieje i masz do tego uprawnienia.<BR>n rwne 0 dla kanaw prywatnych i 1 dla publicznych. Domylnie 1 jeeli nie podano inaczej.");
+define("L_HELP_CMD_5", "Opuszczenie systemu po wysaniu opcjonalnej wiadomoci.");
+define("L_HELP_CMD_6", "Ignoruje wiadomoci wysne przez uytkownika jeeli jego nazwa uytkownika (nick) s podane.<BR>Wycza ignorowanie podanego uytkownika po podaniu nazwy tego uytkownika (nicka) i '-' (minusa), lub wycza ignorowanie wszystkich uytkownikw po podaniu samego znaku '-' (minus).<BR>Bez podania adnej opcji, te polecenie otworzy okienko z wyszczeglnionymi nickami wszystkich ignorowanych uytkownikw.");
+define("L_HELP_CMD_7", "Przywr poprzednio wpisan lini (polecenie lub wiadomo)");
+define("L_HELP_CMD_8", "Poka/Ukryj czas przed wiadomociami.");
+define("L_HELP_CMD_9", "Wyrzuca uytkownika z kanau. Ta komenda moe zosta uyta tylko przez zarzdc kanau.");
+define("L_HELP_CMD_10", "Wysya prywatn wiadomo do wybranego uytkownika (inni uytkownicy nie zobacz tej wiadomoci).");
+define("L_HELP_CMD_11", "Pokazuje dodatkowe informacje na temat wybranego uytkownika.");
+define("L_HELP_CMD_12", "Wywietla okno do edycji ustawie uytkownika.");
+define("L_HELP_CMD_13", "Wcza lub wycza pokazywanie informacji o wejciu lub wyjciu uytkownika.");
+define("L_HELP_CMD_14", "Pozwala administratorowi lub zarzdcy kanau na nadanie praw zarzdcy innemu zarejestrowanemu uytkownikowi kanau.");
+define("L_HELP_CMD_15", "Czyci okno wiadomoci i wywietla tylko ostatnie pic wiadomoci.");
+define("L_HELP_CMD_16", "Save the last n messages (notifications ones excluded) to an HTML file. If n is not specified, all available messages will be taken into account.");
+define("L_HELP_CMD_17", "Allow the administrator to send an announce to all users whatever the room they are chatting into.");
+define("L_HELP_CMD_18", "Suggest an user chatting in an other room to join the one you are into.");
+define("L_HELP_CMD_19", "Allow the moderator(s) of a room or the administrator to \"banish\" an user from the room for a time defined by the administrator.<BR>The later can banish an user chatting in an other room than the one he is into and use the '<B>&nbsp;*&nbsp;</B>' setting to banish \"for ever\" an user from the chat as the whole.");
+define("L_HELP_CMD_20", "Describe what you're doing without refer yourself.");
+
+//message frame
+define("L_NO_MSG", "Aktualnie nie ma adnych wiadomoci...");
+define("L_TODAY_DWN", "The messages that have been sent today start below");
+define("L_TODAY_UP", "The messages that have been sent today start above");
+
+// message colors
+$TextColors = array(	"Czarny" => "#000000",
+				"Czerwony" => "#FF0000",
+				"Zielony" => "#009900",
+				"Niebieski" => "#0000FF",
+				"Purpurowy" => "#9900FF",
+				"Ciemny czerwony" => "#990000",
+				"Ciemny zielony" => "#006600",
+				"Ciemny niebieski" => "#000099",
+				"Brzowy" => "#996633",
+				"Srebrny" => "#006699",
+				"Carrot" => "#FF6600");
+
+//ignored popup
+define("L_IGNOR_TIT", "Zignorowany");
+define("L_IGNOR_NON", "brak ignorowanych uytkownikw");
+
+// whois popup
+define("L_WHOIS_ADMIN", "Administrator");
+define("L_WHOIS_MODER", "Zarzdca");
+define("L_WHOIS_USER", "Uytkownik");
+
+// Notification messages of user entrance/exit
+define("L_ENTER_ROM", "%s doczy(a) do tego kanau.");
+define("L_EXIT_ROM", "%s opuci(a) ten kana.");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/polish/localized.tutorial.php 0.15.0/chat/localization/polish/localized.tutorial.php
--- 0.14.5/chat/localization/polish/localized.tutorial.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/polish/localized.tutorial.php	2004-04-01 03:07:37.000000000 -0600
@@ -0,0 +1,625 @@
+<?php
+// File : polish.tutorial.php
+// Translation by Vasyl for www.katolik.pl 
+
+// Get the names and values for vars sent by the script that called this one
+if (isset($HTTP_GET_VARS))
+{
+	while(list($name,$value) = each($HTTP_GET_VARS))
+	{
+		$$name = $value;
+	};
+};
+?>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+
+<HEAD>
+<TITLE>Polska instrukcja <?php echo(APP_NAME." - ".APP_VERSION); ?></TITLE>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+<STYLE>
+A.topLink
+{
+	text-decoration: underline;
+	color: #0000C0;
+}
+
+A.topLink:hover, A.topLink:active
+{
+	color: #FF9900;
+	text-decoration: none;
+	font-weight: 800;
+}
+
+.RedText
+{
+	font-weight: 800;
+	color: #FF0000;
+}
+</STYLE>
+</HEAD>
+
+<BODY BGCOLOR="#CCCCFF">
+<P><A NAME="top"></P>
+<TABLE BORDER="5" CELLPADDING="5">
+<TR>
+ <TD><FONT SIZE="+2">Spis tresci</FONT></TD>
+</TR>
+</TABLE><BR>
+
+<P CLASS='RedText'>
+Uwaga: uzytkownicy Natscapa musza zdefiniowac poprawnie swoja strone kodowania inaczej nie zobacza polskich liter.<BR>
+Ustaw: View/CharacterSet/your language Auto-Detect, then View/CharacterSet/SetDefault.
+</P>
+
+<?php
+if (C_MULTI_LANG == "1") 
+{
+	?>
+	<A HREF="#language" CLASS="topLink">Wybor jezyka</A><BR>
+	<?php
+}
+?>
+<A HREF="#login" CLASS="topLink">Logowanie na czat</A><BR>
+<A HREF="#register" CLASS="topLink">Rejestracja</A><BR>
+<A HREF="#modProfile" CLASS="topLink">Modyfikacja<?php if (C_SHOW_DEL_PROF == "1") echo("/deleting"); ?> twoj profil</A><BR>
+<?php
+if (C_VERSION == "2") 
+{
+	?>
+	<A HREF="#create_room" CLASS="topLink">Tworzenie pokoju</A><BR>
+	<?php
+};
+if ($Ver == "H") 
+{
+	?>
+	<A HREF="#connection_state" CLASS="topLink">Stan polaczenia</A><BR>
+	<?php
+};
+?>
+<A HREF="#sending" CLASS="topLink">Wysylanie wiadomosci</A><BR>
+<A HREF="#users_list" CLASS="topLink">Lista uzytkownikow</A><BR>
+<A HREF="#exit" CLASS="topLink">Opuszczanie czatu</A><BR>
+<A HREF="#users_popup" CLASS="topLink">Podglad kto jest na czacie bez logowania</A><BR>
+<P>
+<A HREF="#customize" CLASS="topLink">Ustawienia wlasne</A><BR>
+<P>
+<A HREF="#commands" CLASS="topLink">Polecenia i komendy:</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#help" CLASS="topLink">Pomoc</A><BR>
+<?php
+if (C_USE_SMILIES == "1")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#smilies" CLASS="topLink">Graficzne dodatki</A><BR>
+	<?php
+};
+if (C_HTML_TAGS_KEEP != "none")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#text" CLASS="topLink">Formatowanie tekstu</A><BR>
+	<?php
+};
+?>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#invite" CLASS="topLink">Wejscie uzytkownika na czat</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#changeroom" CLASS="topLink">Zmiana pokoju</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#private" CLASS="topLink">Prywatne wiadomosci</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#actions" CLASS="topLink">Actions</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#ignore" CLASS="topLink">Ignoruj innych uzytkownikow</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#whois" CLASS="topLink">Sprawdzenie informacji o innych uzytkownikach</A><BR>
+<?php
+if (C_SAVE != "0")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#save" CLASS="topLink">Zachowaj wiadomosc</A><BR>
+	<?php
+};
+?>
+<P>
+<A HREF="#moderator" CLASS="topLink">Specjalne komendy dla administratora:</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#announce" CLASS="topLink">Wyslij ogloszenie do wszystkich</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#kick" CLASS="topLink">Wyrzucanie z czatu</A><BR>
+<?php
+if (C_BANISH != "0")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#banish" CLASS="topLink">Blokowanie dostepu do czatu</A><BR>
+	<?php
+};
+?>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#promote" CLASS="topLink">Redukcja moderatora do zwyklego usera</A><BR>
+<P>
+<HR>
+<HR>
+
+
+<?php
+if (C_MULTI_LANG == "1") 
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="language"><B>Wybierz jezyk:</B></A></FONT>
+	<P>
+	Mozesz wybrac jezyk sposrod <?php echo(APP_NAME); ?> have been translated by clicking on one of the flags at the start page. In the example bellow, an user selects the French language:
+	<P ALIGN="center">
+		<IMG SRC="images/tutorials/flags.gif" HEIGHT="44" WIDTH="424" ALT="Flags for language selection">
+		<BR><P ALIGN="right"><A HREF="#top">do gory</A></P>
+	<HR>
+	<?php
+}
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="login"><B>Logowanie:</B></A></FONT>
+<P>
+Jesli jestes juz zarejestrowany, zwyczajnie wpisz swoje imie uzytkownika i haslo. Nastepnie wybierz pokoj do ktorego chcesz wejsc i nacisnij POLACZ SIE.<BR>
+<?php
+if (C_REQUIRE_REGISTER == "1")
+{
+	?>
+	<P>
+	Jesli jestes juz <A HREF="#register">rejestrowany</A> wczesniej.
+	<?php
+}
+else
+{
+	?>
+	<P>
+	Oczywiscie <A HREF="#register">rejestracja</A> moze byc pominieta ale wtedy ktos inny tez moze uzywac Twojego nicka kiedy nie bedziesz zalogowany.
+	<?php
+}
+?>
+<BR><P ALIGN="right"><A HREF="#top">do gory</A></P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="register"><B>Zarejestruj sie:</B></A></FONT> 
+<P>
+Jesli nie jestes zarejestrowany<?php if (C_REQUIRE_REGISTER == "0") echo("and would like to"); ?>, wybierz ta opcje. Pojawi sie male okienko.
+<P> 
+<UL>
+	<LI>Wybierz swoja nazwe<?php if (!C_EMAIL_PASWD) echo(" and a password"); ?> poprzez wpisanie ich do odpowiednich pol. Wybrane przez Ciebie imie bedzie automatycznie wyswietlane na czacie. Do imienia nie mozesz uzywac spacji i bekslesza (\).
+<?php if (C_NO_SWEAR == "1") echo(" It can not contain \"bad words\"."); ?>
+	<LI>Nastepnie wpisz swoje imie, nazwisko i e-mail. Wszystkie te informacje musza byc wpisane jesli chcesz byc zarejestrowany. Informacje o plci jest opcjonalna.
+	<LI>Mozesz tez wpisac info o swojej stronie WWW.
+	<LI>Pole jezyka moze pomoc innym uzytkownikom w przyszlych dyskusjach. Beda wiedzieli jakie znasz jezyki (choc pewno po za polskim nikt u nas nie bedzie sie porozumiewal ;-).
+	<LI>Na koniec, jesli zyczysz sobie aby Twoj e-mail byl widoczny dla innych uzytkownikow zaznacz odpowiednie pole.
+	<LI>Nastepnie nacisnij REJESTRUJ i twoje konto zostanie utworzone.
+</UL>
+<P>
+<A NAME="modProfile"></A>Oczywiscie zarejestrowani uzytkownicy beda mogli modyfikowac<?php if (C_SHOW_DEL_PROF == "1") echo("/delete"); ?> swoje wlasne ustawienia przez klikniecie w odpowiednie linki <?php echo((C_SHOW_DEL_PROF == "0" ? "link" : "links")); ?>.<BR>
+<BR><P ALIGN="right"><A HREF="#top">do gory</A></P>
+<P>
+<HR>
+
+<?php
+if (C_VERSION == "2") 
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="create_room"><B>Tworzenie pokoju:</B></A></FONT> 
+	<P>
+	Utworzyc pokoje moga zarejestrowani uzytkownicy.<BR>
+	<P>
+	Nazwy pokoi nie moga zawierac przecinkow i baksleszy (\).<?php if (C_NO_SWEAR == "1") echo(" It can no more contains \"bad words\"."); ?>
+	<BR><P ALIGN="right"><A HREF="#top">do gory</A></P>
+	<P>
+	<HR>
+	<?php
+};
+if ($Ver == "H")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="connection_state"><B>Stan polaczenia:</B></A></FONT> 
+	<P>
+	Znak pokazujacy stan Twojego polaczenia jest wyswietlany w gornym prawym rogu ekranu, moze on przyjac 3 postacie:
+	<P>
+	<UL>
+		<LI><IMG SRC="images/connectOff.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="No connection"> kiedy polaczenie nie jest wymagane ;
+		<LI><IMG SRC="images/connectOn.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Connecting"> kiedy jestes polaczony ;
+		<LI><IMG SRC="images/connectError.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Connection failed"> kiedy jest problem z polaczeniem.
+	</UL>
+	<P>
+	Klikniecie czerwonego przycisku rozpocznie nowe polaczenie.
+	<BR><P ALIGN="right"><A HREF="#top">do gory</A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="sending"><B>Wysylanie wiadomosci:</B></A></FONT> 
+<P>
+Aby wyslac wiadomosc do pokoju wpisz swoj tekst w pole tekstowe w lewym dolnym rogu ekranu a nastepnie wcisnij ENTER lub przycisk WYSLIJ. Wiadomosci od innych uzytkownikow sa widoczne w przewijanym oknie.<BR>
+<?php if (C_NO_SWEAR == "1") echo("Note that \"bad words\" are skipped from messages."); ?>
+<P>
+Mozesz zmieniac kolor tekstu swoich wiadomosci przez wybor nowego koloru z listy kolorow na prawo od pola tekstowego.
+<BR><P ALIGN="right"><A HREF="#top">do gory</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="users_list"><B>Lista uzytkownikow:</B></A></FONT> 
+<P>
+<OL>
+	Dla uzytkownikow czatu sa zdefiniowane dwie zasady:<BR>
+	<LI>a little icon that shows gender is displayed before the nick of a registered user (clicking on it will launch the <A HREF="#whois">whois popup</A> for this user), while unregistered users have nothing but blank spaces displayed before their nick;<BR>
+ 	<LI>Nick (imie) administratora lub moderatora wyswietlany jest kursywa (italikiem).
+</OL>
+<P><I>Na przyklad</I>, ponizej:
+<TABLE BORDER=0 CELLSPACING=10>
+<TR>
+	<TD>
+ 	<IMG SRC="images/tutorials/usersList.gif" WIDTH=99 HEIGHT=131 BORDER=0 ALT="users list">
+	</TD>
+	<TD>
+	<UL>
+		<LI>Micolas jest administratorem lub moderatorem pokoju phpMyChat;<BR>
+		<LI>lolo i Jezek2 rejestrowanymi uzytkownikami w pokoju phpMyChat;<BR>
+		<LI>Mary zwyklym nie rejestrowanym uzytkownikiem.
+	</UL>
+	</TD>
+</TR>
+</TABLE>
+<BR><P ALIGN="right"><A HREF="#top">do gory</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="exit"><B>Opuszcznie czatu:</B></A></FONT>
+<P>
+Aby wyjsc z czatu kliknij "wyloguj".Mozesz tez wpisac w pole tekstowe komende:<BR>
+/exit<BR>
+/bye<BR>
+/quit
+Tym sposobem mozesz dac dluzsza informacje o swoim wylogowaniu.
+<I>na przyklad:</I> /quit do zobaczenia jutro!
+<P>
+po wyslaniu "do zobaczenia jutro!" w oknie pojawi sie info, ze opusciles czat.
+<BR><P ALIGN="right"><A HREF="#top">do gory</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="users_popup"><B>Sprawdzanie kto czatuje bez logowania sie:</B></A></FONT> 
+<P>
+Aby to uczynic kliknij w link pokazujacy liczbe polaczonych uzytkownikow na poczatku strony, albo jesli jestes na czacie kliknij w obrazek <IMG SRC="images/popup.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Users popup"> w prawym gornym rogu ekranu, otworzy sie nowe okno i wyswietli liste polaczonych uzytkownikow i pokoje w ktorych oni sa.<BR>
+Okno to zawiera imiona uzytkownikow, jesli jest ich mniej niz 3, liczbe uzytkownikow i otwarte pokoje.
+<P>
+Klikajac w <IMG SRC="images/sound.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Beeps"> ikone na gorze tego okna bedziesz mogl wlaczyc lub wylaczyc dzwiek pojawiajacy sie przy wchodzeniu na czat nowych uzytkownikow.
+<BR><P ALIGN="right"><A HREF="#top">do gory</A></P>
+<P>
+<HR>
+<HR>
+
+
+<P>
+<FONT SIZE="+1"><A NAME="customize"><B>Ustawienia:</B></A></FONT>
+<P>
+Jest kilka sposobow aby zmienic ustawienia czatu (sposob wyswietlania). Najprosciej wpisz odpowiednia komende do pola tekstowego i wyslij ja.
+<P>
+<UL>
+	<?php
+	if ($Ver == "H")
+	{
+ 		?>
+ 		<LI>Komenda <B>Clear</B> pozwala czyscic glowny ekran czatu i wyswietla ostatnie 5 wiadomosci.<BR>Napisz "/clear" bez cudzyslowow.
+		<P>
+		<?php
+	}
+	else
+	{
+		?>
+		<LI>komenda <B>Order</B> pozwala zmienic miejsce pojawiania sie nowych wiadomosci (albo u dolu ekranu albo u gory).<BR>napisz "/order" bez cudzyslowow.
+		<P>
+		<?php
+	};
+	?>
+	<LI>komenda <B>Notify</B> przelacza opcje widzenia info gdy inni uzytkownicy wchodza lub wychodza z czatu. Domyslnie opcja jest wlaczona<?php echo(C_NOTIFY ? "on" : "off"); ?> powiadomienie <?php echo(C_NOTIFY ? "will" : "won't"); ?> jest wlaczone.<BR>wpisz "/notify" bez cudzyslowow.
+	<P>
+	<LI>komenda <B>Timestamp</B> przelacza opcje widzenia czasu w jakim zostala wyslana wiadomosc oraz czasu serwera na pasku statusu - domyslnie opcja jest wlaczona <?php echo(C_SHOW_TIMESTAMP ? "on" : "off"); ?>.<BR>wpisz "/timestamp" bez cudzyslowow.
+	<P>
+	<LI>komenda <B>Refresh</B> zmienia czas odswiezania wiadomosci na twoim ekranie. Domyslnie czas ten ustawiony jest na <?php echo(C_MSG_REFRESH); ?> sekund. Aby zmienic wpisz "/refresh n" bez cudzyslowow, gdzie n to ilosc sekund - wpisz powyzej 3 bo inaczej nie wszystko zobaczysz!.
+	<P>
+	<I>na przyklad:</I> /refresh 5
+	<P>
+	zmieni czas odswiezania na 5 sek.
+	<P>
+	<?php
+	if ($Ver == "L")
+	{
+		?>
+		<LI>komenda <B>Show</B> wyswietla ostatnie n-wiadomosci wpisanych na czacie
+		<P>
+		<I>Na przyklad:</I> /show 50
+		<P>
+		wyswietli ostatnie 50 wpisow.</UL>
+		<?php
+	}
+	else
+	{
+ 		?>
+		<LI>komenda <B>Show i Last</B> wyswietla ostatnie <I>n</I> wiadomosci wpisanych na czacie. wpisz "/show n" or "/last n" bez cudzyslowow a zobaczysz ostatnie n-wpisow.
+		<P>
+		<I>Na przyklad:</I> /show 50 lub /last 50
+		<P>
+		wyswietli ostatnie 50 wpisow.</UL>
+		<?php
+	};
+	?>
+	<BR><P ALIGN="right"><A HREF="#top">do gory</A></P>
+	<P>
+</UL>
+<HR>
+<HR>
+
+
+<P>
+<FONT SIZE="+2"><A NAME="commands"><B><U>Dokumentacja i polecenia</U></B></A></FONT> 
+<P>
+
+<FONT SIZE="+1"><A NAME="help"><B>Pomoc:</B></A></FONT>
+<P>
+Aby uzyskac szybka pomoc kliknij na <IMG SRC="images/helpOff.gif" WIDTH=15 HEIGHT=15 BORDER=0 ALT="?"> lub wpisz <B>"/help" lub "/?" </B> w pole tekstowe.
+<BR><P ALIGN="right"><A HREF="#top">do gory</A></P>
+<P>
+<P>
+<HR>
+
+<?php
+if (C_USE_SMILIES == "1")
+{
+	include("./lib/smilies.lib.php");
+	$Nb = count($SmiliesTbl);
+	$ResultTbl = Array();
+	DisplaySmilies($ResultTbl,$SmiliesTbl,$Nb,"tutorial");
+	unset($SmiliesTbl);
+	?>
+	<FONT SIZE="+1"><A NAME="smilies"><B>Usmieszki:</B></A></FONT>
+	<P>Mozesz do swoich wypowiedzi dodawac graficzne znaczki wpisujac odpowiednia kombinacje wg podanych zasad.
+	<P ALIGN="center">
+	<TABLE BORDER=0 CELLPADDING=3 CELLSPACING=5>
+	<?php
+	$i = "0";
+	$Nb = count($ResultTbl);
+	while($i < $Nb)
+	{
+		if ($i > 0) echo("\t");
+		echo("<TR VALIGN=BOTTOM>\n");
+		echo("$ResultTbl[$i]");
+		echo("\t</TR>\n\t<TR>\n");
+		$i++;
+		echo("$ResultTbl[$i]");
+		echo("\t</TR>\n");
+		$i++;
+	};
+	unset($ResultTbl);
+	?>
+	</TABLE>
+	<P>
+	<I>Na przyklad</I>, wyslanie tekstu "Hi Jack :)" bez cudzyslowow wyswietli wiadomosc Hi Jack <IMG SRC="images/smilies/smile1.gif" WIDTH=15 HEIGHT=15 ALT=":)">.
+	<BR><P ALIGN="right"><A HREF="#top">do gory</A></P>
+	<P>
+	<HR>
+	<?php
+};
+
+if (C_HTML_TAGS_KEEP != "none")
+{
+	?>
+	<FONT SIZE="+1"><A NAME="text"><B>Formatowanie tekstu:</B></A></FONT>
+	<P>
+	Tekst moze byc pogrubiany, pochylany i podkreslany poprzes stosowanie odpowiednich znacznikow &LT;B&GT; &LT;/B&GT;, &LT;I&GT; &LT;/I&GT; or &LT;U&GT; &LT;/U&GT; HTML.
+	<P>
+	<I>Na przyklad</I>, &LT;B&GT;this text&LT;/B&GT; da w wyniku <B>this text</B>.
+	<P>
+	Do stworzenia linku wystarczy wpisac adres strony - link stworzy sie automatycznie.
+	<BR><P ALIGN="right"><A HREF="#top"do gory</A></P>
+	<P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="invite"><B>Wysylanie komunikatow:</B></A></FONT>
+<P>
+Mozesz stosowac komende <B>invite</B> do wysylania prywatnych wiadomosci.
+<P>
+<I>Na przyklad:</I> /invite Jack 
+<P>
+wysyla prywatna wiadomosc do Jack'a sugerujac mu przylaczenie do aktualnego czatu. Ta wiadomosc zawiera nazwe docelowego pokoju i ukazuje sie jako link.
+<P>
+Mozna wyslac taka wiadomosc podajac kilka imion uzytkownikkow (np. "/invite Jack,Helen,Alf"). Musza byc rozdzielone przecinkiem (,) bez spacji.
+<BR><P ALIGN="right"><A HREF="#top">do gory</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="changeroom"><B>Zmiana pokoju:</B></A></FONT>
+<P>
+Lista z prawej strony ekranu jest lista pokoi oraz uzytkownikow, ktorzy aktualnie sa w danym pokoju. Aby opuscic pokoj i przejsc do innego kliknij w nazwe innego pokoju. Puste pokoje nie ukazuja sie na liscie. Mozesz przejsc do pustego pokoju wpisujac /join #nazwa (bez przecinkow)
+<P>
+<I>na przyklad:</I> /join #RedRoom 
+<P>
+przeniesie cie do pokoju RedRoom.
+<?php
+if (C_VERSION == "2")
+{
+	echo(C_REQUIRE_REGISTER == "0" ? "<P>If you're a registered user, you" : "<BR><P>You");
+	?>
+	 Bedac zarejestrowanym uzytkownikiem mozesz ta sama metoda stworzyc nowy pokoj ale wtedy musisz okreslic jego typ: 0 (zero) - pkoj prywatny; 1 (jeden) - publiczny.
+	<P>
+	<I>Np:</I> /join 0 #MyRoom 
+	<P>
+	utworzy prywatny pokoj o nazwie MyRoom.
+	<P>
+	Nazwy pokojow nie moga zawierac przecinkow i beksleszy (\).<?php if (C_NO_SWEAR == "1") echo(" It can no more contains \"bad words\"."); ?>
+	<?php
+}
+?>
+<BR><P ALIGN="right"><A HREF="#top">do gory</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B>Edycja swoich danych:</B></FONT>
+<P>
+Komenda <B>Profile</B> otwiera nowe okienko gdzie mozesz dokonac zmian w swoich danych (oprocz nicka i hasla - to mozesz zmienic tylko na stronie startowej).<BR>wpisz /profile
+<BR><P ALIGN="right"><A HREF="#top">do gory</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B>Przywolanie ostatniego wpisu:</B></FONT>
+<P>
+Komenda <B>! </B> przywoluje ostatnia wyslana przez Ciebie wiadomosc.<BR>wpisz /!
+<BR><P ALIGN="right"><A HREF="#top">do gory</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B>Bezposrednia wypowiedz:</B></FONT>
+<P>
+Bezposrednia publiczna wiadomosc do konkretnego uzytkownika mozna wyslac klikajac raz na imie uzytkownika z listy.
+<BR><P ALIGN="right"><A HREF="#top">do gory</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="private"><B>Prywatne wiadomosci:</B></A></FONT>
+<P>
+Aby wyslac prywatna wiadomosc do jakiegos uzytkownika obecnego w twoim pokoju wpisz komende<B>"/msg imie_xxx tekst_wiedomosci" lub "/to imie_xxx tekst_wiedomosci"</B> oczywiscie bez cudzyslowow.
+<P>
+<I>Na przyklad, do kogos o nicku Jack:</I> /msg Jack jak sie masz, co u ciebie?
+<P>
+Ta wiadomosc ukaze sie tylko Jack'owi i Tobie.
+<P>
+Klikniecie na Nicka (imie) osoby wysylajacej wiadomosc w glownej ramce automatycznie doda te komende do pola tekstowego dla wiadomosci
+<BR><P ALIGN="right"><A HREF="#top">do gory</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="actions"><B>Actions:</B></A></FONT>
+<P>
+To describe what you're doing you can use the <B>command "/me action"</B> without quotes.
+<P>
+<I>For example:</I> If Jack sends the message "/me is smoking a cigarette" the message frame will shown "<B>* Jack</B> is smoking a cigarette".
+<BR><P ALIGN="right"><A HREF="#top">Back to the top</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="ignore"><B>Ignorowanie uzytkownikow:</B></A></FONT>
+<P>
+Aby zignorowac wiadomosci pisane przez kogos zastosuj komende <B>"/ignore nick_xxx"</B> bez cudzyslowow.
+<P>
+<I>na przyklad:</I> /ignore Jack
+<P>
+i od tej chwili zadna wiadomosc od Jack'a nie pojawi sie na twoim ekranie.
+<P>
+Aby odzyskac wyswietlanie wiadomosci od wszystkich ignorowanych uzytkownikow wpisz <B>"/ignore"</B> bez cudzyslowow.
+<P>
+Aby odzyskac wyswietlanie wiadomosci od jednego uzytkownika wpisz  <B>"/ignore - imie_xxx"</B> bez cudzyslowow gdzie "-" jest myslnikiem (minus). <P>
+<P>
+<I>Na przyklad:</I> /ignore - Jack 
+<P>
+i od tej chwili znowu wiadomosci pisane przez Jack'a beda widoczne u Ciebie mimo wczesniejszego ignorowania.
+If you don't specify an username after the hyphen, your "ignored list" will be cleaned.
+<P>
+Mozesz ignorowac i przywracac wpisy kilku osob na raz (np. "/ignore Jack,Helen,Alf" lub "/ignore - Jack,Alf"). ale oddzielajace imiona przecinki (,) musza byc bez spacji.
+<BR><P ALIGN="right"><A HREF="#top">do gory</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="whois"><B>Informacje o uzytkowniku:</B></A></FONT>
+<P>
+Komenda<B>command "/whois username"</B> otworzy oddzielne okno z informacjami o uzytkowniku.
+<P>
+<I>np:</I> /whois Jack
+<P>
+i dowiesz sie ciut wiecej o Jack'u.
+<BR><P ALIGN="right"><A HREF="#top">do gory</A></P>
+<P>
+<HR>
+
+<?php
+if (C_SAVE != "0")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="save"><B>Zachowanie wiadomosci:</B></A></FONT>
+	<P>
+	komenda <B>"/save n"</B> zachowuje ostatnie n wiadomosci.
+	<P>
+	<I>np:</I> /save 5
+	<P>
+	gdzie '5' jest liczba wiadomosci do zachowania. Jesli nie okreslisz liczby wszystkie wiadomosci z danej sesji idanego pokoju zostana zachowane.
+	<BR><P ALIGN="right"><A HREF="#top">do gory</A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+<HR>
+
+
+<P>
+<FONT SIZE="+2"><A NAME="moderator"><B><U>Komendy tylko dla administratora/moderatora</U></B></A></FONT> 
+
+<P>
+<FONT SIZE="+1"><A NAME="announce"><B>Wysylanie komunikatow:</B></A></FONT>
+<P>
+Administrator wysyla komunikat wszystkim uzytkownikom</B>.
+<P>
+<I>np: /announce czat bedzie nie czynny do godz. 15.00.</I>
+<BR><P ALIGN="right"><A HREF="#top">do gory</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="kick"><B>Wyrzucanie uzytkownikow:</B></A></FONT>
+<P>
+Moderator moze kogos wyrzucic z czatu komenda: <B>kick</B>. Oczywiscie wyrzucany musi byc w tym czasie na czacie...
+<P>
+<I>np.</I>, by wyrzucic Jack'a trzeba wpisac:</I> /kick Jack</I>
+<BR><P ALIGN="right"><A HREF="#top">do gory</A></P>
+<P>
+<HR>
+
+<?php
+if (C_BANISH != "0")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="banish"><B>Blokowanie dostepu do czatu:</B></A></FONT>
+	<P>
+	Blokowanie czyli banowanie robi sie prze komende: <B>ban</B>.<BR>
+	The administrator can banish an user from another room than the one he is chatting into. He can also banish an user forever and from the chat as a whole with the '<B>&nbsp;*&nbsp;</B>' setting that must be inserted before the nick of the user to be banished.
+	<P>
+	<I>np.</I>, Jack'a banuje sie przez : <I>/ban Jack</I> lub <I>/ban * Jack</I>
+	<BR><P ALIGN="right"><A HREF="#top">do gory</A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="promote"><B>Redukowanie uprawnien:</B></A></FONT>
+<P>
+Administrator moze zredukowac moderatora do zwyklego uzytkownika komenda <B>promote</B>.
+<P>
+<I>np.</I>, <I> /promote Jack</I>
+<P>
+Tylko administrator moze uzywac tej komendy.
+<BR><P ALIGN="right"><A HREF="#top">do gory</A></P>
+<P>
+
+
+</BODY>
+</HTML>
diff -ruN 0.14.5/chat/localization/polish/regex.txt 0.15.0/chat/localization/polish/regex.txt
--- 0.14.5/chat/localization/polish/regex.txt	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/polish/regex.txt	2004-04-01 03:07:37.000000000 -0600
@@ -0,0 +1 @@
+pl|polish
\ No newline at end of file
Binary files 0.14.5/chat/localization/portuguese/flag.gif and 0.15.0/chat/localization/portuguese/flag.gif differ
diff -ruN 0.14.5/chat/localization/portuguese/localized.admin.php 0.15.0/chat/localization/portuguese/localized.admin.php
--- 0.14.5/chat/localization/portuguese/localized.admin.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/portuguese/localized.admin.php	2004-04-01 03:07:37.000000000 -0600
@@ -0,0 +1,61 @@
+<?php
+// File : portuguese.lang.php
+// Translation by Gustavo Felisberto <humpback@d-attitude.com>
+
+// extra header for charset
+$Charset = "iso-8859-1";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// Top frame
+define("A_MENU_0", "Administration for %s");
+define("A_MENU_1", "Registered users");
+define("A_MENU_2", "Banished users");
+define("A_MENU_3", "Clean rooms");
+define("A_MENU_4", "Send mails");
+
+// Frame for registered users
+define("A_SHEET1_1", "List of registered users and their permissions");
+define("A_SHEET1_2", "Nome de utilizador");
+define("A_SHEET1_3", "Permisses");
+define("A_SHEET1_4", "Salas moderadas");
+define("A_SHEET1_5", "Salas moderadas so separadas por virgula (,) sem espaos entre elas.");
+define("A_SHEET1_6", "Remover os perfis seleccionados");
+define("A_SHEET1_7", "Mudar");
+define("A_SHEET1_8", "There is no registered user except yourself.");
+define("A_SHEET1_9", "Banish checked profiles");
+define("A_SHEET1_10", "Now you have to move to the banished users sheet to refine your choices.");
+define("A_SHEET1_11", "Last connection");
+define("A_USER", "Utilizador");
+define("A_MODER", "Moderador");
+define("A_PAGE_CNT", "Page %s of %s");
+
+// Frame for banished users
+define("A_SHEET2_1", "List of banished users and concerned rooms");
+define("A_SHEET2_2", "IP");
+define("A_SHEET2_3", "Concerned rooms");
+define("A_SHEET2_4", "Until");
+define("A_SHEET2_5", "no end");
+define("A_SHEET2_6", "rooms are splitted by comma without spaces (,) if they are less than 4, else the '<B>&nbsp;*&nbsp;</B>' sign<BR>banish from all rooms.");
+define("A_SHEET2_7", "Remove banishment for checked user(s)");
+define("A_SHEET2_8", "There is no banished user.");
+
+// Frame for cleaning rooms
+define("A_SHEET3_1", "Lista de salas existentes");
+define("A_SHEET3_2", "Limpar uma sala \"non-default\" vai tambem limpar todas as definies de moderao dessa sala.");
+define("A_SHEET3_3", "Limpar salas seleccionadas.");
+define("A_SHEET3_4", "There is no room to clean.");
+
+// Frame for sending mails
+define("A_SHEET4_0", "You haven't set required variables in the<BR>'chat/admin/mail4admin.php' script.");
+define("A_SHEET4_1", "Send e-mails");
+define("A_SHEET4_2", "To:");
+define("A_SHEET4_3", "Select all");
+define("A_SHEET4_4", "Subject:");
+define("A_SHEET4_5", "Messages:");
+define("A_SHEET4_6", "Start sending");
+define("A_SHEET4_7", "All e-mails have been sent.");
+define("A_SHEET4_8", "Internal error while sending the mails.");
+define("A_SHEET4_9", "Addresse(s), subject or message is missing!");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/portuguese/localized.chat.php 0.15.0/chat/localization/portuguese/localized.chat.php
--- 0.14.5/chat/localization/portuguese/localized.chat.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/portuguese/localized.chat.php	2004-04-01 03:07:38.000000000 -0600
@@ -0,0 +1,221 @@
+<?php
+// File : portuguese.lang.php
+// Translation by Gustavo Felisberto <humpback@d-attitude.com> and
+//   Jose' Carlos Pereira <phpHeaven@abismo.org>
+
+// extra header for charset
+$Charset = "iso-8859-1";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// welcome page
+define("L_TUTORIAL", "Tutorial");
+
+define("L_WEL_1", "As mensagens so apagadas aps");
+define("L_WEL_2", "horas e nicks aps");
+define("L_WEL_3", "minutos ...");
+
+define("L_CUR_1", "No momento, existem");
+define("L_CUR_2", "no chat.");
+define("L_CUR_3", "Utilizadores nas salas de chat neste momento");
+define("L_CUR_4", "utilizadores em salas privadas");
+
+define("L_SET_1", "Por favor, configure ...");
+define("L_SET_2", "o seu nick");
+define("L_SET_3", "o nmero de mensagens a serem mostradas");
+define("L_SET_4", "o intervalo entre cada atualizao");
+define("L_SET_5", "Escolha uma sala de chat ...");
+define("L_SET_6", "salas");
+define("L_SET_7", "Faa sua escolha ...");
+define("L_SET_8", "salas publicas criadas por utilizadores");
+define("L_SET_9", "crie a sua prpria");
+define("L_SET_10", "pblica");
+define("L_SET_11", "privada");
+define("L_SET_12", "sala");
+define("L_SET_13", "Pode premir para");
+define("L_SET_14", "conversar");
+
+define("L_SRC", "est disponvel gratuitamente em");
+
+define("L_SECS", "segundos");
+define("L_MIN", "minuto");
+define("L_MINS", "minutos");
+
+// registration stuff:
+define("L_REG_1", "A sua password");
+define("L_REG_1r", "(apenas quando est registado)");
+define("L_REG_2", "Gesto da sua conta");
+define("L_REG_3", "Registar");
+define("L_REG_4", "Editar as preferncias");
+define("L_REG_5", "Apagar utilizador");
+define("L_REG_6", "Registo do utilizador");
+define("L_REG_7", "a sua password");
+define("L_REG_8", "o seu e-mail");
+define("L_REG_9", "O seu registo foi completado sem problemas.");
+define("L_REG_10", "Voltar");
+define("L_REG_11", "A Editar");
+define("L_REG_12", "A modificar a informao do utilizador");
+define("L_REG_13", "A Apagar utilizador");
+define("L_REG_14", "Login");
+define("L_REG_15", "Log In");
+define("L_REG_16", "Mudar");
+define("L_REG_17", "As suas informaes foram alteradas com sucesso.");
+define("L_REG_18", "Foi kickado por um moderador.");
+define("L_REG_19", "Tem a certeza que deseja ser removido ?");
+define("L_REG_20", "Sim");
+define("L_REG_21", "Foi removido com sucesso.");
+define("L_REG_22", "No");
+define("L_REG_25", "Fechar");
+define("L_REG_30", "nome prprio");
+define("L_REG_31", "apelido");
+define("L_REG_32", "WEB");
+define("L_REG_33", "mostrar e-mail ao comando /whois");
+define("L_REG_34", "A editar perfil do utilizador");
+define("L_REG_35", "Administrao");
+define("L_REG_36", "linguas faladas");
+define("L_REG_37", "Campos com <span class=\"error\">*</span> devem ser completos.");
+define("L_REG_39", "A sala onde se encontrava foi removida por um administrador.");
+define("L_REG_45", "sexo");
+define("L_REG_46", "masculino");
+define("L_REG_47", "femenino");
+
+// e-mail validation stuff
+define("L_EMAIL_VAL_1", "Comunicao de Password");
+define("L_EMAIL_VAL_2", "Bem vindo ao servio de chat.");
+define("L_EMAIL_VAL_Err", "Erro interno. Por favor contacte o administrador: <a href=\"mailto:%s\">%s</a>.");
+define("L_EMAIL_VAL_Done", "A sua password foi enviada para o endereo de correio indicado.");
+
+// admin stuff
+define("L_ADM_1", "%s no  moderador desta sala.");
+define("L_ADM_2", "J no  um utilizador registado.");
+
+//error messages
+define("L_ERR_USR_1", "Este nick j est a ser usado. Por favor escolha outro.");
+define("L_ERR_USR_2", "Deve indicar um nick.");
+define("L_ERR_USR_3", "Este nick est registado. Por favor introduza a sua password ou escolha outro nome.");
+define("L_ERR_USR_4", "Introduziu uma password errada.");
+define("L_ERR_USR_5", "Deve indicar um nick.");
+define("L_ERR_USR_6", "Deve indicar uma password.");
+define("L_ERR_USR_7", "Deve indicar um e-mail.");
+define("L_ERR_USR_8", "Deve indicar um e-mail vlido.");
+define("L_ERR_USR_9", "Este nick j est a ser usado.");
+define("L_ERR_USR_10", "Nick ou password incorrectos.");
+define("L_ERR_USR_11", "Tem de ser administrador.");
+define("L_ERR_USR_12", "Voc  administrador, por isso no pode ser removido.");
+define("L_ERR_USR_13", "Para criar a sua prpria sala tem de estar registado.");
+define("L_ERR_USR_14", "Tem de estar registado antes de conversar.");
+define("L_ERR_USR_15", "Tem de escrever o seu nome completo.");
+define("L_ERR_USR_16", "O nick no pode conter espaos, vrgulas nem backslash (\\).");
+define("L_ERR_USR_17", "Esta sala no existe e voc no esta autorizado a criar uma.");
+define("L_ERR_USR_18", "O seu nick contem uma palavra banida.");
+define("L_ERR_USR_19", "Voc no pode estar em mais de uma sala simultaneamente.");
+define("L_ERR_USR_20", "Foi banido desta sala ou do sistema de chat.");
+define("L_ERR_ROM_1", "O nome da sala no pode conter vrgulas nem backslash (\\).");
+define("L_ERR_ROM_2", "Foi encontrada uma palavra banida no nome da sala que pretende criar.");
+define("L_ERR_ROM_3", "Esta sala j existe e  pblica.");
+define("L_ERR_ROM_4", "Nome de sala invlido.");
+
+// users frame or popup
+define("L_EXIT", "Sair");
+define("L_DETACH", "Destacar");
+define("L_EXPCOL_ALL", "Expandir/Fechar tudo");
+define("L_CONN_STATE", "Estado de coneco");
+define("L_CHAT", "Conversa");
+define("L_USER", "utilizador");
+define("L_USERS", "utilizadores");
+define("L_NO_USER", "Nenhum utilizador");
+define("L_ROOM", "sala");
+define("L_ROOMS", "salas");
+define("L_EXPCOL", "Expandir/Fechar sala");
+define("L_BEEP", "Apitar/no apitar quando entra utilizador");
+define("L_PROFILE", "Mostrar perfil");
+define("L_NO_PROFILE", "Nenhum perfil");
+
+// input frame
+define("L_HLP", "Ajuda");
+define("L_BAD_CMD", "Isto no  um comando valido !");
+define("L_ADMIN", "%s j  administrador !");
+define("L_IS_MODERATOR", "%s j  moderador !");
+define("L_NO_MODERATOR", "So o moderador desta sala pode usar este comando.");
+define("L_MODERATOR", "%s  agora o moderador desta sala.");
+define("L_NONEXIST_USER", "O utilizador %s no esta nesta sala.");
+define("L_NONREG_USER", "O utlizador %s no esta registado.");
+define("L_NONREG_USER_IP", "O Ip : %s.");
+define("L_NO_KICKED", "O utilizador %s  moderador ou administrador e no pode ser expulso.");
+define("L_KICKED", "O utilizador %s foi expulso.");
+define("L_NO_BANISHED", "O utilizador %s  moderador ou adminstrador portanto no pode ser banido.");
+define("L_BANISHED", "O utilizador %s foi banido.");
+define("L_SVR_TIME", "Hora do servidor: ");
+define("L_NO_SAVE", "No h mensagens para guardar.");
+define("L_NO_ADMIN", "S o administrador pode usar este comando.");
+define("L_ANNOUNCE", "ANUNCIAR");
+define("L_INVITE", "%s sugere que se junte a ele/ela na sala <a href=\"#\" onClick=\"window.parent.runCmd('%s','%s')\">%s</a>.");
+define("L_INVITE_REG", " Tem que estar registado para entrar nesta sala.");
+define("L_INVITE_DONE", "O seu convite foi enviado para %s.");
+define("L_OK", "Enviar");
+
+// help popup
+define("L_HELP_TIT_1", "Smilies");
+define("L_HELP_TIT_2", "Formatao de texto para mensagens");
+define("L_HELP_FMT_1", "Pode colocar texto em bold, italico e sublinhado usando os simbolos apropriados &lt;B&gt; &lt;/B&gt;, &lt;I&gt; &lt;/I&gt; ou &lt;U&gt; &lt;/U&gt;.<BR>Por exemplo, &lt;B&gt;este texto&lt;/B&gt; ir aparecer como <B>este texto</B>.");
+define("L_HELP_FMT_2", "Para criar um hyperlink (para e-mail ou pgina web) nas suas mensagens, simplesmente escreva a morada sem tages. O hyperlink ser gerado automticamente.");
+define("L_HELP_TIT_3", "Comandos");
+define("L_HELP_USR", "utilizador");
+define("L_HELP_MSG", "mensagem");
+define("L_HELP_ROOM", "sala");
+define("L_HELP_CMD_0", "{} representa algo requerido, [] algo opcional.");
+define("L_HELP_CMD_1a", "Numero de mensagens a mostrar, minimo e por defeito 5.");
+define("L_HELP_CMD_1b", "refresh da frame das mensagens a mostrar as ultimas n mensagens, minimo e por defeito so 5.");
+define("L_HELP_CMD_2a", "Modificar o intervalo (em segundos) do refresh da frame das mensagens.<BR>Se n no  indicado ou menor que 3, alterna entre no refresh e 10s de refresh.");
+define("L_HELP_CMD_2b", "Modify messages and users lists refresh delay (in seconds).<BR>If n is not specified or less than 3, toggles between no refresh and 10s refresh.");
+define("L_HELP_CMD_3", "Inverte a ordem das mensagens.");
+define("L_HELP_CMD_4", "Muda para outra sala, cria a sala se esta no existe (caso seja permitido).<BR>n igual a 0 para salas privadas, 1 para salas publicas, por defeito 1.");
+define("L_HELP_CMD_5", "Sai do chat depois de escrever a mensagem opcional.");
+define("L_HELP_CMD_6", "Evita mostrar mensagens do utilizador se o nick foi escolhido.<BR>Set ignoring off for an user when nick and - are both specified, for all users when - is but not nick.<BR>With no option, this command pops up a window that shows all ignored nicks.");
+define("L_HELP_CMD_7", "Chama a umtima mensagem (ou comando) escritos.");
+define("L_HELP_CMD_8", "Mostra/Esconde a hora antes das mensagens.");
+define("L_HELP_CMD_9", "Kika o utilizador da sala. Apenas um moderador pode fazer isto.");
+define("L_HELP_CMD_10", "Envia uma mensafem privada para o utilizador escolhido (apenas esse utilizador a vai ver a mensagem).");
+define("L_HELP_CMD_11", "Mostra informaes sobre o utilizador.");
+define("L_HELP_CMD_12", "Abre uma janela para editar as informaes sobre o utilizador.");
+define("L_HELP_CMD_13", "Liga/Desliga notificaes sobre entrada/saida de pessoas na sala..");
+define("L_HELP_CMD_14", "Permite ao administrador ou moderador da sala, promover outro utilizador a moderador.");
+define("L_HELP_CMD_15", "Limpa a janela de mensagens e mostra apenas as ultimas 5 mensagens.");
+define("L_HELP_CMD_16", "Grava as ultimas n mensagens (mensagens de notificao excluidas) para um ficheiro HTML file. Se n no  indicado salta todas as mensagens.");
+define("L_HELP_CMD_17", "Permite ao administrador enviar um anuncio para todos os utilizadores (independentemente da sala onde esto.");
+define("L_HELP_CMD_18", "Suggest an user chatting in an other room to join the one you are into.");
+define("L_HELP_CMD_19", "Allow the moderator(s) of a room or the administrator to \"banish\" an user from the room for a time defined by the administrator.<BR>The later can banish an user chatting in an other room than the one he is into and use the '<B>&nbsp;*&nbsp;</B>' setting to banish \"for ever\" an user from the chat as the whole.");
+define("L_HELP_CMD_20", "Describe what you're doing without refer yourself.");
+
+//message frame
+define("L_NO_MSG", "No existe neste momento nenhuma mensagem ...");
+define("L_TODAY_DWN", "As mensagens que foram enviadas hoje comecam em baixo");
+define("L_TODAY_UP", "As mensagens que foram enviadas hoje comecam em cima");
+
+// message colors
+$TextColors = array(	"Negro" => "#000000",
+				"Vermelho" => "#FF0000",
+				"Verde" => "#009900",
+				"Azul" => "#0000FF",
+				"Purpre" => "#9900FF",
+				"Vermelho Escuro" => "#990000",
+				"Verde Escuro" => "#006600",
+				"Azul Escuro" => "#000099",
+				"Castanho" => "#996633",
+				"Azul Marinho" => "#006699",
+				"Cenoura" => "#FF6600");
+
+//ignored popup
+define("L_IGNOR_TIT", "Ignorado");
+define("L_IGNOR_NON", "Nenhum utilizador ignorado");
+
+// whois popup
+define("L_WHOIS_ADMIN", "Administrador");
+define("L_WHOIS_MODER", "Moderador");
+define("L_WHOIS_USER", "Utilizador");
+
+// Notification messages of user entrance/exit
+define("L_ENTER_ROM", "%s entrou nesta sala");
+define("L_EXIT_ROM", "%s saiu desta sala");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/portuguese/regex.txt 0.15.0/chat/localization/portuguese/regex.txt
--- 0.14.5/chat/localization/portuguese/regex.txt	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/portuguese/regex.txt	2004-04-01 03:07:38.000000000 -0600
@@ -0,0 +1 @@
+pt([-_][[:alpha:]]{2})?|portuguese
\ No newline at end of file
Binary files 0.14.5/chat/localization/romanian/flag.gif and 0.15.0/chat/localization/romanian/flag.gif differ
diff -ruN 0.14.5/chat/localization/romanian/localized.admin.php 0.15.0/chat/localization/romanian/localized.admin.php
--- 0.14.5/chat/localization/romanian/localized.admin.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/romanian/localized.admin.php	2004-04-01 03:07:38.000000000 -0600
@@ -0,0 +1,61 @@
+<?php
+// File : romanian.lang.php
+// Translation by Radu Swider <swidera@satline.ro> & Ciprian Popovici-Oana <floppy@kermit.cs.pub.ro>
+
+// extra header for charset
+$Charset = "iso-8859-1";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// Top frame
+define("A_MENU_0", "Administration for %s");
+define("A_MENU_1", "Registered users");
+define("A_MENU_2", "Banished users");
+define("A_MENU_3", "Clean rooms");
+define("A_MENU_4", "Send mails");
+
+// Frame for registered users
+define("A_SHEET1_1", "List of registered users and their permissions");
+define("A_SHEET1_2", "Numele");
+define("A_SHEET1_3", "Permisii");
+define("A_SHEET1_4", "Camere moderate");
+define("A_SHEET1_5", "Camerele moderate sunt separate de virgula (,) fara spatii.");
+define("A_SHEET1_6", "Stergerea activata");
+define("A_SHEET1_7", "Schimba");
+define("A_SHEET1_8", "There is no registered user except yourself.");
+define("A_SHEET1_9", "Banish checked profiles");
+define("A_SHEET1_10", "Now you have to move to the banished users sheet to refine your choices.");
+define("A_SHEET1_11", "Last connection");
+define("A_USER", "Utilizator");
+define("A_MODER", "Moderator");
+define("A_PAGE_CNT", "Page %s of %s");
+
+// Frame for banished users
+define("A_SHEET2_1", "List of banished users and concerned rooms");
+define("A_SHEET2_2", "IP");
+define("A_SHEET2_3", "Concerned rooms");
+define("A_SHEET2_4", "Until");
+define("A_SHEET2_5", "no end");
+define("A_SHEET2_6", "rooms are splitted by comma without spaces (,) if they are less than 4, else the '<B>&nbsp;*&nbsp;</B>' sign<BR>banish from all rooms.");
+define("A_SHEET2_7", "Remove banishment for checked user(s)");
+define("A_SHEET2_8", "There is no banished user.");
+
+// Frame for cleaning rooms
+define("A_SHEET3_1", "Lista camerelor existente");
+define("A_SHEET3_2", "Clean a \"non-default\" room will also remove all moderator<BR>status for this room.");
+define("A_SHEET3_3", "Clean selected rooms");
+define("A_SHEET3_4", "There is no room to clean.");
+
+// Frame for sending mails
+define("A_SHEET4_0", "You haven't set required variables in the<BR>'chat/admin/mail4admin.php' script.");
+define("A_SHEET4_1", "Send e-mails");
+define("A_SHEET4_2", "To:");
+define("A_SHEET4_3", "Select all");
+define("A_SHEET4_4", "Subject:");
+define("A_SHEET4_5", "Messages:");
+define("A_SHEET4_6", "Start sending");
+define("A_SHEET4_7", "All e-mails have been sent.");
+define("A_SHEET4_8", "Internal error while sending the mails.");
+define("A_SHEET4_9", "Addresse(s), subject or message is missing!");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/romanian/localized.chat.php 0.15.0/chat/localization/romanian/localized.chat.php
--- 0.14.5/chat/localization/romanian/localized.chat.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/romanian/localized.chat.php	2004-04-01 03:07:38.000000000 -0600
@@ -0,0 +1,234 @@
+<?php
+// File : romanian.lang.php
+// Original file by Radu Swider <swidera@satline.ro>
+// Modified and update by Ciprian Popovici-Oana <floppy@kermit.cs.pub.ro>
+
+// extra header for charset
+$Charset = "iso-8859-1";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// welcome page
+define("L_TUTORIAL", "Tutorial");
+
+define("L_WEL_1", "Mesajele sunt sterse dupa");
+define("L_WEL_2", "ore si utilizatorii dupa");
+define("L_WEL_3", "minute ...");
+
+define("L_CUR_1", "Acum");
+define("L_CUR_2", "pe chat.");
+define("L_CUR_3", "Utilizatori aflati in camere chat");
+define("L_CUR_4", "utilizatori in camere private");
+
+define("L_SET_1", "Actualizeaza ...");
+define("L_SET_2", "porecla");
+define("L_SET_3", "numarul de mesaje de afisat");
+define("L_SET_4", "timpul de actualizare");
+define("L_SET_5", "Selecteaza o camera de chat...");
+define("L_SET_6", "camere disponibile");
+define("L_SET_7", "Faceti alegerea ...");
+define("L_SET_8", "camere publice create de utilizatori");
+define("L_SET_9", "creeaza a ta");
+define("L_SET_10", "publica");
+define("L_SET_11", "privata");
+define("L_SET_12", "camera");
+define("L_SET_13", "Apoi treci la");
+define("L_SET_14", "chat");
+
+define("L_SRC", "este disponibil gratuit de la");
+
+define("L_SECS", "secunde");
+define("L_MIN", "minut");
+define("L_MINS", "minute");
+
+// registration stuff:
+define("L_REG_1", "parola");
+define("L_REG_1r", "(numai cind esti inregistrat)");
+define("L_REG_2", "Utilizatori inregistrati");
+define("L_REG_3", "Inregistreaza-te");
+define("L_REG_4", "Editeaza profilul");
+define("L_REG_5", "Sterge utilizator");
+define("L_REG_6", "Inregistrare utilizator");
+define("L_REG_7", "parola ta");
+define("L_REG_8", "email-ul tau");
+define("L_REG_9", "Ai fost inregistrat cu succes.");
+define("L_REG_10", "Inapoi");
+define("L_REG_11", "Editing");
+define("L_REG_12", "Schimba informatiile despre utilizator");
+define("L_REG_13", "Sterge utilizator");
+define("L_REG_14", "Login");
+define("L_REG_15", "Intra");
+define("L_REG_16", "Schimba");
+define("L_REG_17", "Datele tale au fost schimbate cu succes.");
+define("L_REG_18", "Ai fost dat afara din camera de catre moderator.");
+define("L_REG_19", "Chiar vrei sa fii sters?");
+define("L_REG_20", "Da");
+define("L_REG_21", "Ai fost sters cu succes.");
+define("L_REG_22", "Nu");
+define("L_REG_23", "Utilizatori");
+define("L_REG_24", "Stergerea activata");
+define("L_REG_25", "Inchide");
+define("L_REG_26", "Numele");
+define("L_REG_27", "Permisii");
+define("L_REG_28", "Camere moderate");
+define("L_REG_29", "Camerele moderate sunt separate de virgula (,) fara spatii.");
+define("L_REG_30", "prenumele");
+define("L_REG_31", "numele");
+define("L_REG_32", "WEB");
+define("L_REG_33", "arata e-mail cind se da comanda /whois");
+define("L_REG_34", "Editeaza profilul");
+define("L_REG_35", "Administration");
+define("L_REG_36", "limbi vorbite");
+define("L_REG_37", "Cimpurile care contin <span class=\"error\">*</span> trebuiesc completate.");
+define("L_REG_38", "Lista camerelor existente");
+define("L_REG_39", "Camera in care te aflai a fost stearsa de administrator.");
+define("L_REG_40", "Actualizare");
+define("L_REG_41", "Clean selected rooms");
+define("L_REG_42", "There is neither registered user (except yourself), neither room to clean.");
+define("L_REG_43", "%s is no more moderator for this room.");
+define("L_REG_44", "Clean a \"non-default\" room will also remove all moderator<BR>status for this room.");
+define("L_REG_45", "gender");
+define("L_REG_46", "male");
+define("L_REG_47", "Female");
+
+// e-mail validation stuff
+define("L_EMAIL_VAL_1", "Your settings to enter the chat");
+define("L_EMAIL_VAL_2", "Welcome to our chat server.");
+define("L_EMAIL_VAL_Err", "Internal error, please contact the administrator: <a href=\"mailto:%s\">%s</a>.");
+define("L_EMAIL_VAL_Done", "Your password has been sent to your e-mail address.");
+
+// admin stuff
+define("L_ADM_1", "%s is no more moderator for this room.");
+define("L_ADM_2", "You're no more a registered user.");
+
+//error messages
+define("L_ERR_USR_1", "Acest nume este folosit. Alege-ti altul.");
+define("L_ERR_USR_2", "Trebuie sa-ti alegi un nume.");
+define("L_ERR_USR_3", "Acest nume este inregistrat. Introdu parola sau alege-ti alt nume.");
+define("L_ERR_USR_4", "Ai scris o parola incorecta.");
+define("L_ERR_USR_5", "Trebuie sa scrii numele.");
+define("L_ERR_USR_6", "Trebuie sa scrii parola.");
+define("L_ERR_USR_7", "Trebuie sa scrii adresa ta de e-mail.");
+define("L_ERR_USR_8", "Trebuie sa scrii o adresa de e-mail corecta.");
+define("L_ERR_USR_9", "Acest nume este deja folosit.");
+define("L_ERR_USR_10", "Nume sau parola incorecta.");
+define("L_ERR_USR_11", "Trebuie sa fii administrator.");
+define("L_ERR_USR_12", "Esti administrator, nu poti fi sters.");
+define("L_ERR_USR_13", "Pentru a crea o camera trebuie sa fii inregistrat.");
+define("L_ERR_USR_14", "Trebuie sa fii inregistrat inainte de a intra pe chat.");
+define("L_ERR_USR_15", "Trebuie sa scrii numele complet.");
+define("L_ERR_USR_16", "Numele nu poate contine spatii, virgula sau backslash (\\).");
+define("L_ERR_USR_17", "This room doesn't exist and you are not allowed to create one.");
+define("L_ERR_USR_18", "Banned word found in your username.");
+define("L_ERR_USR_19", "You cannot be in more than one room at the same time.");
+define("L_ERR_USR_20", "You have been banished from this room or from the chat.");
+define("L_ERR_ROM_1", "Numele camerei nu poate contine virgula sau backslash (\\).");
+define("L_ERR_ROM_2", "Banned word found in the room's name you want to create.");
+define("L_ERR_ROM_3", "O camera publica cu acest nume exista.");
+define("L_ERR_ROM_4", "Numele camerei este invalid.");
+
+// users frame or popup
+define("L_EXIT", "Iesire");
+define("L_DETACH", "Detasare");
+define("L_EXPCOL_ALL", "Extinde/Comprima Tot");
+define("L_CONN_STATE", "Connection state");
+define("L_CHAT", "Chat");
+define("L_USER", "utilizator este");
+define("L_USERS", "utilizatori sunt");
+define("L_NO_USER", "Nici un utlizator");
+define("L_ROOM", "camera");
+define("L_ROOMS", "camere");
+define("L_EXPCOL", "Extinde/Comprima camera");
+define("L_BEEP", "Beep/no beep at user entrance");
+define("L_PROFILE", "Display profile");
+define("L_NO_PROFILE", "No profile");
+
+// input frame
+define("L_HLP", "Ajutor");
+define("L_BAD_CMD", "Comanda invalida !");
+define("L_ADMIN", "%s este deja administrator !");
+define("L_IS_MODERATOR", "%s este deja moderatorul !");
+define("L_NO_MODERATOR", "Aceasta comanda o poate folosi numai moderatorul acestei camere.");
+define("L_MODERATOR", "%s este acum moderatorul acestei camere.");
+define("L_NONEXIST_USER", "Utilizatorul %s nu este in camera curenta.");
+define("L_NONREG_USER", "Utilizatorul %s nu este inregistrat.");
+define("L_NONREG_USER_IP", "His IP is: %s.");
+define("L_NO_KICKED", "Utilizatorul %s este moderator sau administrator si nu poate fi dat afara.");
+define("L_KICKED", "Utilizatorul %s a fost dat afara!");
+define("L_NO_BANISHED", "User %s is moderator or administrator and can't be banished.");
+define("L_BANISHED", "User %s has successfully been banished.");
+define("L_SVR_TIME", "Timpul curent pe server: ");
+define("L_NO_SAVE", "No message to save!");
+define("L_NO_ADMIN", "Only the administrator can use this command.");
+define("L_ANNOUNCE", "ANNOUNCE");
+define("L_INVITE", "%s suggest you to join her/him into the <a href=\"#\" onClick=\"window.parent.runCmd('%s','%s')\">%s</a> room.");
+define("L_INVITE_REG", " You have to be registered to enter this room.");
+define("L_INVITE_DONE", "Your invitation has been sent to %s.");
+define("L_OK", "Send");
+
+// help popup
+define("L_HELP_TIT_1", "Imagini pe care le poti introduce in mesaje.");
+define("L_HELP_TIT_2", "Formatarea textului pentru mesaje");
+define("L_HELP_FMT_1", "Textul poate fi ingrosat (bold), inclinat (italic) sau subliniat (underline) prin simpla sa incadrare intre cuvintele cheie  &lt;B&gt; &lt;/B&gt;, &lt;I&gt; &lt;/I&gt; sau &lt;U&gt; &lt;/U&gt;<BR>Exemplu, &lt;B&gt;acest text&lt;/B&gt; va produce <B>acest text</B>.");
+define("L_HELP_FMT_2", "Pentru a crea un hyperlink (pentru e-mail sau pagina www) in mesajul tau, tasteaza pur-si-simplu adresa corespunzatoare. Hyperlink-ul va fi creat automat.");
+define("L_HELP_TIT_3", "Comenzi");
+define("L_HELP_USR", "utilizator");
+define("L_HELP_MSG", "mesaj");
+define("L_HELP_ROOM", "camera");
+define("L_HELP_CMD_0", "{} obligatoriu, [] optional.");
+define("L_HELP_CMD_1", "Stabileste cite mesaje sa fie aratate, 5 cel putin.");
+define("L_HELP_CMD_1a", "Set number of messages to show, minimum and default are 5.");
+define("L_HELP_CMD_1b", "Reload the message frame and display the n latest messages, minimum and default are 5.");
+define("L_HELP_CMD_2a", "Modifica timpul de reactualizare a mesajelor (in secunde).");
+define("L_HELP_CMD_2b", "Modify messages and users lists refresh delay (in seconds).<BR>If n is not specified or less than 3, toggles between no refresh and 10s refresh.");
+define("L_HELP_CMD_3", "Schimba ordinea mesajelor.");
+define("L_HELP_CMD_4", "Intra in alta camera; daca aceasta camera nu exista si ai dreptul o poti crea.<BR>n este 0 pentru camere private si 1 pentru camere publice. Daca n nu este specificat, valuarea sa implicita este 1.");
+define("L_HELP_CMD_5", "Paraseste chat-ul dupa ce ai scris un mesaj optional.");
+define("L_HELP_CMD_6", "Ignora mesaje de la utilizatorul a carui porecla este specificata.<BR>Fara nici o optiune va aparea o ferestra care va afisa toti utilizatori ignorati.");
+define("L_HELP_CMD_7", "Recheama textul introdus anterior (comanda sau mesaj).");
+define("L_HELP_CMD_8", "Arata/Ascunde timpul din fata mesajelor.");
+define("L_HELP_CMD_9", "Expulzeaza utilizatori din chat. Aceasta comanda poate fi data numai de moderator.");
+define("L_HELP_CMD_10", "Trimite un mesaj privat catre utilizatorul specificat (alti utilizatori nu vor vede mesajul).");
+define("L_HELP_CMD_11", "Arata informatii despre utilizatorul specificat.");
+define("L_HELP_CMD_12", "Afiseaza o fereastra pentru editarea profilului utilizatorului.");
+define("L_HELP_CMD_13", "Te anunta daca un utilizator a intrat/iesit in camera.");
+define("L_HELP_CMD_14", "Permite administratorului sau moderatorului(moderatorilor) camerei curente sa avanseze ca moderator pentru aceeasi camera un utilizator inregistrat.");
+define("L_HELP_CMD_15", "Clear the message frame and show only the last 5 messages.");
+define("L_HELP_CMD_16", "Save the last n messages (notifications ones excluded) to an HTML file. If n is not specified, all available messages will be taken into account.");
+define("L_HELP_CMD_17", "Allow the administrator to send an announce to all users whatever the room they are chatting into.");
+define("L_HELP_CMD_18", "Suggest an user chatting in an other room to join the one you are into.");
+define("L_HELP_CMD_19", "Allow the moderator(s) of a room or the administrator to \"banish\" an user from the room for a time defined by the administrator.<BR>The later can banish an user chatting in an other room than the one he is into and use the '<B>&nbsp;*&nbsp;</B>' setting to banish \"for ever\" an user from the chat as the whole.");
+define("L_HELP_CMD_20", "Describe what you're doing without refer yourself.");
+
+// messages frame
+define("L_NO_MSG", "Nu este nici un mesaj ...");
+define("L_TODAY_DWN", "The messages that have been sent today start below");
+define("L_TODAY_UP", "The messages that have been sent today start above");
+
+// message colors
+$TextColors = array(	"Negru" => "#000000",
+				"Rosu" => "#FF0000",
+				"Verde" => "#009900",
+				"Albastru" => "#0000FF",
+				"Mov" => "#9900FF",
+				"Rosu inchis" => "#990000",
+				"Verde inchis" => "#006600",
+				"Albastru inchis" => "#000099",
+				"Maro" => "#996633",
+				"Albastru deschis" => "#006699",
+				"Portocaliu" => "#FF6600");
+
+// ignored popup
+define("L_IGNOR_TIT", "Ignorati:");
+define("L_IGNOR_NON", "Nici un utilizator nu e ignorat");
+
+// whois popup
+define("L_WHOIS_ADMIN", "Administrator");
+define("L_WHOIS_MODER", "Moderator");
+define("L_WHOIS_USER", "Utilizator");
+
+// Notification messages of user entrance/exit
+define("L_ENTER_ROM", "%s a intrat in camera");
+define("L_EXIT_ROM", "%s a iesit din camera");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/romanian/regex.txt 0.15.0/chat/localization/romanian/regex.txt
--- 0.14.5/chat/localization/romanian/regex.txt	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/romanian/regex.txt	2004-04-01 03:07:38.000000000 -0600
@@ -0,0 +1 @@
+ro|romanian
\ No newline at end of file
Binary files 0.14.5/chat/localization/russian/flag.gif and 0.15.0/chat/localization/russian/flag.gif differ
diff -ruN 0.14.5/chat/localization/russian/localized.admin.php 0.15.0/chat/localization/russian/localized.admin.php
--- 0.14.5/chat/localization/russian/localized.admin.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/russian/localized.admin.php	2004-04-01 03:07:38.000000000 -0600
@@ -0,0 +1,62 @@
+<?php
+// File : russian.lang.php
+// Translation by Alexei Shalin <happyalex@totel.kg>,
+// Dim Zegebart <keks@rbcmail.ru> & Arsen <arsen@betus.usi.ru>
+
+// extra header for charset
+$Charset = "windows-1251";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// Top frame
+define("A_MENU_0", ": %s");
+define("A_MENU_1", " ");
+define("A_MENU_2", " ");
+define("A_MENU_3", " ");
+define("A_MENU_4", " ");
+
+// Frame for registered users
+define("A_SHEET1_1", "     ");
+define("A_SHEET1_2", "");
+define("A_SHEET1_3", "");
+define("A_SHEET1_4", " ");
+define("A_SHEET1_5", "    ,  .");
+define("A_SHEET1_6", "  ");
+define("A_SHEET1_7", "");
+define("A_SHEET1_8", " ,  , .");
+define("A_SHEET1_9", "  ");
+define("A_SHEET1_10", "      .");
+define("A_SHEET1_11", " ");
+define("A_USER", "");
+define("A_MODER", "");
+define("A_PAGE_CNT", " %s  %s");
+
+// Frame for banished users
+define("A_SHEET2_1", "     ");
+define("A_SHEET2_2", "IP");
+define("A_SHEET2_3", "  ");
+define("A_SHEET2_4", " ");
+define("A_SHEET2_5", "");
+define("A_SHEET2_6", "   ,    4,   '<B>&nbsp;*&nbsp;</B>'  <BR>   .");
+define("A_SHEET2_7", "  ");
+define("A_SHEET2_8", "  .");
+
+// Frame for cleaning rooms
+define("A_SHEET3_1", "  ");
+define("A_SHEET3_2", "  ,   \" \",<BR>       .");
+define("A_SHEET3_3", "  ");
+define("A_SHEET3_4", "  .");
+
+// Frame for sending mails
+define("A_SHEET4_0", "       <BR>'chat/admin/mail4admin.php'.");
+define("A_SHEET4_1", " ");
+define("A_SHEET4_2", ":");
+define("A_SHEET4_3", " ");
+define("A_SHEET4_4", ":");
+define("A_SHEET4_5", ":");
+define("A_SHEET4_6", " ");
+define("A_SHEET4_7", "  .");
+define("A_SHEET4_8", "     .");
+define("A_SHEET4_9", "  ,    !");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/russian/_localized.chat.php 0.15.0/chat/localization/russian/_localized.chat.php
--- 0.14.5/chat/localization/russian/_localized.chat.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/russian/_localized.chat.php	2004-04-01 03:07:40.000000000 -0600
@@ -0,0 +1,222 @@
+<?php
+// File : russian.lang.php
+// Translation by Stas Gobunov <stas@komus.net>
+//	& Alexei Shalin <happyalex@totel.kg>
+
+// extra header for charset
+$Charset = "koi8-r";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// welcome page
+define("L_TUTORIAL", " ,  ");
+
+define("L_WEL_1", "   ");
+define("L_WEL_2", "    ");
+define("L_WEL_3", " ...");
+
+define("L_CUR_1", "");
+define("L_CUR_2", " .");
+define("L_CUR_3", "   ");
+define("L_CUR_4", "   ");
+
+define("L_SET_1", "  ...");
+define("L_SET_2", " ");
+define("L_SET_3", "  ");
+define("L_SET_4", "  ");
+define("L_SET_5", "  ...");
+define("L_SET_6", "  ");
+define("L_SET_7", " ...");
+define("L_SET_8", "   ");
+define("L_SET_9", "  ");
+define("L_SET_10", "");
+define("L_SET_11", "");
+define("L_SET_12", "");
+define("L_SET_13", " ");
+define("L_SET_14", "");
+
+define("L_SRC", " ");
+
+define("L_SECS", "");
+define("L_MIN", "");
+define("L_MINS", "");
+
+// registration stuff:
+define("L_REG_1", " ");
+define("L_REG_1r", "(  )");
+define("L_REG_2", " ");
+define("L_REG_3", "");
+define("L_REG_4", " ");
+define("L_REG_5", " ");
+define("L_REG_6", " ");
+define("L_REG_7", " ");
+define("L_REG_8", " ");
+define("L_REG_9", "!  .");
+define("L_REG_10", "");
+define("L_REG_11", "");
+define("L_REG_12", "   ");
+define("L_REG_13", " ");
+define("L_REG_14", "");
+define("L_REG_15", "");
+define("L_REG_16", "");
+define("L_REG_17", " .");
+define("L_REG_18", "   .");
+define("L_REG_19", "    ?");
+define("L_REG_20", "");
+define("L_REG_21", "  .");
+define("L_REG_22", "");
+define("L_REG_25", "");
+define("L_REG_30", "");
+define("L_REG_31", "");
+define("L_REG_32", "WEB");
+define("L_REG_33", "    /whois ");
+define("L_REG_34", " ");
+define("L_REG_35", "");
+define("L_REG_36", "  ");
+define("L_REG_37", "  <span class=\"error\">*</span>   .");
+define("L_REG_39", " ,     .");
+define("L_REG_45", "");
+define("L_REG_46", "");
+define("L_REG_47", "");
+
+// e-mail validation stuff
+define("L_EMAIL_VAL_1", "      ");
+define("L_EMAIL_VAL_2", "     .");
+define("L_EMAIL_VAL_Err", "-  .    : <a href=\"mailto:%s\">%s</a>.");
+define("L_EMAIL_VAL_Done", "      .");
+
+// admin stuff
+define("L_ADM_1", "%s     .");
+define("L_ADM_2", "    .");
+
+// error messages
+define("L_ERR_USR_1", "      .");
+define("L_ERR_USR_2", "    .");
+define("L_ERR_USR_3", "       .");
+define("L_ERR_USR_4", "  . !!!!!!.");
+define("L_ERR_USR_5", "   -?!  !.");
+define("L_ERR_USR_6", "  .");
+define("L_ERR_USR_7", "     ?!.");
+define("L_ERR_USR_8", ",     .");
+define("L_ERR_USR_9", ",    .");
+define("L_ERR_USR_10", "    . !.");
+define("L_ERR_USR_11", "   .");
+define("L_ERR_USR_12", " ,    .");
+define("L_ERR_USR_13", "  , .");
+define("L_ERR_USR_14", ",  .");
+define("L_ERR_USR_15", ",   .");
+define("L_ERR_USR_16", "    ,   (\\).");
+define("L_ERR_USR_17", "        .");
+define("L_ERR_USR_18", "    .");
+define("L_ERR_USR_19", ",         .");
+define("L_ERR_USR_20", ",    .");
+define("L_ERR_ROM_1", "     ,   (\\).");
+define("L_ERR_ROM_2", "      .");
+define("L_ERR_ROM_3", "     .");
+define("L_ERR_ROM_4", "  .");
+
+// users frame or popup
+define("L_EXIT", "");
+define("L_DETACH", "");
+define("L_EXPCOL_ALL", "/ ");
+define("L_CONN_STATE", " ");
+define("L_CHAT", "");
+define("L_USER", "");
+define("L_USERS", "()");
+define("L_NO_USER", " ");
+define("L_ROOM", "");
+define("L_ROOMS", "");
+define("L_EXPCOL", "/ ");
+define("L_BEEP", "/    ");
+define("L_PROFILE", " ");
+define("L_NO_PROFILE", "No profile");
+
+// input frame
+define("L_HLP", "");
+define("L_BAD_CMD", "   !");
+define("L_ADMIN", "%s    !");
+define("L_IS_MODERATOR", "%s  !");
+define("L_NO_MODERATOR", "     .");
+define("L_MODERATOR", "%s  ,   .");
+define("L_NONEXIST_USER", " %s   .");
+define("L_NONREG_USER", " %s  .");
+define("L_NONREG_USER_IP", " IP: %s.");
+define("L_NO_KICKED", " %s         .");
+define("L_KICKED", " %s .");
+define("L_NO_BANISHED", " %s          ");
+define("L_BANISHED", " %s .");
+define("L_SVR_TIME", ": ");
+define("L_NO_SAVE", " !");
+define("L_NO_ADMIN", "     .");
+define("L_ANNOUNCE", "");
+define("L_INVITE", "%s    <a href=\"#\" onclick=\"parent.runCmd('%s','%s')\">%s</a> .");
+define("L_INVITE_REG", " You have to be registered to enter this room.");
+define("L_INVITE_DONE", "  %s .");
+define("L_OK", "Send");
+
+// help popup
+define("L_HELP_TIT_1", "");
+define("L_HELP_TIT_2", "   ");
+define("L_HELP_FMT_1", "   ,         : &lt;B&gt; &lt;/B&gt;, &lt;I&gt; &lt;/I&gt; or &lt;U&gt; &lt;/U&gt; .<BR>, &lt;B&gt;this text&lt;/B&gt; will produce <B>  </B>.");
+define("L_HELP_FMT_2", "  (e-mail or URL)      .");
+define("L_HELP_TIT_3", "");
+define("L_HELP_USR", "");
+define("L_HELP_MSG", "message");
+define("L_HELP_ROOM", "");
+define("L_HELP_CMD_0", "{}   , []   .");
+define("L_HELP_CMD_1", "   ,   5.");
+define("L_HELP_CMD_1a", "  .");
+define("L_HELP_CMD_1b", "     .");
+define("L_HELP_CMD_2a", "     ( ).<BR> n     3,    \" \"  \" - 10 \".");
+define("L_HELP_CMD_2b", "      ().<BR>      3 ,  10 .");
+define("L_HELP_CMD_3", "     .");
+define("L_HELP_CMD_4", "   , ,          .<BR> n  0    1  ,   1   .");
+define("L_HELP_CMD_5", "  ,   ().");
+define("L_HELP_CMD_6", "     (nick),  nick .<BR>      nick  - .<BR>    ,    -.<BR>        nick,     .");
+define("L_HELP_CMD_7", "    (  ).");
+define("L_HELP_CMD_8", "/   .");
+define("L_HELP_CMD_9", "   .    .");
+define("L_HELP_CMD_10", ".");
+define("L_HELP_CMD_11", "    .");
+define("L_HELP_CMD_12", " .");
+define("L_HELP_CMD_13", "   / .");
+define("L_HELP_CMD_14", "    .");
+define("L_HELP_CMD_15", "  .   5 .");
+define("L_HELP_CMD_16", " .");
+define("L_HELP_CMD_17", "    .");
+define("L_HELP_CMD_18", "    .");
+define("L_HELP_CMD_19", "     .<BR>          '<B>&nbsp;*&nbsp;</B>'");
+define("L_HELP_CMD_20", "Describe what you're doing without refer yourself.");
+
+// message colors
+$TextColors = array(	"" => "#000000",
+				"" => "#FF0000",
+				"̣" => "#009900",
+				"" => "#0000FF",
+				"" => "#9900FF",
+				" " => "#990000",
+				" " => "#006600",
+				" " => "#000099",
+				"Maroon" => "#996633",
+				" " => "#006699",
+				"Carrot" => "#FF6600");
+
+//message frame
+define("L_NO_MSG", "    ...");
+define("L_TODAY_DWN", "The messages that have been sent today start below");
+define("L_TODAY_UP", "The messages that have been sent today start above");
+
+//ignored popup
+define("L_IGNOR_TIT", "");
+define("L_IGNOR_NON", "  ");
+
+// whois popup
+define("L_WHOIS_ADMIN", "");
+define("L_WHOIS_MODER", "");
+define("L_WHOIS_USER", "");
+
+// Notification messages of user entrance/exit
+define("L_ENTER_ROM", "%s  !");
+define("L_EXIT_ROM", "%s   !");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/russian/localized.chat.php 0.15.0/chat/localization/russian/localized.chat.php
--- 0.14.5/chat/localization/russian/localized.chat.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/russian/localized.chat.php	2004-04-01 03:07:38.000000000 -0600
@@ -0,0 +1,222 @@
+<?php
+// File : russian.lang.php
+// Translation by Alexei Shalin <happyalex@totel.kg>,
+// Dim Zegebart <keks@rbcmail.ru> & Arsen <arsen@betus.usi.ru>
+
+// extra header for charset
+$Charset = "windows-1251";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// welcome page
+define("L_TUTORIAL", "  ");
+
+define("L_WEL_1", "   ");
+define("L_WEL_2", "    ");
+define("L_WEL_3", " ...");
+
+define("L_CUR_1", "");
+define("L_CUR_2", " .");
+define("L_CUR_3", "   ");
+define("L_CUR_4", "   ");
+
+define("L_SET_1", "  ...");
+define("L_SET_2", " ");
+define("L_SET_3", "  ");
+define("L_SET_4", "  ");
+define("L_SET_5", "  ...");
+define("L_SET_6", "  ");
+define("L_SET_7", " ...");
+define("L_SET_8", " ,  ");
+define("L_SET_9", "  ");
+define("L_SET_10", "");
+define("L_SET_11", "");
+define("L_SET_12", "");
+define("L_SET_13", " ");
+define("L_SET_14", "");
+
+define("L_SRC", " ");
+
+define("L_SECS", "");
+define("L_MIN", "");
+define("L_MINS", "");
+
+// registration stuff
+define("L_REG_1", " ");
+define("L_REG_1r", "(  )");
+define("L_REG_2", " ");
+define("L_REG_3", "");
+define("L_REG_4", " ");
+define("L_REG_5", " ");
+define("L_REG_6", " ");
+define("L_REG_7", " ");
+define("L_REG_8", " e-mail");
+define("L_REG_9", "   .");
+define("L_REG_10", "");
+define("L_REG_11", "");
+define("L_REG_12", "   ");
+define("L_REG_13", " ");
+define("L_REG_14", "");
+define("L_REG_15", "");
+define("L_REG_16", "");
+define("L_REG_17", "   .");
+define("L_REG_18", "    .");
+define("L_REG_19", "   ?");
+define("L_REG_20", "");
+define("L_REG_21", "  .");
+define("L_REG_22", "");
+define("L_REG_25", "");
+define("L_REG_30", "");
+define("L_REG_31", "");
+define("L_REG_32", "WEB ");
+define("L_REG_33", "  e-mail   /whois");
+define("L_REG_34", " ");
+define("L_REG_35", "");
+define("L_REG_36", "   ");
+define("L_REG_37", "   <span class=\"error\">*</span>   .");
+define("L_REG_39", ",    ,   .");
+define("L_REG_45", "");
+define("L_REG_46", "");
+define("L_REG_47", "");
+
+// e-mail validation stuff
+define("L_EMAIL_VAL_1", "   ");
+define("L_EMAIL_VAL_2", "     .");
+define("L_EMAIL_VAL_Err", " ,   : <a href=\"mailto:%s\">%s</a>.");
+define("L_EMAIL_VAL_Done", "      e-mail.");
+
+// admin stuff
+define("L_ADM_1", "%s,    .");
+define("L_ADM_2", "   .");
+
+//error messages
+define("L_ERR_USR_1", "   ,   .");
+define("L_ERR_USR_2", "    .");
+define("L_ERR_USR_3", "    .      .");
+define("L_ERR_USR_4", "   .");
+define("L_ERR_USR_5", "   .");
+define("L_ERR_USR_6", "   .");
+define("L_ERR_USR_7", "    e-mail.");
+define("L_ERR_USR_8", "    e-mail.");
+define("L_ERR_USR_9", "   .");
+define("L_ERR_USR_10", "   .");
+define("L_ERR_USR_11", "   .");
+define("L_ERR_USR_12", "      .");
+define("L_ERR_USR_13", "     .");
+define("L_ERR_USR_14", "  ,    .");
+define("L_ERR_USR_15", "     .");
+define("L_ERR_USR_16", "     ,    (\\).");
+define("L_ERR_USR_17", "         .");
+define("L_ERR_USR_18", "    .");
+define("L_ERR_USR_19", "        ");
+define("L_ERR_USR_20", "       .");
+define("L_ERR_ROM_1", "        (\\).");
+define("L_ERR_ROM_2", "      .");
+define("L_ERR_ROM_3", "   ,    ."); 
+define("L_ERR_ROM_4", "  .");
+
+// users frame or popup
+define("L_EXIT", "");
+define("L_DETACH", "   ");
+define("L_EXPCOL_ALL", "/ ");
+define("L_CONN_STATE", " ");
+define("L_CHAT", "");
+define("L_USER", "");
+define("L_USERS", "");
+define("L_NO_USER", " ");
+define("L_ROOM", "");
+define("L_ROOMS", "");
+define("L_EXPCOL", "/ ");
+define("L_BEEP", "/_   ");
+define("L_PROFILE", " ");
+define("L_NO_PROFILE", " ");
+
+// input frame
+define("L_HLP", "");
+define("L_BAD_CMD", "   !");
+define("L_ADMIN", "%s - !");
+define("L_IS_MODERATOR", "%s     !");
+define("L_NO_MODERATOR", "      .");
+define("L_MODERATOR", " %s .");
+define("L_NONEXIST_USER", " %s   .");
+define("L_NONREG_USER", " %s  .");
+define("L_NONREG_USER_IP", " IP : %s.");
+define("L_NO_KICKED", " %s           .");
+define("L_KICKED", " %s    .");
+define("L_NO_BANISHED", "%s       .");
+define("L_BANISHED", " %s .");
+define("L_SVR_TIME", "  : ");
+define("L_NO_SAVE", "   !");
+define("L_NO_ADMIN", "     .");
+define("L_ANNOUNCE", "");
+define("L_INVITE", "%s     <A HREF=\"#\" onClick=\"window.parent.runCmd('%s','%s')\">%s</A>.");
+define("L_INVITE_REG", "      ,     .");
+define("L_INVITE_DONE", "    %s.");
+define("L_OK", "");
+
+// help popup
+define("L_HELP_TIT_1", "");
+define("L_HELP_TIT_2", "  ");
+define("L_HELP_FMT_1", "    ,   ,   &lt;B&gt; &lt;/B&gt;, &lt;I&gt; &lt;/I&gt;  &lt;U&gt; &lt;/U&gt;.<BR>, &lt;B&gt;&lt;/B&gt;  <B></B>.");
+define("L_HELP_FMT_2", "   (e-mail or URL)        .   .");
+define("L_HELP_TIT_3", "");
+define("L_HELP_USR", "");
+define("L_HELP_MSG", "");
+define("L_HELP_ROOM", "");
+define("L_HELP_CMD_0", "{}   , []   .");
+define("L_HELP_CMD_1", "    (  5).");
+define("L_HELP_CMD_1a", "   ( 5).");
+define("L_HELP_CMD_1b", "      n . ( 5 .)");
+define("L_HELP_CMD_2a", "     ( ).<BR> n     3,    \" \"  \" - 10 \".");
+define("L_HELP_CMD_2b", "     ( .).<BR> n     3,    10");
+define("L_HELP_CMD_3", "     .");
+define("L_HELP_CMD_4", "   , ,          .<BR> n  0    1    (  1).");
+define("L_HELP_CMD_5", "  ,   ( ).");
+define("L_HELP_CMD_6", "     (),   .<BR>   ,      '-'.<BR>    ,    '-'.<BR>        ,    .");
+define("L_HELP_CMD_7", "   (  ).");
+define("L_HELP_CMD_8", "/   .");
+define("L_HELP_CMD_9", "   .    .");
+define("L_HELP_CMD_10", "  .");
+define("L_HELP_CMD_11", "   .");
+define("L_HELP_CMD_12", "   .");
+define("L_HELP_CMD_13", "/      .");
+define("L_HELP_CMD_14", "            .");
+define("L_HELP_CMD_15", "     5  .");
+define("L_HELP_CMD_16", "  n    HTML .  n  ,    .");
+define("L_HELP_CMD_17", "     ,   ,     ..");
+define("L_HELP_CMD_18", "       .");
+define("L_HELP_CMD_19", "     \"\"       .<BR>        ,      '<B>&nbsp;*&nbsp;</B>'    \"\".");
+define("L_HELP_CMD_20", "     .");
+
+// message frame
+define("L_NO_MSG", "    ...");
+define("L_TODAY_DWN", ",  ,  ");
+define("L_TODAY_UP", ",  ,  ");
+
+// message colors
+$TextColors = array(	"׸"			=> "#000000",
+						""			=> "#FF0000",
+						""			=> "#009900",
+						""				=> "#0000FF",
+						""			=> "#9900FF",
+						" "		=> "#990000",
+						" "		=> "#006600",
+						" "		=> "#000099",
+						" "	=> "#996633",
+						" "		=> "#006699",
+						""			=> "#FF6600");
+
+//ignored popup
+define("L_IGNOR_TIT", "");
+define("L_IGNOR_NON", "  ");
+
+// whois popup
+define("L_WHOIS_ADMIN", "");
+define("L_WHOIS_MODER", "");
+define("L_WHOIS_USER", "");
+
+// Notification messages of user entrance/exit
+define("L_ENTER_ROM", "%s   ");
+define("L_EXIT_ROM", "%s   ");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/russian/localized.tutorial.php 0.15.0/chat/localization/russian/localized.tutorial.php
--- 0.14.5/chat/localization/russian/localized.tutorial.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/russian/localized.tutorial.php	2004-04-01 03:07:39.000000000 -0600
@@ -0,0 +1,631 @@
+<?php
+// File : russian.tutorial.php
+// Translation by Dim Zegebart <keks@rbcmail.ru> & Arsen <arsen@betus.usi.ru>
+
+// Get the names and values for vars sent by the script that called this one
+if (isset($HTTP_GET_VARS))
+{
+	while(list($name, $value) = each($HTTP_GET_VARS))
+	{
+		$$name = $value;
+	}
+}
+?>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+
+<HEAD>
+<TITLE> , <?php echo(APP_NAME." - ".APP_VERSION); ?></TITLE>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
+<STYLE>
+A.topLink
+{
+	text-decoration: underline;
+	color: #0000C0;
+}
+
+A.topLink:hover, A.topLink:active
+{
+	color: #FF9900;
+	text-decoration: none;
+	font-weight: 800;
+}
+
+.redText
+{
+	font-weight: 800;
+	color: #FF0000;
+}
+</STYLE>
+</HEAD>
+
+<BODY BGCOLOR="#CCCCFF">
+<P><A NAME="top"></P>
+<TABLE BORDER="5" CELLPADDING="5">
+<TR>
+	<TD><FONT SIZE="+2"> </FONT></TD>
+</TR>
+</TABLE><BR>
+
+<P CLASS="redText">
+:  Netscape        ,        '?'.<BR>
+   :: View/CharacterSet/ ,<br>
+: View/CharacterSet/SetDefault.
+</P>
+
+<?php
+if (C_MULTI_LANG == "1") 
+{
+	?>
+	<A HREF="#language" CLASS="topLink"> </A><BR>
+	<?php
+}
+?>
+<A HREF="#login" CLASS="topLink">  </A><BR>
+<A HREF="#register" CLASS="topLink"></A><BR>
+<A HREF="#modProfile" CLASS="topLink"><?php if (C_SHOW_DEL_PROF == "1") echo("/"); ?>  </A><BR>
+<?php
+if (C_VERSION == "2") 
+{
+	?>
+	<A HREF="#create_room" CLASS="topLink"> </A><BR>
+	<?php
+};
+if ($Ver == "H") 
+{
+	?>
+	<A HREF="#connection_state" CLASS="topLink">  </A><BR>
+	<?php
+};
+?>
+<A HREF="#sending" CLASS="topLink"> </A><BR>
+<A HREF="#users_list" CLASS="topLink">  </A><BR>
+<A HREF="#exit" CLASS="topLink">   </A><BR>
+<A HREF="#users_popup" CLASS="topLink">      </A><BR>
+<P>
+<A HREF="#customize" CLASS="topLink">   </A><BR>
+<P>
+<A HREF="#commands" CLASS="topLink">  :</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#help" CLASS="topLink"></A><BR>
+<?php
+if (C_USE_SMILIES == "1")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#smilies" CLASS="topLink"></A><BR>
+	<?php
+};
+if (C_HTML_TAGS_KEEP != "none")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#text" CLASS="topLink"> </A><BR>
+	<?php
+};
+?>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#invite" CLASS="topLink">     </A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#changeroom" CLASS="topLink">    </A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#profile" CLASS="topLink">    </A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#history" CLASS="topLink">    </A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#answer" CLASS="topLink">  </A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#private" CLASS="topLink"> </A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#actions" CLASS="topLink"></A> <font color="red"></font><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#ignore" CLASS="topLink"> </A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#whois" CLASS="topLink">   </A><BR>
+<?php
+if (C_SAVE != "0")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#save" CLASS="topLink"> </A><BR>
+	<?php
+};
+?>
+<P>
+<A HREF="#moderator" CLASS="topLink">     :</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#announce" CLASS="topLink"> </A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#kick" CLASS="topLink"> </A><BR>
+<?php
+if (C_BANISH != "0")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#banish" CLASS="topLink"> </A><BR>
+	<?php
+};
+?>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#promote" CLASS="topLink">  </A><BR>
+<P>
+<HR>
+<HR>
+
+
+<?php
+if (C_MULTI_LANG == "1") 
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="language"><B> </B></A></FONT>
+	<P>
+	<?php echo(APP_NAME); ?>       ,    .        ,     .        :
+	<P ALIGN="center">
+	<IMG SRC="images/tutorials/flags.gif" HEIGHT="44" WIDTH="424" ALT="   ">
+	<BR><P ALIGN="right"><A HREF="#top">,  </A></P>
+	<HR>
+	<?php
+}
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="login"><B>:</B></A></FONT>
+<P>
+     ,      .       .<BR>
+<?php
+if (C_REQUIRE_REGISTER == "1")
+{
+	?>
+	<P>
+	   ,    <A HREF="#register"></A>.
+	<?php
+}
+else
+{
+	?>
+	<P>
+	     <A HREF="#register"></A>       - . (                ).
+	<?php
+}
+?>
+<BR><P ALIGN="right"><A HREF="#top">,  </A></P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="register"><B>:</B></A></FONT> 
+<P>
+    <?php if (C_REQUIRE_REGISTER == "0") echo("  "); ?>, ,   .   .
+<P>	
+<UL>
+	<LI>  <?php if (!C_EMAIL_PASWD) echo("  "); ?>       .                  .     ,    (\).
+<?php if (C_NO_SWEAR == "1") echo("        \" \"."); ?>
+	<LI>    ,     e-mail.         .       .. 
+	<LI>     (Home Page),     .
+	<LI>      ,   .         .
+	<LI>,   ,     e-mail .        ,       "  e-mail   /whois ". 
+  ,      ,      .
+	<LI>,         .   ,        .
+</UL>
+<P>
+<A NAME="modProfile"></A>,    <?php if (C_SHOW_DEL_PROF == "1") echo("/"); ?>  ,       <?php echo((C_SHOW_DEL_PROF == "0" ? " " : " ")); ?>.<BR>
+<BR><P ALIGN="right"><A HREF="#top">,  </A></P>
+<P>
+<HR>
+
+<?php
+if (C_VERSION == "2") 
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="create_room"><B> :</B></A></FONT> 
+	<P>
+	    .             .       .<BR>
+	<P>
+	        (\).<?php if (C_NO_SWEAR == "1") echo("  ,      \" \"."); ?>
+	<BR><P ALIGN="right"><A HREF="#top">,  </A></P>
+	<P>
+	<HR>
+	<?php
+};
+if ($Ver == "H")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="connection_state"><B>  :</B></A></FONT> 
+	<P>
+	,   ,           :
+	<P>	
+	<UL>
+		<LI><IMG SRC="images/connectOff.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT=" ">   ;
+		<LI><IMG SRC="images/connectOn.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="  ">    ;
+		<LI><IMG SRC="images/connectError.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT=" ">  .
+	</UL>
+	<P>
+	  ,   ,      -.<br>
+	 ,                   .
+	<BR><P ALIGN="right"><A HREF="#top">,  </A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="sending"><B> :</B></A></FONT> 
+<P>
+     ,            Enter.        .<BR>
+<?php if (C_NO_SWEAR == "1") echo("  ,  \" \"     ."); ?>
+<P>
+     ,           .
+<BR><P ALIGN="right"><A HREF="#top">,  </A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="users_list"><B>   (   ):</B></A></FONT> 
+<P>
+<OL>
+	    :<BR>
+	<LI> ,      ,     <A HREF="#whois"> </A>,      ;<BR>
+	<LI>      .
+</OL>
+<P><I> </I>,     :
+<TABLE BORDER=0 CELLSPACING=10>
+<TR>
+	<TD>
+		<IMG SRC="images/tutorials/usersList.gif" WIDTH=128 HEIGHT=145 BORDER=0 ALT=" ">
+	</TD>
+	<TD>
+	<UL>
+		<LI>Nicolas        PhpMyChat;<BR>
+		<LI>alien (   ), Jezek2  Caridad -        PhpMyChat;<BR>
+		<LI>lolo -  .
+	</UL>
+	</TD>
+</TR>
+</TABLE>
+<BR><P ALIGN="right"><A HREF="#top">,  </A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="exit"><B>   :</B></A></FONT>
+<P>
+           "".               :<BR>
+/exit<BR>
+/bye<BR>
+/quit<BR>
+         - ,          .
+<I>  :</I> /quit  !
+<P>
+  " !"      .
+<BR><P ALIGN="right"><A HREF="#top">,  </A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="users_popup"><B>      :</B></A></FONT> 
+<P>
+          , ,    ,    <IMG SRC="images/popup.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT=" ">      ,                .<BR>
+    ,    .        .
+<P>
+   <IMG SRC="images/sound.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="">  /        .
+<BR><P ALIGN="right"><A HREF="#top">,  </A></P>
+<P>
+<HR>
+<HR>
+
+
+<P>
+<FONT SIZE="+1"><A NAME="customize"><B>   :</B></A></FONT>
+<P>
+       .                   Enter. ,       .
+<P>
+<UL>
+	<?php
+	if ($Ver == "H")
+	{
+		?>
+		<LI> <B>Clear ()</B>         5 . <BR> "/clear"  .
+		<P>
+		<?php
+	}
+	else
+	{
+		?>
+		<LI> <B>Order ()</B>       .       ,      .<BR> "/order"  .
+		<P>
+		<?php
+	};
+	?>
+	<LI> <B>Notify ()</B>  /    /     .     <?php echo(C_NOTIFY ? "" : ""); ?>   <?php echo(C_NOTIFY ? "" : " "); ?> .<BR> "/notify"  .
+	<P>
+	<LI> <B>Timestamp ( )</B>  /        ,      .           .     <?php echo(C_SHOW_TIMESTAMP ? "" : ""); ?>.<BR> "/timestamp"  .
+	<P>
+	<LI> <B>Refresh ()</B>      .      <?php echo(C_MSG_REFRESH); ?> .    "/refresh n"  ,  n -     .
+	<P>
+	<I> :</I> /refresh 5
+	<P>
+	      5 . *     3 ,          !*
+	<P>
+	<?php
+	if ($Ver == "L")
+	{
+		?>
+		<LI> <B>Show ()</B>     ,   .     ,  "/show n"  ,  n -   .
+		<P>
+		<I> :</I> /show 50
+		<P>
+		  50 .        ,     .</UL>
+		<?php
+	}
+	else
+	{
+		?>
+		<LI> <B>Show ()  Last ()</B>         ,   .  "/show n"  "/last n"  ,  n -    .
+		<P>
+		<I> :</I> /show 50  /last 50
+		<P>
+		     50    50  .</UL>
+		<?php
+	};
+	?>
+	<BR><P ALIGN="right"><A HREF="#top">,  </A></P>
+	<P>
+</UL>
+<HR>
+<HR>
+
+
+<P>
+<FONT SIZE="+2"><A NAME="commands"><B><U>  </U></B></A></FONT> 
+<P>
+
+<FONT SIZE="+1"><A NAME="help"><B>:</B></A></FONT>
+<P>
+   ,    ,    <IMG SRC="images/helpOff.gif" WIDTH=15 HEIGHT=15 BORDER=0 ALT="">        .  ,       <B>"/help"</B>  <B>"/?"</B>  .
+<BR><P ALIGN="right"><A HREF="#top">,  </A></P>
+<P>
+<P>
+<HR>
+
+<?php
+if (C_USE_SMILIES == "1")
+{
+	include("./lib/smilies.lib.php");
+	$Nb = count($SmiliesTbl);
+	$ResultTbl = Array();
+	DisplaySmilies($ResultTbl,$SmiliesTbl,$Nb,"tutorial");
+	unset($SmiliesTbl);
+	?>
+	<FONT SIZE="+1"><A NAME="smilies"><B>:</B></A></FONT>
+	<P>     ()   . ,        ,      .
+	<P ALIGN="center">
+	<TABLE BORDER=0 CELLPADDING=3 CELLSPACING=5>
+	<?php
+	$i = "0";
+	$Nb = count($ResultTbl);
+	while($i < $Nb)
+	{
+		if ($i > 0) echo("\t");
+		echo("<TR VALIGN=\"BOTTOM\">\n");
+		echo("$ResultTbl[$i]");
+		echo("\t</TR>\n\t<TR>\n");
+		$i++;
+		echo("$ResultTbl[$i]");
+		echo("\t</TR>\n");
+		$i++;
+	};
+	unset($ResultTbl);
+	?>
+	</TABLE>
+	<P>
+	<I> </I>,      ",  :)"  ,      ,  <IMG SRC="images/smilies/smile1.gif" WIDTH=15 HEIGHT=15 ALT=":)">   .
+	<BR><P ALIGN="right"><A HREF="#top">,  </A></P>
+	<P>
+	<HR>
+	<?php
+};
+
+if (C_HTML_TAGS_KEEP != "none")
+{
+	?>
+	<FONT SIZE="+1"><A NAME="text"><B> :</B></A></FONT>
+	<P>
+	   ,       &LT;B&GT; &LT;/B&GT;, &LT;I&GT; &LT;/I&GT;  &LT;U&GT; &LT;/U&GT;.
+	<P>
+	<I> </I>, &LT;B&GT; &LT;/B&GT;    <B> </B>.
+	<P>
+	     e-mail  URL,   . ( HTML ).    .
+	<BR><P ALIGN="right"><A HREF="#top">,  </A></P>
+	<P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="invite"><B>     :</B></A></FONT>
+<P>
+ ,   <B>invite</B>,         ,    .
+<P>
+<I> :</I>  /invite  
+<P>
+      ,        ,           .
+<P>
+       /invite ( "/invite ,Helen,Alf").     (,)  .
+<BR><P ALIGN="right"><A HREF="#top">,  </A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="changeroom"><B> :</B></A></FONT>
+<P>
+                  .             .       .      ,      <B>"/join #_"</B>  .
+<P>
+<I> :</I> /join #RedRoom 
+<P>
+    RedRoom.
+<?php
+if (C_VERSION == "2")
+{
+	echo(C_REQUIRE_REGISTER == "0" ? "<P>  -  , " : "<BR><P>");
+	?>
+	          .     : 0  , 1   ( ) .
+	<P>
+	<I>:</I>  /join 0 #MyRoom 
+	<P>
+	    (     )    MyRoom      .
+	<P>
+	          (\).<?php if (C_NO_SWEAR == "1") echo("       \" \"."); ?>
+	<?php
+}
+?>
+<BR><P ALIGN="right"><A HREF="#top">,  </A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="profile"><B>    :</B></A></FONT>
+<P>
+ <B>Profile ()</B>   ,     ,      ,     . (         ).<BR> /profile
+<BR><P ALIGN="right"><A HREF="#top">,  </A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="history"><B>    :</B></A></FONT>
+<P>
+ <B>!</B>          .<BR> /!
+<BR><P ALIGN="right"><A HREF="#top">,  </A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="answer"><B>  :</B></A></FONT>
+<P>
+                  "_>"  .       , ,      .
+<BR><P ALIGN="right"><A HREF="#top">,  </A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="private"><B> :</B></A></FONT>
+<P>
+       ,   <B>"/msg _ _"</b>  <b>"/to _ _"</B>  .
+<P>
+<I>,   :</I> /msg   ?
+<P>
+      ,         .
+<P>
+                .
+<BR><P ALIGN="right"><A HREF="#top">,  </A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="actions"><B>:</B></A></FONT>
+<P>
+         <B>"/me "</B>  .
+<P>
+<I>:</I>    "/me  ",       "<B>* </B>  ".
+<BR><P ALIGN="right"><A HREF="#top">,  </A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="ignore"><B> :</B></A></FONT>
+<P>
+        <B>"/ignore _"</B>  .
+<P>
+<I>:</I> /ignore 
+<P>
+            .
+<P>
+   ,   ,   <B>"/ignore"</B>  . 
+<P>
+       ,   <B>"/ignore - _"</B>  ,  "-"  .
+<P>
+<I> :</I> /ignore -  
+<P>
+         ,   ,      ,     .
+           ,      .
+<P>
+         (, "/ignore ,Helen,Alf"  "/ignore - ,Alf").    (,)  .
+<BR><P ALIGN="right"><A HREF="#top">,  </A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="whois"><B>   :</B></A></FONT>
+<P>
+       <B>"/whois _"</B>  .
+<P>
+<I>:</I> /whois 
+<P>
+ ''    .         ,     .
+<BR><P ALIGN="right"><A HREF="#top">,  </A></P>
+<P>
+<HR>
+
+<?php
+if (C_SAVE != "0")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="save"><B> :</B></A></FONT>
+	<P>
+	   ( )   HTML ,   <B>"/save n"</B>  .
+	<P>
+	<I>:</I> /save 5
+	<P>
+	 '5' -    .  n  ,     .
+	<BR><P ALIGN="right"><A HREF="#top">,  </A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+<HR>
+
+
+<P>
+<FONT SIZE="+2"><A NAME="moderator"><B><U>    </U></B></A></FONT> 
+
+<P>
+<FONT SIZE="+1"><A NAME="announce"><B> :</B></A></FONT>
+<P>
+     ,   ,     ,    <B>announce</B>.
+<P>
+<I>: /announce       20:00.</I>
+<BR><P ALIGN="right"><A HREF="#top">,  </A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="kick"><B> :</B></A></FONT>
+<P>
+   ,      ,   <B>kick</B>.        (   ).
+<P>
+<I></I>,      :</I> /kick </I>
+<BR><P ALIGN="right"><A HREF="#top">,  </A></P>
+<P>
+<HR>
+
+<?php
+if (C_BANISH != "0")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="banish"><B> :</B></A></FONT>
+	<P>
+	   ,      ,   <B>ban</B>.<BR>
+	      .       ,   '<B>&nbsp;*&nbsp;</B>'   .
+	<P>
+	<I></I>,   -   : <I>/ban </I>  <I>/ban * </I>
+	<BR><P ALIGN="right"><A HREF="#top">,  </A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="promote"><B>  :</B></A></FONT>
+<P>
+            <B>promote</B>.
+<P>
+<I></I>,   -  ,   :<I> /promote </I>
+<P>
+           (  ).    .
+<BR><P ALIGN="right"><A HREF="#top">,  </A></P>
+<P>
+
+
+</BODY>
+</HTML>
diff -ruN 0.14.5/chat/localization/russian/regex.txt 0.15.0/chat/localization/russian/regex.txt
--- 0.14.5/chat/localization/russian/regex.txt	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/russian/regex.txt	2004-04-01 03:07:39.000000000 -0600
@@ -0,0 +1 @@
+ru|russian
\ No newline at end of file
Binary files 0.14.5/chat/localization/slovak/flag.gif and 0.15.0/chat/localization/slovak/flag.gif differ
diff -ruN 0.14.5/chat/localization/slovak/localized.admin.php 0.15.0/chat/localization/slovak/localized.admin.php
--- 0.14.5/chat/localization/slovak/localized.admin.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/slovak/localized.admin.php	2004-04-01 03:07:40.000000000 -0600
@@ -0,0 +1,61 @@
+<?php
+// File : slovak.lang.php
+// Translation by Marek Rybar <webmaster@satelit.sk>
+
+// extra header for charset
+$Charset = "windows-1250";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// Top frame
+define("A_MENU_0", "Administration for %s");
+define("A_MENU_1", "Registered users");
+define("A_MENU_2", "Banished users");
+define("A_MENU_3", "Clean rooms");
+define("A_MENU_4", "Send mails");
+
+// Frame for registered users
+define("A_SHEET1_1", "List of registered users and their permissions");
+define("A_SHEET1_2", "Uvatesk meno");
+define("A_SHEET1_3", "Permissions");
+define("A_SHEET1_4", "Moderovan miestnosti");
+define("A_SHEET1_5", "Moderovan miestnosti s oddelen iarkou (,) bez medzier.");
+define("A_SHEET1_6", "Odstr oznaen profily");
+define("A_SHEET1_7", "Zme");
+define("A_SHEET1_8", "There is no registered user except yourself.");
+define("A_SHEET1_9", "Banish checked profiles");
+define("A_SHEET1_10", "Now you have to move to the banished users sheet to refine your choices.");
+define("A_SHEET1_11", "Last connection");
+define("A_USER", "Uvate");
+define("A_MODER", "Modertor");
+define("A_PAGE_CNT", "Page %s of %s");
+
+// Frame for banished users
+define("A_SHEET2_1", "List of banished users and concerned rooms");
+define("A_SHEET2_2", "IP");
+define("A_SHEET2_3", "Concerned rooms");
+define("A_SHEET2_4", "Until");
+define("A_SHEET2_5", "no end");
+define("A_SHEET2_6", "rooms are splitted by comma without spaces (,) if they are less than 4, else the '<B>&nbsp;*&nbsp;</B>' sign<BR>banish from all rooms.");
+define("A_SHEET2_7", "Remove banishment for checked user(s)");
+define("A_SHEET2_8", "There is no banished user.");
+
+// Frame for cleaning rooms
+define("A_SHEET3_1", "Zoznam existujcich miestnost");
+define("A_SHEET3_2", "Clean a \"non-default\" room will also remove all moderator<BR>status for this room.");
+define("A_SHEET3_3", "Vyisti vybran miestnosti");
+define("A_SHEET3_4", "There is no room to clean.");
+
+// Frame for sending mails
+define("A_SHEET4_0", "You haven't set required variables in the<BR>'chat/admin/mail4admin.php' script.");
+define("A_SHEET4_1", "Send e-mails");
+define("A_SHEET4_2", "To:");
+define("A_SHEET4_3", "Select all");
+define("A_SHEET4_4", "Subject:");
+define("A_SHEET4_5", "Messages:");
+define("A_SHEET4_6", "Start sending");
+define("A_SHEET4_7", "All e-mails have been sent.");
+define("A_SHEET4_8", "Internal error while sending the mails.");
+define("A_SHEET4_9", "Addresse(s), subject or message is missing!");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/slovak/localized.chat.php 0.15.0/chat/localization/slovak/localized.chat.php
--- 0.14.5/chat/localization/slovak/localized.chat.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/slovak/localized.chat.php	2004-04-01 03:07:40.000000000 -0600
@@ -0,0 +1,222 @@
+<?php
+// File : slovak.lang.php
+// Translation by Peter Belak <pepek@pobox.sk> & Marek Rybar <webmaster@satelit.sk>
+//	& Richard Marko <spirit@feeha.sk>
+
+// extra header for charset
+$Charset = "windows-1250";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// welcome page
+define("L_TUTORIAL", "Prruka");
+
+define("L_WEL_1", "Sprvy sa ma po");
+define("L_WEL_2", "hodinch a uvatesk men po");
+define("L_WEL_3", "minutch ...");
+
+define("L_CUR_1", "Teraz je ");
+define("L_CUR_2", "v chate");
+define("L_CUR_3", "Aktulny udia v chatovacch miestnostiach");
+define("L_CUR_4", "udia v skromnch miestnostiach");
+
+define("L_SET_1", "Prosm zadajte ...");
+define("L_SET_2", "Vae uvatesk meno");
+define("L_SET_3", "poet zobrazench sprv");
+define("L_SET_4", "as medzi kadou obnovou");
+define("L_SET_5", "Vyberte si chatovaciu miestnos...");
+define("L_SET_6", "implicitn miestnosti");
+define("L_SET_7", "Vyberte si ...");
+define("L_SET_8", "verejn miestnosti vytvoren uvatemi");
+define("L_SET_9", "vytvori vlastn");
+define("L_SET_10", "verejn");
+define("L_SET_11", "skromn");
+define("L_SET_12", "miestnos");
+define("L_SET_13", "Teraz u iba");
+define("L_SET_14", "chatujte");
+
+define("L_SRC", "je vone k dispozcii na");
+
+define("L_SECS", "seknd");
+define("L_MIN", "minta");
+define("L_MINS", "minty");
+
+// registration stuff:
+define("L_REG_1", "Heslo");
+define("L_REG_1r", "(len ak ste zaregistrovan)");
+define("L_REG_2", "Nastavenia ...");
+define("L_REG_3", "Registrcia");
+define("L_REG_4", "Nastavenia profilu");
+define("L_REG_5", "Zruenie profilu");
+define("L_REG_6", "Zaregistrovanie sa do chatu");
+define("L_REG_7", "Vae heslo");
+define("L_REG_8", "V e-mail");
+define("L_REG_9", "Registrcia prebehla spene.");
+define("L_REG_10", "Sp");
+define("L_REG_11", "Zmena");
+define("L_REG_12", "Nastavenie uvateskch informci");
+define("L_REG_13", "Vymazanie profilu");
+define("L_REG_14", "Prihlsenie");
+define("L_REG_15", "Vstpte");
+define("L_REG_16", "Zme");
+define("L_REG_17", "Vae informcie boli spene modifikovan.");
+define("L_REG_18", "Boli ste vykopnut z miestnosti modertorom.");
+define("L_REG_19", "Skutone ho chcete zrui?");
+define("L_REG_20", "no");
+define("L_REG_21", "Profil bol uspene odstrnen.");
+define("L_REG_22", "Nie");
+define("L_REG_25", "Ukoni");
+define("L_REG_30", "Krstn meno");
+define("L_REG_31", "Priezvisko");
+define("L_REG_32", "WEB");
+define("L_REG_33", "Sprstupni e-mail pomocou prkazu /whois");
+define("L_REG_34", "Nastavenia/zmena profilu");
+define("L_REG_35", "Administrcia");
+define("L_REG_36", "Ovldate jazyky");
+define("L_REG_37", "Polia oznaen <span class=\"error\">*</span> musia by vyplnen.");
+define("L_REG_39", "Miestnos v ktorej ste sa nachdzali bola zruen administrtorom.");
+define("L_REG_45", "Pohlavie");
+define("L_REG_46", "Mu");
+define("L_REG_47", "ena");
+
+// e-mail validation stuff
+define("L_EMAIL_VAL_1", "Vae nastavenia pre vstup do chat-u");
+define("L_EMAIL_VAL_2", "Vtame Vs na naom i Vaom chatovacom serveri.");
+define("L_EMAIL_VAL_Err", "Intern chyba, kontaktujte prosm administrtorov: <a href=\"mailto:%s\">%s</a>.");
+define("L_EMAIL_VAL_Done", "Vae heslo bolo poslan na Vau e-mail adresu.");
+
+// admin stuff
+define("L_ADM_1", "%s u viac nie je modertorom tejto miestnosti.");
+define("L_ADM_2", "U nie ste registrovanm uvateom.");
+
+//error messages
+define("L_ERR_USR_1", "Toto uvatesk meno je u pouit. Prosm zvote si in.");
+define("L_ERR_USR_2", "Muste si vybra uvatesk meno.");
+define("L_ERR_USR_3", "Toto uvatesk meno je u zaregistrovan. Prosm, zadajte pre heslo, alebo si zvote in meno.");
+define("L_ERR_USR_4", "Heslo je neplatn.");
+define("L_ERR_USR_5", "Uvatesk meno nebolo korektne zadan.");
+define("L_ERR_USR_6", "Heslo nebolo korektne zadan.");
+define("L_ERR_USR_7", "E-mail nebol korektne zadan.");
+define("L_ERR_USR_8", "E-mailov adresa nebola korektne zadan.");
+define("L_ERR_USR_9", "Toto uvatesk meno je u zaregistrovan.");
+define("L_ERR_USR_10", "Neplatn uvatesk meno a heslo.");
+define("L_ERR_USR_11", "Na toto m prvo iba administrtor.");
+define("L_ERR_USR_12", "Ste administrtorom, take nemete by odstrnen.");
+define("L_ERR_USR_13", "Pre vytvorenie si vlastnej skromnej miestnosti muste ma zaregistrovan uvatesk meno.");
+define("L_ERR_USR_14", "Pred vstupom do chatovacej miestnosti sa muste zaregistrova.");
+define("L_ERR_USR_15", "Muste zada Krstn meno aj Priezvisko.");
+define("L_ERR_USR_16", "Uvatesk meno nesmie obsahova iarky, medzery, alebo spn lomtka (\\).");
+define("L_ERR_USR_17", "Takto miestnos neexistuje, no zrove nemte dovoli vytvori ju!");
+define("L_ERR_USR_18", "Vae uvatesk meno obsahuje nevhodn slovo alebo frzu.");
+define("L_ERR_USR_19", "Nemete by naraz vo viacerch miestnostiach.");
+define("L_ERR_USR_20", "Bol Vm znemonen prstup do tejto miestnosti alebo do chat-u.");
+define("L_ERR_ROM_1", "Meno miestnosti neme obsahova iarky alebo sptn lomtka (\\).");
+define("L_ERR_ROM_2", "Meno miestnosti obsahuje nevhodn slovo alebo frzu a preto neme by vytvorn.");
+define("L_ERR_ROM_3", "Takto miestnos u existuje ako verejn.");
+define("L_ERR_ROM_4", "Nesprvny nzov miestnosti");
+
+// users frame or popup
+define("L_EXIT", "Ods z miestnosti");
+define("L_DETACH", "Odlepi");
+define("L_EXPCOL_ALL", "Rozbali/Zbali vetko");
+define("L_CONN_STATE", "Stav spojenia");
+define("L_CHAT", "Chat");
+define("L_USER", "uvate/ov");
+define("L_USERS", "uvatelia/ov");
+define("L_NO_USER", "iadny uvatelia");
+define("L_ROOM", "miestnos");
+define("L_ROOMS", "miestnosti");
+define("L_EXPCOL", "Rozbali/Zbali miestnos");
+define("L_BEEP", "Povoli/zakza ppanie ke vstpi nov uvate");
+define("L_PROFILE", "Profil zobrazovania");
+define("L_NO_PROFILE", "No profile");
+
+// input frame
+define("L_HLP", "Help - npoveda");
+define("L_BAD_CMD", "Toto nie je platn prkaz!");
+define("L_ADMIN", "%s je u nastaven ako administrtor!");
+define("L_IS_MODERATOR", "%s je u nastaven ako modertor !");
+define("L_NO_MODERATOR", "Tento prkaz me poui iba modertor.");
+define("L_MODERATOR", "%s je nastaven ako modertor tejto miestnosti.");
+define("L_NONEXIST_USER", "Uvate %s sa nenachdza v tejto miestnosti.");
+define("L_NONREG_USER", "Uvate %s nie je zaregistrovan.");
+define("L_NONREG_USER_IP", "IP je: %s.");
+define("L_NO_KICKED", "Uvate %s je modertorom alebo administrtorom a preto neme by vykopnut!");
+define("L_KICKED", "Uvate %s bol vykopnut.");
+define("L_NO_BANISHED", "Uvate %s je modertorom alebo administrtorom a neme by vyhosten.");
+define("L_BANISHED", "Uvate %s bol spene vyhosten.");
+define("L_SVR_TIME", "as serveru: ");
+define("L_NO_SAVE", "Nie s iadne sprvy na uloenie!");
+define("L_NO_ADMIN", "Iba administrtor me poui tento prkaz.");
+define("L_ANNOUNCE", "OZNMENIE");
+define("L_INVITE", "%s navrhuje aby ste preli do <a href=\"#\" onClick=\"window.parent.runCmd('%s','%s')\">%s</a> miestnosti.");
+define("L_INVITE_REG", " Pre vstup do tejto miestnosti muste by zaregistrovan.");
+define("L_INVITE_DONE", "Vae pozvanie bolo poslan uvateovi %s.");
+define("L_OK", "Poli");
+
+// help popup
+define("L_HELP_TIT_1", "Smajlky");
+define("L_HELP_TIT_2", "Formtovanie textu sprv");
+define("L_HELP_FMT_1", "Text v sprvach me by tun, sklonen alebo podiarknut ohranienm prslunej asti textu s: &lt;B&gt; &lt;/B&gt;, &lt;I&gt; &lt;/I&gt; alebo &lt;U&gt; &lt;/U&gt; tagmi.<BR>Napr.: &lt;B&gt;tento text&lt;/B&gt; vytvor <B>tento text</B>.");
+define("L_HELP_FMT_2", "Na vytvorenie odkazu (e-mail alebo URL) vo vaich sprvach, napte jednoducho adresu bez akhokovek tagu. Odkaz bude vytvoren automaticky.");
+define("L_HELP_TIT_3", "Prkazy");
+define("L_HELP_USR", "uvate/ov");
+define("L_HELP_MSG", "sprvy");
+define("L_HELP_ROOM", "miestnos");
+define("L_HELP_CMD_0", "{} je povinn parameter, [] je voliten parameter.");
+define("L_HELP_CMD_1", "Nastav poet zobrazovanch sprv, 5 je minimum.");
+define("L_HELP_CMD_1a", "Nastav poet zobrazovanch sprv, minimlna a automaticky nastaven hodnota je 5.");
+define("L_HELP_CMD_1b", "Op nata sprvy a zobraz len poslednch aktulnych n sprv, minimlna a automaticky nastaven hodnota je 5.");
+define("L_HELP_CMD_2a", "Zmen interval obnovovania (v sek.)<BR>Ak n nie je zadan, alebo je menie ako 3, men medzi zobrazovanm bez obnovy a obnovovanm po 10 sekundch.");
+define("L_HELP_CMD_2b", "Zmen interval obnovovania sprv i zoznam uvateov (v sek.).<BR>Ak n nie je zadan, alebo je menie ako 3, men medzi zobrazovanm bez obnovy a obnovovanm po 10 sekundch.");
+define("L_HELP_CMD_3", "Zmen poradie sprv. Pridvanie novch sprv nahor alebo nadol.");
+define("L_HELP_CMD_4", "Presunie uvatea do inej miestnosti, pokia neexistuje tak ju vytvor.<BR>n rovn 0 pre skromn a 1 pre verejn, implicitne 1 pokia nie je n zadan.");
+define("L_HELP_CMD_5", "Odde z chatu po vypsan volitenej sprvy.");
+define("L_HELP_CMD_6", "Bude ignorova sprvy od uvatea ak sa zad jeho uvatesk meno.<BR>Vypne ignorovanie pre<BR>- uvatea ak je zadan jeho uvatesk meno spolu s - (pomlkou)<BR>- vetkch uvateov ak sa zad - (pomlka) bez uvateskho mena.<BR>Ak sa nezad ni, tento prkaz zobraz okno so vetkmi ignorovanmi uvatemi.");
+define("L_HELP_CMD_7", "Znovu vyvol posledn sprvu alebo prkaz, ktor ste odoslali.");
+define("L_HELP_CMD_8", "Uke/Skryje asy pred sprvami.");
+define("L_HELP_CMD_9", "Vykopne uvatea z miestnosti. Tento prkaz me poui iba modertor.");
+define("L_HELP_CMD_10", "Pole skromn sprvu konkrtnemu uvateovi (ostatn uvatelia tto sprvu neuvidia).");
+define("L_HELP_CMD_11", "Zobraz informcie o vybranom uvateovi.");
+define("L_HELP_CMD_12", "Otvor popup okno pre nastavenie uvateovho profilu.");
+define("L_HELP_CMD_13", "Umouje prepna medzi zapnutm a vypnutm zobrazovanm upozornen, ke nejak in uvate vojde alebo odde do/z miestnosti.");
+define("L_HELP_CMD_14", "Povouje administrtorovi alebo modertorovi (modertorom) miestnosti povi alieho benho zaregistrovanho uvatea na modertora tej istej miestnosti.");
+define("L_HELP_CMD_15", "Vyist chatovacie okno a zobraz poslednch aktulnych 5 sprv.");
+define("L_HELP_CMD_16", "Ulo poslednch n sprv (alebo oznaench) do HTML sboru. Aj nie je n udan, potom sa uloia vetky sprvy.");
+define("L_HELP_CMD_17", "Umouje administrtorovi posla sprvu vetkm uvateom bez ohadu na to, v akej miestnosti sa nachdzaj.");
+define("L_HELP_CMD_18", "Navrhne uvateovi v inej miestnosti aby preiel do tej kde sa prve nachdzate Vy.");
+define("L_HELP_CMD_19", "Povoli modertorom miestnost alebo administrtorovi \"vykza\" uvatea z miestnosti na as uren administrtorom.<BR>To neskorie moe vykza uvatea chatujceho v inej miestnosti ako v tej, v ktorej sa nachdza a poui '<B>&nbsp;*&nbsp;</B>' nastavenia zakza \"navdy\" a tm znemoni prstup do celho chat-u.");
+define("L_HELP_CMD_20", "Describe what you're doing without refer yourself.");
+
+//message frame
+define("L_NO_MSG", "iadna sprva ...");
+define("L_TODAY_DWN", "Dnes poslan sprvy zanaj dole");
+define("L_TODAY_UP", "Dnes poslan sprvy zanaj hore");
+
+// message colors
+$TextColors = array(	"ierna" => "#000000",
+				"erven" => "#FF0000",
+				"Zelen" => "#009900",
+				"Modr" => "#0000FF",
+				"Fialov" => "#9900FF",
+				"Tmavo erven" => "#990000",
+				"Tmavo zelen" => "#006600",
+				"Tmavo modr" => "#000099",
+				"Hned" => "#996633",
+				"Morsk modr" => "#006699",
+				"Mrkva" => "#FF6600");
+
+//ignored popup
+define("L_IGNOR_TIT", "Ignorovan");
+define("L_IGNOR_NON", "iadny ignorovan uvatelia");
+
+// whois popup
+define("L_WHOIS_ADMIN", "Administrtor");
+define("L_WHOIS_MODER", "Modertor");
+define("L_WHOIS_USER", "Uvate");
+
+// Notification messages of user entrance/exit
+define("L_ENTER_ROM", "%s vstpil(a) do miestnosti");
+define("L_EXIT_ROM", "%s sa odhlsil(a) z tejto miestnosti");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/slovak/localized.tutorial.php 0.15.0/chat/localization/slovak/localized.tutorial.php
--- 0.14.5/chat/localization/slovak/localized.tutorial.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/slovak/localized.tutorial.php	2004-04-01 03:07:41.000000000 -0600
@@ -0,0 +1,727 @@
+<?php
+// File: slovak.tutorial.php
+// Translation by Marek Rybr <webmaster@satelit.sk> & Richard Marko <spirit@feeha.sk>
+
+// Get the names and values for vars sent by the script that called this one
+if (isset($HTTP_GET_VARS))
+{
+	while(list($name,$value) = each($HTTP_GET_VARS))
+	{
+		$$name = $value;
+	};
+};
+?>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+
+<HEAD>
+<TITLE>Slovensk nvod pre <?php echo(APP_NAME." - ".APP_VERSION); ?></TITLE>
+<meta http-equiv=Content-Type content="text/html; charset=windows-1250">
+<STYLE>
+A.topLink
+{
+	text-decoration: underline;
+	color: #0000C0;
+}
+
+A.topLink:hover, A.topLink:active
+{
+	color: #FF9900;
+	text-decoration: none;
+	font-weight: 800;
+}
+
+.redText
+{
+	font-weight: 800;
+	color: #FF0000;
+}
+</STYLE>
+</HEAD>
+
+<BODY BGCOLOR="#CCCCFF">
+<P><A NAME="top"></P>
+<TABLE BORDER="5" CELLPADDING="5">
+<TR>
+	<TD><FONT SIZE="+2">Obsah nvodu</FONT></TD>
+</TR>
+</TABLE><BR>
+
+<P CLASS="redText">
+UPOZORNENIE: Uvatelia prehliadaa Netscape maj pravdepodobne problm so zobrazenm znakovej sady a niektor znaky sa im zobrazia ako '?' (otznik).<BR>Nastavte si preto korektn znakov sadu pomocou: View/CharacterSet/Central European (Windows-1250).
+</P>
+
+<?php
+if (C_MULTI_LANG == "1") 
+{
+	?>
+	<A HREF="#language" CLASS="topLink">Vber jazyka</A><BR>
+	<?php
+}
+?>
+<A HREF="#login" CLASS="topLink">Prihlsenie do chatu</A><BR>
+<A HREF="#register" CLASS="topLink">Registrcia</A><BR>
+<A HREF="#modProfile" CLASS="topLink">Upravenie<?php if (C_SHOW_DEL_PROF == "1") echo("/zmazanie"); ?> Vho profilu</A><BR>
+<?php
+if (C_VERSION == "2") 
+{
+	?>
+	<A HREF="#create_room" CLASS="topLink">Vytvranie miestnost</A><BR>
+	<?php
+};
+if ($Ver == "H") 
+{
+	?>
+	<A HREF="#connection_state" CLASS="topLink">Porozumie stavu pripojenia</A><BR>
+	<?php
+};
+?>
+<A HREF="#sending" CLASS="topLink">Posielanie sprv</A><BR>
+<A HREF="#users_list" CLASS="topLink">Porozumenie zoznamu uvateov</A><BR>
+<A HREF="#exit" CLASS="topLink">Odchod z chatovacej miestnosti</A><BR>
+<A HREF="#users_popup" CLASS="topLink">Informcie, kto prve chatuje bez prihlsenia</A><BR>
+<P>
+<A HREF="#customize" CLASS="topLink">prava zobrazovanch dajov v chate</A><BR>
+<P>
+<A HREF="#commands" CLASS="topLink">Prednosti a prkazy:</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#help" CLASS="topLink">Prkaz help</A><BR>
+<?php
+if (C_USE_SMILIES == "1")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#smilies" CLASS="topLink">Grafick smevy (smajlky)</A><BR>
+	<?php
+};
+if (C_HTML_TAGS_KEEP != "none")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#text" CLASS="topLink">Formtovanie textu</A><BR>
+	<?php
+};
+?>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#invite" CLASS="topLink">Pozvanie alieho uvatea do vaej miestnosti</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#changeroom" CLASS="topLink">Zmena miestnosti</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#editprofil" CLASS="topLink">prava vlastnho profilu z chatu</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#spatnevolanie" CLASS="topLink">Sptn volanie poslednej sprvy alebo prkazu, ktor ste napsali</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#odpovedatuziv" CLASS="topLink">Odpoveda pecifickmu uvateovi</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#private" CLASS="topLink">Skromn sprvy</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#actions" CLASS="topLink">Actions</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#ignore" CLASS="topLink">Ignorovanie ostatnch uvateov</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#whois" CLASS="topLink">Zskavanie informcii o ostatnch uvateoch</A><BR>
+<?php
+if (C_SAVE != "0")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#save" CLASS="topLink">Uloenie sprv</A><BR>
+	<?php
+};
+?>
+<P>
+<A HREF="#moderator" CLASS="topLink">pecilne prkazy pre modertorov a/alebo administrtorov:</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#announce" CLASS="topLink">Poslanie oznmenia</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#kick" CLASS="topLink">Vykopnutie uvatea</A><BR>
+<?php
+if (C_BANISH != "0")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#banish" CLASS="topLink">Vyhostenie uvatea</A><BR>
+	<?php
+};
+?>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#promote" CLASS="topLink">Povenie obyajnho uvatea na modertora</A><BR>
+<P>
+<HR>
+<HR>
+
+
+<?php
+if (C_MULTI_LANG == "1") 
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="language"><B>Vber jazyka:</B></A></FONT>
+	<P>
+	Mete si zvoli ubovon jazyk, do ktorho je <?php echo(APP_NAME); ?>
+	preloen, kliknutm na jednu zo zstavok na prvej strnke. Naprklad v tomto prklade si uvate vyber francztinu:
+
+	<P ALIGN="center">
+	<IMG SRC="images/tutorials/flags.gif" HEIGHT="44" WIDTH="424" ALT="Zstavky pre vber jazyka">
+	<BR><P ALIGN="right"><A HREF="#top">Sp nahor</A></P>
+	<HR>
+	<?php
+}
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="login"><B>Prihlsenie do chatu:</B></A></FONT>
+<P>
+Pokia ste sa u zaregistrovali, potom u len jednoducho vyplte vae uvatesk meno a  heslo. Potom si vyberte do ktorej miestnosti chcete vstpi a stlate tlatko Chatujte.<BR>
+
+<?php
+if (C_REQUIRE_REGISTER == "1")
+{
+	?>
+	<P>
+	Inak by sa patrilo pred vstupom do chatu <A HREF="#register">zaregistrova</A>.
+	<?php
+}
+else
+{
+	?>
+	<P>
+	Inak by sa patrilo pred vstupom do chatu <A HREF="#register">zaregistrova sa</A>. 
+	Pokia ste len nhodn nvtevnk, alebo chcete zosta v plnej anonymite, tak Vm  	sta vyplni iba uvatesk meno. Zrove vak vaa prezvka 
+	nebude zaregistrovan (al uvate ju me poui a sa odhlsite).
+
+	<?php
+}
+?>
+<BR><P ALIGN="right"><A HREF="#top">Sp nahor</A></P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="register"><B>Registrcia:</B></A></FONT> 
+<P>
+Pokia ste sa ete nezaregistrovali 
+<?php if (C_REQUIRE_REGISTER == "0") echo("a chcete tak urobi"); ?>, kliknite na vodnej strnke na odkaz &#132;Registrcia&#148; a nsledne na to sa Vm otvor mal registran okno.
+
+<P>	
+<UL>
+	<LI>Najprv, vytvorte uvatea<?php if (!C_EMAIL_PASWD) echo(" a heslo"); ?> pre Vs tm, e to napete do vhodnch polok. Uvatesk meno, ktor si vyberiete je to, ktor bude automaticky zobrazen v chat-e. Neme obsahova medzeru, iarku alebo opan lomtko (\).
+<?php if (C_NO_SWEAR == "1") echo(" U viac neme obsahova \"neslun slov\"."); ?>
+
+	<LI>Po druh: prosm vyplte vae cel meno a vau e-mailov adresu.
+	Pre spen zaregistrovanie sa do chatu muste vetky tieto informcie vyplni.
+	Vobu pohlavia mete preskoi.
+
+	<LI>Pokia mte vlastn www strnku, potom mete vyplni jej adresu.
+
+	<LI>Polko 'Ovldate jazyky' me pomc ostatnm uvateom v budcich diskusiach: bud vedie, ktor alie jazyky ovldate.
+
+	<LI>Po tretie: pokia chcete povoli zobrazovanie vaej e-mailovej adresy
+	ostatnm uvateom chatu, zakrtnite polko &#132;zobrazovanie e-mailu
+	prkazom /whois&#148;. Pokia nechcete necha vau e-mailov adresu zobrazova, tak nechajte polko nezaktnut.
+
+	<LI>Po vykonan predchdzajcich krokov stlate 'Zaregistrova' a v &#132;et&#148; bude vytvoren.
+	Pokia chcete kedykovek presta, tak jednoducho stlate tlatko 'Ukoni'.
+</UL>
+<BR><P ALIGN="right"><A HREF="#top">Sp nahor</A></P>
+<HR>
+
+<P><A NAME="modProfile"></A>
+<FONT SIZE="+1"><A NAME="register"><B>Upravenie<?php if (C_SHOW_DEL_PROF == "1") echo("/zmazanie"); ?> Vho profilu:</B></A></FONT> 
+<P>
+Zaregistrovan uvate si samozrejme me kedykovek upravi<?php if (C_SHOW_DEL_PROF == "1") echo("/zmaza"); ?> svoj profil
+kliknutm na prslun<?php echo((C_SHOW_DEL_PROF == "0" ? " odkaz" : " odkazy")); ?>: &#132;Nastavenie profilu&#148; a &#132;Zruenie profilu&#148;.<BR>
+<BR><P ALIGN="right"><A HREF="#top">Sp nahor</A></P>
+<P>
+<HR>
+
+<?php
+if (C_VERSION == "2") 
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="create_room"><B>Vytvranie miestnost:</B></A></FONT> 
+	<P>
+	Kad zaregistrovan uvate si me vytvori vlastn miestnos. Skromn miestnosti 
+	mu poui vetci uvatelia, ktor poznaj jej meno. Tieto miestnosti nebud 
+	zobrazen iadnym uvateom okrem tch, ktor s v tejto miestnosti.<BR>
+	
+	<P>
+	Meno miestnosti neme obsahova iarky ani sptn lomtka (\).
+	<?php if (C_NO_SWEAR == "1") echo(" Tie neme obsahova \"vulgrne slov\"."); ?>
+	<BR><P ALIGN="right"><A HREF="#top">Sp nahor</A></P>
+	<P>
+	<HR>
+	<?php
+};
+if ($Ver == "H")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="connection_state"><B>Porozumie stavu pripojenia:</B></A></FONT>
+	<P>
+	Ikonka ukazujca stav Vho pripojenia je umiestnen v pravom hornom rohu obrazovky. Me ma tri podoby :
+	<P>
+	<UL>
+		<LI><IMG SRC="images/connectOff.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Bez spojenia"> ke spojenie nie je potrebn ;
+		<LI><IMG SRC="images/connectOn.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Spja sa"> ke prebieha spojenie ;
+		<LI><IMG SRC="images/connectError.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Spojenie zlyhalo"> ke spojenie zlyhalo.
+	</UL>
+	<P>
+	V treom prpade, klinkutm na erven "tlaidlo" sa spust nov pokus o spojenie.
+	<BR><P ALIGN="right"><A HREF="#top">Sp nahor</A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="sending"><B>Posielanie sprv:</B></A></FONT> 
+<P>
+Pre poslanie sprvy napte jej obsah do kolonky umiestnenej v avom dolnom rohu a potom stlate klvesu ENTER alebo stlate tlatko OK. Sprva sa nsledne zobraz v hlavnom chatovacom okne.
+<BR>
+
+<?php if (C_NO_SWEAR == "1") echo("Pozn.: Vetky \"sptn lomtka\" s zo sprvy vymazan."); ?>
+<P>
+Mete zmeni farbu textu vaich sprv vybranm novej farby vpravo od kolonky pre psanie sprv.
+
+<BR><P ALIGN="right"><A HREF="#top">Sp nahor</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="users_list"><B>Porozumenie zoznamu uvateov (neplat pre uvateov popup okien):</B></A></FONT> 
+<P>
+<OL>
+	Pre zoznam uvateov s zadefinovan dve zkladn pravidl:<BR>
+	<!-- To update
+	<LI>mal ikona (<IMG SRC="images/whoisOff.gif" WIDTH=5 HEIGHT=9 BORDER=0 ALT="whois ikona">) je zobrazovan pred uvateskm menom registrovanho uvatea a po kliknut na u sa otvor <A HREF="#whois">whois popup</A> okno danho uvatea. Pokia je uvate nezaregistrovan, tak m pred uvateskm menom iba znamienko mnus;<BR>
+	-->
+	<LI>a little icon that shows gender is displayed before the nick of a registered user (clicking on it will launch the <A HREF="#whois">whois popup</A> for this user), while unregistered users have nothing but blank spaces displayed before their nick;<BR>
+	<LI>uvatesk meno administrtora alebo modertora je sklonen voi ostatnm.
+</OL>
+<P><I>Napr.:</I> v nasledujcom obrzku si mete pozrie ako to pribline vyzer:
+<TABLE BORDER=0 CELLSPACING=10>
+<TR>
+	<TD>
+		<IMG SRC="images/tutorials/usersList.gif" WIDTH=128 HEIGHT=145 BORDER=0 ALT="zoznam uvateov">
+	</TD>
+	<TD>
+	<UL>
+		<LI>Nicolas je administrtorom alebo modertorom miestnosti phpMyChat;<BR><BR>
+		<!-- To update
+		<LI>lolo a Jezek2 s registrovan uvatelia, ale "nemaj" zvltne prvomoci v miestnosti phpMyChat;<BR>
+		<LI>Mary je jednoduch neregistrovan uvateka.
+		-->
+		<LI>alien (whose gender is unknown), Jezek2 and Caridad are registered users with no extra "power" for the phpMyChat room;<BR><BR>
+		<LI>lolo is a simple unregistered user.
+	</UL>
+	</TD>
+</TR>
+</TABLE>
+<BR><P ALIGN="right"><A HREF="#top">Sp nahor</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="exit"><B>Odchod z chatovacej miestnosti:</B></A></FONT>
+<P>
+Pre odchod z chatovacej miestnosti jednoducho kliknite na odkaz 'Ods z miestnosti'. Alternativne mete poui jeden z tchto prkazov:<BR>
+/exit<BR>
+/bye<BR>
+/quit
+<P>
+Tieto prkazy mu by doplnen sprvou, ktor sa odole tesne pred odchodom z chatu.
+<I>Napr.:</I> /quit Uvidme sa oskoro!
+<P>
+pole sprvu "Uvidme sa oskoro!" do chatu a potom Vs z neho odhlsi.
+<BR><P ALIGN="right"><A HREF="#top">Sp nahor</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="users_popup"><B>Informcie, kto prve chatuje bez prihlsenia:</B></A></FONT> 
+<P>
+Mete klikn na odkaz na hlavnej strnke, ktor ukazuje poet prve chatujcich uvateov, alebo pokia chatujete, kliknutm na obrzok 
+<IMG SRC="images/popup.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Odlepi zoznam uvateov">
+v pravom hornom rohu. Potom sa otvor mal nezvisl okno, ktor ukazuje zoznam chatujcich uvateov a miestnost v ktorch s.<BR>
+
+Titulok okna obsahuje men uvateov pokia je ich menej ne 3, v opanom prpade obsahuje poet uvateov a otvoren miestnosti.
+
+<P>
+Kliknutm na obrzok
+<IMG SRC="images/sound.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Ppanie">
+v hornej asti tohto okienka povol/zake ppanie, ke vojde nov uvate.
+<BR><P ALIGN="right"><A HREF="#top">Sp nahor</A></P>
+<P>
+<HR>
+<HR>
+
+
+<P>
+<FONT SIZE="+1"><A NAME="customize"><B>prava zobrazovanch dajov v chate:</B></A></FONT>
+<P>
+Je tu na vber niekoko monost ako upravova vzhad chatu. Pre zmenu nastavenia jednoducho napte prslun prkaz do kolnky pre psanie sprv a nslednm stlaenm klvesy ENTER zmenu aktivujete.
+<P>
+<UL>
+	<?php
+	if ($Ver == "H")
+	{
+		?>
+		<LI>Prkaz <B>Clear</B> umon vyisti vpis sprv a zobraz len
+		poslednch 5 sprv.<BR>
+		Napte "/clear" bez vodzoviek.
+		<P>
+		<?php
+	}
+	else
+	{
+		?>
+		<LI>Prkaz <B>Order</B> vm umouje prepna medzi smermi pridvanch novch sprv nahor alebo nadol.<BR>
+		Napte "/order" bez vodzoviek.
+		<P>
+		<?php
+	};
+	?>
+	<LI>Prkaz <B>Notify</B> umouje prepna medzi zapnutm a vypnutm 
+	zobrazovanm upozornen, ke nejak in uvate vojde alebo odde
+	do/z miestnosti. Implicitne je tto voba <?php echo(C_NOTIFY ? "zapnut" : "vypnut"); ?>
+	a upozornenia <?php echo(C_NOTIFY ? "bud" : "nebud"); ?> zobrazovan.<BR>
+	Napte "/notify" bez vodzoviek.
+	
+	<P>
+	<LI>Prkaz <B>Timestamp</B> umouje prepna medzi zapnutm a vypnutm zobrazovanm 
+	asu napsanch sprv pred textom sprv a zobrazovanm asu
+	serveru v spodnej lite. Implicitne je tto voba
+	<?php echo(C_SHOW_TIMESTAMP ? "zapnut" : "vypnut"); ?>.<BR>
+	Napte "/timestamp" bez vodzoviek.
+	<P>
+	<LI>Prkaz <B>Refresh</B> umouje nastavi rchlos obnovy sprv
+	v hlavnom rme. Implicitn rchlos je <?php echo(C_MSG_REFRESH); ?>
+	seknd. Pro zmenu rchlosti napte "/refresh n" bez vodzoviek, kde n
+	je as v sekundch novej rchlosti obnovovania.
+	<P>
+	<I>Napr.:</I> /refresh 5
+	<P>
+	zmen rchlos obnovy sprv na 5 seknd. *Pozor, pokia je n nastaven
+	na menej ako tri, potom sa nebud sprvy vbec obnovova (uiton ke
+	si chcete preta mnoho starch sprv a nechcete by otravovan)!*
+	<P>
+	<?php
+	if ($Ver == "L")
+	{
+		?>
+		<LI>Prkaz <B>Show</B> umouje nastavi poet zobrazovanch sprv.
+		Pre zmenu implicitnho potu, napte "/show n" bez vodzoviek, kde n
+		je nov poet zobrazovanch sprv.
+		<P>
+		<I>Napr.:</I> /show 50
+		<P>
+		sprstupn viditenos na 50 najnovch sprv na vaej obrazovke.
+		Pokia nemu by vetky sprvy zobrazen naraz, tak sa vpravo
+		od rmca so sprvami objav "posuvnk" (scrollbar).</UL>
+		<?php
+	}
+	else
+	{
+		?>
+		<LI>Prkazy <B>Show a Last</B> umouj vyisti obrazovku
+		a zobrazi poslednch <I>n</I> sprv. Napte "/show n" alebo "/last n"
+		bez vodzoviek, kde n je poet zobrazovanch sprv.
+		<P>
+		<I>Napr.:</I> /show 50 alebo /last 50
+		<P>
+		vyist rmec so sprvami a ponech v om poslednch 50 sprv. Pokia 
+		nemu by vetky sprvy zobrazen naraz, tak sa vpravo
+		od rmca so sprvami objav "posuvnk" (scrollbar).</UL>
+		<?php
+	};
+	?>
+	<BR><P ALIGN="right"><A HREF="#top">Sp nahor</A></P>
+	<P>
+</UL>
+<HR>
+<HR>
+
+
+<P>
+<FONT SIZE="+2"><A NAME="commands"><B><U>Prednosti a prkazy</U></B></A></FONT> 
+<P>
+
+<FONT SIZE="+1"><A NAME="help"><B>Prkaz Help:</B></A></FONT>
+<P>
+Akonhle ste v niektorej z chatovacch miestnost, mete si otvori okienko s npovedou
+kliknutm na tto <IMG SRC="images/helpOff.gif" WIDTH=15 HEIGHT=15 BORDER=0 ALT="?">
+ikonu, ktor je umiestnen tesne pred kolonkou na psanie sprv. Taktie je mon
+poui prkazy <B>"/help" alebo "/?"</B>.
+<BR><P ALIGN="right"><A HREF="#top">Sp nahor</A></P>
+<P>
+<P>
+<HR>
+
+<?php
+if (C_USE_SMILIES == "1")
+{
+	include("./lib/smilies.lib.php");
+	$Nb = count($SmiliesTbl);
+	$ResultTbl = Array();
+	DisplaySmilies($ResultTbl,$SmiliesTbl,$Nb,"tutorial");
+	unset($SmiliesTbl);
+	?>
+	<FONT SIZE="+1"><A NAME="smilies"><B>Grafick smevy (smajlky):</B></A></FONT>
+	<P>Vo svojch sprvach mete pouva grafick smajlky. Pozrite sa na
+	nsledujci kd, ktor muste vloi do sprvy, aby ste vo vsledku
+	dostali grafick smajlk.
+	<P ALIGN="center">
+	<TABLE BORDER=0 CELLPADDING=3 CELLSPACING=5>
+	<?php
+	$i = "0";
+	$Nb = count($ResultTbl);
+	while($i < $Nb)
+	{
+		if ($i > 0) echo("\t");
+		echo("<TR VALIGN=\"BOTTOM\">\n");
+		echo("$ResultTbl[$i]");
+		echo("\t</TR>\n\t<TR>\n");
+		$i++;
+		echo("$ResultTbl[$i]");
+		echo("\t</TR>\n");
+		$i++;
+	};
+	unset($ResultTbl);
+	?>
+	</TABLE>
+	<P>
+	<I>Napr.:</I> poslanm textu "Hi Jack :)" bez vodzoviek, zobraz sprvu
+	"Hi Jack <IMG SRC="images/smilies/smile1.gif" WIDTH=15 HEIGHT=15 ALT=":)">"
+	v hlavnom rmci.
+	<BR><P ALIGN="right"><A HREF="#top">Sp nahor</A></P>
+	<P>
+	<HR>
+	<?php
+}
+
+if (C_HTML_TAGS_KEEP != "none")
+{
+	?>
+	<FONT SIZE="+1"><A NAME="text"><B>Formtovanie textu:</B></A></FONT>
+	<P>
+	Text v sprvach me by tun, sklonen alebo podiarknut ohranienm prslunej 
+	asti textu s &lt;B&gt; &lt;/B&gt;, &lt;I&gt; &lt;/I&gt; alebo &lt;U&gt; &lt;/U&gt; tagmi.
+	
+	<P>
+	<I>Napr.:</I> &lt;B&gt;tento text&lt;/B&gt; vytvor <B>tento text</B>.
+	
+	<P>
+	Na vytvorenie odkazu (e-mail alebo URL) vo vaich sprvach, napte jednoducho
+	adresu bez akhokovek tagu. Odkaz bude vytvoren automaticky.
+	<BR><P ALIGN="right"><A HREF="#top">Sp nahor</A></P>
+	<P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="invite"><B>Pozvanie alieho uvatea do vaej miestnosti:</B></A></FONT>
+<P>
+Pouitm prkazu <B>invite</B> mte monos posla niektormu uvateovi sprvu, ktorou ho pozvate do svojej miestnosti. 
+<P>
+<I>Napr.:</I> /invite Jack 
+<P>
+Pole Jackovi skromn sprvu, pozvajcu ho na do vaej chatovacej miestnosti. Tto sprva obsahuje meno vaej miestnosti, priom meno mu je ponknut vo forme klikatenho linku.
+<P>
+Pozn.: Do prkazu mete napsa aj viacej uvateskch mien naraz.
+(napr. "/invite Jack,Helen,Alf"). Ovem musia by oddelen iarkou bez medzier.
+<BR><P ALIGN="right"><A HREF="#top">Sp nahor</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="changeroom"><B>Zmena miestnosti:</B></A></FONT>
+<P>
+Na obrazovke vpravo je umiestnen zoznam chatovacch miestnost a uvateov,
+ktor s prve v nich. Pre prechod do inej miestnosti jednoducho kliknite
+na meno zvolenej miestnosti. Przdne miestnosti nie s zobrazen v tomto zozname.
+Do nich sa dostanete pomocou napsania prkazu <B>"/join #menomiestnosti"</B>
+bez vodzoviek.
+<P>
+<I>Napr.:</I> /join #RedRoom 
+<P>
+Vs presunie do miestnosti RedRoom.
+<?php
+if (C_VERSION == "2")
+{
+	echo(C_REQUIRE_REGISTER == "0" ? "<P>Pokia ste registrovan uvate, m" : "<BR><P>M");
+	?>ete
+ tie vytvra svoje vlastn miestnosti s tmto istm prkazom, ale
+	muste potom pecifikova typ miestnosti: 0 je skromn a 1 je verejn
+	(implicitn hodnota).
+	<P>
+	<I>Napr.:</I> /join 0 #MyRoom 
+	<P>
+	vytvor nov skromn miestnos (s predpokladom, e u tak verejn
+	miestnos nebola vytvoren) s nzvom MyRoom a vy sa do nej presuniete.
+	<P>
+	Meno miestnosti neme obsahova iarky ani sptn lomtka (\).
+	<?php if (C_NO_SWEAR == "1") echo(" Tie neme obsahova \"vulgrne slova\"."); ?>
+	<?php
+}
+?>
+<BR><P ALIGN="right"><A HREF="#top">Sp nahor</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="editprofil"><B>prava vlastnho profilu z chatu:</B></A></FONT>
+<P>
+Prkaz <B>Profile</B> otvor mal okno, v ktorom si mete upravi
+informcie o vaom profile okrem vaho uvateskho mena a hesla (pokia ich chcete zmeni, potom pouite odkaz z prvej strnky).<BR>Napte "/profile" bez vodzoviek.
+<BR><P ALIGN="right"><A HREF="#top">Sp nahor</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="spatnevolanie"><B>Sptn volanie poslednej sprvy alebo prkazu, ktor ste napsali:</B></a></FONT>
+<P>
+Prkaz <B>!</B> znovu vyvol posledn sprvu alebo prkaz, ktor ste odoslali.<BR>
+Napte "/!" bez vodzoviek.
+<BR><P ALIGN="right"><A HREF="#top">Sp nahor</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="odpovedatuziv"><B>Odpoveda pecifickmu uvateovi:</B></a></FONT>
+<P>
+Jednm kliknutm na meno inho uvatea v rovnakej chatovacej miestnosti zo zoznamu uvateov na pravej strane obrazovky sa objav "username"
+v kolnke pre psanie sprv. Tto vlastnos Vm umon jednoducho posla
+verejn sprvu uvateovi ako odpove na nieo, o on alebo ona napsal(a)
+naposledy.
+<BR><P ALIGN="right"><A HREF="#top">Sp nahor</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="private"><B>Skromn sprvy:</B></A></FONT>
+<P>
+Pre poslanie osobnej sprvy inmu uvateovi, ktor sa nachdza vo Vaej miestnosti, napte <B>command "/msg uivatelskMeno textSprvy" alebo "/to uivatelskMeno textSprvy"</B> bez vodzoviek.
+<P>
+<I>Napr.:</I> ke Jack je uvatesk meno: /msg Jack Ahoj, ako sa m?
+<P>
+Sprva sa objav Jackovi a Vm, ale u nie ostatnm uvateom.
+<P>
+Vimnite si, e kliknutm na nick posielatea sprvy v hlavnom okne, sa automaticky prid tento prkaz do polka pre sprvy.
+<BR><P ALIGN="right"><A HREF="#top">Sp nahor</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="actions"><B>Actions:</B></A></FONT>
+<P>
+To describe what you're doing you can use the <B>command "/me action"</B> without quotes.
+<P>
+<I>For example:</I> If Jack sends the message "/me is smoking a cigarette" the message frame will shown "<B>* Jack</B>" is smoking a cigarette".
+<BR><P ALIGN="right"><A HREF="#top">Sp nahor</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="ignore"><B>Ignorovanie uvateov:</B></A></FONT>
+<P>
+Pre ignorovanie vetkch sprv od inho uvatea, napte prkaz <B>"/ignore uvmeno"</B>
+bez vodzoviek.
+<P>
+<I>Napr.:</I> /ignore Jack
+<P>
+Od tejto chvle sa nebud zobrazova iadne sprvy od Jacka.
+<P>
+Pokia sa chcete pozrie, ktorch vetkch vetkch uvateov ignorujete, tak jednoducho
+napte prkaz <B>"/ignore"</B> bez vodzoviek. 
+<P>
+Pre obnovenie zobrazovania sprv ignorovanho uvatea, napte prkaz
+<B>"/ignore - uvmeno"</B> bez vodzoviek, kde "-" je pomlka. <P> 
+<P>
+<I>Napr.:</I> /ignore - Jack 
+<P>
+Odteraz bud vetky sprvy, ktor Jack nape a i ktor u napsal, zobrazen
+na vaej obrazovke. Pokia vynechte uvatesk meno za pomlkou, potom sa Vm zoznam ignorovanch uvateov vyprzdni.
+<P>
+Pozn.: Do prkazu mete napsa aj viacej uvateskch mien naraz.
+(napr. "/ignore Jack,Helen,Alf" alebo "/ignore - Jack,Alf"). Ovem musia by oddelen iarkou bez medzier.
+<BR><P ALIGN="right"><A HREF="#top">Sp nahor</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="whois"><B>Zskavanie informcii o ostatnch uvateoch</B></A></FONT>
+<P>
+Pre zskanie verejnch informcii o uvateovi, napte prkaz
+<B>"/whois uvmeno"</B> bez vodzoviek.
+<P>
+<I>Napr.:</I> /whois Jack
+<P>
+kde 'Jack' je uvatesk meno. Tento prkaz otvor mal nezvisl okienko, v ktorom bud zobrazen verejne dostupn informcie o zadanom uvateovi.
+<BR><P ALIGN="right"><A HREF="#top">Sp nahor</A></P>
+<P>
+<HR>
+
+<?php
+if (C_SAVE != "0")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="save"><B>Uloenie sprv:</B></A></FONT>
+	<P>
+	Pre export/zlohovanie sprv do miestneho HTML sboru, napte prkaz <B>"/save n"</B> bez vodzoviek.
+	<P>
+	<I>Napr.:</I> /save 5
+	<P>
+	kde '5' je poet poslednch sprv, urench k uloeniu. Ak n nie je pecifikovan, tak sa do HTML sboru uloia vetky sprvy.
+	<BR><P ALIGN="right"><A HREF="#top">Sp nahor</A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+<HR>
+
+
+<P>
+<FONT SIZE="+2"><A NAME="moderator"><B><U>pecilne prkazy pre modertorov a/alebo administrtorov:</U></B></A></FONT> 
+
+<P>
+<FONT SIZE="+1"><A NAME="announce"><B>Poslanie oznmenia:</B></A></FONT>
+<P>
+Administrtor me odosla jednu sprvu vetkm uvateom, ktor prve chatuj, za pomoci prkazu <B>announce</B>, bez ohadu na to v akej miestnosti sa nachdzaj.
+<P>
+<I>Napr.:</I> /announce Tento kanl dnes veer kon o 20:00 hod.
+<BR><P ALIGN="right"><A HREF="#top">Sp nahor</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="kick"><B>Vykopnutie uvatea:</B></FONT>
+<P>
+Modertori mu vykopn uvatea, priom administrtor me vykopn okrem uvatea aj modertora pomocou prkazu <B>kick</B>. Except for the administrator, the user to be kicked must be in the current room.
+<P>
+<I>Napr.:</I> pokia je Jack uvatesk meno, ktorho chceme vykopn: /kick Jack
+<BR><P ALIGN="right"><A HREF="#top">Sp nahor</A></P>
+<P>
+<HR>
+
+<?php
+if (C_BANISH != "0")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="banish"><B>Vyhosti uvatea:</B></A></FONT>
+	<P>
+	Modertori mu vyhosti uvatea a administrtor me vyhosti uvatea alebo modertora pouitm <B>ban prkazu</B>.<BR>
+	Administrtor me vyhosti uvatea z inej miestnosti ako tej, v ktorej chatuje. Me taktie vyhosti uvatea navdy a z celho chat-u s '<B>&nbsp;*&nbsp;</B>' nastavenm, ktor mus by vsunut pred nick uvatea, ktor ma by zakzan.
+	<P>
+	<I>Naprklad</I>, pokia je Jack ten, ktorho mme vyhosti : <I>/ban Jack</I> alebo <I>/ban * Jack</I>
+	<BR><P ALIGN="right"><A HREF="#top">Sp nahor</A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="promote"><B>Povenie obyajnho uvatea na modertora:</B></A></FONT>
+<P>
+Modertori a administrtori mu povi inho uvatea na modertora miestnosti v ktorej sa nachdzaj, pomocou prkazu <B>promote</B>.
+<P>
+<I>Napr.:</I> pokia je Jack uvatesk meno, ktorho chceme povi: /promote Jack
+<P>
+Iba administrtor me urobi opan vec (t.j. urobi z modertora normlneho uvatea) na pecilnej strnke k tomu vyhradenej. Momentlne nie je k dispozcii iaden prkaz, ktor by to umonil priamo.
+<BR><P ALIGN="right"><A HREF="#top">Sp nahor</A></P>
+<P>
+
+
+</BODY>
+</HTML>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/slovak/regex.txt 0.15.0/chat/localization/slovak/regex.txt
--- 0.14.5/chat/localization/slovak/regex.txt	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/slovak/regex.txt	2004-04-01 03:07:41.000000000 -0600
@@ -0,0 +1 @@
+sk|slovak
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/sort_languages.php 0.15.0/chat/localization/sort_languages.php
--- 0.14.5/chat/localization/sort_languages.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/sort_languages.php	2004-04-01 03:06:40.000000000 -0600
@@ -0,0 +1,14 @@
+<?php
+// Sort keys by reverse order in an array - This library is used for release of PHP
+// older than 3.0.15
+
+function KeyComp(&$a, $b)
+{   
+	return -(strcmp($a,$b));
+};
+
+function krsort(&$LangArray)
+{
+	uksort($LangArray, "KeyComp");
+};
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/sort_languages.php3 0.15.0/chat/localization/sort_languages.php3
--- 0.14.5/chat/localization/sort_languages.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/localization/sort_languages.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,14 +0,0 @@
-<?php
-// Sort keys by reverse order in an array - This library is used for release of PHP
-// older than 3.0.15
-
-function KeyComp(&$a, $b)
-{   
-	return -(strcmp($a,$b));
-};
-
-function krsort(&$LangArray)
-{
-	uksort($LangArray, "KeyComp");
-};
-?>
\ No newline at end of file
Binary files 0.14.5/chat/localization/spanish/flag.gif and 0.15.0/chat/localization/spanish/flag.gif differ
diff -ruN 0.14.5/chat/localization/spanish/localized.admin.php 0.15.0/chat/localization/spanish/localized.admin.php
--- 0.14.5/chat/localization/spanish/localized.admin.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/spanish/localized.admin.php	2004-04-01 03:07:41.000000000 -0600
@@ -0,0 +1,62 @@
+<?php
+// File: spanish.admin.php
+// Spanish translation from version 0.14.3 made by Josep Romn (josep.roman@zuerich-see.ch)
+// Date: 3th June 2001
+
+// extra header for charset
+$Charset = "iso-8859-1";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// Top frame
+define("A_MENU_0", "Administracin para %s");
+define("A_MENU_1", "Usuarios registrados");
+define("A_MENU_2", "Usuarios desautorizados");
+define("A_MENU_3", "Inicializar salas");
+define("A_MENU_4", "Enviar mensajes");
+
+// Frame for registered users
+define("A_SHEET1_1", "Listado de los usuarios registrados y sus permisos");
+define("A_SHEET1_2", "Usuario");
+define("A_SHEET1_3", "Permisos");
+define("A_SHEET1_4", "Salas moderadas");
+define("A_SHEET1_5", "Las salas moderadas se separan por comas (,) y sin espacios.");
+define("A_SHEET1_6", "Eliminar perfiles chequeados");
+define("A_SHEET1_7", "Cambiar");
+define("A_SHEET1_8", "No hay usuarios registrados excepto usted.");
+define("A_SHEET1_9", "Perfiles desautorizados chequeados");
+define("A_SHEET1_10", "Ahora vaya a la lista de usuarios desautorizados para refinar su seleccin.");
+define("A_SHEET1_11", "Ultima conexin");
+define("A_USER", "Usuario");
+define("A_MODER", "Moderador");
+define("A_PAGE_CNT", "Pgina %s de %s");
+
+// Frame for banished users
+define("A_SHEET2_1", "Listado de los usuarios desautorizados y salas relacionadas");
+define("A_SHEET2_2", "IP");
+define("A_SHEET2_3", "Salas relacionadas");
+define("A_SHEET2_4", "Hasta");
+define("A_SHEET2_5", "sin fin");
+define("A_SHEET2_6", "Salas se separan por comas  (,) y sin espacios si hay menos de 4, sino el signo '<B>&nbsp;*&nbsp;</B>' indica<BR>desautorizacin para todas los salas.");
+define("A_SHEET2_7", "Eliminar la desautorizacin para usuario(s) chequeado(s)");
+define("A_SHEET2_8", "No hay usuarios desautorizados.");
+
+// Frame for cleaning rooms
+define("A_SHEET3_1", "Listado de las salas existentes");
+define("A_SHEET3_2", "Inicializar una sala que no es la sala \"por-defecto\" eliminar el status de moderador<BR>para esta sala.");
+define("A_SHEET3_3", "Inicializar salas seleccionadas");
+define("A_SHEET3_4", "No hay salas para inicializar.");
+
+// Frame for sending mails
+define("A_SHEET4_0", "Usted no ha definido las variables requeridas en el script <BR>'chat/admin/mail4admin.php'.");
+define("A_SHEET4_1", "Enviar e-mails");
+define("A_SHEET4_2", "A:");
+define("A_SHEET4_3", "Seleccionar todo");
+define("A_SHEET4_4", "Tema:");
+define("A_SHEET4_5", "Mensaje:");
+define("A_SHEET4_6", "Comenzar a enviar");
+define("A_SHEET4_7", "Todos los e-mails han sido enviados.");
+define("A_SHEET4_8", "Error interno al enviar los e-mails.");
+define("A_SHEET4_9", "Direccin(nes), el tema del mensaje o el propio mensaje incompletos!");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/spanish/localized.chat.php 0.15.0/chat/localization/spanish/localized.chat.php
--- 0.14.5/chat/localization/spanish/localized.chat.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/spanish/localized.chat.php	2004-04-01 03:07:42.000000000 -0600
@@ -0,0 +1,222 @@
+<?php
+// File: spanish.chat.php
+// Spanish translation by Josep Romn (josep.roman@zuerich-see.ch)
+//                     && Len Del Ro (leon@webmaster.com.mx)
+// Date: December 16, 2001
+
+// extra header for charset
+$Charset = "iso-8859-1";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// welcome page
+define("L_TUTORIAL", "Tutorial");
+
+define("L_WEL_1", "Los mensajes se borran despus de");
+define("L_WEL_2", "horas y usuarios despus de");
+define("L_WEL_3", "minutos ...");
+
+define("L_CUR_1", "Hay actualmente");
+define("L_CUR_2", "en el chat.");
+define("L_CUR_3", "Usuarios en las salas de chat");
+define("L_CUR_4", "usuarios en salas privadas");
+
+define("L_SET_1", "Por favor introduzca ...");
+define("L_SET_2", "su nombre de usuario");
+define("L_SET_3", "el nmero de mensajes a mostrar");
+define("L_SET_4", "el tiempo entre cada actualizacin");
+define("L_SET_5", "Seleccione una sala de chat ...");
+define("L_SET_6", "Salas por defecto");
+define("L_SET_7", "Haga su eleccin ...");
+define("L_SET_8", "Salas pblicas creadas por usuarios");
+define("L_SET_9", "Crear su propia sala ");
+define("L_SET_10", "pblica");
+define("L_SET_11", "privada");
+define("L_SET_12", "&nbsp;");
+define("L_SET_13", "Y ahora, haga click en");
+define("L_SET_14", "Chatear!");
+
+define("L_SRC", "es libre para entrar");
+
+define("L_SECS", "segundos");
+define("L_MIN", "minuto");
+define("L_MINS", "minutos");
+
+// registration stuff:
+define("L_REG_1", "su contrasea");
+define("L_REG_1r", "(slo si usted est registrado)");
+define("L_REG_2", "Administracin de cuenta");
+define("L_REG_3", "Registrarse primero");
+define("L_REG_4", "Edite sus datos");
+define("L_REG_5", "Borrar usuario");
+define("L_REG_6", "Registro de usuario");
+define("L_REG_7", "Su contrasea");
+define("L_REG_8", "Su e-mail");
+define("L_REG_9", "Usted ha sido registrado satisfactoriamente.");
+define("L_REG_10", "Atrs");
+define("L_REG_11", "Editando");
+define("L_REG_12", "Modificando datos del usuario");
+define("L_REG_13", "Borrando usuario");
+define("L_REG_14", "Entrar");
+define("L_REG_15", "Entrar");
+define("L_REG_16", "Cambiar");
+define("L_REG_17", "Sus datos han sido actualizados satisfactoriamente.");
+define("L_REG_18", "Usted ha sido expulsado de la sala por el moderador.");
+define("L_REG_19", "Realmente quiere ser borrado?");
+define("L_REG_20", "Si");
+define("L_REG_21", "Usted ha sido borrado satisfactoriamente.");
+define("L_REG_22", "No");
+define("L_REG_25", "Cerrar");
+define("L_REG_30", "Nombre");
+define("L_REG_31", "Apellido");
+define("L_REG_32", "WEB");
+define("L_REG_33", "mostrar pblicamente su e-mail");
+define("L_REG_34", "Editando datos del usuario");
+define("L_REG_35", "Administracin");
+define("L_REG_36", "idiomas posibles");
+define("L_REG_37", "Campos con un <span class=\"error\">*</span> son obligatorios.");
+define("L_REG_39", "La sala en la que se encontraba ha sido borrada por el administrador.");
+define("L_REG_45", "Gnero");
+define("L_REG_46", "Masculino");
+define("L_REG_47", "Femenino");
+
+// e-mail validation stuff
+define("L_EMAIL_VAL_1", "Sus datos para entrar en el chat");
+define("L_EMAIL_VAL_2", "Bienvenido/a a nuestro servidor de chat.");
+define("L_EMAIL_VAL_Err", "Error interno, contacte con el administrador en: <a href=\"mailto:%s\">%s</a>.");
+define("L_EMAIL_VAL_Done", "Su contrasea ha sido enviada a la direccin de<BR>e-mail.");
+
+// admin stuff
+define("L_ADM_1", "%s no es un moderador de esta sala.");
+define("L_ADM_2", "Usted no es un usuario registrado.");
+
+// error messages
+define("L_ERR_USR_1", "Este nombre de usuario ya est siendo utilizado. Elija otro, por favor.");
+define("L_ERR_USR_2", "Usted debe elegir un nombre de usuario.");
+define("L_ERR_USR_3", "Este nombre de usuario est registrado. Escriba su contrasea o elija otro nombre de usuario.");
+define("L_ERR_USR_4", "Usted ha introducido incorrectamente su contrasea.");
+define("L_ERR_USR_5", "Usted debe introducir su nombre de usuario.");
+define("L_ERR_USR_6", "Usted debe introducir su contrasea.");
+define("L_ERR_USR_7", "Usted debe introducir su e-mail.");
+define("L_ERR_USR_8", "Usted debe introducir una direccin correcta de e-mail.");
+define("L_ERR_USR_9", "Este nombre de usuario est en uso.");
+define("L_ERR_USR_10", "Nombre de usuario o contrasea incorrecta.");
+define("L_ERR_USR_11", "Usted debe ser administrador.");
+define("L_ERR_USR_12", "Usted es el administrador, por lo tanto no puede ser eliminado.");
+define("L_ERR_USR_13", "Para crear su propia sala, usted debe estar registrado.");
+define("L_ERR_USR_14", "Usted debe estar registrado antes de chatear.");
+define("L_ERR_USR_15", "Usted debe escribir su nombre completo.");
+define("L_ERR_USR_16", "El nombre de usuario no puede contener espacios, comas o barras (\\).");
+define("L_ERR_USR_17", "Esta sala no existe, y usted no est habilitado para crear una.");
+define("L_ERR_USR_18", "Su nombre de usuario est deshabilitado.");
+define("L_ERR_USR_19", "Usted no puede estar en ms de una sala al mismo tiempo.");
+define("L_ERR_USR_20", "Usted ha sido desautorizado a entrar o a esta sala o al chat.");
+define("L_ERR_ROM_1", "Los nombres de las salas no pueden contener comas o barras (\\).");
+define("L_ERR_ROM_2", "Palabra desautorizada en el nombre de la sala que usted quiere crear.");
+define("L_ERR_ROM_3", "Esta sala ya existe como sala pblica.");
+define("L_ERR_ROM_4", "Nombre de sala invlido.");
+
+// users frame or popup
+define("L_EXIT", "Salir");
+define("L_DETACH", "Separar");
+define("L_EXPCOL_ALL", "Expander/Contraer todo");
+define("L_CONN_STATE", "Conexin establecida");
+define("L_CHAT", "Chat");
+define("L_USER", "usuario");
+define("L_USERS", "usuarios");
+define("L_NO_USER", "No hay usuarios");
+define("L_ROOM", "sala");
+define("L_ROOMS", "salas");
+define("L_EXPCOL", "Expander/Contraer la sala");
+define("L_BEEP", "Bip/no bip cuando entra un usuario ");
+define("L_PROFILE", "mostrar datos");
+define("L_NO_PROFILE", "No mostrar datos");
+
+// input frame
+define("L_HLP", "Ayuda");
+define("L_BAD_CMD", "Este no es un comando vlido!");
+define("L_ADMIN", "%s ya es el administrador!");
+define("L_IS_MODERATOR", "%s ya es el moderador!");
+define("L_NO_MODERATOR", "Slo un moderador de esta sala puede utilizar este comando.");
+define("L_MODERATOR", "%s es ahora un moderador de esta sala.");
+define("L_NONEXIST_USER", "El usuario %s no est en esta sala.");
+define("L_NONREG_USER", "El usuario %s no est registrado.");
+define("L_NONREG_USER_IP", "Su direccin IP es: %s.");
+define("L_NO_KICKED", "El usuario %s es un moderador o el administrador y no puede ser expulsado.");
+define("L_KICKED", "El usuario %s ha sido expulsado satisfactoriamente.");
+define("L_NO_BANISHED", "El usuario %s es un moderador o administrador y no puede ser desautorizado.");
+define("L_BANISHED", "El usuario %s ha sido desautorizado.");
+define("L_SVR_TIME", "Hora del servidor: ");
+define("L_NO_SAVE", "No hay mensajes para guardar!");
+define("L_NO_ADMIN", "Solamente el administrador puede utilizar este comando.");
+define("L_ANNOUNCE", "ANUNCIO");
+define("L_INVITE", "%s le pide que entre a la sala <a href=\"#\" onClick=\"window.parent.runCmd('%s','%s')\">%s</a>.");
+define("L_INVITE_REG", " Usted debe estar registrado para entrar en esta sala.");
+define("L_INVITE_DONE", "Su invitacin ha sido enviada a %s.");
+define("L_OK", "Enviar");
+
+// help popup
+define("L_HELP_TIT_1", "Caritas");
+define("L_HELP_TIT_2", "Formato de texto para mensajes");
+define("L_HELP_FMT_1", "Usted puede poner negritas, itlicas o texto subrayado en mensajes utilizando &lt;B&gt; &lt;/B&gt;, &lt;I&gt; &lt;/I&gt; o &lt;U&gt; &lt;/U&gt; tags.<BR>Por ejemplo, &lt;B&gt;este texto&lt;/B&gt; producir <B>este texto</B>.");
+define("L_HELP_FMT_2", "Para crear una liga (para e-mail o URL) en su mensaje, simplemente escriba la correspondiente direccin sin etiquetas HTML. La liga ser creada automticamente.");
+define("L_HELP_TIT_3", "Comandos");
+define("L_HELP_USR", "usuario");
+define("L_HELP_MSG", "mensaje");
+define("L_HELP_ROOM", "sala");
+define("L_HELP_CMD_0", "Las llaves {} indican que se debe escribir un parmetro. Los corchetes [] que es opcional.");
+define("L_HELP_CMD_1a", "Definir el nmero de mensajes a mostrar. El valor mnimo y por defecto es 5.");
+define("L_HELP_CMD_1b", "Recarga y muestra los n ltimos mensajes. El mnimo, y por defecto, son 5.");
+define("L_HELP_CMD_2a", "Tiempo de actualizacin de la lista de mensajes (en segundos).<BR>Si n no est especificado o es menor que 3, alterna entre no producir ninguna actualizacin de la pantalla o actualizarla cada 10 segundos.");
+define("L_HELP_CMD_2b", "Tiempo de actualizacin de la lista de mensajes y la lista de usuarios (en segundos).<BR>Si n no est especificado o es menor que 3, alterna entre no producir ninguna actualizacin de la pantalla o actualizarla cada 10 segundos.");
+define("L_HELP_CMD_3", "Invierte el orden de aparicin de los mensajes.");
+define("L_HELP_CMD_4", "Entra en otra sala, creando una si no existe, siempre que usted est habilitado para hacerlo.<BR>n igual 0 para que la sala sea privada, 1 para pblica. Por defecto es siempre 1.");
+define("L_HELP_CMD_5", "Deja el chat despus de mostrar un mensaje opcional.");
+define("L_HELP_CMD_6", "Evita mostrar mensajes de un usuario, si se especifica su nombre.<BR>Desactiva la opcin de ignorar a un usuario si se escribe un guin (-) y su nombre.<BR>Si no se le pasa ningn parmetro, este comando abre una ventana mostrando a todos los usuarios ignorados.");
+define("L_HELP_CMD_7", "Recupera el texto previo escrito (comando o mensaje).");
+define("L_HELP_CMD_8", "Muestra/Oculta la hora antes de cada mensaje.");
+define("L_HELP_CMD_9", "Expulsa a un usuario de la sala. Este comando slo puede ser utilizado por el moderador.");
+define("L_HELP_CMD_10", "Enva un mensaje privado a un usuario especfico (otros usuarios no pueden verlo).");
+define("L_HELP_CMD_11", "Muestra informacin acerca de un usuario especfico.");
+define("L_HELP_CMD_12", "Abre la ventana para editar los datos del usuario");
+define("L_HELP_CMD_13", "Notifica cada vez que un usuario entra/sale de la sala actual.");
+define("L_HELP_CMD_14", "Permite al administrador o moderador(es) de la sala actual promover a otro usuario registrado a moderador de esa misma sala.");
+define("L_HELP_CMD_15", "Limpia el area de mensajes del chat y muestra solamente los ltimos 5.");
+define("L_HELP_CMD_16", "Guarda los ltimos n mensajes (las notificaciones son excludas) en un archivo HTML. Si n no est especificado, todos los mensajes sern guardados.");
+define("L_HELP_CMD_17", "Permite al administrador enviar un anuncio a todos los usuarios en todas las salas.");
+define("L_HELP_CMD_18", "Invita a un usuario que est chateando a unirse a su sala.");
+define("L_HELP_CMD_19", "Permite al(los) moderador(es) de una sala o al administrador a \"desautorizar\" un usuario de una sala por un tiempo determinado definido por el administrador.<BR>Este ltimo, puede desautorizar a un usuario de una sala diferente a la que l se encuentra. Puede incluso utilizar la opcin '<B>&nbsp;*&nbsp;</B>' para desautorizar al usuario \"para siempre\" con lo que el usuario es eliminado de todo el chat.");
+define("L_HELP_CMD_20", "Describe lo que est usted haciendo, sin referencia de usted mismo.");
+
+// messages frame
+define("L_NO_MSG", "No hay mensajes ...");
+define("L_TODAY_DWN", "Los mensajes que han sido enviados hoy comienzan abajo");
+define("L_TODAY_UP", "Los mensajes que han sido enviados hoy comienzan arriba");
+
+// message colors
+$TextColors = array(	"Negro" => "#000000",
+				"Rojo" => "#FF0000",
+				"Verde" => "#009900",
+				"Azul" => "#0000FF",
+				"Morado" => "#9900FF",
+				"Oscuro rojo" => "#990000",
+				"Oscuro verde" => "#006600",
+				"Oscuro azul" => "#000099",
+				"Marrn" => "#996633",
+				"Azul agua" => "#006699",
+				"Naranja" => "#FF6600");
+
+// ignored popup
+define("L_IGNOR_TIT", "Ignorado");
+define("L_IGNOR_NON", "Usuario no ignorado");
+
+// whois popup
+define("L_WHOIS_ADMIN", "Administrador");
+define("L_WHOIS_MODER", "Moderador");
+define("L_WHOIS_USER", "Usuario");
+
+// Notification messages of user entrance/exit
+define("L_ENTER_ROM", "%s entr en esta sala");
+define("L_EXIT_ROM", "%s sali de esta sala");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/spanish/localized.tutorial.php 0.15.0/chat/localization/spanish/localized.tutorial.php
--- 0.14.5/chat/localization/spanish/localized.tutorial.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/spanish/localized.tutorial.php	2004-04-01 03:07:43.000000000 -0600
@@ -0,0 +1,624 @@
+<?php
+// File: spanish.tutorial.php
+// Spanish translation by Josep Romn (josep.roman@zuerich-see.ch)
+//                     && Len Del Ro (leon@webmaster.com.mx)
+// Date: 3th June 2001
+
+// Get the names and values for vars sent by the script that called this one
+if (isset($HTTP_GET_VARS))
+{
+	while(list($name,$value) = each($HTTP_GET_VARS))
+	{
+		$$name = $value;
+	};
+};
+?>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+
+<HEAD>
+<TITLE>Tutorial en Espaol para <?php echo(APP_NAME." - ".APP_VERSION); ?></TITLE>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
+<STYLE>
+A.topLink
+{
+	text-decoration: underline;
+	color: #0000C0;
+}
+
+A.topLink:hover, A.topLink:active
+{
+	color: #FF9900;
+	text-decoration: none;
+	font-weight: 800;
+}
+
+.redText
+{
+	font-weight: 800;
+	color: #FF0000;
+}
+</STYLE>
+</HEAD>
+
+<BODY BGCOLOR="#CCCCFF">
+
+<P><A NAME="top"></P>
+<TABLE BORDER="5" CELLPADDING="5">
+<TR>
+	<TD><FONT SIZE="+2">Contenido de este Tutorial</FONT></TD>
+</TR>
+</TABLE><BR>
+
+<P CLASS="redText">
+Aviso: Los usuarios de Netscape tienen que definir su lenguaje por defecto o cada caracter en los mensajes sern sustituidos por un '?'.<BR>
+Este cambio se puede hacer desde la opcin: Ver/Juego de Caracteres/su idioma, Auto-Detectar y luego Ver/Juego de Caracteres/Por defecto.
+</P>
+
+<?php
+if (C_MULTI_LANG == "1") 
+{
+	?>
+	<A HREF="#language" CLASS="topLink">Seleccionar el idioma</A><BR>
+	<?php
+}
+?>
+<A HREF="#login" CLASS="topLink">Entrar en el Chat</A><BR>
+<A HREF="#register" CLASS="topLink">Registrarse</A><BR>
+<A HREF="#modProfile" CLASS="topLink">Modificar<?php if (C_SHOW_DEL_PROF == "1") echo("/borrar"); ?> sus datos</A><BR>
+<?php
+if (C_VERSION == "2") 
+{
+	?>
+	<A HREF="#create_room" CLASS="topLink">Crear una sala de chat</A><BR>
+	<?php
+};
+if ($Ver == "H") 
+{
+	?>
+	<A HREF="#connection_state" CLASS="topLink">Qu indica el smbolo de estado de la conexin</A><BR>
+	<?php
+};
+?>
+<A HREF="#sending" CLASS="topLink">Enviar un Mensaje</A><BR>
+<A HREF="#usuarios_list" CLASS="topLink">Elementos de la lista de usuarios</A><BR>
+<A HREF="#exit" CLASS="topLink">Abandonar la sala de chat</A><BR>
+<A HREF="#usuarios_popup" CLASS="topLink">Saber quin est chateando sin entrar en el chat</A><BR>
+<P>
+<A HREF="#customize" CLASS="topLink">Personalizar la vista del chat</A><BR>
+<P>
+<A HREF="#comandos" CLASS="topLink">Opciones y comandos:</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#help" CLASS="topLink">Comando Ayuda (Help)</A><BR>
+<?php
+if (C_USE_SMILIES == "1")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#smilies" CLASS="topLink">Caritas grficas</A><BR>
+	<?php
+};
+if (C_HTML_TAGS_KEEP != "none")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#text" CLASS="topLink">Dando formato al texto</A><BR>
+	<?php
+};
+?>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#invite" CLASS="topLink">Invitar a un usuario a entrar en su sala de chat</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#changeroom" CLASS="topLink">Cambiar de una sala de chat a otra</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#private" CLASS="topLink">Mensajes Privados</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#actions" CLASS="topLink">Acciones</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#ignore" CLASS="topLink">Ignorar a otros usuarios</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#whois" CLASS="topLink">Obtener Informacin Pblica de otros usuarios</A><BR>
+<?php
+if (C_SAVE != "0")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#save" CLASS="topLink">Guardar mensajes</A><BR>
+	<?php
+};
+?>
+<P>
+<A HREF="#moderador" CLASS="topLink">Comandos especiales para moderadores y/o el administrador:</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#announce" CLASS="topLink">Enviar un anuncio</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#kick" CLASS="topLink">Expulsar un usuario</A><BR>
+<?php
+if (C_BANISH != "0")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#banish" CLASS="topLink">Desautorizar a un usuario</A><BR>
+	<?php
+};
+?>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#promote" CLASS="topLink">Convertir un usuario en moderador</A><BR>
+<P>
+<HR>
+
+
+<?php
+if (C_MULTI_LANG == "1") 
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="language"><B>Seleccionar el idioma:</B></A></FONT>
+	<P>
+	Puede seleccionar uno de los idiomas al cual <?php echo(APP_NAME); ?> haya sido traducido haciendo un click en una de las banderas de la pgina inicial. En el ejemplo siguiente, un usuario selecciona el idioma francs:
+	<P ALIGN="center">
+	<IMG SRC="images/tutorials/flags.gif" HEIGHT="44" WIDTH="424" ALT="Banderas para seleccionar el idioma">
+	<BR><P ALIGN="right"><A HREF="#top">Volver al inicio</A></P>
+	<HR>
+	<?php
+}
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="login"><B>Entrar en el chat:</B></A></FONT>
+<P>
+Si ya est registrado, simplemente escriba su nombre de usuario y su contrasea. Luego, seleccione la sala de chat a la que quiera acceder y pulse el botn de Chatear!.<BR>
+<?php
+if (C_REQUIRE_REGISTER == "1")
+{
+	?>
+	<P>
+	Si no est registrado, lo primero que debe hacer es <A HREF="#register">registrarse</A>.
+	<?php
+}
+else
+{
+	?>
+	<P>
+    Si no est registrado, puede <A HREF="#register">registrarse</A> primero o simplemente entrar con un nombre cualquiera a una sala. De esta forma, su nombre no se reservar y cualquier otro usuario podr usarlo ms tarde, una vez que usted haya abandonado el chat.
+	<?php
+}
+?>
+<BR><P ALIGN="right"><A HREF="#top">Volver al inicio</A></P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="register"><B>Para Registrarse:</B></A></FONT> 
+<P>
+Si no se ha registrado todava <?php if (C_REQUIRE_REGISTER == "0") echo("y desea hacerlo"); ?>, use la opcin de registrarse. Aparecer una pequea ventana para escribir sus datos.
+<P>	
+<UL>
+	<LI>Primero, escriba un nombre de usuario <?php if (!C_EMAIL_PASWD) echo(" y la contrasea"); ?> que quiera. El nombre de usuario que elija (y que no est ya registrado) ser el nombre que aparecer en el chat. No puede contener comas ni barras invertidas (\).
+<?php if (C_NO_SWEAR == "1") echo("Tampoco puede contener palabras obscenas o malsonantes."); ?>
+	<LI>Despues, escriba su nombre, apellidos y direccin de correo electrnico. Esta informacin es obligatoria para poder registrarse. Es opcional indicar el gnero.
+	<LI>Si tiene una pgina web, tambin la puede escribir.
+	<LI>El campo del idioma puede ayudar en discusiones en el chat. Otros usuarios sabrn qu idiomas entiende usted.
+	<LI>Si desea que su direccin de correo electrnico sea visible para otros usuarios del chat, active la casilla que dice "mostrar mi e-mail como informacin pblica". En caso contrario, deje esa casilla sin activar.
+	<LI>Finalmente, pulse el botn de Registrarse y su cuenta ser creada (pulsando el botn de Cerrar se anular la creacin de su cuenta).
+</UL>
+<P>
+<A NAME="modProfile"></A>Por supuesto, los usuarios registrados pueden cambiar sus datos <?php if (C_SHOW_DEL_PROF == "1") echo(" y/o borrarlos"); ?> pulsando en <?php echo((C_SHOW_DEL_PROF == "0" ? "la liga apropiada" : "las ligas apropiadas")); ?>.<BR>
+<BR><P ALIGN="right"><A HREF="#top">Volver al inicio</A></P>
+<P>
+<HR>
+
+<?php
+if (C_VERSION == "2") 
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="create_room"><B>Para crear una sala:</B></A></FONT> 
+	<P>
+	Los usuarios registrados pueden crear nuevas salas. Las salas privadas slo pueden ser accedidas por los usuarios que conocen sus nombres. Estos nunca son mostrados, salvo para los usuarios que ya se encuentran dentro de ellas.<BR>
+	<P>
+	El nombre de una sala no puede contener comas ni la barra invertida (\).<?php if (C_NO_SWEAR == "1") echo(" Tampoco puede contener palabras obscenas o malsonantes."); ?>
+	<BR><P ALIGN="right"><A HREF="#top">Volver al inicio</A></P>
+	<P>
+	<HR>
+	<?php
+};
+if ($Ver == "H")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="connection_state"><B>Qu indica el smbolo de estado de la conexin:</B></A></FONT> 
+	<P>
+	Un smbolo circular, representando el estado de su conexin, se muestra en la parte superior derecha de la pantalla. Puede tener tres formas :
+	<P>	
+	<UL>
+		<LI><IMG SRC="images/connectOff.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="No hay conexin"> cuando no hay conexin;
+		<LI><IMG SRC="images/connectOn.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Conectando"> cuando se est efectuando una conexin;
+		<LI><IMG SRC="images/connectError.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Fallo de conexin"> cuando una conexin ha fallado.
+	</UL>
+	<P>
+	En el tercer caso, haciendo un click en el botn rojo re-intentar nuevamente la conexin.
+	<BR><P ALIGN="right"><A HREF="#top">Volver al inicio</A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="sending"><B>Enviar mensajes:</B></A></FONT> 
+<P>
+Para enviar un mensaje a la sala de chat, escriba el texto en el recuadro situado en la parte inferior izquierda de la pantalla y luego pulse la tecla Enter/Return para enviarlo. Los mensajes de los usuarios aparecen y se desplazan por la ventana de chat.<BR>
+<?php if (C_NO_SWEAR == "1") echo("Las palabras obscenas o malsonantes son ignoradas en los mensajes."); ?>
+<P>
+El color del texto de sus mensajes puede ser cambiado haciendo un click en uno de los colores de la lista de colores situada en la parte derecha inferior.
+<BR><P ALIGN="right"><A HREF="#top">Volver al inicio</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="usuarios_list"><B>Elementos de lista de usuarios (que aparece en la pantalla principal del chat):</B></A></FONT> 
+<P>
+<OL>
+La lista de usuarios tiene definidas dos reglas bsicas:<BR>
+	<LI>Un pequeo icono muestra el gnero del usuario, si este est registrado (haciendo un click en el icono mostrar la <A HREF="#whois">ventana de informacin</A> de este usuario). Los usuarios no registrados no tienen nada delante de su nombre.<BR>
+	<LI>El nombre del administrador o del moderador se muestra en itlica.
+</OL>
+<P><I>Por ejemplo</I>, de la siguiente lista, se puede deducir que: 
+<TABLE BORDER=0 CELLSPACING=10>
+<TR>
+	<TD>
+		<IMG SRC="images/tutorials/usersList.gif" WIDTH=128 HEIGHT=145 BORDER=0 ALT="lista de usuarios">
+	</TD>
+	<TD>
+	<UL>
+		<LI>Nicolas es el administrador o uno de los moderadores del la sala phpMyChat (su nombre se despliega en cursiva).<BR><BR>
+		<LI>alien (cuyo gnero se desconoce), Jezek2 y Caridad son usuarios registrados sin ningn tipo de privilegio especial en la sala phpMyChat;<BR><BR>
+		<LI>lolo es un usuario no registrado.
+	</UL>
+	</TD>
+</TR>
+</TABLE>
+<BR><P ALIGN="right"><A HREF="#top">Volver al inicio</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="exit"><B>Salir de la sala de chat:</B></A></FONT>
+<P>
+Para salir del chat, hay que hacer un click en "Salir".<BR>Otra manera de salir, es escribiendo uno de los siguientes comandos:<BR>
+/exit<BR>
+/bye<BR>
+/quit<BR>
+Estos comandos pueden ser completados con un mensaje para ser enviado antes de salir.<BR>
+<I>Por ejemplo :</I> /quit Hasta pronto!
+<P>
+enviara el mensaje "Hasta pronto!" en la ventana de chat y luego saldra.
+
+<BR><P ALIGN="right"><A HREF="#top">Volver al inicio</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="usuarios_popup"><B>Saber quin est chateando sin entrar en el chat:</B></A></FONT> 
+<P>
+Haciendo un click en la liga que muestra el nmero de usuarios conectados en la pgina de inicio, o, desde dentro de la sala de chat, haciendo un click en la imagen <IMG SRC="images/popup.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Ventana de usuarios"> de la parte superior derecha de la pantalla.<BR>En ambos casos, se abre una ventana separada que muestra los usuarios conectados y en qu salas se encuentran, casi en tiempo real.<BR>
+El ttulo de esta ventana contiene el nombre de los usuarios, sin son menos de 3. Si son ms, el nmero total de usuarios.
+<P>
+Haciendo un click en el icono <IMG SRC="images/sound.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Bips"> de esa ventana, activa/desactiva un bip cada vez que un nuevo usuario entra en el chat.
+<BR><P ALIGN="right"><A HREF="#top">Volver al inicio</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="customize"><B>Personalizando la vista del chat:</B></A></FONT>
+<P>
+Existen varias formas de personalizar la vista del chat. Para cambiar las diferentes opciones, escriba el comando apropiado desde la ventana de escritura del texto y pulse la tecla Enter/Return.
+<P>
+<UL>
+	<?php
+	if ($Ver == "H")
+	{
+		?>
+		<LI>El comando <B>Clear</B> permite borrar la pantalla principal del chat y mostrar los ltimos 5 mensajes enviados.<BR>Escriba "/clear" sin las comillas.
+		<P>
+		<?php
+	}
+	else
+	{
+		?>
+		<LI>El comando <B>Order</B> permite variar entre que los nuevos mensajes aparezcan al principio de la pantalla del chat o al final.<BR>Escriba "/order" sin las comillas.
+		<P>
+		<?php
+	};
+	?>
+	<LI>El comando <B>Notify</B> permite activar/desactivar el aviso en pantalla cuando un usuario entra o abandona la sala del chat. Por defecto, est opcin est <?php echo(C_NOTIFY ? "activada" : "desactivada"); ?> y los avisos <?php echo(C_NOTIFY ? "se" : "no se"); ?> ven.<BR>Escriba "/notify" sin las comillas.
+	<P>
+	<LI>El comando <B>Timestamp</B> permite activar/desactivar el ver en la pantalla de chat la hora en que se enva cada mensaje y ver la hora que tiene el servidor de chat. Esta se muestra en la parte izquierda de la barra inferior del navegador. Por defecto est opcin est <?php echo(C_SHOW_TIMESTAMP ? "activada" : "desactivada"); ?>.<BR>Escriba "/timestamp" sin las comillas.
+	<P>
+	<LI>El comando <B>Refresh </B> permite ajustar el intervalo de tiempo entre actualizaciones, en segundos, de la pantalla del chat, mostrando los nuevos mensajes. El valor por defecto es de <?php echo(C_MSG_REFRESH); ?> segundos. Para cambiar dicho valor, escriba el comando "/refresh n" sin las comillas, donde n es el tiempo en segundos del intervalo entre actualizaciones de la pantalla.
+	<P>
+	<I>Por ejemplo:</I> /refresh 5
+	<P>
+	cambiar el valor a 5 segundos.<BR><BR> *ATENCION*, si n es menor que 3, el intervalo no cambia, sino que no habr actualizacin de la pantalla (til para poder leer los mensajes de la pantalla, en caso de que sean muchos, sin ser molestado por la actualizacin de la pantalla)
+	<P>
+	<?php
+	if ($Ver == "L")
+	{
+		?>
+		<LI>El comando <B>Show </B> permite ajustar el nmero de mensajes visibles simultneamente en la pantalla. Para cambiar el valor por defecto, escriba "/show n" sin las comillas, donde n es el nmero de mensajes a visualizar.
+		<P>
+		<I>Por ejemplo:</I> /show 50
+		<P>
+		visualizara los 50 mensajes ms recientes en su pantalla. Si todos los mensajes no pueden ser visualizados en la pantalla, aparecer una barra de desplazamiento en la parte derecha de la pantalla de chat.</UL>
+		<?php
+	}
+	else
+	{
+		?>
+		<LI>Los comandos <B>Show y Last</B> permiten limpiar la pantalla y mostrar los ltimos <I>n</I> mensajes enviados. Escriba "/show n" o "/last n" sin las comillas, donde n es el nmero de mensajes a visualizar.
+		<P>
+		<I>Por ejemplo:</I> /show 50 o /last 50
+		<P>
+		borrara la pantalla y mostrara los 50 mensajes ms recientes. Si todos los mensajes no pueden ser visualizados en la pantalla, aparecer una barra de desplazamiento en la parte derecha de la pantalla de chat.</UL>
+		<?php
+	};
+	?>
+	<BR><P ALIGN="right"><A HREF="#top">Volver al inicio</A></P>
+	<P>
+</UL>
+<HR>
+
+
+<P>
+<FONT SIZE="+2"><A NAME="comandos"><B><U>Opciones y Comandos</U></B></A></FONT> 
+<P>
+
+<FONT SIZE="+1"><A NAME="help"><B>Comando Help:</B></A></FONT>
+<P>
+Dentro de la sala de chat, puede consultar la ayuda mediante un click en la imagen <IMG SRC="images/helpOff.gif" WIDTH=15 HEIGHT=15 BORDER=0 ALT="?"> que se encuentra a la izquierda del recuadro de escribir texto. Tambin puede escribir el comando <B>"/help" o "/?"</B> en el rea de escribir texto.
+<BR><P ALIGN="right"><A HREF="#top">Volver al inicio</A></P>
+<P>
+<P>
+<HR>
+
+<?php
+if (C_USE_SMILIES == "1")
+{
+	include("./lib/smilies.lib.php");
+	$Nb = count($SmiliesTbl);
+	$ResultTbl = Array();
+	DisplaySmilies($ResultTbl,$SmiliesTbl,$Nb,"tutorial");
+	unset($SmiliesTbl);
+	?>
+	<FONT SIZE="+1"><A NAME="smilies"><B>Caritas Sonrientes (Smilies):</B></A></FONT>
+	<P>Puede incluir caritas sonrientes grficas en sus mensajes. Consulte la siguiente tabla para saber qu tiene que escribir para que aparezcan las siguientes caritas:
+	<P ALIGN="center">
+	<TABLE BORDER=0 CELLPADDING=3 CELLSPACING=5>
+	<?php
+	$i = "0";
+	$Nb = count($ResultTbl);
+	while($i < $Nb)
+	{
+		if ($i > 0) echo("\t");
+		echo("<TR VALIGN=\"BOTTOM\">\n");
+		echo("$ResultTbl[$i]");
+		echo("\t</TR>\n\t<TR>\n");
+		$i++;
+		echo("$ResultTbl[$i]");
+		echo("\t</TR>\n");
+		$i++;
+	};
+	unset($ResultTbl);
+	?>
+	</TABLE>
+	<P>
+	<I>Por ejemplo</I>, si envia el texto "Hola Carlos :)" sin las comillas, aparecera el mensaje Hola Carlos <IMG SRC="images/smilies/smile1.gif" WIDTH=15 HEIGHT=15 ALT=":)"> en el rea de chat.
+	<BR><P ALIGN="right"><A HREF="#top">Volver al inicio</A></P>
+	<P>
+	<HR>
+	<?php
+};
+
+if (C_HTML_TAGS_KEEP != "none")
+{
+	?>
+	<FONT SIZE="+1"><A NAME="text"><B>Dando formato al texto:</B></A></FONT>
+	<P>
+	El texto se puede escribir en negrita, itlica o subrayado. Para ello, el texto a formatear hay que escribirlo dentro de &LT;B&GT; &LT;/B&GT, &LT;I&GT; &LT;/I&GT; o &LT;U&GT; &LT;/U&GT respectivamente (que son etiquetas HTML).
+	<P>
+	<I>Por ejemplo</I>, &LT;B&GT;este texto&LT;/B&GT; producira <B>este texto</B>.
+	<P>
+	Para crear una liga o hipervnculo para una direccin de e-mail o una URL, escriba la direccin (sin ninguna etiqueta HTML). La liga se crear automticamente.
+	<BR><P ALIGN="right"><A HREF="#top">Volver al inicio</A></P>
+	<P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="invite"><B>Invitar a un usuario a entrar a su sala de chat:</B></A></FONT>
+<P>
+Puede usar el comando <B>invite</B> para invitar a un usuario a reunirse en la sala en que usted se encuentra.
+<P>
+<I>Por ejemplo:</I> /invite Carlos 
+<P>
+le enviara un mensaje privado a Carlos sugirindole de unirse a usted en la sala en la que se encuentra. Este mensaje contiene el nombre de la sala y adems, aparece como una liga.
+<P>
+Puede poner ms de un usuario en su invitacin a la vez (por ejemplo: "/invite Carlos,Helen,Alf"). Los nombres tienen que ir separados por comas y sin espacios entre ellos.
+<BR><P ALIGN="right"><A HREF="#top">Volver al inicio</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="changeroom"><B>Cambiar de sala:</B></A></FONT>
+<P>
+La lista de la parte derecha de la pantalla muestra la lista de todas las salas chat y los usuarios que hay actualmente en cada una. Para salir de la sala en la que est e irse a otra, simplemente hay que hacer un click en el nombre de la sala a la que se quiere ir. Puede cambiar de sala escribiendo el comando <B>"/join #nombre_de_sala"</B> sin las comillas.
+<P>
+<I>Por ejemplo:</I> /join #MiSala 
+<P>
+le trasladara a la sala MiSala.
+<?php
+if (C_VERSION == "2")
+{
+	echo(C_REQUIRE_REGISTER == "0" ? "<P>Si usted es un usuario registrado, " : "<BR><P>Usted ");
+	?>
+	 puede crear una sala con este comando. Tiene que especificar su tipo: 0 para privada y 1 para pblica (que es el valor por defecto).
+	<P>
+	<I>Por ejemplo:</I> /join 0 #MiSala 
+	<P>
+	creara una nueva sala privada (siempre que no existiera ya una pblica con ese mismo nombre) de nombre MiSala y le llevara a ella.
+	<P>
+	El nombre de la sala no puede contener comas ni la barra invertida (\).<?php if (C_NO_SWEAR == "1") echo(" Tampoco puede contener palabras obscenas o malsonantes."); ?>
+	<?php
+}
+?>
+<BR><P ALIGN="right"><A HREF="#top">Volver al inicio</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B>Cambiar sus propios datos desde dentro del chat:</B></FONT>
+<P>
+El comando <B>Profile</B> crea una ventana en la cual puede editar sus datos personales, a excepcin de su alias y la contrasea (para cambiarlos tiene que usar la liga existente en la pgina del inicio).<BR>Escriba /profile
+<BR><P ALIGN="right"><A HREF="#top">Volver al inicio</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B>Recuperar el ltimo mensaje o comando que ha enviado:</B></FONT>
+<P>
+El comando <B>!</B> recupera el ltimo mensaje o comando que ha enviado.<BR>Escriba /!
+<BR><P ALIGN="right"><A HREF="#top">Volver al inicio</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B>Responder a un usuario especfico:</B></FONT>
+<P>
+Haciendo un click en el nombre de un usuario de la lista que aparece en la parte derecha de la pantalla, muestra su "nombre>" en la parte donde se escribe el texto. Esto sirve para enviar pblicamente un mensaje a ese usuario, quizs para responder algo que l/ella ha escrito antes. Esto no es para enviar mensajes privados.
+<BR><P ALIGN="right"><A HREF="#top">Volver al inicio</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="private"><B>Mensajes privados:</B></A></FONT>
+<P>
+Para enviar un mensaje privado a un usuario que se encuentra en su misma sala de chat, utilice el comando <B>"/msg nombre_usuario" o "/to nombre_usuario mensaje"</B> sin las comillas.
+<P>
+<I>Por ejemplo, supongamos que Carlos es un usuario:</I> /msg Carlos Hola, cmo ests?
+<P>
+El mensaje le aparecera a Carlos y a usted, pero no a los dems usuarios que haya en la sala en ese momento.
+<P>
+Otra posibilidad es haciendo un click en el nombre del usuario de un mensaje existente en la ventana del chat. Esto crea automticamente el comando y slo hay que escribir el mensaje al final del mismo.
+<BR><P ALIGN="right"><A HREF="#top">Volver al inicio</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="actions"><B>Acciones:</B></A></FONT>
+<P>
+Para describir que est usted haciendo puede usar el comando <B>"/me accin"</B> sin las comillas.
+<P>
+<I>Por ejemplo:</I> Si Carlos enva el mensaje "/me estoy bebiendo un caf" el mensaje que se mostrara a los usuarios sera "<B>* Carlos</B> estoy bebiendo un caf".
+<BR><P ALIGN="right"><A HREF="#top">Volver al inicio</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="ignore"><B>Ignorar otros usuarios:</B></A></FONT>
+<P>
+Para ignorar los mensajes de un usuario, escriba el comando <B>"/ignore nombre_usuario"</B> sin las comillas.
+<P>
+<I>Por ejemplo:</I> /ignore Carlos
+<P>
+A partir de ese comando, los mensajes que escriba Carlos no se mostrarn en su pantalla de chat.
+<P>
+Para saber de qu usuarios se ignoran los mensajes, escriba el comando <B>"/ignore"</B> sin las comillas. 
+<P>
+Para anular el comando y volver a ver los mensajes de un usuario, escriba el comando <B>"/ignore - nombre_usuario"</B> sin las comillas. El "-" es un guin. <P> 
+<P>
+<I>Por ejemplo:</I> /ignore - Carlos 
+<P>
+A partir de ese comando, todos los mensajes enviados por Carlos sern mostrados en su pantalla, incluyendo los que haya escrito antes de este comando.
+Si no especifica un nombre de usuario despus del guin, se volvern a ver los mensajes de todos los usuarios.
+<P>
+Con el comando ignore se puede poner ms de un usuario a la vez (por ejemplo "/ignore Carlos,Elena,Mario" o "/ignore - Carlos,Elena"). Los nombres deben ir separados por una coma (,) sin espacios.
+<BR><P ALIGN="right"><A HREF="#top">Volver al inicio</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="whois"><B>Obtener informacin de otros Usuarios:</B></A></FONT>
+<P>
+Para ver informacin pblica de otro usuario, escriba el comando <B>"/whois nombre_usuario"</B> sin las comillas.
+<P>
+<I>Por ejemplo:</I> /whois Carlos
+<P>
+donde 'Carlos' es el nombre de usuario. Este comando creara una ventana donde se mostrara la informacin pblica de ese usuario.
+<BR><P ALIGN="right"><A HREF="#top">Volver al inicio</A></P>
+<P>
+<HR>
+
+<?php
+if (C_SAVE != "0")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="save"><B>Guardar mensajes:</B></A></FONT>
+	<P>
+	Para exportar mensajes (incluyendo los avisos) a un archivo local en formato HTML, escriba el comando <B>"/save n"</B> sin las comillas.
+	<P>
+	<I>Por ejemplo:</I> /save 5
+	<P>
+	donde '5' es el nmero de mensajes a guardar. Si el nmero no se especifica, todos los mensajes disponibles enviados a esa sala sern guardados.
+	<BR><P ALIGN="right"><A HREF="#top">Volver al inicio</A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+
+<P>
+<FONT SIZE="+2"><A NAME="moderador"><B><U>Comandos slo para el administrador y/o moderadores</U></B></A></FONT> 
+
+<P>
+<FONT SIZE="+1"><A NAME="announce"><B>Anunciar algo:</B></A></FONT>
+<P>
+El administrador puede anunciar algo a todos los usuarios que estn en el chat, independientemente de la sala en que se encuentren con el comando <B>announce </B>.
+<P>
+<I>Por ejemplo: /announce El chat estar esta noche cerrado por mantenimiento a partir de las 8.</I>
+<BR><P ALIGN="right"><A HREF="#top">Volver al inicio</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="kick"><B>Expulsar un usuario:</B></A></FONT>
+<P>
+Los moderadores pueden expulsar a un usuario y el administrador puede expulsar a un usuario o un moderador con el comando <B>kick</B>. Excepto para el administrador, el usuario a ser expulsado tiene que estar en la misma sala.
+<P>
+<I>Por ejemplo</I>, si Carlos es el nombre del usuario a expulsar:</I> /kick Carlos</I>
+<BR><P ALIGN="right"><A HREF="#top">Volver al inicio</A></P>
+<P>
+<HR>
+
+<?php
+if (C_BANISH != "0")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="banish"><B>Desterrar an usuario:</B></A></FONT>
+	<P>
+	Los moderadores pueden desautorizar a un usuario y el administrador puede desautorizar a un usuario o a un moderador con el comando <B>ban</B>.<BR>
+	El administrador puede desautorizar a un usuario de una sala diferente a la que l se encuentra. Puede incluso desautorizar a un usuario para siempre con el parmetro '<B>&nbsp;*&nbsp;</B>' que debe ser insertado del alias del usuario a ser desautorizado.
+	<P>
+	<I>Por ejemplo</I>, si Carlos es el nombre del usuario a desautorizar: <I>/ban Carlos</I> o <I>/ban * Carlos</I>
+	<BR><P ALIGN="right"><A HREF="#top">Volver al inicio</A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="promote"><B>Promover a un usuario a moderador:</B></A></FONT>
+<P>
+Los moderadores y el administrador pueden promover otro usuario a moderador con el comando <B>promote</B>.
+<P>
+<I>Por ejemplo</I>, si Carlos es el nombre del usuario a promover: <I>/promote Carlos</I>
+<P>
+Slo el administrador puede acceder a la accin contraria (convertir a un moderador en simple usuario) desde una pgina especial. No hay un comando para hacerlo.
+<BR><P ALIGN="right"><A HREF="#top">Volver al inicio</A></P>
+<P>
+
+
+</BODY>
+</HTML>
diff -ruN 0.14.5/chat/localization/spanish/regex.txt 0.15.0/chat/localization/spanish/regex.txt
--- 0.14.5/chat/localization/spanish/regex.txt	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/spanish/regex.txt	2004-04-01 03:07:43.000000000 -0600
@@ -0,0 +1 @@
+es([-_][[:alpha:]]{2})?|spanish
\ No newline at end of file
Binary files 0.14.5/chat/localization/swedish/flag.gif and 0.15.0/chat/localization/swedish/flag.gif differ
diff -ruN 0.14.5/chat/localization/swedish/localized.admin.php 0.15.0/chat/localization/swedish/localized.admin.php
--- 0.14.5/chat/localization/swedish/localized.admin.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/swedish/localized.admin.php	2004-04-01 03:07:43.000000000 -0600
@@ -0,0 +1,61 @@
+<?php
+// File : swedish.lang.php
+// Translation by Martin Edelius <martin.edelius@spirex.se>
+
+// extra header for charset
+$Charset = "iso-8859-1";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// Top frame
+define("A_MENU_0", "Administration for %s");
+define("A_MENU_1", "Registered users");
+define("A_MENU_2", "Banished users");
+define("A_MENU_3", "Clean rooms");
+define("A_MENU_4", "Send mails");
+
+// Frame for registered users
+define("A_SHEET1_1", "List of registered users and their permissions");
+define("A_SHEET1_2", "Anvndarnamn");
+define("A_SHEET1_3", "Rttigheter");
+define("A_SHEET1_4", "Modererade kanaler");
+define("A_SHEET1_5", "Modererade kanaler r separerade med komma (,) utan mellanslag.");
+define("A_SHEET1_6", "Ta bort markerade");
+define("A_SHEET1_7", "ndra");
+define("A_SHEET1_8", "There is no registered user except yourself.");
+define("A_SHEET1_9", "Banish checked profiles");
+define("A_SHEET1_10", "Now you have to move to the banished users sheet to refine your choices.");
+define("A_SHEET1_11", "Last connection");
+define("A_USER", "Anvndare");
+define("A_MODER", "Moderator");
+define("A_PAGE_CNT", "Page %s of %s");
+
+// Frame for banished users
+define("A_SHEET2_1", "List of banished users and concerned rooms");
+define("A_SHEET2_2", "IP");
+define("A_SHEET2_3", "Concerned rooms");
+define("A_SHEET2_4", "Until");
+define("A_SHEET2_5", "no end");
+define("A_SHEET2_6", "rooms are splitted by comma without spaces (,) if they are less than 4, else the '<B>&nbsp;*&nbsp;</B>' sign<BR>banish from all rooms.");
+define("A_SHEET2_7", "Remove banishment for checked user(s)");
+define("A_SHEET2_8", "There is no banished user.");
+
+// Frame for cleaning rooms
+define("A_SHEET3_1", "Lista ver existerande kanaler");
+define("A_SHEET3_2", "Clean a \"non-default\" room will also remove all moderator<BR>status for this room.");
+define("A_SHEET3_3", "Clean selected rooms");
+define("A_SHEET3_4", "There is no room to clean.");
+
+// Frame for sending mails
+define("A_SHEET4_0", "You haven't set required variables in the<BR>'chat/admin/mail4admin.php' script.");
+define("A_SHEET4_1", "Send e-mails");
+define("A_SHEET4_2", "To:");
+define("A_SHEET4_3", "Select all");
+define("A_SHEET4_4", "Subject:");
+define("A_SHEET4_5", "Messages:");
+define("A_SHEET4_6", "Start sending");
+define("A_SHEET4_7", "All e-mails have been sent.");
+define("A_SHEET4_8", "Internal error while sending the mails.");
+define("A_SHEET4_9", "Addresse(s), subject or message is missing!");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/swedish/localized.chat.php 0.15.0/chat/localization/swedish/localized.chat.php
--- 0.14.5/chat/localization/swedish/localized.chat.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/swedish/localized.chat.php	2004-04-01 03:07:43.000000000 -0600
@@ -0,0 +1,221 @@
+<?php
+// File : swedish.lang.php
+// Compiled by Martin Edelius <martin.edelius@spirex.se>
+
+// extra header for charset
+$Charset = "iso-8859-1";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// welcome page
+define("L_TUTORIAL", "Tutorial");
+
+define("L_WEL_1", "Meddelanden raderas efter");
+define("L_WEL_2", "timmar och anvndarnamn efter");
+define("L_WEL_3", "minuter ...");
+
+define("L_CUR_1", "Det r fr nrvarande");
+define("L_CUR_2", "i chatten.");
+define("L_CUR_3", "Anvndare fr nrvarande i kanalerna");
+define("L_CUR_4", "anvndare i privata kanaler");
+
+define("L_SET_1", "Vnligen vlj ...");
+define("L_SET_2", "ditt anvndarnamn");
+define("L_SET_3", "antal meddelanden att visa");
+define("L_SET_4", "tiden mellan uppdateringarna");
+define("L_SET_5", "Vlj en kanal ...");
+define("L_SET_6", "standardkanaler");
+define("L_SET_7", "Gr ditt val ...");
+define("L_SET_8", "publika kanaler skapade av anvndare");
+define("L_SET_9", "skapa din egen");
+define("L_SET_10", "publika");
+define("L_SET_11", "privata");
+define("L_SET_12", "kanal");
+define("L_SET_13", "Sedan, ");
+define("L_SET_14", "chatta p");
+
+define("L_SRC", "kan hmtas gratis frn");
+
+define("L_SECS", "sekunder");
+define("L_MIN", "minut");
+define("L_MINS", "minuter");
+
+// registration stuff:
+define("L_REG_1", "ditt lsenord");
+define("L_REG_1r", "(endast fr registrerade anvndare)");
+define("L_REG_2", "Registrerade anvndare");
+define("L_REG_3", "Registrera");
+define("L_REG_4", "Editera anvndarprofil");
+define("L_REG_5", "Radera anvndare");
+define("L_REG_6", "Anvndarregistrering");
+define("L_REG_7", "ditt lsenord");
+define("L_REG_8", "din e-mail");
+define("L_REG_9", "Dina uppgifter sparades korrekt.");
+define("L_REG_10", "Tillbaka");
+define("L_REG_11", "Editerar");
+define("L_REG_12", "Uppdaterar anvndarinformation");
+define("L_REG_13", "Raderar anvndare");
+define("L_REG_14", "Login");
+define("L_REG_15", "Logga in");
+define("L_REG_16", "ndra");
+define("L_REG_17", "Din information uppdaterades korrekt.");
+define("L_REG_18", "Du blev utslngd ur kanalen av moderatorn");
+define("L_REG_19", "Vill du verkligen bli borttagen?");
+define("L_REG_20", "Ja");
+define("L_REG_21", "Du blev borttagen korrekt.");
+define("L_REG_22", "Nej");
+define("L_REG_25", "Stng");
+define("L_REG_30", "frnamn");
+define("L_REG_31", "efternamn");
+define("L_REG_32", "WEB");
+define("L_REG_33", "visa e-mail vid /whois kommando");
+define("L_REG_34", "Editerar anvndarprofil");
+define("L_REG_35", "Administration");
+define("L_REG_36", "talade sprk");
+define("L_REG_37", "Flt med ett <span class=\"error\">*</span> mste vara kompletta.");
+define("L_REG_39", "Kanalen du var inloggad p har tagits bort av administratren.");
+define("L_REG_45", "gender");
+define("L_REG_46", "male");
+define("L_REG_47", "Female");
+
+// e-mail validation stuff
+define("L_EMAIL_VAL_1", "Your settings to enter the chat");
+define("L_EMAIL_VAL_2", "Welcome to our chat server.");
+define("L_EMAIL_VAL_Err", "Internal error, please contact the administrator: <a href=\"mailto:%s\">%s</a>.");
+define("L_EMAIL_VAL_Done", "Your password has been sent to your e-mail address.");
+
+// admin stuff
+define("L_ADM_1", "%s is no more moderator for this room.");
+define("L_ADM_2", "You're no more a registered user.");
+
+//error messages
+define("L_ERR_USR_1", "Det hr anvndarnamnet r upptaget. Vnligen vlj ett annat.");
+define("L_ERR_USR_2", "Du mste vlja ett anvndarnamn.");
+define("L_ERR_USR_3", "Detta anvndarnamn r registrerat. Vnligen fyll i lsenord eller vlj ett nytt.");
+define("L_ERR_USR_4", "Felaktigt lsenord angivet.");
+define("L_ERR_USR_5", "Du mste ange ett anvndarnamn.");
+define("L_ERR_USR_6", "Du mste ange ett lsenord.");
+define("L_ERR_USR_7", "Du mste ange din e-mail.");
+define("L_ERR_USR_8", "Du mste ange en korrekt e-mail adress.");
+define("L_ERR_USR_9", "Det r anvndarnamnet r upptaget.");
+define("L_ERR_USR_10", "Felaktigt anvndarnamn eller lsenord.");
+define("L_ERR_USR_11", "Du mste vara administratr.");
+define("L_ERR_USR_12", "Du r administratr s du kan ej tas bort.");
+define("L_ERR_USR_13", "Du mste registrera dig fr att f skapa egna kanaler.");
+define("L_ERR_USR_14", "Du mste registrera dig fr att f chatta.");
+define("L_ERR_USR_15", "Du mste skriva hela ditt namn.");
+define("L_ERR_USR_16", "Anvndarnamnet fr inte innehlla mellanslag, komma eller backslash (\\).");
+define("L_ERR_USR_17", "Den hr kanalen finns inte och du r inte tillten att skapa en ny.");
+define("L_ERR_USR_18", "Banned word found in your username.");
+define("L_ERR_USR_19", "You cannot be in more than one room at the same time.");
+define("L_ERR_USR_20", "You have been banished from this room or from the chat.");
+define("L_ERR_ROM_1", "Kanalens namn fr inte innehlla komma eller backslash (\\).");
+define("L_ERR_ROM_2", "Banned word found in the room's name you want to create.");
+define("L_ERR_ROM_3", "Det finns redan en publik kanal med det hr namnet.");
+define("L_ERR_ROM_4", "Ogiltigt kanalnamn.");
+
+// users frame or popup
+define("L_EXIT", "Sluta");
+define("L_DETACH", "Fristende");
+define("L_EXPCOL_ALL", "Expandera/Fll ihop alla");
+define("L_CONN_STATE", "Connection state");
+define("L_CHAT", "Chatta");
+define("L_USER", "anvndare");
+define("L_USERS", "anvndare");
+define("L_NO_USER", "Inga anvndare");
+define("L_ROOM", "kanal");
+define("L_ROOMS", "kanaler");
+define("L_EXPCOL", "Expandera/Fll ihop kanal");
+define("L_BEEP", "Beep/no beep at user entrance");
+define("L_PROFILE", "Display profile");
+define("L_NO_PROFILE", "No profile");
+
+// input frame
+define("L_HLP", "Hjlp");
+define("L_BAD_CMD", "Inte ett giltigt kommando!");
+define("L_ADMIN", "%s r redan administratr!");
+define("L_IS_MODERATOR", "%s r redan moderator!");
+define("L_NO_MODERATOR", "Endast moderatorn fr den hr kanalen fr anvnda detta kommandot.");
+define("L_MODERATOR", "%s r nu moderator fr den hr kanalen.");
+define("L_NONEXIST_USER", "Anvndare %s finns inte i den hr kanalen.");
+define("L_NONREG_USER", "Anvndare %s r inte registrerad.");
+define("L_NONREG_USER_IP", "His IP is: %s.");
+define("L_NO_KICKED", "Anvndare %s r moderator eller admin och kan inte bli utslngd.");
+define("L_KICKED", "Anvndare %s blev utslngd ok.");
+define("L_NO_BANISHED", "User %s is moderator or administrator and can't be banished.");
+define("L_BANISHED", "User %s has successfully been banished.");
+define("L_SVR_TIME", "Servertid: ");
+define("L_NO_SAVE", "No message to save!");
+define("L_NO_ADMIN", "Only the administrator can use this command.");
+define("L_ANNOUNCE", "ANNOUNCE");
+define("L_INVITE", "%s suggest you to join her/him into the <a href=\"#\" onClick=\"window.parent.runCmd('%s','%s')\">%s</a> room.");
+define("L_INVITE_REG", " You have to be registered to enter this room.");
+define("L_INVITE_DONE", "Your invitation has been sent to %s.");
+define("L_OK", "Send");
+
+// help popup
+define("L_HELP_TIT_1", "Smileys");
+define("L_HELP_TIT_2", "Textformattering fr meddelanden");
+define("L_HELP_FMT_1", "Du kan gra text fet, kursiv eller understruken genom att innesluta textavsnittet med &lt;B&gt; &lt;/B&gt;, &lt;I&gt; &lt;/I&gt; or &lt;U&gt; &lt;/U&gt; taggar.<BR>Till exempel, &lt;B&gt;den hr texten&lt;/B&gt; genererar <B>den hr texten</B>.");
+define("L_HELP_FMT_2", "Fr att skapa en hyperlnk i dina meddelanden s skriver du bara in adressen utan ngra taggar. Lnken skapas automatiskt.");
+define("L_HELP_TIT_3", "Kommandon");
+define("L_HELP_USR", "anvndare");
+define("L_HELP_MSG", "meddelande");
+define("L_HELP_ROOM", "kanal");
+define("L_HELP_CMD_0", "{} innebr ett obligatoriskt alternativ, [] ett valfritt.");
+define("L_HELP_CMD_1", "Stt antal meddelanden att visa, minst 5.");
+define("L_HELP_CMD_1a", "Set number of messages to show, minimum and default are 5.");
+define("L_HELP_CMD_1b", "Reload the message frame and display the n latest messages, minimum and default are 5.");
+define("L_HELP_CMD_2a", "Modifiera uppdateringsfrekvensen p meddelanden (i sekunder).<BR>Om n inte r specifierad eller mindre n 3 s vxlar kommandot mellan 10 sekunder och ingen uppdatering.");
+define("L_HELP_CMD_2b", "Modify messages and users lists refresh delay (in seconds).<BR>If n is not specified or less than 3, toggles between no refresh and 10s refresh.");
+define("L_HELP_CMD_3", "Byt ordningsfljd p meddelanden.");
+define("L_HELP_CMD_4", "Anslut till en kanal, skapandes den om den inte finns (frutsatt att du fr skapa kanaler).<BR>Stt n till 0 fr en privat kanal och 1 fr en publik, default r 1.");
+define("L_HELP_CMD_5", "Lmna chatten efter att du lmnar ett frivillig meddelande.");
+define("L_HELP_CMD_6", "Ignorera meddelanden frn den anvndare du anger.<BR>Sluta ignorera specifik anvndare nr du anger bde - och anvndarnamn eller sluta ignorera alla anvndare nr enbart - anges.<BR>Utan alternativ s poppar ett fnster upp med en lista ver alla ignorerade anvndare.");
+define("L_HELP_CMD_7", "Upprepa fregende text (kommando eller meddelande).");
+define("L_HELP_CMD_8", "Visa/dlj tid fre meddelanden.");
+define("L_HELP_CMD_9", "Slnger ut anvndare frn en kanal. Kan endast anvndas av moderator.");
+define("L_HELP_CMD_10", "Skicka ett privat meddelande till specifierad anvndare (ingen annan ser det).");
+define("L_HELP_CMD_11", "Visa information om specifierad anvndare.");
+define("L_HELP_CMD_12", "Poppar upp fnster fr editering av anvndarens uppgifter.");
+define("L_HELP_CMD_13", "Vxlar notifiering nr anvndare loggar p och lmnar kanalen.");
+define("L_HELP_CMD_14", "Gr det mjligt fr administratren eller den aktualla kanalens moderator att befodra en annan anvndare till moderator fr den aktualla kanalen.");
+define("L_HELP_CMD_15", "Clear the message frame and show only the last 5 messages.");
+define("L_HELP_CMD_16", "Save the last n messages (notifications ones excluded) to an HTML file. If n is not specified, all available messages will be taken into account.");
+define("L_HELP_CMD_17", "Allow the administrator to send an announce to all users whatever the room they are chatting into.");
+define("L_HELP_CMD_18", "Suggest an user chatting in an other room to join the one you are into.");
+define("L_HELP_CMD_19", "Allow the moderator(s) of a room or the administrator to \"banish\" an user from the room for a time defined by the administrator.<BR>The later can banish an user chatting in an other room than the one he is into and use the '<B>&nbsp;*&nbsp;</B>' setting to banish \"for ever\" an user from the chat as the whole.");
+define("L_HELP_CMD_20", "Describe what you're doing without refer yourself.");
+
+// messages frame
+define("L_NO_MSG", "Det finns fr nrvarande inga meddelanden ...");
+define("L_TODAY_DWN", "The messages that have been sent today start below");
+define("L_TODAY_UP", "The messages that have been sent today start above");
+
+// message colors
+$TextColors = array(	"Svart" => "#000000",
+				"Rd" => "#FF0000",
+				"Grn" => "#009900",
+				"Bl" => "#0000FF",
+				"Lila" => "#9900FF",
+				"Mrkrd" => "#990000",
+				"Mrkgrn" => "#006600",
+				"Mrkbl" => "#000099",
+				"Ljusbrun" => "#996633",
+				"Ljusbl" => "#006699",
+				"Morot" => "#FF6600");
+
+//ignored popup
+define("L_IGNOR_TIT", "Ignorerad");
+define("L_IGNOR_NON", "Inga ignorerade anvndare");
+
+// whois popup
+define("L_WHOIS_ADMIN", "Administratr");
+define("L_WHOIS_MODER", "Moderator");
+define("L_WHOIS_USER", "Anvndare");
+
+// Notification messages of user entrance/exit
+define("L_ENTER_ROM", "%s enters this room");
+define("L_EXIT_ROM", "%s exit this room");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/swedish/regex.txt 0.15.0/chat/localization/swedish/regex.txt
--- 0.14.5/chat/localization/swedish/regex.txt	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/swedish/regex.txt	2004-04-01 03:07:43.000000000 -0600
@@ -0,0 +1 @@
+sv|swedish
\ No newline at end of file
Binary files 0.14.5/chat/localization/thai/flag.gif and 0.15.0/chat/localization/thai/flag.gif differ
diff -ruN 0.14.5/chat/localization/thai/localized.chat.php 0.15.0/chat/localization/thai/localized.chat.php
--- 0.14.5/chat/localization/thai/localized.chat.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/thai/localized.chat.php	2004-04-01 03:07:44.000000000 -0600
@@ -0,0 +1,220 @@
+<?php
+// File : thai.lang.php
+// Translation by Patrice Thiroloix <keng@franco-thai.com>
+
+// extra header for charset
+$Charset = "windows-874";
+
+// medium font size in pt.
+$FontSize = 12;
+
+// welcome page
+define("L_TUTORIAL", "Tutorial");
+
+define("L_WEL_1", "ͤж١źѧ");
+define("L_WEL_2", "    蹨ж١źѧ"); 
+define("L_WEL_3", "ҷ ..."); 
+define("L_CUR_1", "й "); 
+define("L_CUR_2", " ͵Ի ");
+define("L_CUR_3", "ӹǹ ѧ "); 
+define("L_CUR_4", "ӹǹͧǹ"); 
+
+define("L_SET_1", " ԭ͡..."); 
+define("L_SET_2", ""); 
+define("L_SET_3", "ӹǹͤͧʴ"); 
+define("L_SET_4", "ӹǹ駢ͧûѺ͵Ի"); 
+define("L_SET_5", "ԭͧ͡ ...");
+define("L_SET_6", "ͧ¡ҧ"); 
+define("L_SET_7", "ԭ͡ ...");
+define("L_SET_8", "ͧ");
+define("L_SET_9", "Դͧǹ");
+define("L_SET_10", "");
+define("L_SET_11", "¡");
+define("L_SET_12", "");
+define("L_SET_13", "س");
+define("L_SET_14", "");
+
+define("L_SRC", "ԡÿշ");
+
+define("L_SECS", "Թҷ");
+define("L_MIN", "ҷ¹ҷ");
+define("L_MINS", "ҷ");
+
+// registration stuff:
+define("L_REG_1", "your password");
+define("L_REG_1r", "(only if you are registered)");
+define("L_REG_2", "Account management");
+define("L_REG_3", "Register");
+define("L_REG_4", "Edit your profile");
+define("L_REG_5", "Delete user");
+define("L_REG_6", "User registration");
+define("L_REG_7", "your password");
+define("L_REG_8", "your e-mail");
+define("L_REG_9", "You have been successfully registered.");
+define("L_REG_10", "Back");
+define("L_REG_11", "Editing");
+define("L_REG_12", "Modifying user's informations");
+define("L_REG_13", "Deleting user");
+define("L_REG_14", "Login");
+define("L_REG_15", "Log In");
+define("L_REG_16", "Change");
+define("L_REG_17", "Your informations were succesfully modified.");
+define("L_REG_18", "You have been kicked away from room by moderator.");
+define("L_REG_19", "Do you really want to be removed ?");
+define("L_REG_20", "Yes");
+define("L_REG_21", "You were successfully removed.");
+define("L_REG_22", "No");
+define("L_REG_25", "Close");
+define("L_REG_30", "firstname");
+define("L_REG_31", "lastname");
+define("L_REG_32", "WEB");
+define("L_REG_33", "show e-mail by /whois command");
+define("L_REG_34", "Editing user profile");
+define("L_REG_35", "Administration");
+define("L_REG_36", "spoken languages");
+define("L_REG_37", "Fields with a <span class=\"error\">*</span> must be completed.");
+define("L_REG_39", "The room you were in have been removed by the administrator.");
+define("L_REG_45", "gender");
+define("L_REG_46", "male");
+define("L_REG_47", "Female");
+
+// e-mail validation stuff
+define("L_EMAIL_VAL_1", "Your settings to enter the chat");
+define("L_EMAIL_VAL_2", "Welcome to our chat server.");
+define("L_EMAIL_VAL_Err", "Internal error, please contact the administrator: <a href=\"mailto:%s\">%s</a>.");
+define("L_EMAIL_VAL_Done", "Your password has been sent to your e-mail address.");
+
+// admin stuff
+define("L_ADM_1", "%s is no more moderator for this room.");
+define("L_ADM_2", "You're no more a registered user.");
+
+//error messages
+define("L_ERR_USR_1", "դ͹ ԭ͡");
+define("L_ERR_USR_2", "ԭ͡");
+define("L_ERR_USR_3", "This username is registered. Please type your password or chose another username.");
+define("L_ERR_USR_4", "You typed a wrong password.");
+define("L_ERR_USR_5", "You must type your username.");
+define("L_ERR_USR_6", "You must type your password.");
+define("L_ERR_USR_7", "You must type your e-mail.");
+define("L_ERR_USR_8", "You must type a correct e-mail address.");
+define("L_ERR_USR_9", "This username is already in use.");
+define("L_ERR_USR_10", "Wrong username or password.");
+define("L_ERR_USR_11", "You must be administrator.");
+define("L_ERR_USR_12", "You are administrator, so you cannot be removed.");
+define("L_ERR_USR_13", "To create your own room you must be registered.");
+define("L_ERR_USR_14", "You must be registered before chating.");
+define("L_ERR_USR_15", "You must type your full name.");
+define("L_ERR_USR_16", "Username cannot contain space, comma or backslash (\\).");
+define("L_ERR_USR_17", "This room doesn't exist and you are not allowed to create one.");
+define("L_ERR_USR_18", "Banned word found in your username.");
+define("L_ERR_USR_19", "You cannot be in more than one room at the same time.");
+define("L_ERR_USR_20", "You have been banished from this room or from the chat.");
+define("L_ERR_ROM_1", "Room's name cannot contain comma or backslash (\\).");
+define("L_ERR_ROM_2", "Banned word found in the room's name you want to create.");
+define("L_ERR_ROM_3", "ͧ¹ͧ");
+define("L_ERR_ROM_4", "ͧ١ͧ");
+
+// users frame or popup
+define("L_EXIT", "ԡ");
+define("L_DETACH", "ӹǹ");
+define("L_EXPCOL_ALL", "/");
+define("L_CONN_STATE", "Connection state");
+define("L_CHAT", "");
+define("L_USER", "");
+define("L_USERS", "¤");
+define("L_NO_USER", "ռ");
+define("L_ROOM", "ͧ");
+define("L_ROOMS", "ͧͧ");
+define("L_EXPCOL", "/ͧ");
+define("L_BEEP", "Beep/no beep at user entrance");
+define("L_PROFILE", "Display profile");
+define("L_NO_PROFILE", "No profile");
+
+// input frame
+define("L_HLP", "");
+define("L_BAD_CMD", "١ͧ");
+define("L_ADMIN", "%s is already administrator!");
+define("L_IS_MODERATOR", "%s is already moderator!");
+define("L_NO_MODERATOR", "Only the moderator of this room can use this command.");
+define("L_MODERATOR", "%s is now moderator for this room.");
+define("L_NONEXIST_USER", "User %s isn't in the current room.");
+define("L_NONREG_USER", "User %s isn't registered.");
+define("L_NONREG_USER_IP", "His IP is: %s.");
+define("L_NO_KICKED", "User %s is moderator or administrator and can't be kicked away.");
+define("L_KICKED", "User %s was successfully kicked away.");
+define("L_NO_BANISHED", "User %s is moderator or administrator and can't be banished.");
+define("L_BANISHED", "User %s has successfully been banished.");
+define("L_SVR_TIME", "Server time: ");
+define("L_NO_SAVE", "No message to save!");
+define("L_NO_ADMIN", "Only the administrator can use this command.");
+define("L_ANNOUNCE", "ANNOUNCE");
+define("L_INVITE", "%s suggest you to join her/him into the <a href=\"#\" onClick=\"window.parent.runCmd('%s','%s')\">%s</a> room.");
+define("L_INVITE_REG", " You have to be registered to enter this room.");
+define("L_INVITE_DONE", "Your invitation has been sent to %s.");
+define("L_OK", "Send");
+
+// help popup
+define("L_HELP_TIT_1", "");
+define("L_HELP_TIT_2", "Text formating for messages");
+define("L_HELP_FMT_1", "You can put bolded, italicized or underlined text in messages by encasing the applicable sections of your text with either the &lt;B&gt; &lt;/B&gt;, &lt;I&gt; &lt;/I&gt; or &lt;U&gt; &lt;/U&gt; tags.<BR>For example, &lt;B&gt;this text&lt;/B&gt; will produce <B>this text</B>.");
+define("L_HELP_FMT_2", "To create a hyperlink (for e-mail or URL) in your message, simply type the corresponding address without any tag. The hyperlink will be created automatically.");
+define("L_HELP_TIT_3", "");
+define("L_HELP_USR", "");
+define("L_HELP_MSG", "message");
+define("L_HELP_ROOM", "ͧ");
+define("L_HELP_CMD_0", "{} ͧºѧѺͤ, [] ͧͤ͡");
+define("L_HELP_CMD_1", "ӹǹͤͧҡ ҧ 5 ͤ");
+define("L_HELP_CMD_1a", "Set number of messages to show, minimum and default are 5.");
+define("L_HELP_CMD_1b", "Reload the message frame and display the n latest messages, minimum and default are 5.");
+define("L_HELP_CMD_2a", "ӹǹ駢ͧûѺ͵Ի ӹǹ᷹ͧ N");
+define("L_HELP_CMD_2b", "Modify messages and users lists refresh delay (in seconds).<BR>If n is not specified or less than 3, toggles between no refresh and 10s refresh.");
+define("L_HELP_CMD_3", "ѴӴѺͤ");
+define("L_HELP_CMD_4", "᷹ nick 蹢ͧ·ͧõѴ");
+define("L_HELP_CMD_5", "ҡͤش");
+define("L_HELP_CMD_6", "N = 0  ͧǹ N = 1  ͧ");
+define("L_HELP_CMD_7", "ԡ");
+define("L_HELP_CMD_8", "Show/Hide time before messages.");
+define("L_HELP_CMD_9", "Kick away user from the chat. This command can only be used by a moderator.");
+define("L_HELP_CMD_10", "Send a private message to the specified user (other users won't see it).");
+define("L_HELP_CMD_11", "Show informations about specified user.");
+define("L_HELP_CMD_12", "Popup window for editing user's profile.");
+define("L_HELP_CMD_13", "Toggles notifications of user entrance/exit for the current room.");
+define("L_HELP_CMD_14", "Allow the administrator or moderator(s) of the curent room to promote as moderator for the same room an other registered user.");
+define("L_HELP_CMD_15", "Clear the message frame and show only the last 5 messages.");
+define("L_HELP_CMD_16", "Save the last n messages (notifications ones excluded) to an HTML file. If n is not specified, all available messages will be taken into account.");
+define("L_HELP_CMD_17", "Allow the administrator to send an announce to all users whatever the room they are chatting into.");
+define("L_HELP_CMD_18", "Suggest an user chatting in an other room to join the one you are into.");
+define("L_HELP_CMD_19", "Allow the moderator(s) of a room or the administrator to \"banish\" an user from the room for a time defined by the administrator.<BR>The later can banish an user chatting in an other room than the one he is into and use the '<B>&nbsp;*&nbsp;</B>' setting to banish \"for ever\" an user from the chat as the whole.");
+define("L_HELP_CMD_20", "Describe what you're doing without refer yourself.");
+
+//message frame
+define("L_NO_MSG", "բͤҡ颳й ...");
+define("L_TODAY_DWN", "The messages that have been sent today start below");
+define("L_TODAY_UP", "The messages that have been sent today start above");
+
+// message colors
+$TextColors = array(	"մ" => "#000000",
+				"ധ" => "#FF0000",
+				" " => "#009900",
+				"տ " => "#0000FF",
+				"ǧ " => "#9900FF",
+				"ധ " => "#990000",
+				" " => "#006600",
+				"տ " => "#000099",
+				"չӵ " => "#996633",
+				"տ͹ " => "#006699",
+				"Carrot" => "#FF6600");
+
+//ignored popup
+define("L_IGNOR_TIT", "Ѵ");
+define("L_IGNOR_NON", "͡");
+
+// whois popup
+define("L_WHOIS_ADMIN", "Administrator");
+define("L_WHOIS_MODER", "Moderator");
+define("L_WHOIS_USER", "User");
+
+// Notification messages of user entrance/exit
+define("L_ENTER_ROM", "%s enters this room");
+define("L_EXIT_ROM", "%s exit this room");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/thai/regex.txt 0.15.0/chat/localization/thai/regex.txt
--- 0.14.5/chat/localization/thai/regex.txt	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/thai/regex.txt	2004-04-01 03:07:44.000000000 -0600
@@ -0,0 +1 @@
+th|thai
\ No newline at end of file
Binary files 0.14.5/chat/localization/turkish/flag.gif and 0.15.0/chat/localization/turkish/flag.gif differ
diff -ruN 0.14.5/chat/localization/turkish/localized.admin.php 0.15.0/chat/localization/turkish/localized.admin.php
--- 0.14.5/chat/localization/turkish/localized.admin.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/turkish/localized.admin.php	2004-04-01 03:07:44.000000000 -0600
@@ -0,0 +1,61 @@
+<?php
+// File : turkish.lang.php
+// Translation by Hasan Ucar <webmaster@memleketimiz.com>
+
+// extra header for charset
+$Charset = "iso-8859-9";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// Top frame
+define("A_MENU_0", "Ynetim: ilgili  %s");
+define("A_MENU_1", "Kayitli ye");
+define("A_MENU_2", "Kogulmus kullanicilar");
+define("A_MENU_3", "Odalari bosalt");
+define("A_MENU_4", "Send mails");
+
+// Frame for registered users
+define("A_SHEET1_1", "Kayitli kullanicilar ve haklari");
+define("A_SHEET1_2", "Kullanici");
+define("A_SHEET1_3", "Haklari");
+define("A_SHEET1_4", "yneticili odalar");
+define("A_SHEET1_5", "Yneticili odalar bosluksuz olarak virgl (,) ile ayrilirlar.");
+define("A_SHEET1_6", "Seilenleri sil");
+define("A_SHEET1_7", "Degistir");
+define("A_SHEET1_8", "Sizin disinizda kayitli kullanici yok.");
+define("A_SHEET1_9", "Seilmis leri chatten ihra et.");
+define("A_SHEET1_10", "Ihrac edilenler sayfasinda yaptiginiz seiminizi kontrol ediniz.");
+define("A_SHEET1_11", "Son baglanti");
+define("A_USER", "Kullanici");
+define("A_MODER", "Ynetici");
+define("A_PAGE_CNT", "Page %s of %s");
+
+// Frame for banished users
+define("A_SHEET2_1", "Ihrac edilen kullanicilarin ve oda listesi");
+define("A_SHEET2_2", "IP");
+define("A_SHEET2_3", "Etkilenen odalar");
+define("A_SHEET2_4", "Kadar");
+define("A_SHEET2_5", "sonsuz");
+define("A_SHEET2_6", "Eger 4 den az ise odalar bosluksuz olarak virgl (,) ile ayrilirlar, aksi halde  '<B>&nbsp;*&nbsp;</B>' harf i<BR> btn odalardan ihra eder.");
+define("A_SHEET2_7", "Seilen kullanicilar iin ihraci kaldirir.");
+define("A_SHEET2_8", "Ihra edilmis kullanici yok.");
+
+// Frame for cleaning rooms
+define("A_SHEET3_1", "Oda listesi.");
+define("A_SHEET3_2", "Default olmayan odalarin silinmesi yneticileride siler.");
+define("A_SHEET3_3", "Seilen odalari siler");
+define("A_SHEET3_4", "Silme islemi iin yer yok.");
+
+// Frame for sending mails
+define("A_SHEET4_0", "You haven't set required variables in the<BR>'chat/admin/mail4admin.php' script.");
+define("A_SHEET4_1", "Send e-mails");
+define("A_SHEET4_2", "To:");
+define("A_SHEET4_3", "Select all");
+define("A_SHEET4_4", "Subject:");
+define("A_SHEET4_5", "Messages:");
+define("A_SHEET4_6", "Start sending");
+define("A_SHEET4_7", "All e-mails have been sent.");
+define("A_SHEET4_8", "Internal error while sending the mails.");
+define("A_SHEET4_9", "Addresse(s), subject or message is missing!");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/turkish/localized.chat.php 0.15.0/chat/localization/turkish/localized.chat.php
--- 0.14.5/chat/localization/turkish/localized.chat.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/turkish/localized.chat.php	2004-04-01 03:07:44.000000000 -0600
@@ -0,0 +1,220 @@
+<?php
+// File : turkish.lang.php
+// Translation by Hasan Ucar <webmaster@memleketimiz.com
+
+// extra header for charset
+$Charset = "iso-8859-9";
+
+// medium font size in pt.
+$FontSize = 10;
+
+// welcome page
+define("L_TUTORIAL", "Egitim");
+
+define("L_WEL_1", "Chat kayitlarinin server de tutulma sresi:");
+define("L_WEL_2", "Kullanicilarin server de tutulma sresi:");
+define("L_WEL_3", "dakika. Bu sreden sonra kayitlar silinecek.");
+
+define("L_CUR_1", "Chat te olan kullanicilar:");
+define("L_CUR_2", "chatte.");
+define("L_CUR_3", "Chat odalarindaki kullanicilar:");
+define("L_CUR_4", "zel odalardaki kullanicilar:");
+
+define("L_SET_1", "Ltfen seiniz ...");
+define("L_SET_2", "Kullanici adiniz");
+define("L_SET_3", "gsterilen satir adedi");
+define("L_SET_4", "Yenileme sresi");
+define("L_SET_5", "Oda seiniz..");
+define("L_SET_6", "Default odalar");
+define("L_SET_7", "Seiniz ...");
+define("L_SET_8", "Kullanicilarin atigi umumi odalar");
+define("L_SET_9", "Kendize ait");
+define("L_SET_10", "umumi");
+define("L_SET_11", "ve zel");
+define("L_SET_12", "odanizi ainiz");
+define("L_SET_13", "ve Simdiii,");
+define("L_SET_14", "dogru Chat e!");
+
+define("L_SRC", " de cretsiz edinilebilir");
+
+define("L_SECS", "Saniye");
+define("L_MIN", "Dakika");
+define("L_MINS", "Dakika");
+
+// registration stuff:
+define("L_REG_1", "Sifreniz");
+define("L_REG_1r", "(eger ye iseniz)");
+define("L_REG_2", "Kayitli kullanicilar");
+define("L_REG_3", "Kayit yapiniz");
+define("L_REG_4", "Kullanici tanimlarini degistir");
+define("L_REG_5", "Kullaniciyi sil");
+define("L_REG_6", "Kullanici kaydi");
+define("L_REG_7", "Sifreniz");
+define("L_REG_8", "E-Mail-Adresiniz");
+define("L_REG_9", "Kaydiniz basarili oldu.");
+define("L_REG_10", "nceki");
+define("L_REG_11", "degistir");
+define("L_REG_12", "Kullanici bilgilerini degistir");
+define("L_REG_13", "Kullaniciyi sil");
+define("L_REG_14", "login");
+define("L_REG_15", "login");
+define("L_REG_16", "Degistir");
+define("L_REG_17", "Taniminiz degistirildi.");
+define("L_REG_18", "Ynetici sizi odadan atti.");
+define("L_REG_19", "Gerekten silinmekmi istiyorsunuz?");
+define("L_REG_20", "Evet");
+define("L_REG_21", "Silindiniz.");
+define("L_REG_22", "Hayir");
+define("L_REG_25", "Kapatiniz");
+define("L_REG_30", "Isim");
+define("L_REG_31", "Soyisim");
+define("L_REG_32", "Siteniz (URL)");
+define("L_REG_33", "E-Mail-Adresini /whois komutu gstersin");
+define("L_REG_34", "Kullanici verilerini degistir");
+define("L_REG_35", "Ynetim");
+define("L_REG_36", "Diller");
+define("L_REG_37", "<span class=\"error\">*</span> yazan alanlar zaruridir.");
+define("L_REG_39", "Ynetici bulundugunuz odayi sildi.");
+define("L_REG_45", "Cinsiyet");
+define("L_REG_46", "Erkek");
+define("L_REG_47", "Kadin");
+
+// e-mail validation stuff
+define("L_EMAIL_VAL_1", "Chat ayarlariniz");
+define("L_EMAIL_VAL_2", "Chat-Serverimize hos geldiniz.");
+define("L_EMAIL_VAL_Err", "Sistem hatasi, yneticiye bildiriniz.: <a href=\"mailto:%s\">%s</a>.");
+define("L_EMAIL_VAL_Done", "Sifreniz E-Mail-Adresinize gnderildi.");
+
+// admin stuff
+define("L_ADM_1", "%s bu odanin yneticisi degil.");
+define("L_ADM_2", "Siz artik kayitli kullanici degilsiniz.");
+
+// error messages:
+define("L_ERR_USR_1", "Bu isim kullanimda, yenisini seiniz.");
+define("L_ERR_USR_2", "Kullanici ismi girisi zaruridir.");
+define("L_ERR_USR_3", "Bu isim kullanimda. Sifreyi giriniz veya baska kullanici ismi seiniz.");
+define("L_ERR_USR_4", "Yanlis sifre girdiniz.");
+define("L_ERR_USR_5", "Kullanici ismi girmek zaruridir.");
+define("L_ERR_USR_6", "Sifre giriniz.");
+define("L_ERR_USR_7", "E-Mail inizi giriniz.");
+define("L_ERR_USR_8", "Geerli Email girisi zaruridir.");
+define("L_ERR_USR_9", "Bu isim kullanimda.");
+define("L_ERR_USR_10", "Kullanici adi veya sifreniz yanlis.");
+define("L_ERR_USR_11", "Bu islemi yneticiler yapabilir.");
+define("L_ERR_USR_12", "Yneticiler silinemez.");
+define("L_ERR_USR_13", "Oda amak iin kayit yapmalisiniz.");
+define("L_ERR_USR_14", "Chat iin kayit olmalisiniz.");
+define("L_ERR_USR_15", "Isminizi tam olarak giriniz.");
+define("L_ERR_USR_16", "Kullanici isminde bosluk, virgl ve Backslash  (\\) yasaktir.");
+define("L_ERR_USR_17", "Bu oda yok. Sizde yeni oda yapamazsiniz.");
+define("L_ERR_USR_18", "Kullanici isminizde yasaklanmis kelime var.");
+define("L_ERR_USR_19", "Ayni anda birden fazla odada olamazsiniz.");
+define("L_ERR_USR_20", "Bu odadan veya chatten ihra edildiniz.");
+define("L_ERR_ROM_1", "Oda isminde virgl ve Backslash (\\) yasaktir.");
+define("L_ERR_ROM_2", "Oda isminde yasaklanmis kelime var!");
+define("L_ERR_ROM_3", "Bu isimde umumi oda var.");
+define("L_ERR_ROM_4", "Geersiz oda ismi.");
+
+// users frame or popup
+define("L_EXIT", "ikis");
+define("L_DETACH", "Popup");
+define("L_EXPCOL_ALL", "Hepsini A/kapat");
+define("L_CONN_STATE", "Baglanti durumu");
+define("L_CHAT", "Kayit iin");
+define("L_USER", "Kullanici");
+define("L_USERS", "Kullanici");
+define("L_NO_USER", "Kullanici degil");
+define("L_ROOM", "Oda");
+define("L_ROOMS", "Odalar");
+define("L_EXPCOL", "Oda a/kapa");
+define("L_BEEP", "Dt/No Dt kullanici girdiginde");
+define("L_PROFILE", "Tanimi gster");
+define("L_NO_PROFILE", "No profile");
+
+// input frame
+define("L_HLP", "Yardim");
+define("L_BAD_CMD", "Geerli komut degil!");
+define("L_ADMIN", "%s oktaaan Administratr!");
+define("L_IS_MODERATOR", "%s oktaan ynetici!");
+define("L_NO_MODERATOR", "Sadece oda yneticisi bu komutu girebilir...");
+define("L_MODERATOR", "%s simdi oda yneticisi oldu.");
+define("L_NONEXIST_USER", "Kullanici %s odada yok.");
+define("L_NONREG_USER", "Kullanici %s login yapmamis.");
+define("L_NONREG_USER_IP", "Onun IP si: %s.");
+define("L_NO_KICKED", "Kullanici %s ynetici veya Administratr, maalesef odadan atilamaz.");
+define("L_KICKED", "Kullanici %s  odadan atildi.");
+define("L_NO_BANISHED", "%s ynetici veya administratr,chatten ihra edilemez. hehe");
+define("L_BANISHED", "Kullanici %s ihra edildi.");
+define("L_SVR_TIME", "Server saati: ");
+define("L_NO_SAVE", "Kayit etmek iin mesaj yok!");
+define("L_NO_ADMIN", "Sadece administratr bu komutu kullanabilir.");
+define("L_ANNOUNCE", "ILAN..ILAN");
+define("L_INVITE", "%s sizi <a href=\"#\" onclick=\"parent.runCmd('%s','%s')\">%s</a> odasina davet ediyor.");
+define("L_INVITE_REG", " You have to be registered to enter this room.");
+define("L_INVITE_DONE", "Davetiniz %s e gnderildi.");
+define("L_OK", "Send");
+
+// help popup
+define("L_HELP_TIT_1", "Simgeler");
+define("L_HELP_TIT_2", "Mesajlarin Format lanmasi");
+define("L_HELP_FMT_1", "Mesajlarinizi kalin, egik veya alt izgili formatlayabilirsiniz, eger yaziyi &lt;B&gt; &lt;/B&gt;, &lt;I&gt; &lt;/I&gt; oder &lt;U&gt; &lt;/U&gt; Tag leri ile sinirlarsaniz<BR>rnek: &lt;B&gt;Bu yazi &lt;/B&gt; sunu olusturur <B> Bu yazi </B>");
+define("L_HELP_FMT_2", "Mesajinizda Link olusturmak iin  (E-Mail veya URL), adresi Tag siz giriniz.");
+define("L_HELP_TIT_3", "Komutlar");
+define("L_HELP_USR", "user");
+define("L_HELP_MSG", "message");
+define("L_HELP_ROOM", "room");
+define("L_HELP_CMD_0", "{} zaruri tanimlar, [] zaruri olmayanlar iin geerlidir.");
+define("L_HELP_CMD_1a", "Gsterilen mesaj adedi: en az 5.");
+define("L_HELP_CMD_1b", "Mesajlari yeniden ykle ve son n mesaji, gster. En ay 5");
+define("L_HELP_CMD_2a", "Iki mesaj arasi geen zaman n (saniye). Eger girilmezse veya n  3 ten kkse,yeniden yklenme iptali ile 10 saniye arasinda gelip gitme olur ");
+define("L_HELP_CMD_2b", "Iki mesaj arasi geen zaman n (saniye). Eger girilmezse veya n  3 ten kkse,yeniden yklenme iptali ile 10 saniye arasinda gelip gitme olur");
+define("L_HELP_CMD_3", "Mesaj siralamasini ters evir.");
+define("L_HELP_CMD_4", "Yeni odaya geis. Oda zoksa ve sizin hakkiniz varsa oda olusturulur.<BR>zel oda iin 0, umumi oda iin 1 giriniz. Bir sez girmediginizde 1 olur.");
+define("L_HELP_CMD_5", "Isterseniz son bir mesajla chat ten ikis.");
+define("L_HELP_CMD_6", "Bir kullanicizi ignore etme.<BR>Kullanici ismi girilmeden sadece - girilince btn kullanicilar iin.<BR>Eksi girilince bu komut btn ignor lu kullanicilari gsterir.");
+define("L_HELP_CMD_7", "Son yaziyi tekrar gster (komut veya mesaj.");
+define("L_HELP_CMD_8", "Mesajlarin girilis zamanlarini a/kapa.");
+define("L_HELP_CMD_9", "Kullaniciyi chat ten men eder (ynetici komutu)");
+define("L_HELP_CMD_10", "Kullaniciya zel mesaj gnder (diger kullanicilar mesaji gremezler.)");
+define("L_HELP_CMD_11", "Kullanici bilgilerini gster.");
+define("L_HELP_CMD_12", "Kullanici tanimini degistirmeyi saglar.");
+define("L_HELP_CMD_13", "Girdi ikti mesajlarini a/kapa.");
+define("L_HELP_CMD_14", "Ynetici veya administratrleri kayitli kullanicin odasinin yneticisi yapar .");
+define("L_HELP_CMD_15", "5 i hari mesajlari sil.");
+define("L_HELP_CMD_16", "Son 5 haberi HTML olarak kaydet (mesajlar hari). n girilmeyince btn haberler kayit edilir.");
+define("L_HELP_CMD_17", "Administratr btn kullaniclara mesaj gnderebilir (her odadaki).");
+define("L_HELP_CMD_18", "Kullaniciyi kendi bulundugunuz odaya davet ediniz");
+define("L_HELP_CMD_19", "Ynetici/Administratr kullaniciyi belli bir sre iin \"atabilir\".<BR>Administratr baska odalardaki kullanicilarida atabilir. '<B>&nbsp;*&nbsp;</B>' ile kullanicilari \"sresiz\" Chat ten atabilirsiniz.");
+define("L_HELP_CMD_20", "Describe what you're doing without refer yourself.");
+
+//message frame
+define("L_NO_MSG", "mesaj yok.");
+define("L_TODAY_DWN", "The messages that have been sent today start below");
+define("L_TODAY_UP", "The messages that have been sent today start above");
+
+// message colors
+$TextColors = array(	        "Siyah" => "#000000",
+				"kirmizi" => "#FF0000",
+				"yesil" => "#009900",
+				"mavi" => "#0000FF",
+				"eflatun" => "#9900FF",
+				"koyu kirmizi" => "#990000",
+				"koyu yesil" => "#006600",
+				"koyu mavi" => "#000099",
+				"kahverengi" => "#996633",
+				"su mavisi" => "#006699",
+				"Portakal rengi" => "#FF6600");
+
+//ignored popup
+define("L_IGNOR_TIT", "Ignore edildiniz");
+define("L_IGNOR_NON", "ignor lu kullanici yok");
+
+// whois popup
+define("L_WHOIS_ADMIN", "Administratr");
+define("L_WHOIS_MODER", "Ynetici");
+define("L_WHOIS_USER", "Kullanici");
+
+// Notification messages of user entrance/exit
+define("L_ENTER_ROM", "%s odaya tesrif etti. Hos geldin % s.");
+define("L_EXIT_ROM", "%s odadan ikti. Yine bekleriz %s .");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/turkish/localized.tutorial.php 0.15.0/chat/localization/turkish/localized.tutorial.php
--- 0.14.5/chat/localization/turkish/localized.tutorial.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/turkish/localized.tutorial.php	2004-04-01 03:07:45.000000000 -0600
@@ -0,0 +1,631 @@
+<?php
+// File : turkish.tutorial.php
+// Translation by Hasan Ucar <webmaster@memleketimiz.com>
+
+// Get the names and values for vars sent by the script that called this one
+if (isset($HTTP_GET_VARS))
+{
+	while(list($name,$value) = each($HTTP_GET_VARS))
+	{
+		$$name = $value;
+	};
+};
+?>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+
+<HEAD>
+<TITLE>Trke kullanim klavuzu<?php echo(APP_NAME." - ".APP_VERSION); ?></TITLE>
+<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-9">
+<STYLE>
+A.topLink
+{
+	text-decoration: underline;
+	color: #0000C0;
+}
+
+A.topLink:hover, A.topLink:active
+{
+	color: #FF9900;
+	text-decoration: none;
+	font-weight: 800;
+}
+
+.RedText
+{
+	font-weight: 800;
+	color: #FF0000;
+}
+</STYLE>
+</HEAD>
+
+<BODY BGCOLOR="#CCCCFF">
+
+<P><A NAME="top"></P>
+<TABLE BORDER="5" CELLPADDING="5">
+<TR>
+	<TD><FONT SIZE="+2">Chat Kullanim Klavuzu</FONT></TD>
+</TR>
+</TABLE><BR>
+
+<P CLASS='RedText'>
+Dikkat: Netscape-kullanicilari browser dilini standart olarak tanimlamalidirlar, aksi durumda her harf iin'?' ikar.
+</P>
+
+<?php
+if (C_MULTI_LANG == "1") 
+{
+	?>
+	<A HREF="#language" CLASS="topLink">Dil seiniz</A><BR>
+	<?php
+};
+?>
+<A HREF="#login" CLASS="topLink">Chat e giris</A><BR>
+<A HREF="#register" CLASS="topLink">Kayit iin</A><BR>
+<A HREF="#modProfile" CLASS="topLink">Degistir<?php if (C_SHOW_DEL_PROF == "1") echo("/Sil"); ?> Kendi kaydinizi</A><BR>
+<?php
+if (C_VERSION == "2") 
+{
+	?>
+	<A HREF="#create_room" CLASS="topLink">Oda olustur</A><BR>
+	<?php
+};
+if ($Ver == "H") 
+{
+	?>
+	<A HREF="#connection_state" CLASS="topLink">Baglanti stats</A><BR>
+	<?php
+};
+?>
+<A HREF="#sending" CLASS="topLink">Mesaj gnder</A><BR>
+<A HREF="#users_list" CLASS="topLink">Kullanici listesi</A><BR>
+<A HREF="#exit" CLASS="topLink">Chat odasinda ikis</A><BR>
+<A HREF="#users_popup" CLASS="topLink">Login yapmadan chattekileri bilmek</A><BR>
+<P>
+<A HREF="#customize" CLASS="topLink">Chat grnt ayari</A><BR>
+<P>
+<A HREF="#commands" CLASS="topLink">Komutlar:</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#help" CLASS="topLink">Komut yardimi</A><BR>
+<?php
+if (C_USE_SMILIES == "1")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#smilies" CLASS="topLink">Grafik simgeler</A><BR>
+	<?php
+};
+if (C_HTML_TAGS_KEEP != "none")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#text" CLASS="topLink">Yazi formatlari</A><BR>
+	<?php
+};
+?>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#invite" CLASS="topLink">Kullaniciyi bulundugun odaya davet et</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#changeroom" CLASS="topLink">odadan odaya geis</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#private" CLASS="topLink">zel mesaj</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#actions" CLASS="topLink">Actions</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#ignore" CLASS="topLink">Diger kullanicilari ignore et</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#whois" CLASS="topLink">Diger Kullanicilar hakkinda bilgiler</A><BR>
+<?php
+if (C_SAVE != "0")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#save" CLASS="topLink">mesajlari kaydet</A><BR>
+	<?php
+};
+?>
+<P>
+<A HREF="#ynetici" CLASS="topLink">Ynetici / administratr komutlari:</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#announce" CLASS="topLink">Ilan et</A><BR>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#kick" CLASS="topLink">Kullaniciyi at </A><BR>
+<?php
+if (C_BANISH != "0")
+{
+	?>
+	&nbsp&nbsp&nbsp&nbsp<A HREF="#banish" CLASS="topLink">Kullanicizi ihrac et</A><BR>
+	<?php
+};
+?>
+&nbsp&nbsp&nbsp&nbsp<A HREF="#promote" CLASS="topLink">Ynetici tazin et</A><BR>
+<P>
+<HR>
+<HR>
+
+
+<?php
+if (C_MULTI_LANG == "1") 
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="language"><B>Dil se:</B></A></FONT>
+	<P>
+	Bayraga tiklayarak <?php echo(APP_NAME); ?> dil se. rnek fransizca seimi:
+	<P ALIGN="center">
+	<IMG SRC="images/tutorials/flags.gif" HEIGHT="44" WIDTH="424" ALT="Bayraklar">
+	<BR><P ALIGN="right"><A HREF="#top">geri dn</A></P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="login"><B>Login:</B></A></FONT>
+<P>
+Eger kayitliysaniz kullanici adinizi ve sifrenizi girip gitmek istediginiz odayi seiniz.Sonra chat i tiklayiniz.<BR>
+<?php
+if (C_REQUIRE_REGISTER == "1")
+{
+	?>
+	<P>
+	Aksi durumda  <A HREF="#register">kayit yapiniz</A> .
+	<?php
+}
+else
+{
+	?>
+	<P>
+	Ister <A HREF="#register">kayit</A> yapabilir veya odaya kayit olmadan girebilirsiniz. Kayitsiz kullanici isimlerini baskalari alabilir.
+	<?php
+}
+?>
+<BR><P ALIGN="right"><A HREF="#top">geri dn</A></P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="register"><B>Kayit iin:</B></A></FONT> 
+<P>
+Kayitli degilseniz <?php if (C_REQUIRE_REGISTER == "0") echo("ve olmak istiyorsan"); ?>, Kayit i seiniz.
+<P>	
+<UL>
+	<LI>nce kullanici isminizi<?php if (!C_EMAIL_PASWD) echo(" ve sifrenizi"); ?> tanimlayiniz. Chat odasinda kullanici isminiz grnecek.Isminizde bosluk,virgl ve backslash(\) yasaktir.
+<?php if (C_NO_SWEAR == "1") echo(" yasaklanmis kelimeleri kullanamaysiniz."); ?>
+	<LI>sonra Isim,Soyisim ve E-Mail-Adresini giriniz. Chat iin kullanici ismini tanimlayabilmek iin bunlar zorunludur
+	<LI>Eger kendi siteniz varsa onuda giriniz.
+	<LI>ayrica,bildigin dilleride diger kullanicilara kolaylik olsun diye belirt.
+	<LI>Kayit dgmesini tikla. Hepsi bu kadar.
+</UL>
+<P>
+<A NAME="modProfile"></A> Kayitli kullanicilar tabiiki kayitlarini degistirebilirler.<?php if (C_SHOW_DEL_PROF == "1") echo("/sil"); ?>. link i klickle <?php echo((C_SHOW_DEL_PROF == "0" ? "Link" : "Link")); ?>.<BR>
+<BR><P ALIGN="right"><A HREF="#top">Basa Dn</A></P>
+<P>
+<HR>
+
+<?php
+if (C_VERSION == "2") 
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="create_room"><B>Chat odasi yap:</B></A></FONT> 
+	<P>
+	Kayitli kullanicilar chat odasi yapabilirler. yel odalara sadece oda isimlerini bilenler gidebilir.<BR>
+	<P>
+	Oda isimlerinde virgl ve  (\) olamaz.<?php if (C_NO_SWEAR == "1") echo(" \"yasaklanmis kelimeler\" kullanilamaz."); ?>
+	<BR><P ALIGN="right"><A HREF="#top">Basa Dn</A></P>
+	<P>
+	<HR>
+	<?php
+};
+if ($Ver == "H")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="connection_state"><B>Baglanti durumu:</B></A></FONT> 
+	<P>
+	Sagdaki isaret baglanti durumunu gsterir ve c renk olabilir :
+	<P>	
+	<UL>
+		<LI><IMG SRC="images/connectOff.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="baglanti yok"> baglanti gerekmiyorsa;
+		<LI><IMG SRC="images/connectOn.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="baglanti mevcut"> baglanti kuruluyorsa;
+		<LI><IMG SRC="images/connectError.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="baglantida hata"> baglanti kurulmasi mmkn degilse.
+	</UL>
+	<P>
+	Baglanti kurulamiyorsa, kirmizi dgmeye basarak yeni baglanti denemesi yapilabilir.
+	<BR><P ALIGN="right"><A HREF="#top">Basa dn</A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="sending"><B>Mesaj gnderme:</B></A></FONT> 
+<P>
+Chat odasina mesaj gndermek icin asagida (soldaki) alan a mesaj inizi giriniz ve Enter/Return a basiniz. Btn mesajlari ana pencerede grebilirsiniz.<BR>
+<?php if (C_NO_SWEAR == "1") echo("Dikkat! \"Yasaklanmis kelimeler\" mesajinizdan silinecektir."); ?>
+<P>
+Mesajlarinin rengini yandaki gstergeden secebilirsin.
+<BR><P ALIGN="right"><A HREF="#top">Basa Dn</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="users_list"><B>Kullanici listesi:</B></A></FONT> 
+<P>
+<OL>
+	Kullanici listesi icin iki kural var:<BR>
+	<!-- To update
+	<LI>ein Kck bir simge (<IMG SRC="images/whoisOff.gif" WIDTH=5 HEIGHT=9 BORDER=0 ALT="Whois">) kayitli kullanici isimlerinin nnde gsterilir ve zerine TIKladiginizda bir <A HREF="#whois">WhoIs Popup</A> yazisi cikar.Kayitli olmayan kullaniclarin isimlerinin nnde sadece bir eksi - isareti olur;<BR>
+	-->
+	<LI>a little icon that shows gender is displayed before the nick of a registered user (clicking on it will launch the <A HREF="#whois">whois popup</A> for this user), while unregistered users have nothing but blank spaces displayed before their nick;<BR>
+	<LI>Ynetici ve Administratrlerin isimleri egri yazilir.
+</OL>
+<P><I>rnegin</I>, bundan:
+<TABLE BORDER=0 CELLSPACING=10>
+<TR>
+	<TD>
+		<IMG SRC="images/tutorials/usersList.gif" WIDTH=128 HEIGHT=145 BORDER=0 ALT="Kullanici listesi">
+	</TD>
+	<TD>
+	<UL>
+		<LI>Nicolas in odanin Administratr veya yneticisi oldugu;<BR><BR>
+		<!-- To update
+		<LI>lolo ve Jezek2 in normal kayitli kullanici olduklari;<BR>
+		<LI>Mary nin kayitsiz bir kullanici oldugu belli olur.
+		-->
+		<LI>alien (whose gender is unknown), Jezek2 and Caridad are registered users with no extra "power" for the phpMyChat room;<BR><BR>
+		<LI>lolo is a simple unregistered user.
+	</UL>
+	</TD>
+</TR>
+</TABLE>
+<BR><P ALIGN="right"><A HREF="#top">basa dn</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="exit"><B>Cikis:</B></A></FONT>
+<P>
+Chat te cikmak icin "Cikis" tusunu Tikla. Ayrica mesaj alanina :<BR>
+/exit<BR>
+/bye<BR>
+/quit<br>
+komutlarini girerekte chat ten cikabilirsininiz. Komutun arkasina yazdiginiz seyler mesaj olarak odaya iletilir..
+<I>Mesela:</I> /quit Grsmek zere!
+<P>
+"Grsmek zereyi!" chat odasina iletir ve chatten otomatik olarak sizi cikarir.
+
+<BR><P ALIGN="right"><A HREF="#top">Basa Dn</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="users_popup"><B>Chat e girmeden chattekiler i grmek icin:</B></A></FONT> 
+<P>
+Baslangic sayfasinda kullanici sayisini gsteren Link i TIKlamaniz yetecek. Chatteyken  sag st ksedeki<IMG SRC="images/popup.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="Kullanici Listesi"> tikla. Kullanicilari ve onlarin hangi odada olduklarini byle grebilirsiniz.<BR>
+<P>
+ <IMG SRC="images/sound.gif" WIDTH=13 HEIGHT=13 BORDER=0 ALT="DT"> resmini Tikladiginizda kullanicilar girip ciktiginda verilen sinyal sesini acip kapatabilirsiniz.
+<BR><P ALIGN="right"><A HREF="#top">Basa Dn</A></P>
+<P>
+<HR>
+<HR>
+
+
+<P>
+<FONT SIZE="+1"><A NAME="customize"><B>Chat Grnt ayarlari:</B></A></FONT>
+<P>
+Bunun icin degisik metodlar var.
+<P>
+<UL>
+	<?php
+	if ($Ver == "H")
+	{
+		?>
+		<LI> <B>Clear komutu</B> ana pencereyi siler ve son 5 mesaji birakir.
+		<P>
+		<?php
+	}
+	else
+	{
+		?>
+		<LI> <B>Order komutu </B> Yeni mesajlarin eskilerin st veya altinda grnmelerini saglar.
+		<P>
+		<?php
+	};
+	?>
+	<LI><B>Notify komutu</B> Kullanici giris ve cikislarinin grntlenmesini/grntlenmemesini kontrol eder.  Defaultlari grmek icin: <?php echo(C_NOTIFY ? "on" : "off"); ?>  ve mesaj gnderimi icin  <?php echo(C_NOTIFY ? "will" : "won't"); ?> gsterilir.<BR>"/notify" i tirnaksiz yaziniz ve enter e basiniz.
+	<P>
+	<LI> <B>Timestamp komutu</B> Mesaj zamanlari acilir/kapatilir. Default unu <?php echo(C_SHOW_TIMESTAMP ? "on" : "off"); ?>.<BR> "/timestamp" yazip enter lerseniz grebilirsiniz.
+	<P>
+	<LI> <B>Refresh komutu</B> Mesajlarin hangi araliklarla yenilenecegini ayarlar. Default: <?php echo(C_MSG_REFRESH); ?> Saniye. Bunu degistirmek icin "/refresh n" yaz ve enterle (n=saniye).
+	<P>
+	<I>rnek:</I> /refresh 5
+	<P>
+	Yenilenmeyi 5 saniyeye indirir. *n cten kck oldugu zaman n=0 olur (bu sizin  ekrandaki btn mesajlari rahatca okumaniza faydali olur)!*
+	<P>
+	<?php
+	if ($Ver == "L")
+	{
+		?>
+		<LI>Der <B>Show komutu</B> ekrandaki maximim mesaj sayisini gsterir. Degistirmek icin "/show n" (n=mesaj sayisi)..
+		<P>
+		<I>rnek:</I> /show 50
+		<P>
+		ekranda en fazla ayni anda 50 mesaj gsterir.</UL>
+		<?php
+	}
+	else
+	{
+		?>
+		<LI>Die <B>Show ve Last komutlari</B> ekranin silinmesini e son <I>n</I> mesajin gsterilmesini saglar. "/show n" veya "/last n"  (n= mesaj sayisi).
+		<P>
+		<I>rnek:</I> /show 50 veya /last 50
+		<P>
+		Mesaj penceresi temizler ve son 50 mesaji gsterir.</UL>
+		<?php
+	};
+	?>
+	<BR><P ALIGN="right"><A HREF="#top">Basa Dn</A></P>
+	<P>
+</UL>
+<HR>
+<HR>
+
+
+<P>
+<FONT SIZE="+2"><A NAME="commands"><B><U>komutlar</U></B></A></FONT> 
+<P>
+
+<FONT SIZE="+1"><A NAME="help"><B>Help komutu:</B></A></FONT>
+<P>
+chat odasinda <IMG SRC="images/helpOff.gif" WIDTH=15 HEIGHT=15 BORDER=0 ALT="?"> tikladiginizda veya  <B>"/help" veya "/?" komutunu</B> girdiginizde komutlar hakkinda yardim alabilirsiniz.
+<BR><P ALIGN="right"><A HREF="#top">Basa Dn</A></P>
+<P>
+<P>
+<HR>
+
+<?php
+if (C_USE_SMILIES == "1")
+{
+	include("./lib/smilies.lib.php");
+	$Nb = count($SmiliesTbl);
+	$ResultTbl = Array();
+	DisplaySmilies($ResultTbl,$SmiliesTbl,$Nb,"tutorial");
+	unset($SmiliesTbl);
+	?>
+	<FONT SIZE="+1"><A NAME="smilies"><B>Simgeler:</B></A></FONT>
+	<P>Mesajlarinizda asagidaki simgeleri kullanabilirsiniz.
+	<P ALIGN="center">
+	<TABLE BORDER=0 CELLPADDING=3 CELLSPACING=5>
+	<?php
+	$i = "0";
+	$Nb = count($ResultTbl);
+	while($i < $Nb)
+	{
+		if ($i > 0) echo("\t");
+		echo("<TR VALIGN=\"BOTTOM\">\n");
+		echo("$ResultTbl[$i]");
+		echo("\t</TR>\n\t<TR>\n");
+		$i++;
+		echo("$ResultTbl[$i]");
+		echo("\t</TR>\n");
+		$i++;
+	};
+	unset($ResultTbl);
+	?>
+	</TABLE>
+	<P>
+	<I>rnek:</I> "Hi Jack :)"  byle:  Hi Jack <IMG SRC="images/smilies/smile1.gif" WIDTH=15 HEIGHT=15 ALT=":)"> grnr.
+	<BR><P ALIGN="right"><A HREF="#top">Basa Dn</A></P>
+	<P>
+	<HR>
+	<?php
+};
+
+if (C_HTML_TAGS_KEEP != "none")
+{
+	?>
+	<FONT SIZE="+1"><A NAME="text"><B>Yazi formatlari:</B></A></FONT>
+	<P>
+	Yazilar kalin,egri veya alt cizgili olarak yandaki gibi HTML tag leri ile  sinirlanirlarsa grnrler:  &LT;B&GT; &LT;/B&GT, &LT;I&GT; &LT;/I&GT; oder &LT;U&GT; &LT;/U&GT .
+	<P>
+	<I>rnek:</I> &LT;B&GT;Bu yazi &LT;/B&GT; byle grnr <B>dieser Text</B>.
+	<P>
+	Internet Link i , email ve URL icin bunlari HTML siz giriniz. Chat sistemi linkleri otomatik olusturur.
+	<BR><P ALIGN="right"><A HREF="#top">Basa Dn</A></P>
+	<P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="invite"><B>Kullaniciyi kendi bulundugunuz odaya davet etme:</B></A></FONT>
+<P>
+<B>invite komutu</B> bir kulaniyi kendi bulundugunuz odaya davet edebilirsiniz.
+<P>
+<I>rnek:</I> /invite Jack 
+<P>
+Jack e bulundugunuz odanin link inin bulundugu zel bir mesaj gnderir.
+<P>
+Birden fazla kisiyi davet edebilirsiniz. (rnegin: "/invite Jack,Helen,Alf").
+<BR><P ALIGN="right"><A HREF="#top">Basa Dn</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="changeroom"><B>Odayi degistir:</B></A></FONT>
+<P>
+Soldaki liste chat odalarini ve bunlardaki kullanicilari gsterir. Bulundugunuz odada bir baskasina gecmek icin ismini tiklayiniz.Bos odalar listede grnmez. Ayrica <B>"/join #Odaadi"</B> da sizi istediginiz odaya gttr.
+<P>
+<I>rnek:</I> /join #memleketimiz.com
+<P>
+sizi memleketimiz.com odasina gtrr.
+<?php
+if (C_VERSION == "2")
+{
+        echo(C_REQUIRE_REGISTER == "0" ? "<P>Kayitli kullanici iseniz" : "<BR><P>Du");
+        ?>
+         Ayni komutla yeni bir oda acabilirsiniz. Bu durumda oda tipini belirtmelisiniz.0 = zel, 1 = umumi
+        <P>
+        <I>rnek:</I> /join 0 #BenimOdam
+        <P>
+        BenimOdam odasini olusturur ve sizi oraya transfer eder.
+        <P>
+        Oda isimlerinde  virgl ve backslash olamaz(\).<?php if (C_NO_SWEAR == "1") echo(" oda isimlerinde  \"yasaklanmis kelimeler \" kullanilamaz.");  ?>
+        <?php
+}
+?>
+<BR><P ALIGN="right"><A HREF="#top">Basa Dn</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B>Chat profilinizin/tanimlarinizin degistirilmesi:</B></FONT>
+<P>
+<B>Profile komutu</B> tanimizini degistirebilmeniz icin bir pencere acar (kullanici ismi ve sifre haric, bunlar sadece baslangic penceresinden olur).<BR> /profile yaziniz.
+<BR><P ALIGN="right"><A HREF="#top">Basa Dn</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B>Son girdiginiz komutun tekrari:</B></FONT>
+<P>
+ <B>! komutu</B> son komutu tekrar eder.<BR> Giriniz /!
+<BR><P ALIGN="right"><A HREF="#top">Basa Dn</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><B>zel cevap verme:</B></FONT>
+<P>
+Chat penceresindeki bir kullanici isminin zerine tikladiginizda (sagdaki listede "kullanici ismi>" yazar. Ancak bu mesajlari herkes grebilir.
+<BR><P ALIGN="right"><A HREF="#top">Basa Dn</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="private"><B>zel mesajlar:</B></A></FONT>
+<P>
+odadaki bir kullaniciya zel mesaj gndermek icin,<B>"/msg kullaniciIsmi MesajYazisi" veya "/to KullaniciAdi MesajYazisi"</B> tirnaksiz olarak giriniz.
+<P>
+<I>rnek, Ali ye e zel mesaj gndermek:</I> /msg Ali nasilsin Ali?
+<P>
+Mesaji sadece Ali grr ve siz grebilirsiniz, baskalari gremez.
+<P>
+Ana penceredeki kullanici isimlerini tikladiginizda kullanici ismi ve msg komutu  mesaj alanina kopyalanir.
+<BR><P ALIGN="right"><A HREF="#top">Basa Dn</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="actions"><B>Actions:</B></A></FONT>
+<P>
+To describe what you're doing you can use the <B>command "/me action"</B> without quotes.
+<P>
+<I>For example:</I> If Jack sends the message "/me is smoking a cigarette" the message frame will shown "<B>* Jack</B>" is smoking a cigarette".
+<BR><P ALIGN="right"><A HREF="#top">Basa Dn</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="ignore"><B>Baska kullanicilari ignore etme:</B></A></FONT>
+<P>
+ignore ingilzcede YOK SAYMA, GRMEMEZLIKTEN GELME demektir.Dilediginiz kullanicilari ignore etmek icin <B>"/ignore KullaniciAdi"</B> komutunu giriniz.
+<P>
+<I>rnek:</I> /ignore Ali
+<P>
+Ve artik Ali nin mesajlarini ekraninizda grmeyeceksiniz.
+<P>
+Ignore ettiginiz kullanicilarin listesini grmek icinUm eine Liste von Nutzern zu sehen, die Du ignorierst, nutze den <B>komut "/ignore"</B> ohne Anfhrungszeichen. 
+<P>
+Um den Nutzer nicht mehr zu ignorieren tippe den <B>komut "/ignore - username"</B> ohne Anfhrungszeichen ein, wobei "-" ein Minuszeichen ist. <P> 
+<P>
+<I>Beispiel:</I> /ignore - Jack 
+<P>
+Nun werden wieder alle mesajen von Jack angezeigt, inklusive der mesajen, die er whrend Deiner Ignoranz eingegeben hat.
+Lt Du einen Namen nach dem Minuszeichen weg, werden alle wieder normal angezeigt.
+<P>
+Beachte, dass Du mehrere Benutzernamen angeben kannst (z.B. "/ignore Jack,Helen,Alf" oder "/ignore - Jack,Alf"). Diese mssen durch Kommata (,) ohne Abstnde getrennt werden.
+<BR><P ALIGN="right"><A HREF="#top">Basa Dn</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="whois"><B>Bir Kullanici hakkinda bilgi almak icin:</B></A></FONT>
+<P>
+<B>"/whois KullanicIsmi"</B>komutunu giriniz.
+<P>
+<I>rnek:</I> /whois Ali
+<P>
+Bu komutu verdiginizde KullaniciIsmi verdiginiz kullanicin bilgileri dklr.
+<BR><P ALIGN="right"><A HREF="#top">Basa Dn</A></P>
+<P>
+<HR>
+
+<?php
+if (C_SAVE != "0")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="save"><B>mesajlari kaydet:</B></A></FONT>
+	<P>
+	Mesajlarini makinaniza HTML-dosyasi olarak kaydetmek icin, <B>"/save n"</B> giriniz.
+	<P>
+	<I>rnek:</I> /save 5
+	<P>
+	5 kaydetmek istediginiz mesaj sayisidir.  n girilmediginde odadaki btn mesajlar kaydedililir.
+	<BR><P ALIGN="right"><A HREF="#top">Basa Dn</A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+<HR>
+
+
+<P>
+<FONT SIZE="+2"><A NAME="ynetici"><B><U>ve administratr komutlari</U></B></A></FONT> 
+
+<P>
+<FONT SIZE="+1"><A NAME="announce"><B>Mesaj gnder:</B></A></FONT>
+<P>
+Administratr herkese  <B>announce komutu</B> ile mesaj gnderebilir.
+<P>
+<I>rnek:</I> /announce Chat bugn saat 5 de bakim icin kapatilacaktir! .</I>
+<BR><P ALIGN="right"><A HREF="#top">Basa Dn</A></P>
+<P>
+<HR>
+
+<P>
+<FONT SIZE="+1"><A NAME="kick"><B>Kullanicilari odadan atmak icin:</B></FONT>
+<P>
+yneticiler kullanicilari administratrler kullanici veya yneticileri <B>kick komut</B> komutu ile atabilirler. Yneticiler bu komutu kullanici ile ayni odada iken kullanabilirler.
+<P>
+<I>rnek: Aliyi atmak icin </I> /kick Ali</I>
+<BR><P ALIGN="right"><A HREF="#top">Basa Dn</A></P>
+<P>
+<HR>
+
+<?php
+if (C_BANISH != "0")
+{
+	?>
+	<P>
+	<FONT SIZE="+1"><A NAME="banish"><B>Kullanicilari ihrac etmek icin:</B></A></FONT>
+	<P>
+	yneticiler kullanicilari ihrac edebilirler, administratrler yneticileride ihrac edebilirler <B>ban komutu</B>.<BR>
+	Administratr her kullaniciyi her odadan sreli ve sresiz olarak atabilirler  '<B>&nbsp;*&nbsp;</B>'.
+	<P>
+	<I>rnek</I>, Ali yi ihrac etmek icin: <I>/ban Ali</I> veya <I>/ban * Ali</I>
+	<BR><P ALIGN="right"><A HREF="#top">Basa Dn</A></P>
+	<P>
+	<HR>
+	<?php
+};
+?>
+
+<P>
+<FONT SIZE="+1"><A NAME="promote"><B>Kullaniciyi ynetici yapmak icin:</B></A></FONT>
+<P>
+ynetici ve administratrler diledikleri kullanicilari <B>promote komutu</B> ile ynetici yaparlar.
+<P>
+<I>rnek: /promote Alik</I>
+<P>
+Adminstrator yneticilik hakkinini iptal edebilirler. Bunun komutu yok ve ayri bir sayfada yapiliyor.
+<BR><P ALIGN="right"><A HREF="#top">Basa Dn</A></P>
+<P>
+
+
+</BODY>
+</HTML>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/turkish/regex.txt 0.15.0/chat/localization/turkish/regex.txt
--- 0.14.5/chat/localization/turkish/regex.txt	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/turkish/regex.txt	2004-04-01 03:07:45.000000000 -0600
@@ -0,0 +1 @@
+tr|turkish
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/tutorial.lib.php 0.15.0/chat/localization/tutorial.lib.php
--- 0.14.5/chat/localization/tutorial.lib.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/localization/tutorial.lib.php	2004-04-01 03:06:40.000000000 -0600
@@ -0,0 +1,69 @@
+<?php
+// Available languages for tutorial
+$AvailableTutorials = array();
+$languageDirectories = dir('./localization/');
+while($name = $languageDirectories->read())
+{
+	if(is_dir('./localization/'.$name)
+		&& file_exists('./localization/'.$name.'/regex.txt')
+		&& file_exists('./localization/'.$name.'/localized.tutorial.php'))
+	{
+		list($key) = file('./localization/'.$name.'/regex.txt');
+		$AvailableTutorials[$key] = $name;
+	};
+};
+$languageDirectories->close();
+if (!function_exists("krsort")) include("./localization/sort_languages.php");
+krsort($AvailableTutorials);
+
+function DetectTutorial($Str,$From)
+{
+	global $AvailableTutorials;
+	global $L;
+
+	$NotFound = true;
+	reset($AvailableTutorials);
+	while($NotFound && list($key, $name) = each($AvailableTutorials))
+	{
+		if (($From == 1 && eregi("^(".trim($key).")$",$Str)) || ($From == 2 && eregi("(\(|\[|;[[:space:]])(".trim($key).")(;|\]|\))",$Str)))
+		{
+			$L = $AvailableTutorials[$key];
+			$NotFound = false;
+		};
+	};
+};
+
+// finds the appropriate language file
+if (isset($HTTP_COOKIE_VARS["CookieLang"]))
+	$CookieLang = $HTTP_COOKIE_VARS["CookieLang"];
+if (!isset($HTTP_ACCEPT_LANGUAGE))
+	$HTTP_ACCEPT_LANGUAGE = getenv("HTTP_ACCEPT_LANGUAGE");
+if (!isset($HTTP_USER_AGENT))
+	$HTTP_USER_AGENT = getenv("HTTP_USER_AGENT");
+
+if (isset($CookieLang)
+	&& is_dir('./localization/'.$CookieLang)
+	&& file_exists("./localization/${CookieLang}/localized.tutorial.php"))
+{
+	$L = $CookieLang;
+}
+elseif ($HTTP_ACCEPT_LANGUAGE != "")
+{	
+	$Accepted = explode(",", $HTTP_ACCEPT_LANGUAGE);
+	DetectTutorial($Accepted[0],1);
+}
+elseif ($HTTP_USER_AGENT != "")
+{	
+	DetectTutorial($HTTP_USER_AGENT,2);
+};
+
+//if no language detected set the english one
+if (!isset($L))
+{
+	$L = "english";
+	$NoTranslation = "<CENTER><P CLASS='RedText'>Sorry but the tutorial hasn't been translated to your language at this time.</P></CENTER>";
+};
+	
+// Clear the table
+unset($AvailableTutorials);
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/localization/tutorial.lib.php3 0.15.0/chat/localization/tutorial.lib.php3
--- 0.14.5/chat/localization/tutorial.lib.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/localization/tutorial.lib.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,69 +0,0 @@
-<?php
-// Available languages for tutorial
-$AvailableTutorials = array();
-$languageDirectories = dir('./localization/');
-while($name = $languageDirectories->read())
-{
-	if(is_dir('./localization/'.$name)
-		&& file_exists('./localization/'.$name.'/regex.txt')
-		&& file_exists('./localization/'.$name.'/localized.tutorial.php3'))
-	{
-		list($key) = file('./localization/'.$name.'/regex.txt');
-		$AvailableTutorials[$key] = $name;
-	};
-};
-$languageDirectories->close();
-if (!function_exists("krsort")) include("./localization/sort_languages.php3");
-krsort($AvailableTutorials);
-
-function DetectTutorial($Str,$From)
-{
-	global $AvailableTutorials;
-	global $L;
-
-	$NotFound = true;
-	reset($AvailableTutorials);
-	while($NotFound && list($key, $name) = each($AvailableTutorials))
-	{
-		if (($From == 1 && eregi("^(".$key.")$",$Str)) || ($From == 2 && eregi("(\(|\[|;[[:space:]])(".$key.")(;|\]|\))",$Str)))
-		{
-			$L = $AvailableTutorials[$key];
-			$NotFound = false;
-		};
-	};
-};
-
-// finds the appropriate language file
-if (isset($HTTP_COOKIE_VARS["CookieLang"]))
-	$CookieLang = $HTTP_COOKIE_VARS["CookieLang"];
-if (!isset($HTTP_ACCEPT_LANGUAGE))
-	$HTTP_ACCEPT_LANGUAGE = getenv("HTTP_ACCEPT_LANGUAGE");
-if (!isset($HTTP_USER_AGENT))
-	$HTTP_USER_AGENT = getenv("HTTP_USER_AGENT");
-
-if (isset($CookieLang)
-	&& is_dir('./localization/'.$CookieLang)
-	&& file_exists("./localization/${CookieLang}/localized.tutorial.php3"))
-{
-	$L = $CookieLang;
-}
-elseif ($HTTP_ACCEPT_LANGUAGE != "")
-{	
-	$Accepted = explode(",", $HTTP_ACCEPT_LANGUAGE);
-	DetectTutorial($Accepted[0],1);
-}
-elseif ($HTTP_USER_AGENT != "")
-{	
-	DetectTutorial($HTTP_USER_AGENT,2);
-};
-
-//if no language detected set the english one
-if (!isset($L))
-{
-	$L = "english";
-	$NoTranslation = "<CENTER><P CLASS='RedText'>Sorry but the tutorial hasn't been translated to your language at this time.</P></CENTER>";
-};
-	
-// Clear the table
-unset($AvailableTutorials);
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/messagesL.php 0.15.0/chat/messagesL.php
--- 0.14.5/chat/messagesL.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/messagesL.php	2004-04-01 03:06:25.000000000 -0600
@@ -0,0 +1,270 @@
+<?php
+// Get the names and values for vars sent by index.lib.php
+if (isset($HTTP_GET_VARS))
+{
+	while(list($name,$value) = each($HTTP_GET_VARS))
+	{
+		$$name = $value;
+	};
+};
+
+// Fix a security hole
+if (isset($L) && !is_dir('./localization/'.$L)) exit();
+	
+require("./config/config.lib.php");
+require("./localization/".$L."/localized.chat.php");
+require("./lib/database/".C_DB_TYPE.".lib.php");
+require("./lib/clean.lib.php");
+
+// Special cache instructions for IE5+
+$CachePlus	= "";
+if (ereg("MSIE [56789]", (isset($HTTP_USER_AGENT)) ? $HTTP_USER_AGENT : getenv("HTTP_USER_AGENT"))) $CachePlus = ", pre-check=0, post-check=0, max-age=0";
+$now		= gmdate('D, d M Y H:i:s') . ' GMT';
+
+header("Expires: $now");
+header("Last-Modified: $now");
+header("Cache-Control: no-cache, must-revalidate".$CachePlus);
+header("Pragma: no-cache");
+
+header("Content-Type: text/html; charset=${Charset}");
+
+// Avoid server configuration for magic quotes
+set_magic_quotes_runtime(0);
+
+
+// Translate to html special characters, and entities if message was sent with a latin 1 charset
+$Latin1 = ($Charset == "iso-8859-1");
+function special_char($str,$lang,$slash_on)
+{
+	$str = ($lang ? htmlentities(stripslashes($str)) : htmlspecialchars(stripslashes($str)));
+	return ($slash_on ? addslashes($str) : $str);
+};
+
+
+$DbLink = new DB;
+
+
+// Get IP address
+require("./lib/get_IP.lib.php");		// Set the $IP var
+
+// ** Updates user info in connected users tables **
+// Fixed a security issue thanks to SeazoN
+if (C_REQUIRE_REGISTER && (!isset($PWD_Hash) || $PWD_Hash == ''))
+{
+	exit(); // hack attack
+}
+else if (isset($PWD_Hash) && $PWD_Hash != '')
+{
+	$DbLink->query(	'SELECT ' . C_USR_TBL . '.room, ' . C_USR_TBL . '.status, ' . C_USR_TBL . '.ip'
+					. ' FROM ' . C_USR_TBL . ', ' . C_REG_TBL
+					. ' WHERE ' . C_USR_TBL . '.username = \'' . $U . '\''
+					.   ' AND ' . C_REG_TBL . '.username = \'' . $U . '\''
+					.   ' AND ' . C_REG_TBL . '.password = \'' . $PWD_Hash . '\''
+					. ' LIMIT 1');
+}
+else // C_REQUIRE_REGISTER == 0 && $PWD_Hash is empty
+{
+	$DbLink->query('SELECT username FROM ' . C_REG_TBL . ' WHERE username = \'' . $U . '\' LIMIT 1');
+	if ($DbLink->num_rows() == 0)
+	{
+		$DbLink->query('SELECT room, status, ip FROM ' . C_USR_TBL . ' WHERE username = \'' . $U . '\' LIMIT 1');
+	}
+	else
+	{
+		$DbLink->clean_results();
+		$DbLink->close();
+		exit(); // hack attack
+	}
+}
+// End of SeazoN Fix
+if($DbLink->num_rows() != 0)
+{
+	// There is a row for the user in the users table
+	list($room,$status,$knownIp) = $DbLink->next_record();
+	$DbLink->clean_results();
+	$kicked = 0;
+	if ($room != stripslashes($R))	// Same nick in another room
+	{
+		$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ($T, '$R', 'SYS exit', '', ".time().", '', 'sprintf(L_EXIT_ROM, \"".special_char($U,$Latin1,1)."\")')");
+		$kicked = 3;
+	}
+	elseif ($status == "k")			// Kicked by a moderator or the admin.
+	{
+		$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ($T, '$R', 'SYS exit', '', ".time().", '', 'sprintf(L_KICKED, \"".special_char($U,$Latin1,1)."\")')");
+		$kicked = 1;
+	}
+	elseif ($status == "d")			// The admin just deleted the room
+	{
+		$kicked = 2;
+	}
+	elseif ($status == "b")			// Banished by a moderator or the admin.
+	{
+		$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ($T, '$R', 'SYS exit', '', ".time().", '', 'sprintf(L_BANISHED, \"".special_char($U,$Latin1,1)."\")')");
+		$kicked = 4;
+	}
+	else if ($knownIp != $IP)
+	{
+		$kicked = 5;
+	}
+	if (!$kicked)
+	{
+		// Updates the time to ensure the user won't be cleaned from the users table
+		$DbLink->query("UPDATE ".C_USR_TBL." SET u_time = ".time()." WHERE room = '$R' AND username = '$U'");
+	}
+}
+else
+{
+	// User hasn't been found in the users table -> add a row
+	$DbLink->clean_results();
+	$DbLink->query("SELECT latin1,perms,rooms FROM ".C_REG_TBL." WHERE username='$U' LIMIT 1");
+	$reguser = (list($fake, $perms, $rooms) = $DbLink->next_record());
+	$DbLink->clean_results();
+	// Kick unreg users
+	if (!$reguser)
+	{
+		$kicked = 6;
+	}
+	// Add reg users
+	else
+	{
+		// Get user status
+		switch ($perms)
+		{
+			case 'admin':
+				$status = "a";
+				break;
+			case 'moderator':
+				$roomsTab = explode(",",$rooms);
+				for (reset($roomsTab); $room_name=current($roomsTab); next($roomsTab))
+				{
+					if (strcasecmp(stripslashes($R), $room_name) == 0) 
+					{
+						$status = "m";
+						break;
+					};
+				};
+			default:
+				$status = "r";
+		};
+		$DbLink->query("INSERT INTO ".C_USR_TBL." VALUES ('$R', '$U', '$Latin1', ".time().", '$status', '$IP')");
+	}
+}
+
+if (!empty($kicked))
+{
+	// Kick the user from the current room
+	$kickedUrl = "$From?L=$L&U=" . urlencode(stripslashes($U));
+	if ($kicked < 5) $kickedUrl .= "&E=$R&$KICKED=$kicked";
+	?>
+	<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript">
+	<!--
+	window.parent.window.location = '<?php echo($kickedUrl); ?>';
+	// -->
+	</SCRIPT>
+	<?php
+	$DbLink->close();
+	exit;
+}
+
+
+// Text direction
+$textDirection = ($Charset == "windows-1256") ? "RTL" : "LTR";
+
+// For translations with an explicit charset (not the 'x-user-defined' one)
+if (!isset($FontName)) $FontName = "";
+?>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML dir="<?php echo($textDirection); ?>">
+
+<HEAD>
+<TITLE>Messages frame</TITLE>
+<?php
+if ($D > 0)
+	echo('<meta HTTP-EQUIV="Refresh" CONTENT="' . $D . '; URL=messagesL.php?' . ((isset($QUERY_STRING)) ? $QUERY_STRING : getenv('QUERY_STRING')) . '">');
+?>
+<LINK REL="stylesheet" HREF="config/style.css.php?<?php echo("Charset=${Charset}&medium=${FontSize}&FontName=".urlencode($FontName)); ?>" TYPE="text/css">
+</HEAD>
+
+<BODY CLASS="mainframe" <?php if($O == 1) echo("onLoad=\"this.scrollTo(0,65000);\""); ?>>
+<?php
+
+// ** Get messages **
+
+// Define the SQL query (depends on values for ignored users list and on whether to display
+// notification messages or not)
+
+$CondForQuery = "";
+$IgnoreList = "";
+if (isset($Ign)) $IgnoreList = "'".str_replace(",","','",addslashes(urldecode($Ign)))."'";
+if ($NT == "0") $IgnoreList .= ($IgnoreList != "" ? ",":"")."'SYS enter','SYS exit'";
+if ($IgnoreList != "") $CondForQuery = "username NOT IN (${IgnoreList}) AND ";
+$CondForQuery .= "(address = ' *' OR (address = '$U' AND (room = '$R' OR username = 'SYS inviteTo')) OR (room = '$R' AND (address = '' OR username = '$U')))";
+
+$DbLink->query("SELECT m_time, username, latin1, address, message FROM ".C_MSG_TBL." WHERE ".$CondForQuery." ORDER BY m_time DESC LIMIT $N");
+
+// Format and display new messages
+if($DbLink->num_rows() > 0)
+{
+	$i = "1";
+	$today = date('j', time() +  C_TMZ_OFFSET*60*60);
+	$MessagesString = "";
+	while(list($Time, $User, $Latin1, $Dest, $Message) = $DbLink->next_record())
+	{
+		// Skip the oldest message if the day seperator has been added
+		if (isset($day_separator) && $i == $N) continue;
+
+		$NewMsg = "<P CLASS=\"msg\">";
+		if ($ST == 1) $NewMsg .= "<SPAN CLASS=\"time\">".date("H:i:s", $Time +  C_TMZ_OFFSET*60*60)."</SPAN> ";
+
+		// "Standard" messages
+		if (substr($User,0,4) != "SYS ")
+		{
+			$User = "<A HREF=\"#\" onClick=\"window.parent.userClick('".special_char($User,$Latin1,1)."',true); return false\" CLASS=\"sender\">".special_char($User,$Latin1,0)."</A>";
+			if ($Dest != "") $Dest = "]<BDO dir=\"${textDirection}\"></BDO>>[".htmlspecialchars(stripslashes($Dest));
+			$NewMsg .= "<B>[${User}${Dest}]<BDO dir=\"${textDirection}\"></BDO></B> $Message</P>";
+		}
+		// "System" messages
+		else
+		{
+			if ($Dest == " *")
+			{
+				$Message = "[".L_ANNOUNCE."]<BDO dir=\"${textDirection}\"></BDO> ".$Message;
+			}
+			else
+			{
+				if ($Dest != "") $NewMsg .= "<B><BDO dir=\"${textDirection}\"></BDO>>[".htmlspecialchars(stripslashes($Dest))."]<BDO dir=\"${textDirection}\"></BDO></B> ";
+				$Message = str_replace("$","\\$",$Message);	// avoid '$' chars in nick to be parsed bellow
+				eval("\$Message = $Message;");
+			};
+			$NewMsg .= "<SPAN CLASS=\"notify\">".$Message."</SPAN></P>";
+		};
+
+		// Separator between messages sent before today and other ones
+		if (!isset($day_separator) && date("j", $Time +  C_TMZ_OFFSET*60*60) != $today)
+		{
+			$day_separator = "<P CLASS=\"msg\"><SPAN CLASS=\"notify\">--------- ".($O == 0 ? L_TODAY_UP : L_TODAY_DWN)." ---------</SPAN></P>";
+		};
+
+		if($O == 0) {
+			$MessagesString .= ((isset($day_separator) && $day_separator != "") ? $day_separator."\n" : "").$NewMsg."\n";
+		} else {
+			$MessagesString = $NewMsg.((isset($day_separator) && $day_separator != "") ? "\n".$day_separator : "")."\n".$MessagesString;
+		};
+		
+		if (isset($day_separator)) $day_separator = "";		// Today separator already printed
+		$i++;
+	};
+	echo($MessagesString);
+}
+else
+{
+	echo("<SPAN CLASS=\"notify\">".L_NO_MSG."</SPAN>");
+};
+
+
+$DbLink->clean_results();
+$DbLink->close();
+?>
+</BODY>
+
+</HTML>
\ No newline at end of file
diff -ruN 0.14.5/chat/messagesL.php3 0.15.0/chat/messagesL.php3
--- 0.14.5/chat/messagesL.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/messagesL.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,227 +0,0 @@
-<?php
-// Get the names and values for vars sent by index.lib.php3
-if (isset($HTTP_GET_VARS))
-{
-	while(list($name,$value) = each($HTTP_GET_VARS))
-	{
-		$$name = $value;
-	};
-};
-
-// Fix a security hole
-if (isset($L) && !is_dir('./localization/'.$L)) exit();
-	
-require("./config/config.lib.php3");
-require("./localization/".$L."/localized.chat.php3");
-require("./lib/database/".C_DB_TYPE.".lib.php3");
-require("./lib/clean.lib.php3");
-
-// Special cache instructions for IE5+
-$CachePlus	= "";
-if (ereg("MSIE [56789]", (isset($HTTP_USER_AGENT)) ? $HTTP_USER_AGENT : getenv("HTTP_USER_AGENT"))) $CachePlus = ", pre-check=0, post-check=0, max-age=0";
-$now		= gmdate('D, d M Y H:i:s') . ' GMT';
-
-header("Expires: $now");
-header("Last-Modified: $now");
-header("Cache-Control: no-cache, must-revalidate".$CachePlus);
-header("Pragma: no-cache");
-
-header("Content-Type: text/html; charset=${Charset}");
-
-// Avoid server configuration for magic quotes
-set_magic_quotes_runtime(0);
-
-
-// Translate to html special characters, and entities if message was sent with a latin 1 charset
-$Latin1 = ($Charset == "iso-8859-1");
-function special_char($str,$lang,$slash_on)
-{
-	$str = ($lang ? htmlentities(stripslashes($str)) : htmlspecialchars(stripslashes($str)));
-	return ($slash_on ? addslashes($str) : $str);
-};
-
-
-$DbLink = new DB;
-
-
-// ** Updates user info in connected users tables **
-$DbLink->query("SELECT room,status FROM ".C_USR_TBL." WHERE username = '$U' LIMIT 1");
-if($DbLink->num_rows() != 0)
-{
-	// There is a row for the user in the users table
-	list($room,$status) = $DbLink->next_record();
-	$DbLink->clean_results();
-	$kicked = 0;
-	if ($room != stripslashes($R))	// Same nick in another room
-	{
-		$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ($T, '$R', 'SYS exit', '', ".time().", '', 'sprintf(L_EXIT_ROM, \"".special_char($U,$Latin1,1)."\")')");
-		$kicked = 3;
-	}
-	elseif ($status == "k")			// Kicked by a moderator or the admin.
-	{
-		$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ($T, '$R', 'SYS exit', '', ".time().", '', 'sprintf(L_KICKED, \"".special_char($U,$Latin1,1)."\")')");
-		$kicked = 1;
-	}
-	elseif ($status == "d")			// The admin just deleted the room
-	{
-		$kicked = 2;
-	}
-	elseif ($status == "b")			// Banished by a moderator or the admin.
-	{
-		$DbLink->query("INSERT INTO ".C_MSG_TBL." VALUES ($T, '$R', 'SYS exit', '', ".time().", '', 'sprintf(L_BANISHED, \"".special_char($U,$Latin1,1)."\")')");
-		$kicked = 4;
-	};
-	if ($kicked > 0)
-	{
-		// Kick the user from the current room
-		?>
-		<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript">
-		<!--
-		window.parent.window.location = '<?php echo("$From?L=$L&U=".urlencode(stripslashes($U))."&E=$R&KICKED=${kicked}"); ?>';
-		// -->
-		</SCRIPT>
-		<?php
-		$DbLink->close();
-		exit;
-	};
-	// Updates the time to ensure the user won't be cleaned from the users table
-	$DbLink->query("UPDATE ".C_USR_TBL." SET u_time = ".time()." WHERE room = '$R' AND username = '$U'");
-}
-else
-{
-	// User hasn't been found in the users table -> add a row
-	$DbLink->clean_results();
-	$DbLink->query("SELECT perms,rooms FROM ".C_REG_TBL." WHERE username='$U' LIMIT 1");
-	$reguser = ($DbLink->num_rows() != 0);
-	if ($reguser) list($perms, $rooms) = $DbLink->next_record();
-	$DbLink->clean_results();
-	// Get user status
-	$status = "u";
-	if ($reguser)
-	{
-		switch ($perms)
-		{
-			case 'admin':
-				$status = "a";
-				break;
-			case 'moderator':
-				$roomsTab = explode(",",$rooms);
-				for (reset($roomsTab); $room_name=current($roomsTab); next($roomsTab))
-				{
-					if (strcasecmp(stripslashes($R), $room_name) == 0) 
-					{
-						$status = "m";
-						break;
-					};
-				};
-			default:
-				$status = "r";
-		};
-	};
-	// Get IP address
-	include("./lib/get_IP.lib.php3");		// Set the $IP var
-	$DbLink->query("INSERT INTO ".C_USR_TBL." VALUES ('$R', '$U', '$Latin1', ".time().", '$status', '$IP')");
-};
-
-
-// Text direction
-$textDirection = ($Charset == "windows-1256") ? "RTL" : "LTR";
-
-// For translations with an explicit charset (not the 'x-user-defined' one)
-if (!isset($FontName)) $FontName = "";
-?>
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<HTML dir="<?php echo($textDirection); ?>">
-
-<HEAD>
-<TITLE>Messages frame</TITLE>
-<?php
-if ($D > 0)
-	echo('<meta HTTP-EQUIV="Refresh" CONTENT="' . $D . '; URL=messagesL.php3?' . ((isset($QUERY_STRING)) ? $QUERY_STRING : getenv('QUERY_STRING')) . '">');
-?>
-<LINK REL="stylesheet" HREF="config/style.css.php3?<?php echo("Charset=${Charset}&medium=${FontSize}&FontName=${FontName}"); ?>" TYPE="text/css">
-</HEAD>
-
-<BODY CLASS="mainframe" <?php if($O == 1) echo("onLoad=\"this.scrollTo(0,65000);\""); ?>>
-<?php
-
-// ** Get messages **
-
-// Define the SQL query (depends on values for ignored users list and on whether to display
-// notification messages or not)
-
-$CondForQuery = "";
-$IgnoreList = "";
-if (isset($Ign)) $IgnoreList = "'".str_replace(",","','",addslashes(urldecode($Ign)))."'";
-if ($NT == "0") $IgnoreList .= ($IgnoreList != "" ? ",":"")."'SYS enter','SYS exit'";
-if ($IgnoreList != "") $CondForQuery = "username NOT IN (${IgnoreList}) AND ";
-$CondForQuery .= "(address = ' *' OR (address = '$U' AND (room = '$R' OR username = 'SYS inviteTo')) OR (room = '$R' AND (address = '' OR username = '$U')))";
-
-$DbLink->query("SELECT m_time, username, latin1, address, message FROM ".C_MSG_TBL." WHERE ".$CondForQuery." ORDER BY m_time DESC LIMIT $N");
-
-// Format and display new messages
-if($DbLink->num_rows() > 0)
-{
-	$i = "1";
-	$today = date('j', time() +  C_TMZ_OFFSET*60*60);
-	$MessagesString = "";
-	while(list($Time, $User, $Latin1, $Dest, $Message) = $DbLink->next_record())
-	{
-		// Skip the oldest message if the day seperator has been added
-		if (isset($day_separator) && $i == $N) continue;
-
-		$NewMsg = "<P CLASS=\"msg\">";
-		if ($ST == 1) $NewMsg .= "<SPAN CLASS=\"time\">".date("H:i:s", $Time +  C_TMZ_OFFSET*60*60)."</SPAN> ";
-
-		// "Standard" messages
-		if (substr($User,0,4) != "SYS ")
-		{
-			$User = "<A HREF=\"#\" onClick=\"window.parent.userClick('".special_char($User,$Latin1,1)."',true); return false\" CLASS=\"sender\">".special_char($User,$Latin1,0)."</A>";
-			if ($Dest != "") $Dest = "]<BDO dir=\"${textDirection}\"></BDO>>[".htmlspecialchars(stripslashes($Dest));
-			$NewMsg .= "<B>[${User}${Dest}]<BDO dir=\"${textDirection}\"></BDO></B> $Message</P>";
-		}
-		// "System" messages
-		else
-		{
-			if ($Dest == " *")
-			{
-				$Message = "[".L_ANNOUNCE."]<BDO dir=\"${textDirection}\"></BDO> ".$Message;
-			}
-			else
-			{
-				if ($Dest != "") $NewMsg .= "<B><BDO dir=\"${textDirection}\"></BDO>>[".htmlspecialchars(stripslashes($Dest))."]<BDO dir=\"${textDirection}\"></BDO></B> ";
-				$Message = str_replace("$","\\$",$Message);	// avoid '$' chars in nick to be parsed bellow
-				eval("\$Message = $Message;");
-			};
-			$NewMsg .= "<SPAN CLASS=\"notify\">".$Message."</SPAN></P>";
-		};
-
-		// Separator between messages sent before today and other ones
-		if (!isset($day_separator) && date("j", $Time +  C_TMZ_OFFSET*60*60) != $today)
-		{
-			$day_separator = "<P CLASS=\"msg\"><SPAN CLASS=\"notify\">--------- ".($O == 0 ? L_TODAY_UP : L_TODAY_DWN)." ---------</SPAN></P>";
-		};
-
-		if($O == 0) {
-			$MessagesString .= ((isset($day_separator) && $day_separator != "") ? $day_separator."\n" : "").$NewMsg."\n";
-		} else {
-			$MessagesString = $NewMsg.((isset($day_separator) && $day_separator != "") ? "\n".$day_separator : "")."\n".$MessagesString;
-		};
-		
-		if (isset($day_separator)) $day_separator = "";		// Today separator already printed
-		$i++;
-	};
-	echo($MessagesString);
-}
-else
-{
-	echo("<SPAN CLASS=\"notify\">".L_NO_MSG."</SPAN>");
-};
-
-
-$DbLink->clean_results();
-$DbLink->close();
-?>
-</BODY>
-
-</HTML>
\ No newline at end of file
diff -ruN 0.14.5/chat/register.php 0.15.0/chat/register.php
--- 0.14.5/chat/register.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/register.php	2004-04-01 03:06:26.000000000 -0600
@@ -0,0 +1,281 @@
+<?php
+// Credit for the generate and e-mail password stuff goes to
+// Jose' Carlos Pereira <phpHeaven@abismo.org>
+
+// Get the names and values for vars sent by index.lib.php
+if (isset($HTTP_GET_VARS))
+{
+	while(list($name,$value) = each($HTTP_GET_VARS))
+	{
+		$$name = $value;
+	};
+};
+
+// Get the names and values for post vars
+if (isset($HTTP_POST_VARS))
+{
+	while(list($name,$value) = each($HTTP_POST_VARS))
+	{
+		$$name = $value;
+	};
+};
+
+// Fix a security hole
+if (isset($L) && !is_dir('./localization/'.$L)) exit();
+	
+require("./config/config.lib.php");
+require("./localization/languages.lib.php");
+require("./localization/".$L."/localized.chat.php");
+require("./lib/release.lib.php");
+require("./lib/database/".C_DB_TYPE.".lib.php");
+
+// Special cache instructions for IE5+
+$CachePlus	= "";
+if (ereg("MSIE [56789]", (isset($HTTP_USER_AGENT)) ? $HTTP_USER_AGENT : getenv("HTTP_USER_AGENT"))) $CachePlus = ", pre-check=0, post-check=0, max-age=0";
+$now		= gmdate('D, d M Y H:i:s') . ' GMT';
+
+header("Expires: $now");
+header("Last-Modified: $now");
+header("Cache-Control: no-cache, must-revalidate".$CachePlus);
+header("Pragma: no-cache");
+header("Content-Type: text/html; charset=${Charset}");
+
+// avoid server configuration for magic quotes
+set_magic_quotes_runtime(0);
+
+$DbLink = new DB;
+
+// Check for valid entries
+if (isset($FORM_SEND) && stripslashes($submit_type) == L_REG_3)
+{
+	if (C_NO_SWEAR == 1) include("./lib/swearing.lib.php");
+	if (trim($U) == "")
+	{
+		$Error = L_ERR_USR_5;
+	}
+	else if (ereg("[\, ]", stripslashes($U)))
+	{
+		$Error = L_ERR_USR_16;
+	}
+	else if(C_NO_SWEAR == 1 && checkwords($U, true))
+	{
+		$Error = L_ERR_USR_18;
+	}
+	else if (!C_EMAIL_PASWD && $pmc_password == "")
+	{
+		$Error = L_ERR_USR_6;
+	}
+	else if (trim($FIRSTNAME) == "" || trim($LASTNAME) == "")
+	{
+		$Error = L_ERR_USR_15;
+	}
+	else if (trim($EMAIL) == "")
+	{
+		$Error = L_ERR_USR_7;
+	}
+	else if (!eregi("^([0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-wyz][a-z](fo|g|l|m|mes|o|op|pa|ro|seum|t|u|v|z)?)$", $EMAIL))
+	{
+		$Error = L_ERR_USR_8;
+	}
+	else if ((C_EMAIL_PASWD && @checkdnsrr('www.w3.org', 'ANY'))
+			&& !checkdnsrr(substr(strstr($EMAIL,'@'),1), 'ANY'))
+	{
+		$Error = L_ERR_USR_8;
+	}
+	else
+	{
+		$DbLink->query("SELECT count(*) FROM ".C_REG_TBL." WHERE username='$U'");
+		list($rows) = $DbLink->next_record();
+		$DbLink->clean_results();
+		if ($rows != 0)
+		{
+			$Error = L_ERR_USR_9;
+		}
+		else
+		{
+			$Latin1 = ($Charset == "iso-8859-1");
+			if (!isset($GENDER)) $GENDER = "";
+			$showemail = (isset($SHOWEMAIL) && $SHOWEMAIL)? 1:0;
+			include("./lib/get_IP.lib.php");		// Set the $IP var
+
+			if (C_EMAIL_PASWD)		// Define the password
+			{
+				include("./lib/mail_validation.lib.php");
+				$pmc_password = gen_password(C_EMAIL_PASWD);
+			};
+			$PWD_Hash = md5(stripslashes($pmc_password));
+			// Send e-mail
+			if (C_EMAIL_PASWD)
+			{
+				$send = send_email("[".APP_NAME."] ".L_EMAIL_VAL_1, L_SET_2, L_REG_7, L_EMAIL_VAL_2);
+				if (!$send) $Error = sprintf(L_EMAIL_VAL_Err,$Sender_email,$Sender_email);
+			};
+			if (!isset($Error) || $Error == "")
+			{			
+				$DbLink->query("INSERT INTO ".C_REG_TBL." VALUES ('$U', '$Latin1', '$PWD_Hash', '$FIRSTNAME', '$LASTNAME', '$COUNTRY', '$WEBSITE', '$EMAIL', $showemail, 'user', '',".time().", '$IP', '$GENDER')");
+				$Message = L_REG_9;
+			};
+		}
+	}
+}
+
+$DbLink->close();
+
+// Registration has been done ?
+$done = (isset($Message) && $Message == L_REG_9);
+
+// For translations with an explicit charset (not the 'x-user-defined' one)
+if (!isset($FontName)) $FontName = "";
+?>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML dir="<?php echo(($Charset == "windows-1256") ? "RTL" : "LTR"); ?>">
+
+<HEAD>
+<TITLE><?php echo(APP_NAME); ?></TITLE>
+<LINK REL="stylesheet" HREF="config/style.css.php?<?php echo("Charset=${Charset}&medium=${FontSize}&FontName=".urlencode($FontName)); ?>" TYPE="text/css">
+<SCRIPT TYPE="text/javascript" LANGUAGE="javascript">
+<!--
+// Insert login and password in fields of the starter page form
+function LoginToIndex()
+{
+<?php
+if ($done)
+{
+	?>
+	var indexform = window.opener.window.document.forms['Params'];
+	var regform = document.forms['RegParams'];
+	indexform.elements['U'].value = regform.elements['U'].value;
+	<?php
+	if (!C_EMAIL_PASWD)
+	{
+		?>
+		indexform.elements['pmc_password'].value = regform.elements['pmc_password'].value;
+		<?php
+	};
+};
+?>
+};
+
+// Put focus to the username field of the form at the starter page
+function get_focus()
+{
+	window.focus();
+	document.forms['RegParams'].elements['U'].focus();
+}
+// -->
+</SCRIPT>
+</HEAD>
+
+<BODY onLoad="if (window.focus) get_focus();">
+<CENTER>
+<BR>
+<FORM ACTION="register.php" METHOD="POST" AUTOCOMPLETE="OFF" NAME="RegParams">
+<P></P>
+<?php
+if(isset($Error))
+{
+	echo("<P><SPAN CLASS=\"error\">$Error</SPAN></P>");
+}
+?>
+<INPUT TYPE="hidden" NAME="FORM_SEND" VALUE="1">
+<INPUT TYPE="hidden" NAME="L" VALUE="<?php echo($L); ?>">
+<TABLE BORDER=0 CELLPADDING=3 CLASS="table">
+<TR>
+	<TD ALIGN="CENTER">
+		<TABLE BORDER=0>
+		<TR>
+			<TH COLSPAN=2 CLASS="tabtitle"><?php echo($done ? $Message : L_REG_6); ?></TH>
+		</TR>
+		<TR>
+			<TH COLSPAN=2><?php if (!$done) echo(L_REG_37); elseif (C_EMAIL_PASWD) echo(L_EMAIL_VAL_Done); ?></TH>
+		</TR>
+		<TR><TD>&nbsp;</TD></TR>
+		<TR>
+			<TD ALIGN="RIGHT" VALIGN="TOP" NOWRAP><?php echo(L_SET_2); ?> :</TD>
+			<TD VALIGN="TOP">
+				<INPUT TYPE="text" NAME="U" SIZE=11 MAXLENGTH=10 VALUE="<?php if (isset($U)) echo(htmlspecialchars(stripslashes($U))); ?>"<?php if ($done) echo(" READONLY"); ?>>
+				<?php if (!$done) { ?><SPAN CLASS=error>*</SPAN><?php }; ?>
+			</TD>
+		</TR>
+		<?php
+		if (!C_EMAIL_PASWD)
+		{
+			?>
+			<TR>
+				<TD ALIGN="RIGHT" VALIGN="TOP" NOWRAP><?php echo(L_REG_7); ?> :</TD>
+				<TD VALIGN="TOP">
+					<INPUT TYPE="password" NAME="pmc_password" SIZE=11 MAXLENGTH=16 VALUE="<?php if (isset($pmc_password)) echo(htmlspecialchars(stripslashes($pmc_password))); ?>"<?php if ($done) echo(" READONLY"); ?>>
+					<?php if (!$done) { ?><SPAN CLASS=error>*</SPAN><?php }; ?>
+				</TD>
+			</TR>
+			<?php
+		};
+		?>
+		<TR>
+			<TD ALIGN="RIGHT" VALIGN="TOP" NOWRAP><?php echo(L_REG_30); ?> :</TD>
+			<TD VALIGN="TOP">
+				<INPUT TYPE="text" NAME="FIRSTNAME" SIZE=11 MAXLENGTH=64 VALUE="<?php if (isset($FIRSTNAME)) echo(htmlspecialchars(stripslashes($FIRSTNAME))); ?>"<?php if ($done) echo(" READONLY"); ?>>
+				<?php if (!$done) { ?><SPAN CLASS=error>*</SPAN><?php }; ?>
+			</TD>
+		</TR>
+		<TR>
+			<TD ALIGN="RIGHT" VALIGN="TOP" NOWRAP><?php echo(L_REG_31); ?> :</TD>
+			<TD VALIGN="TOP">
+				<INPUT TYPE="text" NAME="LASTNAME" SIZE=11 MAXLENGTH=64 VALUE="<?php if (isset($LASTNAME)) echo(htmlspecialchars(stripslashes($LASTNAME))); ?>"<?php if ($done) echo(" READONLY"); ?>>
+				<?php if (!$done) { ?><SPAN CLASS=error>*</SPAN><?php }; ?>
+			</TD>
+		</TR>
+		<TR>
+			<TD ALIGN="RIGHT" VALIGN="TOP" NOWRAP><?php echo(L_REG_45); ?> :</TD>
+			<TD VALIGN="TOP">
+				<INPUT TYPE="radio" NAME="GENDER" VALUE="1" <?php if (isset($GENDER) && $GENDER == "1") echo("CHECKED"); if ($done) echo(" READONLY"); ?>>&nbsp;<?php echo(L_REG_46); ?><BR>
+				<INPUT TYPE="radio" NAME="GENDER" VALUE="2" <?php if (isset($GENDER) && $GENDER == "2") echo("CHECKED"); if ($done) echo(" READONLY"); ?>>&nbsp;<?php echo(L_REG_47); ?>
+			</TD>
+		</TR>
+		<TR>
+			<TD ALIGN="RIGHT" VALIGN="TOP" NOWRAP><?php echo(L_REG_36); ?> :</TD>
+			<TD VALIGN="TOP">
+				<INPUT TYPE="text" NAME="COUNTRY" SIZE=11 MAXLENGTH=64 VALUE="<?php if (isset($COUNTRY)) echo(htmlspecialchars(stripslashes($COUNTRY))); ?>"<?php if ($done) echo(" READONLY"); ?>>
+			</TD>
+		</TR>
+		<TR>
+			<TD ALIGN="RIGHT" VALIGN="TOP" NOWRAP><?php echo(L_REG_32); ?> :</TD>
+			<TD VALIGN="TOP">
+				<INPUT TYPE="text" NAME="WEBSITE" SIZE=11 MAXLENGTH=64 VALUE="<?php if (isset($WEBSITE)) echo(htmlspecialchars(stripslashes($WEBSITE))); ?>"<?php if ($done) echo(" READONLY"); ?>>
+			</TD>
+		</TR>
+		<TR>
+			<TD ALIGN="RIGHT" VALIGN="TOP" NOWRAP><?php echo(L_REG_8); ?> :</TD>
+			<TD VALIGN="TOP">
+				<INPUT TYPE="text" NAME="EMAIL" SIZE=11 MAXLENGTH=64 VALUE="<?php if (isset($EMAIL)) echo(htmlspecialchars(stripslashes($EMAIL))); ?>"<?php if ($done) echo(" READONLY"); ?>>
+				<?php if (!$done) { ?><SPAN CLASS="error">*</SPAN><?php }; ?>
+			</TD>
+		</TR>
+		<TR>
+			<TD COLSPAN=2 ALIGN="center">
+				<INPUT type="checkbox" name="SHOWEMAIL" value="1" <?php if (isset($SHOWEMAIL) && $SHOWEMAIL) echo("CHECKED"); ?><?php if ($done) echo(" READONLY"); ?>>
+				&nbsp;<?php echo(L_REG_33); ?>
+			</TD>
+		</TR>
+		</TABLE>
+		<P>
+		<?php
+		if (!$done)
+		{
+			?>
+			<INPUT TYPE="submit" NAME="submit_type" VALUE="<?php echo(L_REG_3); ?>">
+			<?php
+		}
+		?>
+		<INPUT TYPE="submit" NAME="submit_type" VALUE="<?php echo(L_REG_25); ?>" onClick="LoginToIndex(); self.close(); return false;">
+	</TD>
+</TR>
+</TABLE>
+</FORM>
+</CENTER>
+</BODY>
+
+</HTML>
+<?php
+
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/register.php3 0.15.0/chat/register.php3
--- 0.14.5/chat/register.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/register.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,280 +0,0 @@
-<?php
-// Credit for the generate and e-mail password stuff goes to
-// Jose' Carlos Pereira <phpHeaven@abismo.org>
-
-// Get the names and values for vars sent by index.lib.php3
-if (isset($HTTP_GET_VARS))
-{
-	while(list($name,$value) = each($HTTP_GET_VARS))
-	{
-		$$name = $value;
-	};
-};
-
-// Get the names and values for post vars
-if (isset($HTTP_POST_VARS))
-{
-	while(list($name,$value) = each($HTTP_POST_VARS))
-	{
-		$$name = $value;
-	};
-};
-
-// Fix a security hole
-if (isset($L) && !is_dir('./localization/'.$L)) exit();
-	
-require("./config/config.lib.php3");
-require("./localization/languages.lib.php3");
-require("./localization/".$L."/localized.chat.php3");
-require("./lib/release.lib.php3");
-require("./lib/database/".C_DB_TYPE.".lib.php3");
-
-// Special cache instructions for IE5+
-$CachePlus	= "";
-if (ereg("MSIE [56789]", (isset($HTTP_USER_AGENT)) ? $HTTP_USER_AGENT : getenv("HTTP_USER_AGENT"))) $CachePlus = ", pre-check=0, post-check=0, max-age=0";
-$now		= gmdate('D, d M Y H:i:s') . ' GMT';
-
-header("Expires: $now");
-header("Last-Modified: $now");
-header("Cache-Control: no-cache, must-revalidate".$CachePlus);
-header("Pragma: no-cache");
-header("Content-Type: text/html; charset=${Charset}");
-
-// avoid server configuration for magic quotes
-set_magic_quotes_runtime(0);
-
-$DbLink = new DB;
-
-// Check for valid entries
-if (isset($FORM_SEND) && stripslashes($submit_type) == L_REG_3)
-{
-	if (C_NO_SWEAR == 1) include("./lib/swearing.lib.php3");
-	if (trim($U) == "")
-	{
-		$Error = L_ERR_USR_5;
-	}
-	else if (ereg("[\, ]", stripslashes($U)))
-	{
-		$Error = L_ERR_USR_16;
-	}
-	else if(C_NO_SWEAR == 1 && checkwords($U, true))
-	{
-		$Error = L_ERR_USR_18;
-	}
-	else if (!C_EMAIL_PASWD && $PASSWORD == "")
-	{
-		$Error = L_ERR_USR_6;
-	}
-	else if (trim($FIRSTNAME) == "" || trim($LASTNAME) == "")
-	{
-		$Error = L_ERR_USR_15;
-	}
-	else if (trim($EMAIL) == "")
-	{
-		$Error = L_ERR_USR_7;
-	}
-	else if (!eregi("^([0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-wyz][a-z](fo|g|l|m|mes|o|op|pa|ro|seum|t|u|v|z)?)$", $EMAIL))
-	{
-		$Error = L_ERR_USR_8;
-	}
-	else if (C_EMAIL_PASWD && !checkdnsrr(substr(strstr($EMAIL,'@'),1),"ANY"))
-	{
-		$Error = L_ERR_USR_8;
-	}
-	else
-	{
-		$DbLink->query("SELECT count(*) FROM ".C_REG_TBL." WHERE username='$U'");
-		list($rows) = $DbLink->next_record();
-		$DbLink->clean_results();
-		if ($rows != 0)
-		{
-			$Error = L_ERR_USR_9;
-		}
-		else
-		{
-			$Latin1 = ($Charset == "iso-8859-1");
-			if (!isset($GENDER)) $GENDER = "";
-			$showemail = (isset($SHOWEMAIL) && $SHOWEMAIL)? 1:0;
-			include("./lib/get_IP.lib.php3");		// Set the $IP var
-
-			if (C_EMAIL_PASWD)		// Define the password
-			{
-				include("./lib/mail_validation.lib.php3");
-				$PASSWORD = gen_password(C_EMAIL_PASWD);
-			};
-			$PWD_Hash = md5(stripslashes($PASSWORD));
-			// Send e-mail
-			if (C_EMAIL_PASWD)
-			{
-				$send = send_email("[".APP_NAME."] ".L_EMAIL_VAL_1, L_SET_2, L_REG_7, L_EMAIL_VAL_2);
-				if (!$send) $Error = sprintf(L_EMAIL_VAL_Err,$Sender_email,$Sender_email);
-			};
-			if (!isset($Error) || $Error == "")
-			{			
-				$DbLink->query("INSERT INTO ".C_REG_TBL." VALUES ('$U', '$Latin1', '$PWD_Hash', '$FIRSTNAME', '$LASTNAME', '$COUNTRY', '$WEBSITE', '$EMAIL', $showemail, 'user', '',".time().", '$IP', '$GENDER')");
-				$Message = L_REG_9;
-			};
-		}
-	}
-}
-
-$DbLink->close();
-
-// Registration has been done ?
-$done = (isset($Message) && $Message == L_REG_9);
-
-// For translations with an explicit charset (not the 'x-user-defined' one)
-if (!isset($FontName)) $FontName = "";
-?>
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<HTML dir="<?php echo(($Charset == "windows-1256") ? "RTL" : "LTR"); ?>">
-
-<HEAD>
-<TITLE><?php echo(APP_NAME); ?></TITLE>
-<LINK REL="stylesheet" HREF="config/style.css.php3?<?php echo("Charset=${Charset}&medium=${FontSize}&FontName=${FontName}"); ?>" TYPE="text/css">
-<SCRIPT TYPE="text/javascript" LANGUAGE="javascript">
-<!--
-// Insert login and password in fields of the starter page form
-function LoginToIndex()
-{
-<?php
-if ($done)
-{
-	?>
-	var indexform = window.opener.window.document.forms['Params'];
-	var regform = document.forms['RegParams'];
-	indexform.elements['U'].value = regform.elements['U'].value;
-	<?php
-	if (!C_EMAIL_PASWD)
-	{
-		?>
-		indexform.elements['PASSWORD'].value = regform.elements['PASSWORD'].value;
-		<?php
-	};
-};
-?>
-};
-
-// Put focus to the username field of the form at the starter page
-function get_focus()
-{
-	window.focus();
-	document.forms['RegParams'].elements['U'].focus();
-}
-// -->
-</SCRIPT>
-</HEAD>
-
-<BODY onLoad="if (window.focus) get_focus();">
-<CENTER>
-<BR>
-<FORM ACTION="register.php3" METHOD="POST" AUTOCOMPLETE="OFF" NAME="RegParams">
-<P></P>
-<?php
-if(isset($Error))
-{
-	echo("<P><SPAN CLASS=\"error\">$Error</SPAN></P>");
-}
-?>
-<INPUT TYPE="hidden" NAME="FORM_SEND" VALUE="1">
-<INPUT TYPE="hidden" NAME="L" VALUE="<?php echo($L); ?>">
-<TABLE BORDER=0 CELLPADDING=3 CLASS="table">
-<TR>
-	<TD ALIGN="CENTER">
-		<TABLE BORDER=0>
-		<TR>
-			<TH COLSPAN=2 CLASS="tabtitle"><?php echo($done ? $Message : L_REG_6); ?></TH>
-		</TR>
-		<TR>
-			<TH COLSPAN=2><?php if (!$done) echo(L_REG_37); elseif (C_EMAIL_PASWD) echo(L_EMAIL_VAL_Done); ?></TH>
-		</TR>
-		<TR><TD>&nbsp;</TD></TR>
-		<TR>
-			<TD ALIGN="RIGHT" VALIGN="TOP" NOWRAP><?php echo(L_SET_2); ?> :</TD>
-			<TD VALIGN="TOP">
-				<INPUT TYPE="text" NAME="U" SIZE=11 MAXLENGTH=10 VALUE="<?php if (isset($U)) echo(htmlspecialchars(stripslashes($U))); ?>"<?php if ($done) echo(" READONLY"); ?>>
-				<?php if (!$done) { ?><SPAN CLASS=error>*</SPAN><?php }; ?>
-			</TD>
-		</TR>
-		<?php
-		if (!C_EMAIL_PASWD)
-		{
-			?>
-			<TR>
-				<TD ALIGN="RIGHT" VALIGN="TOP" NOWRAP><?php echo(L_REG_7); ?> :</TD>
-				<TD VALIGN="TOP">
-					<INPUT TYPE="password" NAME="PASSWORD" SIZE=11 MAXLENGTH=16 VALUE="<?php if (isset($PASSWORD)) echo(htmlspecialchars(stripslashes($PASSWORD))); ?>"<?php if ($done) echo(" READONLY"); ?>>
-					<?php if (!$done) { ?><SPAN CLASS=error>*</SPAN><?php }; ?>
-				</TD>
-			</TR>
-			<?php
-		};
-		?>
-		<TR>
-			<TD ALIGN="RIGHT" VALIGN="TOP" NOWRAP><?php echo(L_REG_30); ?> :</TD>
-			<TD VALIGN="TOP">
-				<INPUT TYPE="text" NAME="FIRSTNAME" SIZE=11 MAXLENGTH=64 VALUE="<?php if (isset($FIRSTNAME)) echo(htmlspecialchars(stripslashes($FIRSTNAME))); ?>"<?php if ($done) echo(" READONLY"); ?>>
-				<?php if (!$done) { ?><SPAN CLASS=error>*</SPAN><?php }; ?>
-			</TD>
-		</TR>
-		<TR>
-			<TD ALIGN="RIGHT" VALIGN="TOP" NOWRAP><?php echo(L_REG_31); ?> :</TD>
-			<TD VALIGN="TOP">
-				<INPUT TYPE="text" NAME="LASTNAME" SIZE=11 MAXLENGTH=64 VALUE="<?php if (isset($LASTNAME)) echo(htmlspecialchars(stripslashes($LASTNAME))); ?>"<?php if ($done) echo(" READONLY"); ?>>
-				<?php if (!$done) { ?><SPAN CLASS=error>*</SPAN><?php }; ?>
-			</TD>
-		</TR>
-		<TR>
-			<TD ALIGN="RIGHT" VALIGN="TOP" NOWRAP><?php echo(L_REG_45); ?> :</TD>
-			<TD VALIGN="TOP">
-				<INPUT TYPE="radio" NAME="GENDER" VALUE="1" <?php if (isset($GENDER) && $GENDER == "1") echo("CHECKED"); if ($done) echo(" READONLY"); ?>>&nbsp;<?php echo(L_REG_46); ?><BR>
-				<INPUT TYPE="radio" NAME="GENDER" VALUE="2" <?php if (isset($GENDER) && $GENDER == "2") echo("CHECKED"); if ($done) echo(" READONLY"); ?>>&nbsp;<?php echo(L_REG_47); ?>
-			</TD>
-		</TR>
-		<TR>
-			<TD ALIGN="RIGHT" VALIGN="TOP" NOWRAP><?php echo(L_REG_36); ?> :</TD>
-			<TD VALIGN="TOP">
-				<INPUT TYPE="text" NAME="COUNTRY" SIZE=11 MAXLENGTH=64 VALUE="<?php if (isset($COUNTRY)) echo(htmlspecialchars(stripslashes($COUNTRY))); ?>"<?php if ($done) echo(" READONLY"); ?>>
-			</TD>
-		</TR>
-		<TR>
-			<TD ALIGN="RIGHT" VALIGN="TOP" NOWRAP><?php echo(L_REG_32); ?> :</TD>
-			<TD VALIGN="TOP">
-				<INPUT TYPE="text" NAME="WEBSITE" SIZE=11 MAXLENGTH=64 VALUE="<?php if (isset($WEBSITE)) echo(htmlspecialchars(stripslashes($WEBSITE))); ?>"<?php if ($done) echo(" READONLY"); ?>>
-			</TD>
-		</TR>
-		<TR>
-			<TD ALIGN="RIGHT" VALIGN="TOP" NOWRAP><?php echo(L_REG_8); ?> :</TD>
-			<TD VALIGN="TOP">
-				<INPUT TYPE="text" NAME="EMAIL" SIZE=11 MAXLENGTH=64 VALUE="<?php if (isset($EMAIL)) echo(htmlspecialchars(stripslashes($EMAIL))); ?>"<?php if ($done) echo(" READONLY"); ?>>
-				<?php if (!$done) { ?><SPAN CLASS="error">*</SPAN><?php }; ?>
-			</TD>
-		</TR>
-		<TR>
-			<TD COLSPAN=2 ALIGN="center">
-				<INPUT type="checkbox" name="SHOWEMAIL" value="1" <?php if (isset($SHOWEMAIL) && $SHOWEMAIL) echo("CHECKED"); ?><?php if ($done) echo(" READONLY"); ?>>
-				&nbsp;<?php echo(L_REG_33); ?>
-			</TD>
-		</TR>
-		</TABLE>
-		<P>
-		<?php
-		if (!$done)
-		{
-			?>
-			<INPUT TYPE="submit" NAME="submit_type" VALUE="<?php echo(L_REG_3); ?>">
-			<?php
-		}
-		?>
-		<INPUT TYPE="submit" NAME="submit_type" VALUE="<?php echo(L_REG_25); ?>" onClick="LoginToIndex(); self.close(); return false;">
-	</TD>
-</TR>
-</TABLE>
-</FORM>
-</CENTER>
-</BODY>
-
-</HTML>
-<?php
-
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/setup.php 0.15.0/chat/setup.php
--- 0.14.5/chat/setup.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/setup.php	2004-04-01 03:06:26.000000000 -0600
@@ -0,0 +1,316 @@
+<?php
+require("./lib/release.lib.php");
+if (!isset($Lang) && isset($HTTP_GET_VARS["Lang"])) $Lang = $HTTP_GET_VARS["Lang"];
+require("./install/languages/languages.setup.php");
+require("./install/languages/${Lang}.setup.php");
+
+// Special cache instructions for IE5+
+$CachePlus	= "";
+if (ereg("MSIE [56789]", (isset($HTTP_USER_AGENT)) ? $HTTP_USER_AGENT : getenv("HTTP_USER_AGENT"))) $CachePlus = ", pre-check=0, post-check=0, max-age=0";
+$now		= gmdate('D, d M Y H:i:s') . ' GMT';
+
+header("Expires: $now");
+header("Last-Modified: $now");
+header("Cache-Control: no-cache, must-revalidate".$CachePlus);
+header("Pragma: no-cache");
+header("Content-Type: text/html; charset=${S_Charset}");
+
+// Get the names and values for post vars
+if (isset($HTTP_POST_VARS))
+{
+	while(list($name,$value) = each($HTTP_POST_VARS))
+	{
+		$$name = $value;
+	};
+};
+
+if (!isset($Form_Send)) $Form_Send = 0;
+
+if ($Form_Send == 1)
+{
+	$old_error_reporting = error_reporting (E_ERROR | E_WARNING | E_PARSE); 
+	include("./localization/languages.lib.php");
+	error_reporting($old_error_reporting); 
+
+	$Error = (trim($C_DB_NAME) == "" || trim($C_MSG_TBL) == "" || trim($C_REG_TBL) == "" || trim($C_USR_TBL) == "" || trim($C_BAN_TBL) == "");
+
+	if (!$Error && (trim($C_DB_USER) == "" || trim($C_DB_PASS) == ""))
+	{
+		if (trim($C_DB_HOST) != "" && trim($C_DB_HOST) != "localhost" && trim($C_DB_HOST) != "127.0.0.1")
+		{
+			$Error = true;
+		}
+		else
+		{
+			$Val1 = urlencode(htmlspecialchars(stripslashes($C_DB_HOST)));
+			$Val2 = urlencode(htmlspecialchars(stripslashes($C_DB_NAME)));
+			$Val3 = urlencode(htmlspecialchars(stripslashes($C_DB_USER)));
+			$Val4 = urlencode(htmlspecialchars(stripslashes($C_MSG_TBL)));
+			$Val5 = urlencode(htmlspecialchars(stripslashes($C_REG_TBL)));
+			$Val6 = urlencode(htmlspecialchars(stripslashes($C_USR_TBL)));
+			$Val7 = urlencode(htmlspecialchars(stripslashes($C_BAN_TBL)));
+			$Qs = "C_DB_TYPE=${C_DB_TYPE}";
+			if ($Val1 != "") $Qs .= "&C_DB_HOST=${Val1}";
+			$Qs .= "&C_DB_NAME=${Val2}";
+			if ($Val3 != "") $Qs .= "&C_DB_USER=${Val3}";
+			$Qs .= "&Create=${Create}&C_MSG_TBL=${Val4}&C_REG_TBL=${Val5}&C_USR_TBL=${Val6}&C_BAN_TBL=${Val7}";
+			$Qs .= "&next=1";
+			if (!isset($PHP_SELF)) $PHP_SELF = $HTTP_SERVER_VARS["PHP_SELF"];
+			$From = basename($PHP_SELF);
+			$url = $From."?Lang=$Lang&".$Qs;
+
+			$jsTbl[] = "<SCRIPT TYPE=\"text/javascript\" LANGUAGE=\"JavaScript\">";
+			$jsTbl[] = "<!--";
+			$jsTbl[] = "msgconf = \"".S_MAIN_1."\";";
+			$jsTbl[] = "if (!confirm(msgconf)) window.location = \"$url\";";
+			$jsTbl[] = "// -->";
+			$jsTbl[] = "</SCRIPT>";
+		}
+	}
+
+	if (!$Error)
+	{
+		define("C_DB_TYPE", "${C_DB_TYPE}");
+		define("C_DB_HOST", "${C_DB_HOST}");
+		define("C_DB_NAME", "${C_DB_NAME}");
+		define("C_DB_USER", "${C_DB_USER}");
+		define("C_DB_PASS", "${C_DB_PASS}");
+
+		if ($Create != 0) 
+		{
+			include("./lib/database/${C_DB_TYPE}.lib.php");
+			include("./install/database/${C_DB_TYPE}.dump.php");
+
+			$DbLink = new DB;
+			switch ($Create)
+			{
+				case '1':
+					$Todo = $Upd2_Tab;
+					break;
+				case '2':
+					$Todo = $Upd_Tab;
+					break;
+				case '3':
+					$Todo = $Create_Tab;
+			};
+			for (reset($Todo); $query=current($Todo); next($Todo))
+			{
+				$DbLink->query($query);
+			};
+			if ($Create != 3 && C_DB_TYPE == "mysql")
+			{
+				$DbLink->optimize($C_MSG_TBL);
+				$DbLink->optimize($C_USR_TBL);
+				$DbLink->optimize($C_REG_TBL);
+				$DbLink->optimize($C_BAN_TBL);
+			};
+			$DbLink->close();
+			$ErrorMsg = S_MAIN_2;
+		}
+		else
+		{
+			$ErrorMsg = S_MAIN_3;
+		}
+
+		$next = 2;
+	}
+	else
+	{
+		$ErrorMsg = S_MAIN_4;
+		$next = 1;
+	}
+}
+
+if ($Form_Send == 2)
+{
+	$Error = true;
+	if (trim($C_MSG_DEL) == "" || trim($C_USR_DEL) == "" || trim($C_REG_DEL) == "")
+	{
+		$ErrorMsg = S_MAIN_5;
+	}
+	elseif (trim($C_PUB_CHAT_ROOMS) == "")
+	{
+		$ErrorMsg = S_MAIN_6;
+	}
+	elseif (ereg("[\]", stripslashes($C_PUB_CHAT_ROOMS)) || ereg("[\]", stripslashes($C_PRIV_CHAT_ROOMS)))
+	{
+		$ErrorMsg = S_MAIN_7;
+	}
+	elseif (trim($C_TMZ_OFFSET) == "")
+	{
+		$ErrorMsg = S_MAIN_8;
+	}
+	elseif (trim($C_MSG_NB) == "" || trim($C_MSG_REFRESH) == "")
+	{
+		$ErrorMsg = S_MAIN_9;
+	}
+	else
+	{
+		if (!isset($C_MULTI_LANG)) $C_MULTI_LANG = 0;
+		if (!isset($C_REQUIRE_REGISTER)) $C_REQUIRE_REGISTER = 0;
+		if (!isset($C_EMAIL_PASWD)) $C_EMAIL_PASWD = 0;
+		if (!isset($C_SHOW_ADMIN)) $C_SHOW_ADMIN = 0;
+		if (!isset($C_SHOW_DEL_PROF)) $C_SHOW_DEL_PROF = 0;
+		if (!isset($C_MSG_ORDER)) $C_MSG_ORDER = 0;
+		if (!isset($C_SHOW_TIMESTAMP)) $C_SHOW_TIMESTAMP = 0;
+		if (!isset($C_USE_SMILIES)) $C_USE_SMILIES = 0;
+		if (!isset($C_HTML_TAGS_KEEP)) $C_HTML_TAGS_KEEP = "none";
+		if (!isset($C_HTML_TAGS_SHOW)) $C_HTML_TAGS_SHOW = 0;
+		if (!isset($C_BANISH) || $C_BANISH == "") $C_BANISH = 0;
+		if (!isset($C_NO_SWEAR)) $C_NO_SWEAR = 0;
+		if (trim($C_SAVE) == "") $C_SAVE = "*";
+		if (!isset($C_NOTIFY)) $C_NOTIFY = 0;
+		if (!isset($C_WELCOME)) $C_WELCOME = 0;
+
+		$Error = false;
+		$next = 3;
+		$ErrorMsg = S_MAIN_11;
+	}
+	
+	if ($Error)
+	{
+		$next = 2;
+		$old_error_reporting = error_reporting (E_ERROR | E_WARNING | E_PARSE); 
+		include("./localization/languages.lib.php");
+		error_reporting($old_error_reporting); 
+	}
+}
+
+if ($Form_Send == 3)
+{
+	if ($submit_type != S_SETUP3_12)
+	{	
+		$Error = true;
+		if (trim($ADM_LOG) == "")
+		{
+			$ErrorMsg = S_MAIN_12;
+		}
+		elseif (ereg("[\, ]", stripslashes($ADM_LOG)))
+		{
+			$ErrorMsg = S_MAIN_13;
+		}
+		elseif ($ADM_PASS == "")
+		{
+			$ErrorMsg = S_MAIN_14;
+		}
+		else
+		{
+			if (!isset($SHOWEMAIL)) $SHOWEMAIL = 0;
+			$Error = false;
+		}
+	}
+	else
+	{
+		$Error = false;
+
+	}
+
+	if (!$Error && $submit_type != S_SETUP3_12)
+	{	
+		define("C_DB_TYPE", "${C_DB_TYPE}");
+		define("C_DB_HOST", "${C_DB_HOST}");
+		define("C_DB_NAME", "${C_DB_NAME}");
+		define("C_DB_USER", "${C_DB_USER}");
+		define("C_DB_PASS", "${C_DB_PASS}");
+		$admin_pwd = md5(stripslashes($ADM_PASS));
+
+		include("./lib/database/${C_DB_TYPE}.lib.php");
+
+		$DbLink = new DB;
+		$DbLink->query("SELECT password FROM ${C_REG_TBL} WHERE username = '${ADM_LOG}' AND perms != 'admin' LIMIT 1");
+		if ($DbLink->num_rows() > 0)
+		{
+			list($Old_password) = $DbLink->next_record();
+			$DbLink->clean_results();
+			if ($Old_password != $admin_pwd)
+			{
+				$Error = true;
+				$ErrorMsg = sprintf(S_MAIN_15, $ADM_LOG);
+				$next = 3;
+			}
+			else
+			{
+				if ($Exist_Adm) $DbLink->query("DELETE FROM ${C_REG_TBL} WHERE perms='admin'");
+				$DbLink->query("UPDATE ${C_REG_TBL} SET perms='admin' WHERE username='${ADM_LOG}'");
+				$Exist_Adm = true;
+			}
+		}
+		else
+		{
+			$DbLink->clean_results();
+		}
+		$DbLink->close();
+
+		if (!$Error)
+		{
+			if (!isset($ADM_GENDER)) $ADM_GENDER = "";
+			include("./lib/get_IP.lib.php");		// Set the $IP var
+			if (!$Exist_Adm)
+			{
+				include("./install/database/${C_DB_TYPE}.dump.php");
+				$Adm_Query = $Create_Adm;
+			}
+			else
+			{
+				$Adm_Query = "UPDATE ${C_REG_TBL} SET username='${ADM_LOG}', password='${admin_pwd}', firstname='${ADM_FNAME}', lastname='${ADM_LNAME}', country='${ADM_LANG}', website='${ADM_WEB}', email='${ADM_EMAIL}', showemail=${SHOWEMAIL}, reg_time=".time().", ip='${IP}', gender='${ADM_GENDER}' WHERE perms='admin'";
+			}
+
+			$DbLink = new DB;
+			$DbLink->query($Adm_Query);
+			$DbLink->close();
+
+			$ErrorMsg = S_MAIN_16;
+			$next = 4;
+		}
+	}
+	elseif (!$Error)
+	{
+		$ErrorMsg = S_MAIN_17;
+		$next = 4;
+	}		
+	else
+	{
+		$next = 3;
+	}
+}
+
+if (!isset($next)) $next = 0;
+
+// For translations with an explicit charset (not the 'x-user-defined' one)
+if (!isset($S_FontName)) $S_FontName = "";
+?>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML dir="<?php echo(($Charset == "windows-1256") ? "RTL" : "LTR"); ?>">
+
+<HEAD>
+<TITLE><?php echo(APP_NAME." ".APP_VERSION." ".S_MAIN_18); ?></TITLE>
+<LINK REL="stylesheet" HREF="config/style.css.php?<?php echo("Charset=${S_Charset}&medium=${S_FontSize}&FontName=".urlencode($S_FontName)); ?>" TYPE="text/css">
+<?php
+if (isset($jsTbl))
+{
+	for (reset($jsTbl); $jsInst=current($jsTbl); next($jsTbl))
+	{
+		echo("$jsInst\n");
+	};
+	unset($jsTbl);
+};
+?>
+</HEAD>
+
+<BODY STYLE="background-color: #666699">
+<CENTER>
+
+<?php
+if (!isset($PHP_SELF)) $PHP_SELF = $HTTP_SERVER_VARS["PHP_SELF"];
+$From = basename($PHP_SELF);
+
+$TagClass = ((isset($Error) && $Error) ? "error" : "whois"); 
+if (isset($ErrorMsg) && $ErrorMsg) echo("<P CLASS=${TagClass}>$ErrorMsg</P>");
+
+include("./install/setup${next}.php");
+
+?>
+</CENTER>
+</BODY>
+
+</HTML>
\ No newline at end of file
diff -ruN 0.14.5/chat/tutorial_popup.php 0.15.0/chat/tutorial_popup.php
--- 0.14.5/chat/tutorial_popup.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/tutorial_popup.php	2004-04-01 03:06:26.000000000 -0600
@@ -0,0 +1,22 @@
+<?php
+require("./config/config.lib.php");
+require("./lib/release.lib.php");
+
+if (isset($HTTP_GET_VARS["L"])) $L = $HTTP_GET_VARS["L"];
+if (!isset($L))
+{
+	$L = "";
+}
+// Fix a security hole
+else if (!is_dir('./localization/'.$L))
+{
+	exit();
+}
+	
+if ($L == "" || !file_exists("./localization/${L}/localized.tutorial.php"))
+{
+	unset($L);
+	include("./localization/tutorial.lib.php");
+};
+require("./localization/${L}/localized.tutorial.php");
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/tutorial_popup.php3 0.15.0/chat/tutorial_popup.php3
--- 0.14.5/chat/tutorial_popup.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/tutorial_popup.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,22 +0,0 @@
-<?php
-require("./config/config.lib.php3");
-require("./lib/release.lib.php3");
-
-if (isset($HTTP_GET_VARS["L"])) $L = $HTTP_GET_VARS["L"];
-if (!isset($L))
-{
-	$L = "";
-}
-// Fix a security hole
-else if (!is_dir('./localization/'.$L))
-{
-	exit();
-}
-	
-if ($L == "" || !file_exists("./localization/${L}/localized.tutorial.php3"))
-{
-	unset($L);
-	include("./localization/tutorial.lib.php3");
-};
-require("./localization/${L}/localized.tutorial.php3");
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/usersH.php 0.15.0/chat/usersH.php
--- 0.14.5/chat/usersH.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/usersH.php	2004-04-01 03:06:26.000000000 -0600
@@ -0,0 +1,309 @@
+<?php
+// Get the names and values for vars sent to this script
+if (isset($HTTP_GET_VARS))
+{
+	while(list($name,$value) = each($HTTP_GET_VARS))
+	{
+		$$name = $value;
+	};
+};
+
+// Fix a security hole
+if (isset($L) && !is_dir('./localization/'.$L)) exit();
+	
+require("./config/config.lib.php");
+require("./localization/".$L."/localized.chat.php");
+require("./lib/release.lib.php");
+require("./lib/database/".C_DB_TYPE.".lib.php");
+require("./lib/clean.lib.php");
+
+// Special cache instructions for IE5+
+$CachePlus	= "";
+if (ereg("MSIE [56789]", (isset($HTTP_USER_AGENT)) ? $HTTP_USER_AGENT : getenv("HTTP_USER_AGENT"))) $CachePlus = ", pre-check=0, post-check=0, max-age=0";
+$now		= gmdate('D, d M Y H:i:s') . ' GMT';
+
+header("Expires: $now");
+header("Last-Modified: $now");
+header("Cache-Control: no-cache, must-revalidate".$CachePlus);
+header("Pragma: no-cache");
+header("Content-Type: text/html; charset=".$Charset);
+
+// Text direction
+$textDirection = ($Charset == "windows-1256") ? "RTL" : "LTR";
+
+// For translations with an explicit charset (not the 'x-user-defined' one)
+if (!isset($FontName)) $FontName = "";
+?>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML dir="<?php echo($textDirection); ?>">
+
+<HEAD>
+<TITLE><?php echo(APP_NAME); ?></TITLE>
+<LINK REL="stylesheet" HREF="config/style.css.php?<?php echo("Charset=${Charset}&medium=${FontSize}&FontName=".urlencode($FontName)); ?>" TYPE="text/css">
+<SCRIPT TYPE="text/javascript" LANGUAGE="javascript1.2">
+<!--
+// Add styles for positioned layers;
+if (window.parent.ver4)
+{
+	with (document) {
+		write("<STYLE TYPE=\"text/css\">");
+		if (parent.NS4) {
+			write(".parent {position:absolute; visibility:visible}");
+			write(".child {position:absolute; visibility:visible}");
+			write(".regular {position:absolute; visibility:visible}")
+		} else {
+			write(".child {display:none}")
+		};
+		write("<\/STYLE>");
+	}
+}
+
+// Get the Y scrolling position of the users frame;
+function GetY()
+{
+	window.parent.Y = (window.parent.NS4 ? window.pageYOffset : document.body.scrollTop);
+};
+
+// Initialize the collapsible outline;
+onload = window.parent.initIt;
+// -->
+</SCRIPT>
+</HEAD>
+
+<BODY CLASS="frame" onUnload="GetY();">
+<P>
+<?php
+// Special formats depending on users status
+function special_char($str,$lang,$type)
+{
+	$tag_open = (($type == 'a' || $type == 'm') ? "<I>":"");
+	$tag_close = ($tag_open != "" ? "</I>":"");
+	return $tag_open.($lang ? htmlentities($str) : htmlspecialchars($str)).$tag_close;
+}
+
+// Used inside javascript links 
+function special_char2($str,$lang)
+{
+	return ($lang ? htmlentities(addslashes($str)) : htmlspecialchars(addslashes($str)));
+}
+
+$DbLink = new DB;
+
+//** Build users list for the current room **
+if (C_DB_TYPE == 'mysql')
+{
+	$currentRoomQuery	= 'SELECT usr.username, usr.latin1, usr.status, reg.gender '
+						. 'FROM ' . C_USR_TBL . ' usr LEFT JOIN ' . C_REG_TBL . ' reg ON usr.username = reg.username '
+						. 'WHERE usr.room = \'' . $R . '\' '
+						. 'ORDER BY username';
+}
+else if (C_DB_TYPE == 'pgsql')
+{
+	$currentRoomQuery	= 'SELECT usr.username, usr.latin1, usr.status, reg.gender '
+						. 'FROM ' . C_USR_TBL . ' usr, ' . C_REG_TBL . ' reg '
+						. 'WHERE usr.room = \'' . $R . '\' AND usr.username = reg.username '
+						. 'UNION '
+						. 'SELECT usr.username, usr.latin1, usr.status, NULL AS gender '
+						. 'FROM ' . C_USR_TBL . ' usr '
+						. 'WHERE usr.username NOT IN (SELECT reg.username FROM ' . C_REG_TBL . ' reg) AND usr.room = \'' . $R . '\' '
+						. 'ORDER BY username';
+}
+else
+{
+	$currentRoomQuery	= 'SELECT usr.username, usr.latin1, usr.status, NULL AS gender '
+						. 'FROM ' . C_USR_TBL . ' usr '
+						. 'WHERE usr.room = \'' . $R . '\' '
+						. 'ORDER BY username';
+}
+
+$DbLink->query($currentRoomQuery);
+echo("<B>".htmlspecialchars(stripslashes($R))."</B><SPAN CLASS=\"small\"><BDO dir=\"${textDirection}\"></BDO>&nbsp;(".$DbLink->num_rows().")</SPAN><BR>\n");
+echo("<DIV STYLE=\"margin-bottom: 10px\">\n");
+while(list($User, $Latin1, $status, $gender) = $DbLink->next_record())
+{
+	// Put an icon when there is a profile for the user
+	if($gender == 0)
+		$gender = 'undefined';
+	elseif($gender == 1)
+		$gender = 'boy';
+	elseif($gender == 2)
+		$gender = 'girl';
+	else
+		$gender = 'none';
+	if ($status != "u" && $status != "k" && $status != "d" && $status != "b")
+	{
+		$Cmd2Send = ($User == stripslashes($U) ? "'PROFILE',''" : "'WHOIS','".special_char2($User,$Latin1)."'");
+		echo('<a href="#" onClick="window.parent.runCmd('.$Cmd2Send.'); return false;" class="user"><img src="images/gender_'.$gender.'.gif" width="14" height="14" border="0" alt="'.L_PROFILE.'"></a>&nbsp;');
+	}
+	else
+	{
+		echo('<img src="images/gender_none.gif" width="14" height="14" border="0" alt="' . L_NO_PROFILE . '">&nbsp;');
+	}
+	if($User != stripslashes($U))
+	{
+		echo("<A HREF=\"javascript:window.parent.userClick('".special_char2($User,$Latin1)."',false);\" CLASS=\"user\">".special_char($User,$Latin1,$status)."</A><BR>\n");
+	}
+	else
+	{
+		echo(special_char($User,$Latin1,$status)."<BR>\n");
+	}
+}
+echo("</DIV>\n");
+$DbLink->clean_results();
+
+//** Build users list for other rooms **
+$AddPwd2Link = (isset($PWD_Hash) && $PWD_Hash != "") ? "&PWD_Hash=$PWD_Hash" : "";
+$DbLink->query("SELECT DISTINCT room FROM ".C_MSG_TBL." WHERE room != '$R' AND type = 1 ORDER BY room");
+if($DbLink->num_rows() > 0)
+{
+	$i = 0;
+	$ChildNb = Array();
+	$OthersUsers = new DB;
+	while(list($Other) = $DbLink->next_record())
+	{
+		if (C_DB_TYPE == 'mysql')
+		{
+			$otherRoomsQuery	= 'SELECT usr.username, usr.latin1, usr.status, reg.gender '
+								. 'FROM ' . C_USR_TBL . ' usr LEFT JOIN ' . C_REG_TBL . ' reg ON usr.username = reg.username '
+								. 'WHERE usr.room = \'' . addslashes($Other) . '\' '
+								. 'ORDER BY username';
+		}
+		else if (C_DB_TYPE == 'pgsql')
+		{
+			$otherRoomsQuery	= 'SELECT usr.username, usr.latin1, usr.status, reg.gender '
+								. 'FROM ' . C_USR_TBL . ' usr, ' . C_REG_TBL . ' reg '
+								. 'WHERE usr.room = \'' . addslashes($Other) . '\' AND usr.username = reg.username '
+								. 'UNION '
+								. 'SELECT usr.username, usr.latin1, usr.status, NULL AS gender '
+								. 'FROM ' . C_USR_TBL . ' usr '
+								. 'WHERE usr.username NOT IN (SELECT reg.username FROM ' . C_REG_TBL . ' reg) AND usr.room = \'' . addslashes($Other) . '\' '
+								. 'ORDER BY username';
+		}
+		else
+		{
+			$otherRoomsQuery	= 'SELECT usr.username, usr.latin1, usr.status, NULL AS gender '
+								. 'FROM ' . C_USR_TBL . ' usr '
+								. 'WHERE usr.room = \'' . addslashes($Other) . '\' '
+								. 'ORDER BY username';
+		}
+
+		$OthersUsers->query($otherRoomsQuery);
+		if($OthersUsers->num_rows() > 0)
+		{
+			$i++;
+			$id = md5($Other);
+			if ($i == 1) $FirstOtherRoom = "Parent".$id;
+			echo("<DIV ID=\"Parent${id}\" CLASS=\"parent\" STYLE=\"margin-top: 10px; CURSOR: hand\">");
+			echo("<A HREF=\"#\" onClick=\"window.parent.expandIt('${id}'); return false\">");
+			echo("<IMG NAME=\"imEx\" SRC=\"images/closed.gif\" WIDTH=9 HEIGHT=9 BORDER=0 ALT=\"".L_EXPCOL."\"></A>");
+			echo("&nbsp;<A HREF=\"$From?Ver=H&L=$L&U=".urlencode(stripslashes($U))."$AddPwd2Link&R1=".urlencode($Other)."&T=1&D=$D&N=$N&E=".urlencode(stripslashes($R))."&EN=$T\" TARGET=\"_parent\">".htmlspecialchars($Other)."</A><SPAN CLASS=\"small\"><BDO dir=\"${textDirection}\"></BDO>&nbsp;(".$OthersUsers->num_rows().")</SPAN>");
+			echo("</DIV>\n");
+			echo("<DIV ID=\"Child${id}\" CLASS=\"child\" STYLE=\"margin-left: 12px\">\n");
+			$j = 0;
+			while(list($OtherUser, $Latin1, $status, $gender) = $OthersUsers->next_record())
+			{
+				$j++;
+				// Put an icon when there is a profile for the user
+				if($gender == 0)
+					$gender = 'undefined';
+				elseif($gender == 1)
+					$gender = 'boy';
+				elseif($gender == 2)
+					$gender = 'girl';
+				else
+					$gender = 'none';
+				if ($status != "u" && $status != "k" && $status != "d" && $status != "b")
+				{
+					echo('<a href="#" onClick="window.parent.runCmd(\'WHOIS\',\''.special_char2($OtherUser,$Latin1).'\'); return false;" class="user"><img src="images/gender_'.$gender.'.gif" width="14" height="14" border="0" alt="'.L_PROFILE.'"></a>&nbsp;');
+				}
+				else
+				{
+					echo('<img src="images/gender_none.gif" width="14" height="14" border="0" alt="' . L_NO_PROFILE . '">&nbsp;');
+				}
+				echo("<A HREF=\"javascript:window.parent.userClick('".special_char2($OtherUser,$Latin1)."',false);\" CLASS=\"user\">".special_char($OtherUser,$Latin1,$status)."</A><BR>\n");
+			}
+			echo("</DIV>\n");
+			$ChildNb[$id] = $j;
+		}
+		$OthersUsers->clean_results();
+	}
+}
+$DbLink->clean_results();
+$DbLink->close();
+
+// Display all rest default rooms
+for($k = 0; $k < count($DefaultChatRooms); $k++)
+{
+	$tmpRoom = stripslashes($DefaultChatRooms[$k]);
+	$id = md5($tmpRoom);
+
+	// Display this room name when it hadn't been displayed yet
+	if (strcasecmp($tmpRoom, stripslashes($R)) != 0 && (!isset($ChildNb) || !isset($ChildNb[$id])))
+	{
+		if (!isset($FirstOtherRoom))
+			$FirstOtherRoom = "Parent".$id;
+
+        echo("<DIV ID=\"Parent${id}\" CLASS=\"parent\" STYLE=\"margin-top: 10px; CURSOR: hand\">");
+        echo("<A HREF=\"$From?Ver=H&L=$L&U=".urlencode(stripslashes($U))."$AddPwd2Link&R0=".urlencode($tmpRoom)."&T=1&D=$D&N=$N&E=".urlencode(stripslashes($R))."&EN=$T\" TARGET=\"_parent\">".htmlspecialchars($tmpRoom)."</A><SPAN CLASS=\"small\"><BDO dir=\"${textDirection}\"></BDO>&nbsp;(0)</SPAN>");
+        echo("</DIV>\n");
+    };
+}
+?>
+</P>
+
+<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript1.2">
+<!--
+window.parent.rooms_number = <?php echo(isset($i) ? "$i" : "0"); ?>;
+window.parent.usersFrame = window;
+window.parent.exitFrame = window.parent.frames['exit'].window;
+
+<?php
+if (isset($ChildNb) && count($ChildNb) > 0)
+{
+	?>
+	// Set the table containing number of users per 'others' rooms
+	window.parent.ChildNb = new Array;
+	<?php
+	while(list($key, $nb) = each($ChildNb))
+	{
+		echo("window.parent.ChildNb['$key'] = '$nb';\n");
+	};
+	unset($ChildNb);
+};
+?>
+
+// Get the index of the first expandable/collapsible room under NN4+
+if (window.parent.NS4)
+{
+	<?php
+	if (isset($FirstOtherRoom))
+	{
+		?>
+		firstEl = "<?php echo($FirstOtherRoom); ?>";
+		firstInd = window.parent.getIndex(firstEl);
+		window.parent.arrange();
+		<?php
+	}
+	else
+	{
+		?>
+		firstInd = null;
+		<?php
+	}
+	?>
+};
+
+// Scrolls to the position where the frame was before reloading
+if (window.parent.Y != null)
+{
+	scrollTo(0, window.parent.Y);
+	if (window.parent.IE4) scrollBy(0, window.parent.Y-document.body.scrollTop);
+};
+//-->
+</SCRIPT>
+</BODY>
+
+</HTML>
+<?php
+
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/usersH.php3 0.15.0/chat/usersH.php3
--- 0.14.5/chat/usersH.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/usersH.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,309 +0,0 @@
-<?php
-// Get the names and values for vars sent to this script
-if (isset($HTTP_GET_VARS))
-{
-	while(list($name,$value) = each($HTTP_GET_VARS))
-	{
-		$$name = $value;
-	};
-};
-
-// Fix a security hole
-if (isset($L) && !is_dir('./localization/'.$L)) exit();
-	
-require("./config/config.lib.php3");
-require("./localization/".$L."/localized.chat.php3");
-require("./lib/release.lib.php3");
-require("./lib/database/".C_DB_TYPE.".lib.php3");
-require("./lib/clean.lib.php3");
-
-// Special cache instructions for IE5+
-$CachePlus	= "";
-if (ereg("MSIE [56789]", (isset($HTTP_USER_AGENT)) ? $HTTP_USER_AGENT : getenv("HTTP_USER_AGENT"))) $CachePlus = ", pre-check=0, post-check=0, max-age=0";
-$now		= gmdate('D, d M Y H:i:s') . ' GMT';
-
-header("Expires: $now");
-header("Last-Modified: $now");
-header("Cache-Control: no-cache, must-revalidate".$CachePlus);
-header("Pragma: no-cache");
-header("Content-Type: text/html; charset=".$Charset);
-
-// Text direction
-$textDirection = ($Charset == "windows-1256") ? "RTL" : "LTR";
-
-// For translations with an explicit charset (not the 'x-user-defined' one)
-if (!isset($FontName)) $FontName = "";
-?>
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<HTML dir="<?php echo($textDirection); ?>">
-
-<HEAD>
-<TITLE><?php echo(APP_NAME); ?></TITLE>
-<LINK REL="stylesheet" HREF="config/style.css.php3?<?php echo("Charset=${Charset}&medium=${FontSize}&FontName=${FontName}"); ?>" TYPE="text/css">
-<SCRIPT TYPE="text/javascript" LANGUAGE="javascript1.2">
-<!--
-// Add styles for positioned layers;
-if (window.parent.ver4)
-{
-	with (document) {
-		write("<STYLE TYPE=\"text/css\">");
-		if (parent.NS4) {
-			write(".parent {position:absolute; visibility:visible}");
-			write(".child {position:absolute; visibility:visible}");
-			write(".regular {position:absolute; visibility:visible}")
-		} else {
-			write(".child {display:none}")
-		};
-		write("<\/STYLE>");
-	}
-}
-
-// Get the Y scrolling position of the users frame;
-function GetY()
-{
-	window.parent.Y = (window.parent.NS4 ? window.pageYOffset : document.body.scrollTop);
-};
-
-// Initialize the collapsible outline;
-onload = window.parent.initIt;
-// -->
-</SCRIPT>
-</HEAD>
-
-<BODY CLASS="frame" onUnload="GetY();">
-<P>
-<?php
-// Special formats depending on users status
-function special_char($str,$lang,$type)
-{
-	$tag_open = (($type == 'a' || $type == 'm') ? "<I>":"");
-	$tag_close = ($tag_open != "" ? "</I>":"");
-	return $tag_open.($lang ? htmlentities($str) : htmlspecialchars($str)).$tag_close;
-}
-
-// Used inside javascript links 
-function special_char2($str,$lang)
-{
-	return ($lang ? htmlentities(addslashes($str)) : htmlspecialchars(addslashes($str)));
-}
-
-$DbLink = new DB;
-
-//** Build users list for the current room **
-if (C_DB_TYPE == 'mysql')
-{
-	$currentRoomQuery	= 'SELECT usr.username, usr.latin1, usr.status, reg.gender '
-						. 'FROM ' . C_USR_TBL . ' usr LEFT JOIN ' . C_REG_TBL . ' reg ON usr.username = reg.username '
-						. 'WHERE usr.room = \'' . $R . '\' '
-						. 'ORDER BY username';
-}
-else if (C_DB_TYPE == 'pgsql')
-{
-	$currentRoomQuery	= 'SELECT usr.username, usr.latin1, usr.status, reg.gender '
-						. 'FROM ' . C_USR_TBL . ' usr, ' . C_REG_TBL . ' reg '
-						. 'WHERE usr.room = \'' . $R . '\' AND usr.username = reg.username '
-						. 'UNION '
-						. 'SELECT usr.username, usr.latin1, usr.status, NULL AS gender '
-						. 'FROM ' . C_USR_TBL . ' usr '
-						. 'WHERE usr.username NOT IN (SELECT reg.username FROM ' . C_REG_TBL . ' reg) AND usr.room = \'' . $R . '\' '
-						. 'ORDER BY username';
-}
-else
-{
-	$currentRoomQuery	= 'SELECT usr.username, usr.latin1, usr.status, NULL AS gender '
-						. 'FROM ' . C_USR_TBL . ' usr '
-						. 'WHERE usr.room = \'' . $R . '\' '
-						. 'ORDER BY username';
-}
-
-$DbLink->query($currentRoomQuery);
-echo("<B>".htmlspecialchars(stripslashes($R))."</B><SPAN CLASS=\"small\"><BDO dir=\"${textDirection}\"></BDO>&nbsp;(".$DbLink->num_rows().")</SPAN><BR>\n");
-echo("<DIV STYLE=\"margin-bottom: 10px\">\n");
-while(list($User, $Latin1, $status, $gender) = $DbLink->next_record())
-{
-	// Put an icon when there is a profile for the user
-	if($gender == 0)
-		$gender = 'undefined';
-	elseif($gender == 1)
-		$gender = 'boy';
-	elseif($gender == 2)
-		$gender = 'girl';
-	else
-		$gender = 'none';
-	if ($status != "u" && $status != "k" && $status != "d" && $status != "b")
-	{
-		$Cmd2Send = ($User == stripslashes($U) ? "'PROFILE',''" : "'WHOIS','".special_char2($User,$Latin1)."'");
-		echo('<a href="#" onClick="window.parent.runCmd('.$Cmd2Send.'); return false;" class="user"><img src="images/gender_'.$gender.'.gif" width="14" height="14" border="0" alt="'.L_PROFILE.'"></a>&nbsp;');
-	}
-	else
-	{
-		echo('<img src="images/gender_none.gif" width="14" height="14" border="0" alt="' . L_NO_PROFILE . '">&nbsp;');
-	}
-	if($User != stripslashes($U))
-	{
-		echo("<A HREF=\"javascript:window.parent.userClick('".special_char2($User,$Latin1)."',false);\" CLASS=\"user\">".special_char($User,$Latin1,$status)."</A><BR>\n");
-	}
-	else
-	{
-		echo(special_char($User,$Latin1,$status)."<BR>\n");
-	}
-}
-echo("</DIV>\n");
-$DbLink->clean_results();
-
-//** Build users list for other rooms **
-$AddPwd2Link = (isset($PWD_Hash) && $PWD_Hash != "") ? "&PWD_Hash=$PWD_Hash" : "";
-$DbLink->query("SELECT DISTINCT room FROM ".C_MSG_TBL." WHERE room != '$R' AND type = 1 ORDER BY room");
-if($DbLink->num_rows() > 0)
-{
-	$i = 0;
-	$ChildNb = Array();
-	$OthersUsers = new DB;
-	while(list($Other) = $DbLink->next_record())
-	{
-		if (C_DB_TYPE == 'mysql')
-		{
-			$otherRoomsQuery	= 'SELECT usr.username, usr.latin1, usr.status, reg.gender '
-								. 'FROM ' . C_USR_TBL . ' usr LEFT JOIN ' . C_REG_TBL . ' reg ON usr.username = reg.username '
-								. 'WHERE usr.room = \'' . addslashes($Other) . '\' '
-								. 'ORDER BY username';
-		}
-		else if (C_DB_TYPE == 'pgsql')
-		{
-			$otherRoomsQuery	= 'SELECT usr.username, usr.latin1, usr.status, reg.gender '
-								. 'FROM ' . C_USR_TBL . ' usr, ' . C_REG_TBL . ' reg '
-								. 'WHERE usr.room = \'' . addslashes($Other) . '\' AND usr.username = reg.username '
-								. 'UNION '
-								. 'SELECT usr.username, usr.latin1, usr.status, NULL AS gender '
-								. 'FROM ' . C_USR_TBL . ' usr '
-								. 'WHERE usr.username NOT IN (SELECT reg.username FROM ' . C_REG_TBL . ' reg) AND usr.room = \'' . addslashes($Other) . '\' '
-								. 'ORDER BY username';
-		}
-		else
-		{
-			$otherRoomsQuery	= 'SELECT usr.username, usr.latin1, usr.status, NULL AS gender '
-								. 'FROM ' . C_USR_TBL . ' usr '
-								. 'WHERE usr.room = \'' . addslashes($Other) . '\' '
-								. 'ORDER BY username';
-		}
-
-		$OthersUsers->query($otherRoomsQuery);
-		if($OthersUsers->num_rows() > 0)
-		{
-			$i++;
-			$id = md5($Other);
-			if ($i == 1) $FirstOtherRoom = "Parent".$id;
-			echo("<DIV ID=\"Parent${id}\" CLASS=\"parent\" STYLE=\"margin-top: 10px; CURSOR: hand\">");
-			echo("<A HREF=\"#\" onClick=\"window.parent.expandIt('${id}'); return false\">");
-			echo("<IMG NAME=\"imEx\" SRC=\"images/closed.gif\" WIDTH=9 HEIGHT=9 BORDER=0 ALT=\"".L_EXPCOL."\"></A>");
-			echo("&nbsp;<A HREF=\"$From?Ver=H&L=$L&U=".urlencode(stripslashes($U))."$AddPwd2Link&R1=".urlencode($Other)."&T=1&D=$D&N=$N&E=".urlencode(stripslashes($R))."&EN=$T\" TARGET=\"_parent\">".htmlspecialchars($Other)."</A><SPAN CLASS=\"small\"><BDO dir=\"${textDirection}\"></BDO>&nbsp;(".$OthersUsers->num_rows().")</SPAN>");
-			echo("</DIV>\n");
-			echo("<DIV ID=\"Child${id}\" CLASS=\"child\" STYLE=\"margin-left: 12px\">\n");
-			$j = 0;
-			while(list($OtherUser, $Latin1, $status, $gender) = $OthersUsers->next_record())
-			{
-				$j++;
-				// Put an icon when there is a profile for the user
-				if($gender == 0)
-					$gender = 'undefined';
-				elseif($gender == 1)
-					$gender = 'boy';
-				elseif($gender == 2)
-					$gender = 'girl';
-				else
-					$gender = 'none';
-				if ($status != "u" && $status != "k" && $status != "d" && $status != "b")
-				{
-					echo('<a href="#" onClick="window.parent.runCmd(\'WHOIS\',\''.special_char2($OtherUser,$Latin1).'\'); return false;" class="user"><img src="images/gender_'.$gender.'.gif" width="14" height="14" border="0" alt="'.L_PROFILE.'"></a>&nbsp;');
-				}
-				else
-				{
-					echo('<img src="images/gender_none.gif" width="14" height="14" border="0" alt="' . L_NO_PROFILE . '">&nbsp;');
-				}
-				echo("<A HREF=\"javascript:window.parent.userClick('".special_char2($OtherUser,$Latin1)."',false);\" CLASS=\"user\">".special_char($OtherUser,$Latin1,$status)."</A><BR>\n");
-			}
-			echo("</DIV>\n");
-			$ChildNb[$id] = $j;
-		}
-		$OthersUsers->clean_results();
-	}
-}
-$DbLink->clean_results();
-$DbLink->close();
-
-// Display all rest default rooms
-for($k = 0; $k < count($DefaultChatRooms); $k++)
-{
-	$tmpRoom = stripslashes($DefaultChatRooms[$k]);
-	$id = md5($tmpRoom);
-
-	// Display this room name when it hadn't been displayed yet
-	if (strcasecmp($tmpRoom, stripslashes($R)) != 0 && (!isset($ChildNb) || !isset($ChildNb[$id])))
-	{
-		if (!isset($FirstOtherRoom))
-			$FirstOtherRoom = "Parent".$id;
-
-        echo("<DIV ID=\"Parent${id}\" CLASS=\"parent\" STYLE=\"margin-top: 10px; CURSOR: hand\">");
-        echo("<A HREF=\"$From?Ver=H&L=$L&U=".urlencode(stripslashes($U))."$AddPwd2Link&R0=".urlencode($tmpRoom)."&T=1&D=$D&N=$N&E=".urlencode(stripslashes($R))."&EN=$T\" TARGET=\"_parent\">".htmlspecialchars($tmpRoom)."</A><SPAN CLASS=\"small\"><BDO dir=\"${textDirection}\"></BDO>&nbsp;(0)</SPAN>");
-        echo("</DIV>\n");
-    };
-}
-?>
-</P>
-
-<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript1.2">
-<!--
-window.parent.rooms_number = <?php echo(isset($i) ? "$i" : "0"); ?>;
-window.parent.usersFrame = window;
-window.parent.exitFrame = window.parent.frames['exit'].window;
-
-<?php
-if (isset($ChildNb) && count($ChildNb) > 0)
-{
-	?>
-	// Set the table containing number of users per 'others' rooms
-	window.parent.ChildNb = new Array;
-	<?php
-	while(list($key, $nb) = each($ChildNb))
-	{
-		echo("window.parent.ChildNb['$key'] = '$nb';\n");
-	};
-	unset($ChildNb);
-};
-?>
-
-// Get the index of the first expandable/collapsible room under NN4+
-if (window.parent.NS4)
-{
-	<?php
-	if (isset($FirstOtherRoom))
-	{
-		?>
-		firstEl = "<?php echo($FirstOtherRoom); ?>";
-		firstInd = window.parent.getIndex(firstEl);
-		window.parent.arrange();
-		<?php
-	}
-	else
-	{
-		?>
-		firstInd = null;
-		<?php
-	}
-	?>
-};
-
-// Scrolls to the position where the frame was before reloading
-if (window.parent.Y != null)
-{
-	scrollTo(0, window.parent.Y);
-	if (window.parent.IE4) scrollBy(0, window.parent.Y-document.body.scrollTop);
-};
-//-->
-</SCRIPT>
-</BODY>
-
-</HTML>
-<?php
-
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/usersL.php 0.15.0/chat/usersL.php
--- 0.14.5/chat/usersL.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/usersL.php	2004-04-01 03:06:26.000000000 -0600
@@ -0,0 +1,221 @@
+<?php
+// Get the names and values for vars sent to this script
+if (isset($HTTP_GET_VARS))
+{
+	while(list($name,$value) = each($HTTP_GET_VARS))
+	{
+		$$name = $value;
+	};
+};
+
+// Fix a security hole
+if (isset($L) && !is_dir('./localization/'.$L)) exit();
+	
+require("./config/config.lib.php");
+require("./localization/".$L."/localized.chat.php");
+require("./lib/release.lib.php");
+require("./lib/database/".C_DB_TYPE.".lib.php");
+require("./lib/clean.lib.php");
+
+// Special cache instructions for IE5+
+$CachePlus	= "";
+if (ereg("MSIE [56789]", (isset($HTTP_USER_AGENT)) ? $HTTP_USER_AGENT : getenv("HTTP_USER_AGENT"))) $CachePlus = ", pre-check=0, post-check=0, max-age=0";
+$now		= gmdate('D, d M Y H:i:s') . ' GMT';
+
+header("Expires: $now");
+header("Last-Modified: $now");
+header("Cache-Control: no-cache, must-revalidate".$CachePlus);
+header("Pragma: no-cache");
+header("Content-Type: text/html; charset=".$Charset);
+
+// Text direction
+$textDirection = ($Charset == "windows-1256") ? "RTL" : "LTR";
+
+// For translations with an explicit charset (not the 'x-user-defined' one)
+if (!isset($FontName)) $FontName = "";
+?>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML dir="<?php echo($textDirection); ?>">
+
+<HEAD>
+<TITLE><?php echo(APP_NAME); ?></TITLE>
+<?php
+echo('<meta HTTP-EQUIV="Refresh" CONTENT="30; URL=usersL.php?' . ((isset($QUERY_STRING)) ? $QUERY_STRING : getenv('QUERY_STRING')) . '">');
+?>
+<LINK REL="stylesheet" HREF="config/style.css.php?<?php echo("Charset=${Charset}&medium=${FontSize}&FontName=".urlencode($FontName)); ?>" TYPE="text/css">
+</HEAD>
+
+<BODY CLASS="frame">
+<P>
+<?php
+// Special formats depending on users status
+function special_char($str,$lang,$type)
+{
+	$tag_open = (($type == 'a' || $type == 'm') ? "<I>":"");
+	$tag_close = ($tag_open != "" ? "</I>":"");
+	return $tag_open.($lang ? htmlentities($str) : htmlspecialchars($str)).$tag_close;
+}
+
+// Used inside javascript links 
+function special_char2($str,$lang)
+{
+	return ($lang ? htmlentities(addslashes($str)) : htmlspecialchars(addslashes($str)));
+}
+
+$ImgNum = "0";
+
+$DbLink = new DB;
+
+//** Display users list for the current room **
+if (C_DB_TYPE == 'mysql')
+{
+	$currentRoomQuery	= 'SELECT usr.username, usr.latin1, usr.status, reg.gender '
+						. 'FROM ' . C_USR_TBL . ' usr LEFT JOIN ' . C_REG_TBL . ' reg ON usr.username = reg.username '
+						. 'WHERE usr.room = \'' . $R . '\' '
+						. 'ORDER BY username';
+}
+else if (C_DB_TYPE == 'pgsql')
+{
+	$currentRoomQuery	= 'SELECT usr.username, usr.latin1, usr.status, reg.gender '
+						. 'FROM ' . C_USR_TBL . ' usr, ' . C_REG_TBL . ' reg '
+						. 'WHERE usr.room = \'' . $R . '\' AND usr.username = reg.username '
+						. 'UNION '
+						. 'SELECT usr.username, usr.latin1, usr.status, NULL AS gender '
+						. 'FROM ' . C_USR_TBL . ' usr '
+						. 'WHERE usr.username NOT IN (SELECT reg.username FROM ' . C_REG_TBL . ' reg) AND usr.room = \'' . $R . '\' '
+						. 'ORDER BY username';
+}
+else
+{
+	$currentRoomQuery	= 'SELECT usr.username, usr.latin1, usr.status, NULL AS gender '
+						. 'FROM ' . C_USR_TBL . ' usr '
+						. 'WHERE usr.room = \'' . $R . '\' '
+						. 'ORDER BY username';
+}
+
+$DbLink->query($currentRoomQuery);
+echo("<B>".htmlspecialchars(stripslashes($R))."</B><SPAN CLASS=\"small\"><BDO dir=\"${textDirection}\"></BDO>&nbsp;(".$DbLink->num_rows().")</SPAN><BR>\n");
+while(list($User, $Latin1, $status, $gender) = $DbLink->next_record())
+{
+	// Put an icon when there is a profile for the user
+	if($gender == 0)
+		$gender = 'undefined';
+	elseif($gender == 1)
+		$gender = 'boy';
+	elseif($gender == 2)
+		$gender = 'girl';
+	else
+		$gender = 'none';
+	if ($status != "u" && $status != "k" && $status != "d" && $status != "b")
+	{
+		$Cmd2Send = ($User == stripslashes($U) ? "'PROFILE',''" : "'WHOIS','".special_char2($User,$Latin1)."'");
+		echo('<a href="#" onClick="window.parent.runCmd('.$Cmd2Send.'); return false;" class="user"><img src="images/gender_'.$gender.'.gif" width="14" height="14" border="0" alt="'.L_PROFILE.'"></a>&nbsp;');
+	}
+	else
+	{
+		echo('<img src="images/gender_none.gif" width="14" height="14" border="0" alt="' . L_NO_PROFILE . '">&nbsp;');
+	};
+	if($User != $U)
+	{
+		echo("<A HREF=\"javascript:window.parent.userClick('".special_char2($User,$Latin1)."',false);\" CLASS=\"user\">".special_char($User,$Latin1,$status)."</A><BR>\n");
+	}
+	else
+	{
+		echo(special_char($User,$Latin1,$status)."<BR>\n");
+	};
+}
+$DbLink->clean_results();
+?>
+</P>
+<P>
+<?php
+
+//** Display users list for other rooms **
+$AddPwd2Link = (isset($PWD_Hash) && $PWD_Hash != "") ? "&PWD_Hash=$PWD_Hash" : "";
+$DbLink->query("SELECT DISTINCT room FROM ".C_MSG_TBL." WHERE room != '$R' AND type = 1 ORDER BY room");
+if($DbLink->num_rows() > 0)
+{
+	$OthersUsers = new DB;
+	while(list($Other) = $DbLink->next_record())
+	{
+		if (C_DB_TYPE == 'mysql')
+		{
+			$otherRoomsQuery	= 'SELECT usr.username, usr.latin1, usr.status, reg.gender '
+								. 'FROM ' . C_USR_TBL . ' usr LEFT JOIN ' . C_REG_TBL . ' reg ON usr.username = reg.username '
+								. 'WHERE usr.room = \'' . addslashes($Other) . '\' '
+								. 'ORDER BY username';
+		}
+		else if (C_DB_TYPE == 'pgsql')
+		{
+			$otherRoomsQuery	= 'SELECT usr.username, usr.latin1, usr.status, reg.gender '
+								. 'FROM ' . C_USR_TBL . ' usr, ' . C_REG_TBL . ' reg '
+								. 'WHERE usr.room = \'' . addslashes($Other) . '\' AND usr.username = reg.username '
+								. 'UNION '
+								. 'SELECT usr.username, usr.latin1, usr.status, NULL AS gender '
+								. 'FROM ' . C_USR_TBL . ' usr '
+								. 'WHERE usr.username NOT IN (SELECT reg.username FROM ' . C_REG_TBL . ' reg) AND usr.room = \'' . addslashes($Other) . '\' '
+								. 'ORDER BY username';
+		}
+		else
+		{
+			$otherRoomsQuery	= 'SELECT usr.username, usr.latin1, usr.status, NULL AS gender '
+								. 'FROM ' . C_USR_TBL . ' usr '
+								. 'WHERE usr.room = \'' . addslashes($Other) . '\' '
+								. 'ORDER BY username';
+		}
+
+		$OthersUsers->query($otherRoomsQuery);
+		if($OthersUsers->num_rows() > 0)
+		{
+			$notEmptyRooms[$Other] = 1;
+			echo("<A HREF=\"$From?Ver=L&L=$L&U=".urlencode(stripslashes($U))."$AddPwd2Link&R1=".urlencode($Other)."&T=1&D=$D&N=$N&E=".urlencode(stripslashes($R))."&EN=$T\" TARGET=\"_parent\">".htmlspecialchars($Other)."</A><SPAN CLASS=\"small\"><BDO dir=\"${textDirection}\"></BDO>&nbsp;(".$OthersUsers->num_rows().")</SPAN><BR>\n");
+			while(list($OtherUser, $Latin1, $status, $gender) = $OthersUsers->next_record())
+			{
+				// Put an icon when there is a profile for the user
+				if($gender == 0)
+					$gender = 'undefined';
+				elseif($gender == 1)
+					$gender = 'boy';
+				elseif($gender == 2)
+					$gender = 'girl';
+				else
+					$gender = 'none';
+				if ($status != "u" && $status != "k" && $status != "d" && $status != "b")
+				{
+					echo('<a href="#" onClick="window.parent.runCmd(\'WHOIS\',\''.special_char2($OtherUser,$Latin1).'\'); return false;" class="user"><img src="images/gender_'.$gender.'.gif" width="14" height="14" border="0" alt="'.L_PROFILE.'"></a>&nbsp;');
+				}
+				else
+				{
+					echo('<img src="images/gender_none.gif" width="14" height="14" border="0" alt="' . L_NO_PROFILE . '">&nbsp;');
+				};
+				echo("<A HREF=\"javascript:window.parent.userClick('".special_char2($OtherUser,$Latin1)."',false);\" CLASS=\"user\">".special_char($OtherUser,$Latin1,$status)."</A><BR>\n");
+			}
+			echo("</P><P>");
+		}
+		$OthersUsers->clean_results();
+	}
+}
+$DbLink->clean_results();
+$DbLink->close();
+
+
+// Display all rest default rooms
+for($k = 0; $k < count($DefaultChatRooms); $k++)
+{
+	$tmpRoom = stripslashes($DefaultChatRooms[$k]);
+
+	// Display this room name when it hadn't been displayed yet
+	if (strcasecmp($tmpRoom, stripslashes($R)) != 0 && (!isset($notEmptyRooms) || !isset($notEmptyRooms[$tmpRoom])))
+	{
+		echo("<A HREF=\"$From?Ver=L&L=$L&U=".urlencode(stripslashes($U))."$AddPwd2Link&R0=".urlencode($tmpRoom)."&T=1&D=$D&N=$N&E=".urlencode(stripslashes($R))."&EN=$T\" TARGET=\"_parent\">".htmlspecialchars($tmpRoom)."</A><SPAN CLASS=\"small\"><BDO dir=\"${textDirection}\"></BDO>&nbsp;(0)</SPAN><BR>\n");
+    };
+};
+
+?>
+</P>
+</BODY>
+
+</HTML>
+<?php
+
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/usersL.php3 0.15.0/chat/usersL.php3
--- 0.14.5/chat/usersL.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/usersL.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,221 +0,0 @@
-<?php
-// Get the names and values for vars sent to this script
-if (isset($HTTP_GET_VARS))
-{
-	while(list($name,$value) = each($HTTP_GET_VARS))
-	{
-		$$name = $value;
-	};
-};
-
-// Fix a security hole
-if (isset($L) && !is_dir('./localization/'.$L)) exit();
-	
-require("./config/config.lib.php3");
-require("./localization/".$L."/localized.chat.php3");
-require("./lib/release.lib.php3");
-require("./lib/database/".C_DB_TYPE.".lib.php3");
-require("./lib/clean.lib.php3");
-
-// Special cache instructions for IE5+
-$CachePlus	= "";
-if (ereg("MSIE [56789]", (isset($HTTP_USER_AGENT)) ? $HTTP_USER_AGENT : getenv("HTTP_USER_AGENT"))) $CachePlus = ", pre-check=0, post-check=0, max-age=0";
-$now		= gmdate('D, d M Y H:i:s') . ' GMT';
-
-header("Expires: $now");
-header("Last-Modified: $now");
-header("Cache-Control: no-cache, must-revalidate".$CachePlus);
-header("Pragma: no-cache");
-header("Content-Type: text/html; charset=".$Charset);
-
-// Text direction
-$textDirection = ($Charset == "windows-1256") ? "RTL" : "LTR";
-
-// For translations with an explicit charset (not the 'x-user-defined' one)
-if (!isset($FontName)) $FontName = "";
-?>
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<HTML dir="<?php echo($textDirection); ?>">
-
-<HEAD>
-<TITLE><?php echo(APP_NAME); ?></TITLE>
-<?php
-echo('<meta HTTP-EQUIV="Refresh" CONTENT="30; URL=usersL.php3?' . ((isset($QUERY_STRING)) ? $QUERY_STRING : getenv('QUERY_STRING')) . '">');
-?>
-<LINK REL="stylesheet" HREF="config/style.css.php3?<?php echo("Charset=${Charset}&medium=${FontSize}&FontName=${FontName}"); ?>" TYPE="text/css">
-</HEAD>
-
-<BODY CLASS="frame">
-<P>
-<?php
-// Special formats depending on users status
-function special_char($str,$lang,$type)
-{
-	$tag_open = (($type == 'a' || $type == 'm') ? "<I>":"");
-	$tag_close = ($tag_open != "" ? "</I>":"");
-	return $tag_open.($lang ? htmlentities($str) : htmlspecialchars($str)).$tag_close;
-}
-
-// Used inside javascript links 
-function special_char2($str,$lang)
-{
-	return ($lang ? htmlentities(addslashes($str)) : htmlspecialchars(addslashes($str)));
-}
-
-$ImgNum = "0";
-
-$DbLink = new DB;
-
-//** Display users list for the current room **
-if (C_DB_TYPE == 'mysql')
-{
-	$currentRoomQuery	= 'SELECT usr.username, usr.latin1, usr.status, reg.gender '
-						. 'FROM ' . C_USR_TBL . ' usr LEFT JOIN ' . C_REG_TBL . ' reg ON usr.username = reg.username '
-						. 'WHERE usr.room = \'' . $R . '\' '
-						. 'ORDER BY username';
-}
-else if (C_DB_TYPE == 'pgsql')
-{
-	$currentRoomQuery	= 'SELECT usr.username, usr.latin1, usr.status, reg.gender '
-						. 'FROM ' . C_USR_TBL . ' usr, ' . C_REG_TBL . ' reg '
-						. 'WHERE usr.room = \'' . $R . '\' AND usr.username = reg.username '
-						. 'UNION '
-						. 'SELECT usr.username, usr.latin1, usr.status, NULL AS gender '
-						. 'FROM ' . C_USR_TBL . ' usr '
-						. 'WHERE usr.username NOT IN (SELECT reg.username FROM ' . C_REG_TBL . ' reg) AND usr.room = \'' . $R . '\' '
-						. 'ORDER BY username';
-}
-else
-{
-	$currentRoomQuery	= 'SELECT usr.username, usr.latin1, usr.status, NULL AS gender '
-						. 'FROM ' . C_USR_TBL . ' usr '
-						. 'WHERE usr.room = \'' . $R . '\' '
-						. 'ORDER BY username';
-}
-
-$DbLink->query($currentRoomQuery);
-echo("<B>".htmlspecialchars(stripslashes($R))."</B><SPAN CLASS=\"small\"><BDO dir=\"${textDirection}\"></BDO>&nbsp;(".$DbLink->num_rows().")</SPAN><BR>\n");
-while(list($User, $Latin1, $status, $gender) = $DbLink->next_record())
-{
-	// Put an icon when there is a profile for the user
-	if($gender == 0)
-		$gender = 'undefined';
-	elseif($gender == 1)
-		$gender = 'boy';
-	elseif($gender == 2)
-		$gender = 'girl';
-	else
-		$gender = 'none';
-	if ($status != "u" && $status != "k" && $status != "d" && $status != "b")
-	{
-		$Cmd2Send = ($User == stripslashes($U) ? "'PROFILE',''" : "'WHOIS','".special_char2($User,$Latin1)."'");
-		echo('<a href="#" onClick="window.parent.runCmd('.$Cmd2Send.'); return false;" class="user"><img src="images/gender_'.$gender.'.gif" width="14" height="14" border="0" alt="'.L_PROFILE.'"></a>&nbsp;');
-	}
-	else
-	{
-		echo('<img src="images/gender_none.gif" width="14" height="14" border="0" alt="' . L_NO_PROFILE . '">&nbsp;');
-	};
-	if($User != $U)
-	{
-		echo("<A HREF=\"javascript:window.parent.userClick('".special_char2($User,$Latin1)."',false);\" CLASS=\"user\">".special_char($User,$Latin1,$status)."</A><BR>\n");
-	}
-	else
-	{
-		echo(special_char($User,$Latin1,$status)."<BR>\n");
-	};
-}
-$DbLink->clean_results();
-?>
-</P>
-<P>
-<?php
-
-//** Display users list for other rooms **
-$AddPwd2Link = (isset($PWD_Hash) && $PWD_Hash != "") ? "&PWD_Hash=$PWD_Hash" : "";
-$DbLink->query("SELECT DISTINCT room FROM ".C_MSG_TBL." WHERE room != '$R' AND type = 1 ORDER BY room");
-if($DbLink->num_rows() > 0)
-{
-	$OthersUsers = new DB;
-	while(list($Other) = $DbLink->next_record())
-	{
-		if (C_DB_TYPE == 'mysql')
-		{
-			$otherRoomsQuery	= 'SELECT usr.username, usr.latin1, usr.status, reg.gender '
-								. 'FROM ' . C_USR_TBL . ' usr LEFT JOIN ' . C_REG_TBL . ' reg ON usr.username = reg.username '
-								. 'WHERE usr.room = \'' . addslashes($Other) . '\' '
-								. 'ORDER BY username';
-		}
-		else if (C_DB_TYPE == 'pgsql')
-		{
-			$otherRoomsQuery	= 'SELECT usr.username, usr.latin1, usr.status, reg.gender '
-								. 'FROM ' . C_USR_TBL . ' usr, ' . C_REG_TBL . ' reg '
-								. 'WHERE usr.room = \'' . addslashes($Other) . '\' AND usr.username = reg.username '
-								. 'UNION '
-								. 'SELECT usr.username, usr.latin1, usr.status, NULL AS gender '
-								. 'FROM ' . C_USR_TBL . ' usr '
-								. 'WHERE usr.username NOT IN (SELECT reg.username FROM ' . C_REG_TBL . ' reg) AND usr.room = \'' . addslashes($Other) . '\' '
-								. 'ORDER BY username';
-		}
-		else
-		{
-			$otherRoomsQuery	= 'SELECT usr.username, usr.latin1, usr.status, NULL AS gender '
-								. 'FROM ' . C_USR_TBL . ' usr '
-								. 'WHERE usr.room = \'' . addslashes($Other) . '\' '
-								. 'ORDER BY username';
-		}
-
-		$OthersUsers->query($otherRoomsQuery);
-		if($OthersUsers->num_rows() > 0)
-		{
-			$notEmptyRooms[$Other] = 1;
-			echo("<A HREF=\"$From?Ver=L&L=$L&U=".urlencode(stripslashes($U))."$AddPwd2Link&R1=".urlencode($Other)."&T=1&D=$D&N=$N&E=".urlencode(stripslashes($R))."&EN=$T\" TARGET=\"_parent\">".htmlspecialchars($Other)."</A><SPAN CLASS=\"small\"><BDO dir=\"${textDirection}\"></BDO>&nbsp;(".$OthersUsers->num_rows().")</SPAN><BR>\n");
-			while(list($OtherUser, $Latin1, $status, $gender) = $OthersUsers->next_record())
-			{
-				// Put an icon when there is a profile for the user
-				if($gender == 0)
-					$gender = 'undefined';
-				elseif($gender == 1)
-					$gender = 'boy';
-				elseif($gender == 2)
-					$gender = 'girl';
-				else
-					$gender = 'none';
-				if ($status != "u" && $status != "k" && $status != "d" && $status != "b")
-				{
-					echo('<a href="#" onClick="window.parent.runCmd(\'WHOIS\',\''.special_char2($OtherUser,$Latin1).'\'); return false;" class="user"><img src="images/gender_'.$gender.'.gif" width="14" height="14" border="0" alt="'.L_PROFILE.'"></a>&nbsp;');
-				}
-				else
-				{
-					echo('<img src="images/gender_none.gif" width="14" height="14" border="0" alt="' . L_NO_PROFILE . '">&nbsp;');
-				};
-				echo("<A HREF=\"javascript:window.parent.userClick('".special_char2($OtherUser,$Latin1)."',false);\" CLASS=\"user\">".special_char($OtherUser,$Latin1,$status)."</A><BR>\n");
-			}
-			echo("</P><P>");
-		}
-		$OthersUsers->clean_results();
-	}
-}
-$DbLink->clean_results();
-$DbLink->close();
-
-
-// Display all rest default rooms
-for($k = 0; $k < count($DefaultChatRooms); $k++)
-{
-	$tmpRoom = stripslashes($DefaultChatRooms[$k]);
-
-	// Display this room name when it hadn't been displayed yet
-	if (strcasecmp($tmpRoom, stripslashes($R)) != 0 && (!isset($notEmptyRooms) || !isset($notEmptyRooms[$tmpRoom])))
-	{
-		echo("<A HREF=\"$From?Ver=L&L=$L&U=".urlencode(stripslashes($U))."$AddPwd2Link&R0=".urlencode($tmpRoom)."&T=1&D=$D&N=$N&E=".urlencode(stripslashes($R))."&EN=$T\" TARGET=\"_parent\">".htmlspecialchars($tmpRoom)."</A><SPAN CLASS=\"small\"><BDO dir=\"${textDirection}\"></BDO>&nbsp;(0)</SPAN><BR>\n");
-    };
-};
-
-?>
-</P>
-</BODY>
-
-</HTML>
-<?php
-
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/users_popupH.php 0.15.0/chat/users_popupH.php
--- 0.14.5/chat/users_popupH.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/users_popupH.php	2004-04-01 03:06:27.000000000 -0600
@@ -0,0 +1,253 @@
+<?php
+// Get the names and values for vars sent by the script that called this one
+if (isset($HTTP_GET_VARS))
+{
+	while(list($name,$value) = each($HTTP_GET_VARS))
+	{
+		$$name = $value;
+	};
+};
+
+// Fix a security hole
+if (isset($L) && !is_dir('./localization/'.$L)) exit();
+	
+require("./config/config.lib.php");
+require("./localization/".$L."/localized.chat.php");
+require("./lib/release.lib.php");
+require("./lib/database/".C_DB_TYPE.".lib.php");
+require("./lib/clean.lib.php");
+
+// Special cache instructions for IE5+
+$CachePlus	= "";
+if (ereg("MSIE [56789]", (isset($HTTP_USER_AGENT)) ? $HTTP_USER_AGENT : getenv("HTTP_USER_AGENT"))) $CachePlus = ", pre-check=0, post-check=0, max-age=0";
+$now		= gmdate('D, d M Y H:i:s') . ' GMT';
+
+header("Expires: $now");
+header("Last-Modified: $now");
+header("Cache-Control: no-cache, must-revalidate".$CachePlus);
+header("Pragma: no-cache");
+header("Content-Type: text/html; charset=${Charset}");
+
+$DbLink = new DB;
+
+
+// ** Check for user entrance to beep **
+// Initialize some vars if necessary and put beep on/off in a cookie
+if (isset($HTTP_COOKIE_VARS["CookieBeep"])) $CookieBeep = $HTTP_COOKIE_VARS["CookieBeep"];
+if (!isset($B)) $B = (isset($CookieBeep) ? $CookieBeep : "1");
+setcookie("CookieBeep", $B, time() + 60*60*24*365);		// cookie expires in one year
+$BeepRoom = "0";
+if (!isset($LastCheck) || $B == "0") $LastCheck = time();
+
+if ($B > 0)
+{
+	$DbLink->query("SELECT m_time FROM ".C_MSG_TBL." WHERE m_time > '$LastCheck' AND username = 'SYS enter' AND type = 1 ORDER BY m_time DESC LIMIT 1");
+	if ($DbLink->num_rows() > 0)
+	{
+		$BeepRoom = "1";
+		list($LastCheck) = $DbLink->next_record();
+	};
+	$DbLink->clean_results();
+}
+
+// ** Prepare the http refresh header **
+$URL_Query = (isset($QUERY_STRING)) ? $QUERY_STRING : getenv("QUERY_STRING");
+if (!ereg("LastCheck", $URL_Query))
+{
+	$Refresh = $URL_Query."&LastCheck=${LastCheck}&B=${B}";
+}
+else
+{
+	$Refresh = ereg_replace("LastCheck=([0-9]+)","LastCheck=".$LastCheck, $URL_Query);
+}
+
+// ** Compute the beeps/nobeeps reload query used when the sound icon is clicked **
+$B1 =  ($B > 0 ? "0" : "1");
+$ChangeBeeps_Reload = ereg_replace("&B=([0-2])","&B=${B1}",$Refresh);
+
+// For translations with an explicit charset (not the 'x-user-defined' one)
+if (!isset($FontName)) $FontName = "";
+// Text direction
+$textDirection = ($Charset == "windows-1256") ? "RTL" : "LTR";
+?>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML dir="<?php echo($textDirection); ?>">
+
+<HEAD>
+<?php
+function special_char($str,$lang,$type)
+{
+	$tag_open = (($type == 'a' || $type == 'm') ? "<I>":"");
+	$tag_close = ($tag_open != "" ? "</I>":"");
+	return $tag_open.($lang ? htmlentities($str) : htmlspecialchars($str)).$tag_close;
+}
+
+// ** count rooms **
+$DbLink->query("SELECT DISTINCT u.room FROM ".C_USR_TBL." u, ".C_MSG_TBL." m WHERE u.room = m.room AND m.type = 1");
+$NbRooms = $DbLink->num_rows();
+$DbLink->clean_results();
+
+if ($NbRooms > 0)
+{
+	// ** count users **
+	$DbLink->query("SELECT DISTINCT u.username, u.latin1 FROM ".C_USR_TBL." u, ".C_MSG_TBL." m WHERE u.room = m.room AND m.type = 1 ORDER BY username");
+	$NbUsers = $DbLink->num_rows();
+	if($NbUsers > 3)
+	{
+		echo("<TITLE>".$NbUsers." ".($NbUsers > 1 ? L_USERS : L_USER)."/".$NbRooms." ".($NbRooms > 1 ? L_ROOMS : L_ROOM)."</TITLE>");
+	}
+	else
+	{
+		echo("<TITLE>");
+		$Term = "";
+		while(list($Username,$Latin1) = $DbLink->next_record())
+		{
+			echo($Term.special_char($Username,$Latin1,''));
+			$Term = ", ";
+		}
+		echo("</TITLE>");
+	};
+	$DbLink->clean_results();
+}
+else
+{
+	echo("<TITLE>".L_NO_USER."</TITLE>\n");
+};
+?>
+<META HTTP-EQUIV="Refresh" CONTENT="30; URL=users_popupH.php?<?php echo($Refresh); ?>">
+<LINK REL="stylesheet" HREF="config/style.css.php?<?php echo("Charset=${Charset}&medium=${FontSize}&FontName=".urlencode($FontName)); ?>" TYPE="text/css">
+
+<!-- Collapsible rooms scripts -->
+<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript1.2">
+<!--
+NS4 = (document.layers) ? 1 : 0;
+IE4 = ((document.all) && (parseInt(navigator.appVersion)>=4)) ? 1 : 0;
+ver4 = (NS4 || IE4) ? 1 : 0;
+//-->
+</SCRIPT>
+<SCRIPT SRC="lib/users_popupH.js" TYPE="text/javascript" LANGUAGE="JavaScript1.2"></SCRIPT>
+</HEAD>
+
+<BODY CLASS="frame" onClick="self.focus();">
+<CENTER>
+	<A HREF="<?php echo("$From?Ver=H&L=$L"); ?>" TARGET="_blank"><?php echo(L_CHAT); ?></A>
+	<P>
+		<A HREF="#" onClick="expandAll(); return false">
+		<IMG NAME="imEx_big" SRC="images/closed_big.gif" WIDTH=13 HEIGHT=13 ALIGN="MIDDLE" BORDER=0 ALT="<?php echo(L_EXPCOL_ALL); ?>"></A>
+		&nbsp;
+		<A HREF="users_popupH.php?<?php echo($ChangeBeeps_Reload); ?>"><IMG SRC="images/<?php if ($B == "0") echo("no"); ?>sound.gif" WIDTH=13 HEIGHT=13 ALIGN="MIDDLE" BORDER=0 ALT="<?php echo(L_BEEP); ?>"></A>
+	</P>
+</CENTER>
+
+<P>
+<?php
+
+//** Build users list **
+if(isset($NbUsers) && $NbUsers > 0)
+{
+	if($DbLink->query("SELECT DISTINCT room FROM ".C_MSG_TBL." WHERE type = 1 ORDER BY room"))
+	{
+		if($DbLink->num_rows() > 0)
+		{
+			$i = 0;
+			$ChildNb = Array();
+			$Users = new DB;
+			while(list($Other) = $DbLink->next_record())
+			{
+				if($Users->query("SELECT username, latin1, status FROM ".C_USR_TBL." WHERE room = '".addslashes($Other)."' ORDER BY username"))
+				{
+					if($Users->num_rows() > 0)
+					{
+						$i++;
+						$id = "room".$i;
+						echo("<DIV ID=\"${id}Parent\" CLASS=\"parent\" STYLE=\"margin-top: 5px; CURSOR: hand\">");
+						echo("<A HREF=\"#\" onClick=\"expandIt('${id}'); return false\">");
+						echo("<IMG NAME=\"imEx\" SRC=\"images/closed.gif\" WIDTH=9 HEIGHT=9 BORDER=0 ALT=\"".L_EXPCOL."\"></A>");
+						echo("&nbsp;<B>".htmlspecialchars($Other)."</B><SPAN CLASS=\"small\"><BDO dir=\"${textDirection}\"></BDO>&nbsp;(".$Users->num_rows().")</SPAN><BR>");
+						echo("</DIV>");
+						echo("<DIV ID=\"${id}Child\" CLASS=\"child\" STYLE=\"margin-left: 12px\">");
+						$j = 0;
+						while(list($Username,$Latin1,$status) = $Users->next_record())
+						{
+							$j++;
+							echo("-&nbsp;".special_char($Username,$Latin1,$status)."<BR>");
+						};
+						echo("</DIV>");
+						$ChildNb[$id] = $j;
+					}
+				}
+				$Users->clean_results();
+			}
+		}
+	}
+	$DbLink->clean_results();
+}
+else
+{
+	echo("<CENTER>".L_NO_USER."</CENTER>");
+}
+
+$DbLink->close();
+?>
+</P>
+
+<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript1.2">
+<!--
+rooms_number = <?php echo(isset($i) ? "$i" : "0"); ?>;
+
+<?php
+if (isset($ChildNb) && count($ChildNb) > 0)
+{
+	?>
+	// Set the table containing number of users per 'others' rooms
+	ChildNb = new Array;
+	<?php
+	while(list($key, $nb) = each($ChildNb))
+	{
+		echo("ChildNb['$key'] = '$nb';\n");
+	};
+	unset($ChildNb);
+};
+?>
+
+// Get the index of the first expandable/collapsible room under NN4+
+if (NS4)
+{
+	<?php
+	if ($NbRooms > 0)
+	{
+		?>
+		firstEl = "room1Parent";
+		firstInd = getIndex(firstEl);
+		arrange();
+		<?php
+	}
+	else
+	{
+		?>
+		firstInd = null;
+		<?php
+	}
+	?>
+}
+//-->
+</SCRIPT>
+
+<?php
+// ** Beeps if necessary **
+if ($BeepRoom)
+{
+	?>
+	<!-- Sound for user entrance -->
+	<EMBED SRC="images/beep.wav" HIDDEN="true" AUTOSTART="true" LOOP="false" NAME="Beep" MASTERSOUND>
+		<NOEMBED><BGSOUND SRC="images/beep.wav" LOOP=1></NOEMBED>
+	</EMBED>
+	<?php
+}
+?>
+</BODY>
+
+</HTML>
+<?php
+
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/users_popupH.php3 0.15.0/chat/users_popupH.php3
--- 0.14.5/chat/users_popupH.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/users_popupH.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,253 +0,0 @@
-<?php
-// Get the names and values for vars sent by the script that called this one
-if (isset($HTTP_GET_VARS))
-{
-	while(list($name,$value) = each($HTTP_GET_VARS))
-	{
-		$$name = $value;
-	};
-};
-
-// Fix a security hole
-if (isset($L) && !is_dir('./localization/'.$L)) exit();
-	
-require("./config/config.lib.php3");
-require("./localization/".$L."/localized.chat.php3");
-require("./lib/release.lib.php3");
-require("./lib/database/".C_DB_TYPE.".lib.php3");
-require("./lib/clean.lib.php3");
-
-// Special cache instructions for IE5+
-$CachePlus	= "";
-if (ereg("MSIE [56789]", (isset($HTTP_USER_AGENT)) ? $HTTP_USER_AGENT : getenv("HTTP_USER_AGENT"))) $CachePlus = ", pre-check=0, post-check=0, max-age=0";
-$now		= gmdate('D, d M Y H:i:s') . ' GMT';
-
-header("Expires: $now");
-header("Last-Modified: $now");
-header("Cache-Control: no-cache, must-revalidate".$CachePlus);
-header("Pragma: no-cache");
-header("Content-Type: text/html; charset=${Charset}");
-
-$DbLink = new DB;
-
-
-// ** Check for user entrance to beep **
-// Initialize some vars if necessary and put beep on/off in a cookie
-if (isset($HTTP_COOKIE_VARS["CookieBeep"])) $CookieBeep = $HTTP_COOKIE_VARS["CookieBeep"];
-if (!isset($B)) $B = (isset($CookieBeep) ? $CookieBeep : "1");
-setcookie("CookieBeep", $B, time() + 60*60*24*365);		// cookie expires in one year
-$BeepRoom = "0";
-if (!isset($LastCheck) || $B == "0") $LastCheck = time();
-
-if ($B > 0)
-{
-	$DbLink->query("SELECT m_time FROM ".C_MSG_TBL." WHERE m_time > '$LastCheck' AND username = 'SYS enter' AND type = 1 ORDER BY m_time DESC LIMIT 1");
-	if ($DbLink->num_rows() > 0)
-	{
-		$BeepRoom = "1";
-		list($LastCheck) = $DbLink->next_record();
-	};
-	$DbLink->clean_results();
-}
-
-// ** Prepare the http refresh header **
-$URL_Query = (isset($QUERY_STRING)) ? $QUERY_STRING : getenv("QUERY_STRING");
-if (!ereg("LastCheck", $URL_Query))
-{
-	$Refresh = $URL_Query."&LastCheck=${LastCheck}&B=${B}";
-}
-else
-{
-	$Refresh = ereg_replace("LastCheck=([0-9]+)","LastCheck=".$LastCheck, $URL_Query);
-}
-
-// ** Compute the beeps/nobeeps reload query used when the sound icon is clicked **
-$B1 =  ($B > 0 ? "0" : "1");
-$ChangeBeeps_Reload = ereg_replace("&B=([0-2])","&B=${B1}",$Refresh);
-
-// For translations with an explicit charset (not the 'x-user-defined' one)
-if (!isset($FontName)) $FontName = "";
-// Text direction
-$textDirection = ($Charset == "windows-1256") ? "RTL" : "LTR";
-?>
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<HTML dir="<?php echo($textDirection); ?>">
-
-<HEAD>
-<?php
-function special_char($str,$lang,$type)
-{
-	$tag_open = (($type == 'a' || $type == 'm') ? "<I>":"");
-	$tag_close = ($tag_open != "" ? "</I>":"");
-	return $tag_open.($lang ? htmlentities($str) : htmlspecialchars($str)).$tag_close;
-}
-
-// ** count rooms **
-$DbLink->query("SELECT DISTINCT u.room FROM ".C_USR_TBL." u, ".C_MSG_TBL." m WHERE u.room = m.room AND m.type = 1");
-$NbRooms = $DbLink->num_rows();
-$DbLink->clean_results();
-
-if ($NbRooms > 0)
-{
-	// ** count users **
-	$DbLink->query("SELECT DISTINCT u.username, u.latin1 FROM ".C_USR_TBL." u, ".C_MSG_TBL." m WHERE u.room = m.room AND m.type = 1 ORDER BY username");
-	$NbUsers = $DbLink->num_rows();
-	if($NbUsers > 3)
-	{
-		echo("<TITLE>".$NbUsers." ".($NbUsers > 1 ? L_USERS : L_USER)."/".$NbRooms." ".($NbRooms > 1 ? L_ROOMS : L_ROOM)."</TITLE>");
-	}
-	else
-	{
-		echo("<TITLE>");
-		$Term = "";
-		while(list($Username,$Latin1) = $DbLink->next_record())
-		{
-			echo($Term.special_char($Username,$Latin1,''));
-			$Term = ", ";
-		}
-		echo("</TITLE>");
-	};
-	$DbLink->clean_results();
-}
-else
-{
-	echo("<TITLE>".L_NO_USER."</TITLE>\n");
-};
-?>
-<META HTTP-EQUIV="Refresh" CONTENT="30; URL=users_popupH.php3?<?php echo($Refresh); ?>">
-<LINK REL="stylesheet" HREF="config/style.css.php3?<?php echo("Charset=${Charset}&medium=${FontSize}&FontName=${FontName}"); ?>" TYPE="text/css">
-
-<!-- Collapsible rooms scripts -->
-<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript1.2">
-<!--
-NS4 = (document.layers) ? 1 : 0;
-IE4 = ((document.all) && (parseInt(navigator.appVersion)>=4)) ? 1 : 0;
-ver4 = (NS4 || IE4) ? 1 : 0;
-//-->
-</SCRIPT>
-<SCRIPT SRC="lib/users_popupH.js" TYPE="text/javascript" LANGUAGE="JavaScript1.2"></SCRIPT>
-</HEAD>
-
-<BODY CLASS="frame" onClick="self.focus();">
-<CENTER>
-	<A HREF="<?php echo("$From?Ver=H&L=$L"); ?>" TARGET="_blank"><?php echo(L_CHAT); ?></A>
-	<P>
-		<A HREF="#" onClick="expandAll(); return false">
-		<IMG NAME="imEx_big" SRC="images/closed_big.gif" WIDTH=13 HEIGHT=13 ALIGN="MIDDLE" BORDER=0 ALT="<?php echo(L_EXPCOL_ALL); ?>"></A>
-		&nbsp;
-		<A HREF="users_popupH.php3?<?php echo($ChangeBeeps_Reload); ?>"><IMG SRC="images/<?php if ($B == "0") echo("no"); ?>sound.gif" WIDTH=13 HEIGHT=13 ALIGN="MIDDLE" BORDER=0 ALT="<?php echo(L_BEEP); ?>"></A>
-	</P>
-</CENTER>
-
-<P>
-<?php
-
-//** Build users list **
-if(isset($NbUsers) && $NbUsers > 0)
-{
-	if($DbLink->query("SELECT DISTINCT room FROM ".C_MSG_TBL." WHERE type = 1 ORDER BY room"))
-	{
-		if($DbLink->num_rows() > 0)
-		{
-			$i = 0;
-			$ChildNb = Array();
-			$Users = new DB;
-			while(list($Other) = $DbLink->next_record())
-			{
-				if($Users->query("SELECT username, latin1, status FROM ".C_USR_TBL." WHERE room = '".addslashes($Other)."' ORDER BY username"))
-				{
-					if($Users->num_rows() > 0)
-					{
-						$i++;
-						$id = "room".$i;
-						echo("<DIV ID=\"${id}Parent\" CLASS=\"parent\" STYLE=\"margin-top: 5px; CURSOR: hand\">");
-						echo("<A HREF=\"#\" onClick=\"expandIt('${id}'); return false\">");
-						echo("<IMG NAME=\"imEx\" SRC=\"images/closed.gif\" WIDTH=9 HEIGHT=9 BORDER=0 ALT=\"".L_EXPCOL."\"></A>");
-						echo("&nbsp;<B>".htmlspecialchars($Other)."</B><SPAN CLASS=\"small\"><BDO dir=\"${textDirection}\"></BDO>&nbsp;(".$Users->num_rows().")</SPAN><BR>");
-						echo("</DIV>");
-						echo("<DIV ID=\"${id}Child\" CLASS=\"child\" STYLE=\"margin-left: 12px\">");
-						$j = 0;
-						while(list($Username,$Latin1,$status) = $Users->next_record())
-						{
-							$j++;
-							echo("-&nbsp;".special_char($Username,$Latin1,$status)."<BR>");
-						};
-						echo("</DIV>");
-						$ChildNb[$id] = $j;
-					}
-				}
-				$Users->clean_results();
-			}
-		}
-	}
-	$DbLink->clean_results();
-}
-else
-{
-	echo("<CENTER>".L_NO_USER."</CENTER>");
-}
-
-$DbLink->close();
-?>
-</P>
-
-<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript1.2">
-<!--
-rooms_number = <?php echo(isset($i) ? "$i" : "0"); ?>;
-
-<?php
-if (isset($ChildNb) && count($ChildNb) > 0)
-{
-	?>
-	// Set the table containing number of users per 'others' rooms
-	ChildNb = new Array;
-	<?php
-	while(list($key, $nb) = each($ChildNb))
-	{
-		echo("ChildNb['$key'] = '$nb';\n");
-	};
-	unset($ChildNb);
-};
-?>
-
-// Get the index of the first expandable/collapsible room under NN4+
-if (NS4)
-{
-	<?php
-	if ($NbRooms > 0)
-	{
-		?>
-		firstEl = "room1Parent";
-		firstInd = getIndex(firstEl);
-		arrange();
-		<?php
-	}
-	else
-	{
-		?>
-		firstInd = null;
-		<?php
-	}
-	?>
-}
-//-->
-</SCRIPT>
-
-<?php
-// ** Beeps if necessary **
-if ($BeepRoom)
-{
-	?>
-	<!-- Sound for user entrance -->
-	<EMBED SRC="images/beep.wav" HIDDEN="true" AUTOSTART="true" LOOP="false" NAME="Beep" MASTERSOUND>
-		<NOEMBED><BGSOUND SRC="images/beep.wav" LOOP=1></NOEMBED>
-	</EMBED>
-	<?php
-}
-?>
-</BODY>
-
-</HTML>
-<?php
-
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/users_popupL.php 0.15.0/chat/users_popupL.php
--- 0.14.5/chat/users_popupL.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/users_popupL.php	2004-04-01 03:06:27.000000000 -0600
@@ -0,0 +1,182 @@
+<?php
+// Get the names and values for vars sent by the script that called this one
+if (isset($HTTP_GET_VARS))
+{
+	while(list($name,$value) = each($HTTP_GET_VARS))
+	{
+		$$name = $value;
+	};
+};
+
+// Fix a security hole
+if (isset($L) && !is_dir('./localization/'.$L)) exit();
+	
+require("./config/config.lib.php");
+require("./localization/".$L."/localized.chat.php");
+require("./lib/release.lib.php");
+require("./lib/database/".C_DB_TYPE.".lib.php");
+require("./lib/clean.lib.php");
+
+// Special cache instructions for IE5+
+$CachePlus = "";
+if (ereg("MSIE [56789]", (isset($HTTP_USER_AGENT)) ? $HTTP_USER_AGENT : getenv("HTTP_USER_AGENT"))) $CachePlus = ", pre-check=0, post-check=0, max-age=0";
+$now		= gmdate('D, d M Y H:i:s') . ' GMT';
+
+header("Expires: $now");
+header("Last-Modified: $now");
+header("Cache-Control: no-cache, must-revalidate".$CachePlus);
+header("Pragma: no-cache");
+header("Content-Type: text/html; charset=${Charset}");
+
+$DbLink = new DB;
+
+
+// ** Check for user entrance to beep **
+// Initialize some vars if necessary and put beep on/off in a cookie
+if (isset($HTTP_COOKIE_VARS["CookieBeep"])) $CookieBeep = $HTTP_COOKIE_VARS["CookieBeep"];
+if (!isset($B)) $B = (isset($CookieBeep) ? $CookieBeep : "1");
+setcookie("CookieBeep", $B, time() + 60*60*24*365);		// cookie expires in one year
+$BeepRoom = "0";
+if (!isset($LastCheck) || $B == "0") $LastCheck = time();
+
+if ($B > 0)
+{
+	$DbLink->query("SELECT m_time FROM ".C_MSG_TBL." WHERE m_time > '$LastCheck' AND username = 'SYS enter' AND type = 1 ORDER BY m_time DESC LIMIT 1");
+	if ($DbLink->num_rows() > 0)
+	{
+		$BeepRoom = "1";
+		list($LastCheck) = $DbLink->next_record();
+	};
+	$DbLink->clean_results();
+}
+
+// ** Prepare the http refresh header **
+$URL_Query = (isset($QUERY_STRING)) ? $QUERY_STRING : getenv("QUERY_STRING");
+if (!ereg("LastCheck", $URL_Query))
+{
+	$Refresh = $URL_Query."&LastCheck=${LastCheck}&B=${B}";
+}
+else
+{
+	$Refresh = ereg_replace("LastCheck=([0-9]+)","LastCheck=".$LastCheck, $URL_Query);
+}
+
+// ** Compute the beeps/nobeeps reload query used when the sound icon is clicked **
+$B1 =  ($B > 0 ? "0" : "1");
+$ChangeBeeps_Reload = ereg_replace("&B=([0-2])","&B=${B1}",$Refresh);
+
+// For translations with an explicit charset (not the 'x-user-defined' one)
+if (!isset($FontName)) $FontName = "";
+// Text direction
+$textDirection = ($Charset == "windows-1256") ? "RTL" : "LTR";
+?>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML dir="<?php echo($textDirection); ?>">
+
+<HEAD>
+<?php
+function special_char($str,$lang,$type)
+{
+	$tag_open = (($type == 'a' || $type == 'm') ? "<I>":"");
+	$tag_close = ($tag_open != "" ? "</I>":"");
+	return $tag_open.($lang ? htmlentities($str) : htmlspecialchars($str)).$tag_close;
+}
+
+// ** count rooms **
+$DbLink->query("SELECT DISTINCT u.room FROM ".C_USR_TBL." u, ".C_MSG_TBL." m WHERE u.room = m.room AND m.type = 1");
+$NbRooms = $DbLink->num_rows();
+$DbLink->clean_results();
+
+if ($NbRooms > 0)
+{
+	// ** count users **
+	$DbLink->query("SELECT DISTINCT u.username, u.latin1 FROM ".C_USR_TBL." u, ".C_MSG_TBL." m WHERE u.room = m.room AND m.type = 1 ORDER BY username");
+	$NbUsers = $DbLink->num_rows();
+	if($NbUsers > 3)
+	{
+		echo("<TITLE>".$NbUsers." ".($NbUsers > 1 ? L_USERS : L_USER)."/".$NbRooms." ".($NbRooms > 1 ? L_ROOMS : L_ROOM)."</TITLE>");
+	}
+	else
+	{
+		echo("<TITLE>");
+		$Term = "";
+		while(list($Username,$Latin1) = $DbLink->next_record())
+		{
+			echo($Term.special_char($Username,$Latin1,''));
+			$Term = ", ";
+		}
+		echo("</TITLE>");
+	};
+	$DbLink->clean_results();
+}
+else
+{
+	echo("<TITLE>".L_NO_USER."</TITLE>");
+}
+?>
+<META HTTP-EQUIV="Refresh" CONTENT="30; URL=users_popupL.php?<?php echo($Refresh); ?>">
+<LINK REL="stylesheet" HREF="config/style.css.php?<?php echo("Charset=${Charset}&medium=${FontSize}&FontName=".urlencode($FontName)); ?>" TYPE="text/css">
+</HEAD>
+
+<BODY CLASS="frame" onClick="self.focus();">
+<CENTER>
+	<A HREF="<?php echo("$From?Ver=L&L=$L"); ?>" TARGET="_blank"><?php echo(L_CHAT); ?></A>
+	<P><A HREF="users_popupL.php?<?php echo($ChangeBeeps_Reload); ?>"><IMG SRC="images/<?php if ($B == "0") echo("no"); ?>sound.gif" WIDTH=13 HEIGHT=13 ALIGN=MIDDLE BORDER=0 ALT="<?php echo(L_BEEP); ?>"></A></P>
+</CENTER>
+<P>
+<?php
+
+// ** Build users list **
+if(isset($NbUsers) && $NbUsers > 0)
+{
+	if($DbLink->query("SELECT DISTINCT room FROM ".C_MSG_TBL." WHERE type = 1 ORDER BY room"))
+	{
+		if($DbLink->num_rows() > 0)
+		{
+			$Users = new DB;
+			while(list($Other) = $DbLink->next_record())
+			{
+				if($Users->query("SELECT username, latin1, status FROM ".C_USR_TBL." WHERE room = '".addslashes($Other)."' ORDER BY username"))
+				{
+					if($Users->num_rows() > 0)
+					{
+						echo("<B>".htmlspecialchars($Other)."</B><SPAN CLASS=\"small\"><BDO dir=\"${textDirection}\"></BDO>&nbsp;(".$Users->num_rows().")</SPAN><BR>");
+						while(list($Username,$Latin1,$status) = $Users->next_record())
+						{
+							echo("-&nbsp;".special_char($Username,$Latin1,$status)."<BR>");
+						}
+					}
+				}
+				$Users->clean_results();
+				echo("</P><P>");
+			}
+		}
+	}
+}
+else
+{
+	echo("<CENTER>".L_NO_USER."</CENTER>");
+}
+
+$DbLink->close();
+?>
+</P>
+
+<?php
+// ** Beeps if necessary **
+if ($B > 0 && $BeepRoom)
+{
+	?>
+	<!-- Sound for user entrance -->
+	<EMBED SRC="images/beep.wav" HIDDEN="true" AUTOSTART="true" LOOP="false" NAME="Beep" MASTERSOUND>
+		<NOEMBED><BGSOUND SRC="images/beep.wav" LOOP=1></NOEMBED>
+	</EMBED>
+	<?php
+}
+?>
+</BODY>
+
+</HTML>
+<?php
+
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/users_popupL.php3 0.15.0/chat/users_popupL.php3
--- 0.14.5/chat/users_popupL.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/users_popupL.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,182 +0,0 @@
-<?php
-// Get the names and values for vars sent by the script that called this one
-if (isset($HTTP_GET_VARS))
-{
-	while(list($name,$value) = each($HTTP_GET_VARS))
-	{
-		$$name = $value;
-	};
-};
-
-// Fix a security hole
-if (isset($L) && !is_dir('./localization/'.$L)) exit();
-	
-require("./config/config.lib.php3");
-require("./localization/".$L."/localized.chat.php3");
-require("./lib/release.lib.php3");
-require("./lib/database/".C_DB_TYPE.".lib.php3");
-require("./lib/clean.lib.php3");
-
-// Special cache instructions for IE5+
-$CachePlus = "";
-if (ereg("MSIE [56789]", (isset($HTTP_USER_AGENT)) ? $HTTP_USER_AGENT : getenv("HTTP_USER_AGENT"))) $CachePlus = ", pre-check=0, post-check=0, max-age=0";
-$now		= gmdate('D, d M Y H:i:s') . ' GMT';
-
-header("Expires: $now");
-header("Last-Modified: $now");
-header("Cache-Control: no-cache, must-revalidate".$CachePlus);
-header("Pragma: no-cache");
-header("Content-Type: text/html; charset=${Charset}");
-
-$DbLink = new DB;
-
-
-// ** Check for user entrance to beep **
-// Initialize some vars if necessary and put beep on/off in a cookie
-if (isset($HTTP_COOKIE_VARS["CookieBeep"])) $CookieBeep = $HTTP_COOKIE_VARS["CookieBeep"];
-if (!isset($B)) $B = (isset($CookieBeep) ? $CookieBeep : "1");
-setcookie("CookieBeep", $B, time() + 60*60*24*365);		// cookie expires in one year
-$BeepRoom = "0";
-if (!isset($LastCheck) || $B == "0") $LastCheck = time();
-
-if ($B > 0)
-{
-	$DbLink->query("SELECT m_time FROM ".C_MSG_TBL." WHERE m_time > '$LastCheck' AND username = 'SYS enter' AND type = 1 ORDER BY m_time DESC LIMIT 1");
-	if ($DbLink->num_rows() > 0)
-	{
-		$BeepRoom = "1";
-		list($LastCheck) = $DbLink->next_record();
-	};
-	$DbLink->clean_results();
-}
-
-// ** Prepare the http refresh header **
-$URL_Query = (isset($QUERY_STRING)) ? $QUERY_STRING : getenv("QUERY_STRING");
-if (!ereg("LastCheck", $URL_Query))
-{
-	$Refresh = $URL_Query."&LastCheck=${LastCheck}&B=${B}";
-}
-else
-{
-	$Refresh = ereg_replace("LastCheck=([0-9]+)","LastCheck=".$LastCheck, $URL_Query);
-}
-
-// ** Compute the beeps/nobeeps reload query used when the sound icon is clicked **
-$B1 =  ($B > 0 ? "0" : "1");
-$ChangeBeeps_Reload = ereg_replace("&B=([0-2])","&B=${B1}",$Refresh);
-
-// For translations with an explicit charset (not the 'x-user-defined' one)
-if (!isset($FontName)) $FontName = "";
-// Text direction
-$textDirection = ($Charset == "windows-1256") ? "RTL" : "LTR";
-?>
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<HTML dir="<?php echo($textDirection); ?>">
-
-<HEAD>
-<?php
-function special_char($str,$lang,$type)
-{
-	$tag_open = (($type == 'a' || $type == 'm') ? "<I>":"");
-	$tag_close = ($tag_open != "" ? "</I>":"");
-	return $tag_open.($lang ? htmlentities($str) : htmlspecialchars($str)).$tag_close;
-}
-
-// ** count rooms **
-$DbLink->query("SELECT DISTINCT u.room FROM ".C_USR_TBL." u, ".C_MSG_TBL." m WHERE u.room = m.room AND m.type = 1");
-$NbRooms = $DbLink->num_rows();
-$DbLink->clean_results();
-
-if ($NbRooms > 0)
-{
-	// ** count users **
-	$DbLink->query("SELECT DISTINCT u.username, u.latin1 FROM ".C_USR_TBL." u, ".C_MSG_TBL." m WHERE u.room = m.room AND m.type = 1 ORDER BY username");
-	$NbUsers = $DbLink->num_rows();
-	if($NbUsers > 3)
-	{
-		echo("<TITLE>".$NbUsers." ".($NbUsers > 1 ? L_USERS : L_USER)."/".$NbRooms." ".($NbRooms > 1 ? L_ROOMS : L_ROOM)."</TITLE>");
-	}
-	else
-	{
-		echo("<TITLE>");
-		$Term = "";
-		while(list($Username,$Latin1) = $DbLink->next_record())
-		{
-			echo($Term.special_char($Username,$Latin1,''));
-			$Term = ", ";
-		}
-		echo("</TITLE>");
-	};
-	$DbLink->clean_results();
-}
-else
-{
-	echo("<TITLE>".L_NO_USER."</TITLE>");
-}
-?>
-<META HTTP-EQUIV="Refresh" CONTENT="30; URL=users_popupL.php3?<?php echo($Refresh); ?>">
-<LINK REL="stylesheet" HREF="config/style.css.php3?<?php echo("Charset=${Charset}&medium=${FontSize}&FontName=${FontName}"); ?>" TYPE="text/css">
-</HEAD>
-
-<BODY CLASS="frame" onClick="self.focus();">
-<CENTER>
-	<A HREF="<?php echo("$From?Ver=L&L=$L"); ?>" TARGET="_blank"><?php echo(L_CHAT); ?></A>
-	<P><A HREF="users_popupL.php3?<?php echo($ChangeBeeps_Reload); ?>"><IMG SRC="images/<?php if ($B == "0") echo("no"); ?>sound.gif" WIDTH=13 HEIGHT=13 ALIGN=MIDDLE BORDER=0 ALT="<?php echo(L_BEEP); ?>"></A></P>
-</CENTER>
-<P>
-<?php
-
-// ** Build users list **
-if(isset($NbUsers) && $NbUsers > 0)
-{
-	if($DbLink->query("SELECT DISTINCT room FROM ".C_MSG_TBL." WHERE type = 1 ORDER BY room"))
-	{
-		if($DbLink->num_rows() > 0)
-		{
-			$Users = new DB;
-			while(list($Other) = $DbLink->next_record())
-			{
-				if($Users->query("SELECT username, latin1, status FROM ".C_USR_TBL." WHERE room = '".addslashes($Other)."' ORDER BY username"))
-				{
-					if($Users->num_rows() > 0)
-					{
-						echo("<B>".htmlspecialchars($Other)."</B><SPAN CLASS=\"small\"><BDO dir=\"${textDirection}\"></BDO>&nbsp;(".$Users->num_rows().")</SPAN><BR>");
-						while(list($Username,$Latin1,$status) = $Users->next_record())
-						{
-							echo("-&nbsp;".special_char($Username,$Latin1,$status)."<BR>");
-						}
-					}
-				}
-				$Users->clean_results();
-				echo("</P><P>");
-			}
-		}
-	}
-}
-else
-{
-	echo("<CENTER>".L_NO_USER."</CENTER>");
-}
-
-$DbLink->close();
-?>
-</P>
-
-<?php
-// ** Beeps if necessary **
-if ($B > 0 && $BeepRoom)
-{
-	?>
-	<!-- Sound for user entrance -->
-	<EMBED SRC="images/beep.wav" HIDDEN="true" AUTOSTART="true" LOOP="false" NAME="Beep" MASTERSOUND>
-		<NOEMBED><BGSOUND SRC="images/beep.wav" LOOP=1></NOEMBED>
-	</EMBED>
-	<?php
-}
-?>
-</BODY>
-
-</HTML>
-<?php
-
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat/whois_popup.php 0.15.0/chat/whois_popup.php
--- 0.14.5/chat/whois_popup.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat/whois_popup.php	2004-04-01 03:06:27.000000000 -0600
@@ -0,0 +1,187 @@
+<?php
+// Get the names and values for vars sent by input.php
+if (isset($HTTP_GET_VARS))
+{
+	while(list($name,$value) = each($HTTP_GET_VARS))
+	{
+		$$name = $value;
+	};
+};
+
+// Fix a security hole
+if (isset($L) && !is_dir('./localization/'.$L)) exit();
+	
+require("./config/config.lib.php");
+require("./localization/".$L."/localized.chat.php");
+require("./lib/release.lib.php");
+require("./lib/database/".C_DB_TYPE.".lib.php");
+require("./lib/clean.lib.php");
+
+// Special cache instructions for IE5+
+$CachePlus	= "";
+if (ereg("MSIE [56789]", (isset($HTTP_USER_AGENT)) ? $HTTP_USER_AGENT : getenv("HTTP_USER_AGENT"))) $CachePlus = ", pre-check=0, post-check=0, max-age=0";
+$now		= gmdate('D, d M Y H:i:s') . ' GMT';
+
+header("Expires: $now");
+header("Last-Modified: $now");
+header("Cache-Control: no-cache, must-revalidate".$CachePlus);
+header("Pragma: no-cache");
+header("Content-Type: text/html; charset=${Charset}");
+
+$Latin1 = ($Charset == "iso-8859-1");
+function special_char($str,$lang)
+{
+	return ($lang ? htmlentities($str) : htmlspecialchars($str));
+};
+
+// For translations with an explicit charset (not the 'x-user-defined' one)
+if (!isset($FontName)) $FontName = "";
+?>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML dir="<?php echo(($Charset == "windows-1256") ? "RTL" : "LTR"); ?>">
+
+<HEAD>
+<TITLE><?php echo(special_char(stripslashes($U),$Latin1)); ?></TITLE>
+<LINK REL="stylesheet" HREF="config/style.css.php?<?php echo("Charset=${Charset}&medium=${FontSize}&FontName=".urlencode($FontName)); ?>" TYPE="text/css">
+<SCRIPT TYPE="text/javascript" LANGUAGE="javascript1.1">
+<!--
+// Put the focus at the message box in the input frame
+function put_focus()
+{
+	if (typeof(window.opener.window) == 'undefined'
+		|| typeof(window.opener.window.document) != 'object')
+		return;
+	if (window.opener.window.document.title == "Hidden Input frame")
+		targetFrame = window.opener.window.parent.frames['input'].window;
+	else
+		targetFrame = window.opener.window;
+
+	with (targetFrame)
+	{
+		focus();
+		if (document.forms['MsgForm'] && document.forms['MsgForm'].elements['M'])
+			document.forms['MsgForm'].elements['M'].focus();
+	};
+};
+// -->
+</SCRIPT>
+</HEAD>
+
+<BODY CLASS="frame" onUnload="if (window.opener && !window.opener.closed) put_focus();">
+<CENTER>
+
+<?php
+$DbLink = new DB;
+$DbLink->query("SELECT latin1,firstname,lastname,country,website,email,showemail,perms,rooms,ip,gender FROM ".C_REG_TBL." WHERE username='$U' LIMIT 1");
+list($Latin1,$firstname,$lastname,$country,$website,$email,$showemail,$perms,$rooms,$ip,$gender) = $DbLink->next_record();
+$DbLink->clean_results();
+$DbLink->close();
+
+// ** Get the status of the users
+$tag_open = "<I>";
+$tag_close = "</I>";
+switch ($perms)
+{
+	case "moderator":
+		$roomsTab = explode(",",$rooms);
+		for (reset($roomsTab); $room_name=current($roomsTab); next($roomsTab))
+		{
+			if (strcasecmp(stripslashes($R), $room_name) == 0)
+			{
+				$perms = L_WHOIS_MODER;
+				$Found = 1;
+				break;
+			};
+		};
+		unset($roomsTab);
+		if (!isset($Found))
+		{
+			$perms = L_WHOIS_USER;
+			$tag_open = "";
+			$tag_close = "";
+		}
+		break;
+	case "admin":
+		$perms = L_WHOIS_ADMIN;
+		if ($power == "medium") $power = "weak";
+		break;
+	default:
+		$perms = L_WHOIS_USER;
+		$tag_open = "";
+		$tag_close = "";
+}
+?>
+<P CLASS="title"><?php echo($tag_open.special_char(stripslashes($U),$Latin1).$tag_close); ?></P>
+<P></P>
+<TABLE BORDER=0>
+<TR>
+	<TD CLASS="whois" nowrap><?php echo(L_REG_30); ?>: </TD>
+	<TD CLASS="whois" nowrap><?php echo(special_char($firstname,$Latin1)); ?></TD>
+</TR>
+<TR>
+	<TD CLASS="whois" nowrap><?php echo(L_REG_31); ?>: </TD>
+	<TD CLASS="whois" nowrap><?php echo(special_char($lastname,$Latin1)); ?></TD>
+</TR>
+<?php
+if ($gender != "0")
+{
+	$gender = ($gender == "1" ? L_REG_46 : L_REG_47);
+	?>
+	<TD CLASS="whois" nowrap><?php echo(L_REG_45); ?>: </TD>
+	<TD CLASS="whois" nowrap><?php echo($gender); ?></TD>
+	<?php
+};
+
+if ($country)
+{
+	?>
+	<TR>
+		<TD CLASS="whois" nowrap><?php echo(L_REG_36); ?>: </TD>
+		<TD CLASS="whois" nowrap><?php echo(special_char($country,$Latin1)); ?></TD>
+	</TR>
+	<?php
+};
+
+if ($showemail || $power != "weak")
+{
+	?>
+	<TR>
+		<TD CLASS="whois" nowrap>e-mail: </TD>
+		<TD nowrap><A HREF="mailto:<?php echo(htmlspecialchars($email)); ?>"><?php echo(htmlspecialchars($email)); ?></A></TD>
+	</TR>
+	<?php
+};
+
+if ($website)
+{
+	$prefix = (strpos($website,"://") ? "" : "http://");
+	?>
+	<TR>
+		<TD CLASS="whois" nowrap><?php echo(L_REG_32); ?>: </TD>
+		<TD nowrap><A HREF="<?php echo($prefix.htmlspecialchars(str_replace("javascript:", "", $website))); ?>" TARGET="_blank"><?php echo($prefix.htmlspecialchars($website)); ?></A></TD>
+	</TR>
+	<?
+};
+
+if ($power != "weak")
+{
+	if (substr($ip, 0, 1) == "p") $ip = substr($ip, 1)." (proxy)";
+	?>
+	<TR>
+		<TD CLASS="whois" nowrap>IP: </TD>
+		<TD CLASS="whois" nowrap><?php echo($ip); ?></TD>
+	</TR>
+	<?php
+};
+?>
+</TABLE>
+<BR>
+<SPAN CLASS="whois"><?php echo("> ${tag_open}${perms}${tag_close} <"); ?></SPAN>
+
+</CENTER>
+</BODY>
+
+</HTML>
+<?php
+
+?>
\ No newline at end of file
diff -ruN 0.14.5/chat/whois_popup.php3 0.15.0/chat/whois_popup.php3
--- 0.14.5/chat/whois_popup.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat/whois_popup.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,187 +0,0 @@
-<?php
-// Get the names and values for vars sent by input.php3
-if (isset($HTTP_GET_VARS))
-{
-	while(list($name,$value) = each($HTTP_GET_VARS))
-	{
-		$$name = $value;
-	};
-};
-
-// Fix a security hole
-if (isset($L) && !is_dir('./localization/'.$L)) exit();
-	
-require("./config/config.lib.php3");
-require("./localization/".$L."/localized.chat.php3");
-require("./lib/release.lib.php3");
-require("./lib/database/".C_DB_TYPE.".lib.php3");
-require("./lib/clean.lib.php3");
-
-// Special cache instructions for IE5+
-$CachePlus	= "";
-if (ereg("MSIE [56789]", (isset($HTTP_USER_AGENT)) ? $HTTP_USER_AGENT : getenv("HTTP_USER_AGENT"))) $CachePlus = ", pre-check=0, post-check=0, max-age=0";
-$now		= gmdate('D, d M Y H:i:s') . ' GMT';
-
-header("Expires: $now");
-header("Last-Modified: $now");
-header("Cache-Control: no-cache, must-revalidate".$CachePlus);
-header("Pragma: no-cache");
-header("Content-Type: text/html; charset=${Charset}");
-
-$Latin1 = ($Charset == "iso-8859-1");
-function special_char($str,$lang)
-{
-	return ($lang ? htmlentities($str) : htmlspecialchars($str));
-};
-
-// For translations with an explicit charset (not the 'x-user-defined' one)
-if (!isset($FontName)) $FontName = "";
-?>
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<HTML dir="<?php echo(($Charset == "windows-1256") ? "RTL" : "LTR"); ?>">
-
-<HEAD>
-<TITLE><?php echo(special_char(stripslashes($U),$Latin1)); ?></TITLE>
-<LINK REL="stylesheet" HREF="config/style.css.php3?<?php echo("Charset=${Charset}&medium=${FontSize}&FontName=${FontName}"); ?>" TYPE="text/css">
-<SCRIPT TYPE="text/javascript" LANGUAGE="javascript1.1">
-<!--
-// Put the focus at the message box in the input frame
-function put_focus()
-{
-	if (typeof(window.opener.window) == 'undefined'
-		|| typeof(window.opener.window.document) != 'object')
-		return;
-	if (window.opener.window.document.title == "Hidden Input frame")
-		targetFrame = window.opener.window.parent.frames['input'].window;
-	else
-		targetFrame = window.opener.window;
-
-	with (targetFrame)
-	{
-		focus();
-		if (document.forms['MsgForm'] && document.forms['MsgForm'].elements['M'])
-			document.forms['MsgForm'].elements['M'].focus();
-	};
-};
-// -->
-</SCRIPT>
-</HEAD>
-
-<BODY CLASS="frame" onUnload="if (window.opener && !window.opener.closed) put_focus();">
-<CENTER>
-
-<?php
-$DbLink = new DB;
-$DbLink->query("SELECT latin1,firstname,lastname,country,website,email,showemail,perms,rooms,ip,gender FROM ".C_REG_TBL." WHERE username='$U' LIMIT 1");
-list($Latin1,$firstname,$lastname,$country,$website,$email,$showemail,$perms,$rooms,$ip,$gender) = $DbLink->next_record();
-$DbLink->clean_results();
-$DbLink->close();
-
-// ** Get the status of the users
-$tag_open = "<I>";
-$tag_close = "</I>";
-switch ($perms)
-{
-	case "moderator":
-		$roomsTab = explode(",",$rooms);
-		for (reset($roomsTab); $room_name=current($roomsTab); next($roomsTab))
-		{
-			if (strcasecmp(stripslashes($R), $room_name) == 0)
-			{
-				$perms = L_WHOIS_MODER;
-				$Found = 1;
-				break;
-			};
-		};
-		unset($roomsTab);
-		if (!isset($Found))
-		{
-			$perms = L_WHOIS_USER;
-			$tag_open = "";
-			$tag_close = "";
-		}
-		break;
-	case "admin":
-		$perms = L_WHOIS_ADMIN;
-		if ($power == "medium") $power = "weak";
-		break;
-	default:
-		$perms = L_WHOIS_USER;
-		$tag_open = "";
-		$tag_close = "";
-}
-?>
-<P CLASS="title"><?php echo($tag_open.special_char(stripslashes($U),$Latin1).$tag_close); ?></P>
-<P></P>
-<TABLE BORDER=0>
-<TR>
-	<TD CLASS="whois" nowrap><?php echo(L_REG_30); ?>: </TD>
-	<TD CLASS="whois" nowrap><?php echo(special_char($firstname,$Latin1)); ?></TD>
-</TR>
-<TR>
-	<TD CLASS="whois" nowrap><?php echo(L_REG_31); ?>: </TD>
-	<TD CLASS="whois" nowrap><?php echo(special_char($lastname,$Latin1)); ?></TD>
-</TR>
-<?php
-if ($gender != "0")
-{
-	$gender = ($gender == "1" ? L_REG_46 : L_REG_47);
-	?>
-	<TD CLASS="whois" nowrap><?php echo(L_REG_45); ?>: </TD>
-	<TD CLASS="whois" nowrap><?php echo($gender); ?></TD>
-	<?php
-};
-
-if ($country)
-{
-	?>
-	<TR>
-		<TD CLASS="whois" nowrap><?php echo(L_REG_36); ?>: </TD>
-		<TD CLASS="whois" nowrap><?php echo(special_char($country,$Latin1)); ?></TD>
-	</TR>
-	<?php
-};
-
-if ($showemail || $power != "weak")
-{
-	?>
-	<TR>
-		<TD CLASS="whois" nowrap>e-mail: </TD>
-		<TD nowrap><A HREF="mailto:<?php echo(htmlspecialchars($email)); ?>"><?php echo(htmlspecialchars($email)); ?></A></TD>
-	</TR>
-	<?php
-};
-
-if ($website)
-{
-	$prefix = (strpos($website,"://") ? "" : "http://");
-	?>
-	<TR>
-		<TD CLASS="whois" nowrap><?php echo(L_REG_32); ?>: </TD>
-		<TD nowrap><A HREF="<?php echo($prefix.htmlspecialchars(str_replace("javascript:", "", $website))); ?>" TARGET="_blank"><?php echo($prefix.htmlspecialchars($website)); ?></A></TD>
-	</TR>
-	<?
-};
-
-if ($power != "weak")
-{
-	if (substr($ip, 0, 1) == "p") $ip = substr($ip, 1)." (proxy)";
-	?>
-	<TR>
-		<TD CLASS="whois" nowrap>IP: </TD>
-		<TD CLASS="whois" nowrap><?php echo($ip); ?></TD>
-	</TR>
-	<?php
-};
-?>
-</TABLE>
-<BR>
-<SPAN CLASS="whois"><?php echo("> ${tag_open}${perms}${tag_close} <"); ?></SPAN>
-
-</CENTER>
-</BODY>
-
-</HTML>
-<?php
-
-?>
\ No newline at end of file
diff -ruN 0.14.5/chat_activity.php 0.15.0/chat_activity.php
--- 0.14.5/chat_activity.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/chat_activity.php	2004-04-01 03:06:22.000000000 -0600
@@ -0,0 +1,45 @@
+<?php
+// This script is an example of display, in another page of your website,
+// the list or number of users connected to the chat
+
+// Lines below must be at the top of your file and completed according
+// to your settings
+
+// relative path from this page to your chat directory
+$ChatPath = "chat/";
+
+// HTML link to launch the chat (used by constants below)
+$ChatLaunch = "<A HREF=\"phpMyChat.php\" TARGET=\"_self\">chatting</A>";
+
+$ShowPrivate = "0";     // 1 to display users even if they are in a private room,
+						// 0 else
+
+$DisplayUsers = "1";    // 0 to display only the number of connected users
+                        // 1 to display a list of users
+
+define("NB_USERS_IN","users are ".$ChatLaunch." at this time.");	// used if $DisplayUsers = 0
+define("USERS_LOGIN","User ".$ChatLaunch." at this time:");			// used if $DisplayUsers = 1
+define("NO_USER","Nobody is ".$ChatLaunch." at this time.");
+
+require("./${ChatPath}/lib/connected_users.lib.php");
+?>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+
+<HEAD>
+<TITLE>Integration of chat activity into your own web page</TITLE>
+</HEAD>
+
+<BODY>
+<TABLE BORDER=3 CELLPADDING=5>
+<TR>
+	<TD>
+		<?php
+		display_connected($ShowPrivate,$DisplayUsers,($DisplayUsers ? USERS_LOGIN : NB_USERS_IN),NO_USER);
+		?>
+	</TD>
+</TR>
+</TABLE>
+</BODY>
+
+</HTML>
\ No newline at end of file
diff -ruN 0.14.5/chat_activity.php3 0.15.0/chat_activity.php3
--- 0.14.5/chat_activity.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/chat_activity.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,45 +0,0 @@
-<?php
-// This script is an example of display, in another page of your website,
-// the list or number of users connected to the chat
-
-// Lines below must be at the top of your file and completed according
-// to your settings
-
-// relative path from this page to your chat directory
-$ChatPath = "chat/";
-
-// HTML link to launch the chat (used by constants below)
-$ChatLaunch = "<A HREF=\"phpMyChat.php3\" TARGET=\"_self\">chatting</A>";
-
-$ShowPrivate = "0";     // 1 to display users even if they are in a private room,
-						// 0 else
-
-$DisplayUsers = "1";    // 0 to display only the number of connected users
-                        // 1 to display a list of users
-
-define("NB_USERS_IN","users are ".$ChatLaunch." at this time.");	// used if $DisplayUsers = 0
-define("USERS_LOGIN","User ".$ChatLaunch." at this time:");			// used if $DisplayUsers = 1
-define("NO_USER","Nobody is ".$ChatLaunch." at this time.");
-
-require("./${ChatPath}/lib/connected_users.lib.php3");
-?>
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML>
-
-<HEAD>
-<TITLE>Integration of chat activity into your own web page</TITLE>
-</HEAD>
-
-<BODY>
-<TABLE BORDER=3 CELLPADDING=5>
-<TR>
-	<TD>
-		<?php
-		display_connected($ShowPrivate,$DisplayUsers,($DisplayUsers ? USERS_LOGIN : NB_USERS_IN),NO_USER);
-		?>
-	</TD>
-</TR>
-</TABLE>
-</BODY>
-
-</HTML>
\ No newline at end of file
diff -ruN 0.14.5/docs/bug_report.txt 0.15.0/docs/bug_report.txt
--- 0.14.5/docs/bug_report.txt	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/docs/bug_report.txt	2004-04-01 03:07:45.000000000 -0600
@@ -1,81 +1,81 @@
-----------------
- Reporting Bugs
-----------------
-
-To report bugs, either do it in the 'Bug Tracking System' of our
-SourceForge account (http://phpmychat.sorceforge.net/), either fill the
-form below and send it to our team address : phpheaven-team@yahoogroups.com
-
-Please be as descriptive as possible. You may think it's something that
-affects everyone, but many times it's specific to a browser or
-operating system. So please be thorough. In the case of Bug Tracking,
-there is *never* too much information or documentation or description.
-
-Thanks for your help,
-
-the phpHeaven-team
-
-
----8<-------------------------------------------------------------------
-
-#
-# BUG TRACKING for phpMyChat
-#
-
-How to contact you:
-"""""""""""""""""""
-
-Your name                           :
-
-Your e-mail address                 :
-
-Your web site                       :
-
-
-
-Server side:
-""""""""""""
-
-Operating System (name and release) :
-
-HTTP Server (name and release)      :
-
-PHP version and configuration       :
-
-     You can join your 'php.ini' file
-     or the result of the 'phpinfo' function
-
-Database software and release       :
-
-phpMyChat version and configuration :
-
-     You can join your 'config.lib.php' file
-     (without the password you use)
-
-URL where the bug can be seen       : http://
-
-
-
-Client side:
-""""""""""""
-
-Operating system (name and release) :
-
-Browser (name and release)          :
-
-
-
-Brief description of the bug/problem:
-"""""""""""""""""""""""""""""""""""""
-
-
-
-Details:
-""""""""
-
-
-
-
-
-
----8<-------------------------------------------------------------------
+----------------
+ Reporting Bugs
+----------------
+
+To report bugs, either do it in the 'Bug Tracking System' of our
+SourceForge account (http://phpmychat.sorceforge.net/), either fill the
+form below and send it to our team address : phpheaven-team@yahoogroups.com
+
+Please be as descriptive as possible. You may think it's something that
+affects everyone, but many times it's specific to a browser or
+operating system. So please be thorough. In the case of Bug Tracking,
+there is *never* too much information or documentation or description.
+
+Thanks for your help,
+
+the phpHeaven-team
+
+
+---8<-------------------------------------------------------------------
+
+#
+# BUG TRACKING for phpMyChat
+#
+
+How to contact you:
+"""""""""""""""""""
+
+Your name                           :
+
+Your e-mail address                 :
+
+Your web site                       :
+
+
+
+Server side:
+""""""""""""
+
+Operating System (name and release) :
+
+HTTP Server (name and release)      :
+
+PHP version and configuration       :
+
+     You can join your 'php.ini' file
+     or the result of the 'phpinfo' function
+
+Database software and release       :
+
+phpMyChat version and configuration :
+
+     You can join your 'config.lib.php' file
+     (without the password you use)
+
+URL where the bug can be seen       : http://
+
+
+
+Client side:
+""""""""""""
+
+Operating system (name and release) :
+
+Browser (name and release)          :
+
+
+
+Brief description of the bug/problem:
+"""""""""""""""""""""""""""""""""""""
+
+
+
+Details:
+""""""""
+
+
+
+
+
+
+---8<-------------------------------------------------------------------
diff -ruN 0.14.5/docs/changes.txt 0.15.0/docs/changes.txt
--- 0.14.5/docs/changes.txt	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/docs/changes.txt	2004-04-01 03:07:46.000000000 -0600
@@ -1,455 +1,471 @@
-
---------------------
- Releases follow up
---------------------
-
-
-This file presents the evolutions of phpMyChat for each release.
-
-
-v 0.14.5 - 02/07/2001
-"""""""""""""""""""""
-
-  BUG FIXED   : two security issues has been fixed thanks to
-		Alexei Shalin <happyalex@totel.kg>.
-  BUG FIXED   : nicks containing dot characters can't be deleted/banished/updated
-		in the administration sheets
-  BUG FIXED   : when registered users used the '/join' command or clicked on the
-		link in an invitation messages they may loose their rights or be
-		kicked off because of a wrong password encoding.
-		Bug fixed thanks to Tinou <tinou@tinou.net>.
-  ENHANCEMENT : some translations have been completed.
-
-
-v 0.14.4 - 31/05/2001
-"""""""""""""""""""""
-
-  BUG FIXED   : some important security fixes have been merged into this release.
-  BUG FIXED   : users may be displayed twice at the user frame under PostgreSQL.
-  ENHANCEMENT : some translations have been completed and Argentinian spanish has been
-		added.
-
-
-v 0.14.3 - 16/05/2001
-"""""""""""""""""""""
-
-  ENHANCEMENT : clicking on the connection status button (at the 'exit' frame) if it turns
-		to red now frees the submit button at the 'input' frame.
-  ENHANCEMENT : gender of the user is displayed in the users list rather than the whois
-		icon.
-  ENHANCEMENT : some translations have been completed and Malay has been added.
-  ENHANCEMENT : a bug report form has been added in the 'docs' directory.
-  BUG FIXED   : some important security fixes have been merged into this release thanks to
-		contributors (a new fix since beta 3).
-  BUG FIXED   : the (in)famous javascript bug with IE4 thanks to
-	 	Maiwen zhang <zhangmaiwen@yeah.net>.
-  BUG FIXED   : if one close a 'whois popup' after he/she left the chat, a js error was
-	 	displayed (since beta 3).
-  BUG FIXED   : overlapped chat name rooms with Netscape 4+.
-  BUG FIXED   : the 'refresh' header is not a valid one according to RFC specifications:
-		it's actually just an HTML one, then it has been moved back in an HTML
-                meta tag.
-  BUG FIXED   : the test to avoid space characters in nicks had been accidentally removed
-		from the 0.14.2.
-  CHANGE      : the 'C_BAD_WORDS' setting has been renamed to 'C_NO_SWEAR' in the
-		configuration file.
-
-
-v 0.14.2 - 27/02/2001
-"""""""""""""""""""""
-
-  ENHANCEMENT : the function to optimize tables with PostgreSQL has been implemented thanks
-		to Peter Hasko <pepe@feeha.sk> & 'spirit' <spirit@feeha.sk>.
-  ENHANCEMENT : all the default public rooms are displayed in the users list, even empty
-		ones.
-  ENHANCEMENT : the IRC like '/me' command has been added.
-  ENHANCEMENT : Some translations have been completed; Estonian and Turkish ones have
-		been added.
-  BUG FIXED   : There were some typos inside the 'headers()' calls. They have been fixed
-		thanks to Don Schueler <dons@axio.com>.
-		Maybe this will help to fix some of the problems under IE5 for Mac and Opera.
-
-
-v 0.14.1 - 28/12/2000
-"""""""""""""""""""""
-
-  ENHANCEMENT : all the JavaScript work has been rewritten to ensure a better compatibility
-			with old browsers.
-  ENHANCEMENT : a second hidden frame handles what is sent by the user at the 'input' frame
-			to reduce the server work.
-  ENHANCEMENT : the way smilies are taken into account has been rewritten to make it easier
-			to add your own ones.
-  ENHANCEMENT : the red color for message is reserved to the administrator and the moderators
-			of the current room thanks to Christian Hacker <c.hacker@dreamer-chat.de>.
-  ENHANCEMENT : Add the ability to have a translated caption for the submit button in the input
-			frame thanks to Khalid Aljabri <webksa@yahoo.com>.
-  ENHANCEMENT : A separator has been added between the messages sent 'today' and the oldest
-			ones.
-  ENHANCEMENT : Notification messages for exit when an user is kicked or banished are explicit.
-  ENHANCEMENT : a mail sending feature has been added to the administration sheets thanks to
-			Christian Hacker <c.hacker@dreamer-chat.de>.
-  ENHANCEMENT : Far better support for right-to-left written languages thanks to
-			Khalid Aljabri <webksa@yahoo.com>.
-  ENHANCEMENT : Some translations have been completed and Catalan has been added.
-  BUG FIXED   : when inviting an user whose nick contains a single quote, a SQL error occurs.
-  BUG FIXED   : when banishing an user 'forever', PostgreSQL send an out of range error.
-			And test for banishment doesn't run for private rooms (except when user
-		 	tries to enter this private room from the 'join' command).
-  BUG FIXED   : clicking on an message sender name kills the message frame appending work.
-  BUG FIXED   : lots of problems with the 'invite' command when it used inside a private room.
-  BUG FIXED   : users aren't deleted from the users list/table when they use the 'exit' command
-			to leave the chat.
-  BUG FIXED   : a stupid mistake in e-mail validation for the registration and modification of
-			the profiles.
-  CHANGE      : the first and second administration scripts have been rewritten to become more
-			usable.
-
-
-v 0.14.0 - 29/11/2000
-"""""""""""""""""""""
-
-  Thanks a lot to all beta users who helped us making this release stable and so featured,
-  and to all translators we give a lot of work.
-
-  Despite a lot of debug, there are still problems with Mac version of
-  Internet Explorer 5 ...
-
-
-  TABLES HAVE BEEN UPDATED !!!
-
-  ENHANCEMENT : for DHTML enabled browsers, added a hidden frame that checks for new
-			messages and changes to the users' list. This also allows for much
-			faster, non-blinking appearance of new messages.
-                	Under these conditions, the state of the connection to the database
-			is displayed in a changing color icon form.
-  ENHANCEMENT : the script now grabs the IP of users (and attempts to find the 'true' IP when
-			the user is behind a proxy). Only the administrator or moderators of
-			default rooms (those defined in 'chat/config.lib.php3') can see this 
-			information in the whois popup.
-  ENHANCEMENT : a banishing feature (by IP and nick) has been added.
-  ENHANCEMENT : the admin script has been rewritten to take into account banished users.
-  ENHANCEMENT : you can now choose to generate a password and send it to the e-mail user
-			address during the regsitration process. Thanks to
-			Jose' Carlos Pereira <phpHeaven@abismo.org>.
-  ENHANCEMENT : e-mail validation is now much accurate according to the RFC822 (but maybe not
-			fully compliant).
-  ENHANCEMENT : the administrator may kick an user whatever is the room this user is chatting
-			into.
-  ENHANCEMENT : a little clickable icon has beeen added before the nick of registered users in
-			the users list. Such a click will display the whois popup for the users,
-			unless the user clicks on the icon corresponding to his own nick. In
-			that case, the profile command for that user will be run.
-  ENHANCEMENT : all nicks, except for the current user, are now 'clickable' in the users frame,
-			even those of users chatting in others rooms.
-  ENHANCEMENT : all nicks of senders in the messages frame are now 'clickable'. Such a click
-			will add the command for private messages to the clicked user in the
-			input box (credit for the idea goes to 'lion_cool').
-  ENHANCEMENT : private messages become again room dependant but the '/invite' command has been
-			created to invite an user to join the current room of the message
-			sender.
-  ENHANCEMENT : commands are now clickable in the help popup (credit for the idea goes to
-			Ray Lopez <kaidream@hotmail.com>).
-  ENHANCEMENT : settings for the save command have been modified so the administrator can
-			specify a maximum number of messages to be exported.
-  ENHANCEMENT : the javascript stuff to avoid multiple submission of the input frame has
-			been improved.
-  ENHANCEMENT : Some rooms name may be reserved for private rooms in the config file (credit
-			for this idea goes to Michael Newlyn Blake <mblake@frogtown.com>).
-  ENHANCEMENT : Autocompletion of forms under IE has been set to off.
-  ENHANCEMENT : added gender information to the registered users profiles.
-  ENHANCEMENT : take into account languages that are written from the right to the left.
-  ENHANCEMENT : Some translations have been completed and three added (French Canadian, Bosnian
-			and Arabic).
-  BUG FIXED   : lots of bugs under IE5 for Mac have been fixed thanks to
-			Paul Brejla <paul@justmac.de>.
-  BUG FIXED   : huge debugging of the way the status of users is defined.
-  CHANGE      : languages detection system has been rewritten that it will be easy to add
-			or remove translations.
-  CHANGE      : code for persistent connection mode has been removed because of an
-			unfixable bug.
-  CHANGE      : javascript alert box is no longer displayed when a promote command runs
-			succesfully.
-  CHANGE      : all system messages are now stored in the same way in the messages table.
-			The user name is 'SYS xxx' where xxx stands for the action (enter,
-			exit, promote, delusr, announce, inviteTo and inviteFrom).
-
-
-v 0.13.3 - 10/10/2000
-"""""""""""""""""""""
-
-  ENHANCEMENT : For MySQL database, the OPTIMIZE function is called by the
-			'admin.php3'script.
-  ENHANCEMENT : Many cosmetic changes in the help popup (clicking smilies,
-			position of the popup...) thanks to
-			Laurent BRANCALEONI <l.brancaleoni@ision.fr>.
-  ENHANCEMENT : The administrator can always see the e-mail address of an user in
-			the whois popup thanks to Tinou <tinou@tinou.net>.
-  ENHANCEMENT : Added a command to save messages in a local HTML file thanks to
-			Tinou <tinou@tinou.net>. This feature can be enabled in the
-			config file.
-  ENHANCEMENT : Private messages are no more room dependant; i.e., you can send such a
-			message to an user who chats in an other room than the one you
-			are in.
-  ENHANCEMENT : Added a test to avoid twice submitted messages.
-  ENHANCEMENT : Code for persistent connections in messages.php3 have been put in
-			an independant file to reduce the parsing work for the
-			server.
-  ENHANCEMENT : A message is displayed when the English tutorial is loaded because
-			there is no translation.
-  ENHANCEMENT : Some translations have been completed and a new one has been added
-			(Georgian).
-  BUG FIXED   : 'require' and 'include' paths have been modified to take into account
-			the case in which 'include_path var' is defined in the PHP config
-			file thanks to Laurent BRANCALEONI <l.brancaleoni@ision.fr>.
-  BUG FIXED   : the $PWD variable used in some of the scripts may be owerwriten by
-			the PHP-ENV-Variable $PWD when track_vars option is enabled.
-  CHANGE      : the 'chat/link.php3' script has been renamed to 'chat/link.htm.'
-  CHANGE      : the message sent by the promote command is no longer private.
-  CHANGE      : the 'chat/command.php3' file has been renamed and moved to the 'chat/lib'
-			directory.
-  CHANGE      : an independant script for the translation from text codes to graphical
-			smilies into messages has been created and put in 'chat/lib'
-			directory so it will be easier to modify the list of smilies
-			used by the script.
-
-
-v 0.13.2 - 20/09/2000
-"""""""""""""""""""""
-
-  ENHANCEMENT : Added a tutorial that users may launch from the start screen thanks to
-			Sharif Islam <mislam@students.uiuc.edu>
-			& Jessica Gibson <oram@uiuc.edu>.
-  ENHANCEMENT : All the scripts have been well documented, so you should be able to
-			change them according to your wants fairly easily.
-  ENHANCEMENT : Join command and index.lib.php3 have been rewriten together in order
-			to reduce the number of SQL queries.
-  ENHANCEMENT : Add a beep feature in users popup for notification of user entrance.
-  ENHANCEMENT : Message from the system (notification of user entrance/exit, promotion
-			to moderator...) are now all language dependant.
-  ENHANCEMENT : Replaced the drop down list for message color by a color picker for 
-			JavaScript1.1+ enabled browsers thanks to
-			Tomas Haluza <thaluza@kiss.cz>, else display the drop down list.
-  ENHANCEMENT : Added a 'swear words' filter thanks to Gustavo Iwamoto <iwamoto@zaz.com.br>
-			and Fabiano R. Prestes <zoso@post.com>
-  ENHANCEMENT : Added persistent connection mode that allows much faster and non-blinking
-			appearance of new messages thanks to Jezek2 of the phpHeaven Team.
-  ENHANCEMENT : Added an undocumented command to lauch the help popup : /help or /?
-  ENHANCEMENT : ignored nicks are dynamicaly displayed in the ignored popup.
-  ENHANCEMENT : Setup process to automatically check for administrator language at startup.
-  ENHANCEMENT : three more translations (Croatian, partial Korean and some Japanese words).
-  BUG FIXED   : some problems of compatibility with php4 have been solved using
-			associated arrays for input data (POST, GET, cookies, environment and
-			other server variables).
-  BUG FIXED   : on the start page, links for registering and admin stuff lacks of the
-			chat path for javascript non-enabled browsers.
-  BUG FIXED   : users list in users frame and users popup is now well displayed under
-			Netscape Navigator.
-  BUG FIXED   : user can no longer chat in two rooms at the same time with the same nick.
-  BUG FIXED   : user will be automatically connected again when they resize the main
-			window with Netscape.
-  BUG FIXED   : bad link was displayed in whois popup when the user had registered an
-			url without the "http://" prefix.
-  BUG FIXED   : list of nicks separated by a comma wasn't working in the ignore command.
-  BUG FIXED   : cookies didn't work the way they should because of invalid
-			specifications.
-  CHANGE      : the readme.txt file and the whole 'docs' dir have been put to the root
-			of the package.
-
-
-v 0.13.1 - 21/07/2000
-"""""""""""""""""""""
-  ENHANCEMENT : rewrite of the "easy configuration" process. It now allows
-			a choice of interface languages. Also a far better English
-			syntax thanks to Martin Edelius <martin.edelius@spirex.se>.
-
-
-v 0.13.0 - 20/07/2000
-"""""""""""""""""""""
-
-  Huge debugging of the whole script and enhancements, thank to
-	Lolo and Jezek2 of the phpHeaven Team,
-	Alexei Shalin <sysadmin@dom.bishkek.su>,
-	Dean Lin <dean@xlinux.com>,
-	Martin Edelius <martin.edelius@spirex.se>,
-	Charles <webmestre@picardie-infos.com>,
-	Sbastien BERNARD <sbernard@mouzaia.com>,
-	and many other people with great ideas ...
-
-  BUG FIXED   : a private message containing a comma gave an error
-  BUG FIXED   : when a registered user called the join command or clicked
-			on a room name at the users frame, the value of the php variable
-			that contained the password was automatically changed so it no
-			longer corresponded to the password stored in the database.
-  BUG FIXED   : an user who didn't quit phpMyChat in a clean way and who
-			was then kicked by the admin or a moderator never was
-			removed from the database.
-  BUG FIXED   : problems with IE when messages with iso-8859-1 special
-			characters were typed in on a non iso-8859-1 charset
-  BUG FIXED   : bad regular expressions to exclude some special
-			characters from users and rooms name in 'index.php3', 
-			'register.php3', 'edituser.php3'...
-  BUG FIXED   : bad number of message displayed in the message frame when
-			notification was off
-  BUG FIXED   : when no messages were available and notify was off,
-			the 'no message' text wasn't displayed
-  BUG FIXED   : because of notifications, rooms created by users were always
-			displayed in the start page even if there was no "true"
-			message into.
-  ENHANCEMENT : new lib to add the number or list of users connected to any
-			of your own pages
-  ENHANCEMENT : new lib to add the chat connexion layout to your own page
-  ENHANCEMENT : registered users can now log with the same nick even if they
-			weren't deleted from db.
-  ENHANCEMENT : rewrite of the "easy configuration" process that allows now
-			to update database from previous releases (0.12.0 & 0.12.1)
-  ENHANCEMENT : from the admin script, you can now delete rooms. And registered
-			users who haven't login for a delay defined in config file
-			may be automatically deleted.
-  ENHANCEMENT : status of users (admin or moderator/other) are now displayed
-			in user list
-  ENHANCEMENT : you can set a timezone offset between server time and your
-			country in config file.
-  ENHANCEMENT : server time is now displayed in status bar if user choose to
-			show timestamps before messages.
-  ENHANCEMENT : new command '/promote'
-  ENHANCEMENT : database structure and access optimisation
-  ENHANCEMENT : in the config file, a switch allows to show/hide the delete
-			profile link at the start page
-  ENHANCEMENT : three more translations (swedish, romanian and greek)
-  CHANGE      : commands have been separated in multiple files, one for each
-  CHANGE      : commands in help popup are now ordered alphabetically
-
-
-v 0.12.1 - 13/06/2000
-"""""""""""""""""""""
-
-  BUG FIXED   : database query error while kicking an user.
-
-
-v 0.12.0 - 12/06/2000
-"""""""""""""""""""""
-
-  Huge revalidation of the whole script.
-
-  ENHANCEMENT : a registration procedure is available for users, and you can
-			choose to allow only regitered users, or not, with a switch in
-			config file (optional registration is default).
-  ENHANCEMENT : administrator functionalities have been created. You can put
-			a link to run them at the first screen of the chat
-			with a switch in config file (default is disabled).
-  ENHANCEMENT : multi-language stuff can be disabled with a switch in config
-			file (default to enabled).
-  ENHANCEMENT : notifications are added to message tables when users log in or
-			exit. A switch in config file set them displayed or not to
-			default.
-  ENHANCEMENT : more commands (true private messages, whois popup,
-			kick for the administrator of a room, profile to edit his
-			own one, notify to show/hide notifications).
-  ENHANCEMENT : a php setup file has been added to simplify phpMyChat
-			installation.
-  ENHANCEMENT : help popup now contains some lines for text formatting elements.
-  ENHANCEMENT : all "_top" targets in link tags and top objects in javascript
-			functions have been replaced by "_parent".
-  ENHANCEMENT : more translations.
-  BUG FIXED   : style sheet problem in link frame with Netscape Navigator.
-
-
-v 0.11.2 - 30/05/2000
-
-"""""""""""""""""""""
-
-  ENHANCEMENT : when users forget to choose a room, they are logged
-			into the first default room
-  ENHANCEMENT : more translations
-  BUG FIXED   : error when single quotes are included in messages
-
-
-v 0.11.1 - 18/05/2000
-"""""""""""""""""""""
-
-  BUG FIXED   : error in PostgreSQL library
-  BUG FIXED   : style sheet problem in help popup
-  BUG FIXED   : language translation corrections
-
-
-v 0.11.0 - 17/05/2000
-"""""""""""""""""""""
-
-  ENHANCEMENT : more IRC-like commands, thanks to
-                  Loc Chapeaux <loic-info@netcourrier.com>
-  ENHANCEMENT : user can now chose the interface language, thanks to
-                  Loc Chapeaux <loic-info@netcourrier.com>
-  BUG FIXED   : PERL-like regular expressions used only if they are supported  
-  BUG FIXED   : database connections number minimized to avoid errors
-
-
-v 0.10.3 - 28/04/2000
-"""""""""""""""""""""
-
-  BUG FIXED
-
-
-v 0.10.2 - 28/04/2000
-"""""""""""""""""""""
-
-  ENHANCEMENT : now supports some IRC-like commands, thanks to
-                  Loc Chapeaux <loic-info@netcourrier.com>
-
-
-v 0.10.1 - 21/04/2000
-"""""""""""""""""""""
-
-  BUG FIXED   : moving to another room was impossible
-  CHANGE      : available languages shown on index page as flags
-
-
-v 0.10.0 - 19/04/2000
-"""""""""""""""""""""
-
-  A LOT OF CHANGES, YOU MUST MODIFY YOUR TABLES IN THE DATABASE !!!
-  
-  ENHANCEMENT : now supports PostgreSQL database, thanks to
-                  Martin Dvorak <jezek2@penguin.cz>
-  ENHANCEMENT : now supports ODBC, thanks to J. "Guli" Mikulas <guli1@email.cz>
-  ENHANCEMENT : now accepts some HTML tags in messages (configurable), thanks to
-                  Martin Dvorak <jezek2@penguin.cz> and Matthieu Belge <mbelge@free.fr>
-  CHANGE      : more and more options in config/config.lib.php3 !!!
-
-
-v 0.9.2 - 14/04/2000
-""""""""""""""""""""
-
-  LANGUAGE    : Czech by Martin Dvorak <jezek2@penguin.cz>
-
-
-v 0.9.1 - 14/04/2000
-""""""""""""""""""""
-
-  BUG FIXED   : Users in private rooms were counted on index page
-  ADDITION    : First release with '*.txt' files
-
-
-v 0.9.0 - 13/04/2000
-""""""""""""""""""""
-
-  ENHANCEMENT : Messages order chosable by the user, default one chosen by admin
-  LANGUAGE    : Thai by Patrice Thiroloix <keng@franco-thai.com>
-
-
-v 0.8.0 - 03/04/2000
-""""""""""""""""""""
-
-
-v 0.7.0 - 09/03/2000
-""""""""""""""""""""
-
-  CHANGE      : configuration done with constants instead of variables
-  ENHANCEMENT : now works with PHP4
-  ENHANCEMENT : list of users in a popup
-  ENHANCEMENT : language now configurable, English and French available
-
-
-v 0.1.0 - ?
-"""""""""""
-
-  First release, so no bugs, no changes and no enhancements !!! :D
+
+--------------------
+ Releases follow up
+--------------------
+
+
+This file presents the evolutions of phpMyChat for each release.
+
+
+v 0.14.6-dev - 26/06/2002
+"""""""""""""""""""""""""
+
+  BUG FIXED   : fixed collapses between phpMyChat and other scripts login and
+		password .
+  BUG FIXED   : some more security issues has been fixed thanks to
+		Alexei Shalin <happyalex@totel.kg>, Pepe <pepe@feeha.sk>
+                & Sergey Sazonenkov <seazon@users.sourceforge.net>.
+  BUG FIXED   : the beginning of a message sent to an user whose name starts
+		with "www" by clicking on his nick on the users frame was changed to an
+		url. Fixed thanks to Pepe <pepe@feeha.sk>.
+  ENHANCEMENT : iso-8859-2 charsets uses the same font faces than iso-8859-1.
+  ENHANCEMENT : Azerbaijani, Bulgarian and Hungarian translations have been added
+  		and some other ones have been completed.
+
+
+v 0.14.5 - 02/07/2001
+"""""""""""""""""""""
+
+  BUG FIXED   : two security issues has been fixed thanks to
+		Alexei Shalin <happyalex@totel.kg>.
+  BUG FIXED   : nicks containing dot characters can't be deleted/banished/updated
+		in the administration sheets
+  BUG FIXED   : when registered users used the '/join' command or clicked on the
+		link in an invitation messages they may loose their rights or be
+		kicked off because of a wrong password encoding.
+		Bug fixed thanks to Tinou <tinou@tinou.net>.
+  ENHANCEMENT : some translations have been completed.
+
+
+v 0.14.4 - 31/05/2001
+"""""""""""""""""""""
+
+  BUG FIXED   : some important security fixes have been merged into this release.
+  BUG FIXED   : users may be displayed twice at the user frame under PostgreSQL.
+  ENHANCEMENT : some translations have been completed and Argentinian spanish has been
+		added.
+
+
+v 0.14.3 - 16/05/2001
+"""""""""""""""""""""
+
+  ENHANCEMENT : clicking on the connection status button (at the 'exit' frame) if it turns
+		to red now frees the submit button at the 'input' frame.
+  ENHANCEMENT : gender of the user is displayed in the users list rather than the whois
+		icon.
+  ENHANCEMENT : some translations have been completed and Malay has been added.
+  ENHANCEMENT : a bug report form has been added in the 'docs' directory.
+  BUG FIXED   : some important security fixes have been merged into this release thanks to
+		contributors.
+  BUG FIXED   : the (in)famous javascript bug with IE4 thanks to
+	 	Maiwen zhang <zhangmaiwen@yeah.net>.
+  BUG FIXED   : if one close a 'whois popup' after he/she left the chat, a js error was
+	 	displayed.
+  BUG FIXED   : overlapped chat name rooms with Netscape 4+.
+  BUG FIXED   : the 'refresh' header is not a valid one according to RFC specifications:
+		it's actually just an HTML one, then it has been moved back in an HTML
+                meta tag.
+  BUG FIXED   : the test to avoid space characters in nicks had been accidentally removed
+		from the 0.14.2.
+  CHANGE      : the 'C_BAD_WORDS' setting has been renamed to 'C_NO_SWEAR' in the
+		configuration file.
+
+
+v 0.14.2 - 27/02/2001
+"""""""""""""""""""""
+
+  ENHANCEMENT : the function to optimize tables with PostgreSQL has been implemented thanks
+		to Peter Hasko <pepe@feeha.sk> & 'spirit' <spirit@feeha.sk>.
+  ENHANCEMENT : all the default public rooms are displayed in the users list, even empty
+		ones.
+  ENHANCEMENT : the IRC like '/me' command has been added.
+  ENHANCEMENT : Some translations have been completed; Estonian and Turkish ones have
+			been added.
+  BUG FIXED   : There were some typos inside the 'headers()' calls. They have been fixed
+			thanks to Don Schueler <dons@axio.com>.
+			Maybe this will help to fix some of the problems under IE5 for Mac and Opera.
+
+
+v 0.14.1 - 28/12/2000
+"""""""""""""""""""""
+
+  ENHANCEMENT : all the JavaScript work has been rewritten to ensure a better compatibility
+			with old browsers.
+  ENHANCEMENT : a second hidden frame handles what is sent by the user at the 'input' frame
+			to reduce the server work.
+  ENHANCEMENT : the way smilies are taken into account has been rewritten to make it easier
+			to add your own ones.
+  ENHANCEMENT : the red color for message is reserved to the administrator and the moderators
+			of the current room thanks to Christian Hacker <c.hacker@dreamer-chat.de>.
+  ENHANCEMENT : Add the ability to have a translated caption for the submit button in the input
+			frame thanks to Khalid Aljabri <webksa@yahoo.com>.
+  ENHANCEMENT : A separator has been added between the messages sent 'today' and the oldest
+			ones.
+  ENHANCEMENT : Notification messages for exit when an user is kicked or banished are explicit.
+  ENHANCEMENT : a mail sending feature has been added to the administration sheets thanks to
+			Christian Hacker <c.hacker@dreamer-chat.de>.
+  ENHANCEMENT : Far better support for right-to-left written languages thanks to
+			Khalid Aljabri <webksa@yahoo.com>.
+  ENHANCEMENT : Some translations have been completed and Catalan has been added.
+  BUG FIXED   : when inviting an user whose nick contains a single quote, a SQL error occurs.
+  BUG FIXED   : when banishing an user 'forever', PostgreSQL send an out of range error.
+			And test for banishment doesn't run for private rooms (except when user
+		 	tries to enter this private room from the 'join' command).
+  BUG FIXED   : clicking on an message sender name kills the message frame appending work.
+  BUG FIXED   : lots of problems with the 'invite' command when it used inside a private room.
+  BUG FIXED   : users aren't deleted from the users list/table when they use the 'exit' command
+			to leave the chat.
+  BUG FIXED   : a stupid mistake in e-mail validation for the registration and modification of
+			the profiles.
+  CHANGE      : the first and second administration scripts have been rewritten to become more
+			usable.
+
+
+v 0.14.0 - 29/11/2000
+"""""""""""""""""""""
+
+  Thanks a lot to all beta users who helped us making this release stable and so featured,
+  and to all translators we give a lot of work.
+
+  Despite a lot of debug, there are still problems with Mac version of
+  Internet Explorer 5 ...
+
+
+  TABLES HAVE BEEN UPDATED !!!
+
+  ENHANCEMENT : for DHTML enabled browsers, added a hidden frame that checks for new
+			messages and changes to the users' list. This also allows for much
+			faster, non-blinking appearance of new messages.
+                	Under these conditions, the state of the connection to the database
+			is displayed in a changing color icon form.
+  ENHANCEMENT : the script now grabs the IP of users (and attempts to find the 'true' IP when
+			the user is behind a proxy). Only the administrator or moderators of
+			default rooms (those defined in 'chat/config.lib.php') can see this 
+			information in the whois popup.
+  ENHANCEMENT : a banishing feature (by IP and nick) has been added.
+  ENHANCEMENT : the admin script has been rewritten to take into account banished users.
+  ENHANCEMENT : you can now choose to generate a password and send it to the e-mail user
+			address during the regsitration process. Thanks to
+			Jose' Carlos Pereira <phpHeaven@abismo.org>.
+  ENHANCEMENT : e-mail validation is now much accurate according to the RFC822 (but maybe not
+			fully compliant).
+  ENHANCEMENT : the administrator may kick an user whatever is the room this user is chatting
+			into.
+  ENHANCEMENT : a little clickable icon has beeen added before the nick of registered users in
+			the users list. Such a click will display the whois popup for the users,
+			unless the user clicks on the icon corresponding to his own nick. In
+			that case, the profile command for that user will be run.
+  ENHANCEMENT : all nicks, except for the current user, are now 'clickable' in the users frame,
+			even those of users chatting in others rooms.
+  ENHANCEMENT : all nicks of senders in the messages frame are now 'clickable'. Such a click
+			will add the command for private messages to the clicked user in the
+			input box (credit for the idea goes to 'lion_cool').
+  ENHANCEMENT : private messages become again room dependant but the '/invite' command has been
+			created to invite an user to join the current room of the message
+			sender.
+  ENHANCEMENT : commands are now clickable in the help popup (credit for the idea goes to
+			Ray Lopez <kaidream@hotmail.com>).
+  ENHANCEMENT : settings for the save command have been modified so the administrator can
+			specify a maximum number of messages to be exported.
+  ENHANCEMENT : the javascript stuff to avoid multiple submission of the input frame has
+			been improved.
+  ENHANCEMENT : Some rooms name may be reserved for private rooms in the config file (credit
+			for this idea goes to Michael Newlyn Blake <mblake@frogtown.com>).
+  ENHANCEMENT : Autocompletion of forms under IE has been set to off.
+  ENHANCEMENT : added gender information to the registered users profiles.
+  ENHANCEMENT : take into account languages that are written from the right to the left.
+  ENHANCEMENT : Some translations have been completed and three added (French Canadian, Bosnian
+			and Arabic).
+  BUG FIXED   : lots of bugs under IE5 for Mac have been fixed thanks to
+			Paul Brejla <paul@justmac.de>.
+  BUG FIXED   : huge debugging of the way the status of users is defined.
+  CHANGE      : languages detection system has been rewritten that it will be easy to add
+			or remove translations.
+  CHANGE      : code for persistent connection mode has been removed because of an
+			unfixable bug.
+  CHANGE      : javascript alert box is no longer displayed when a promote command runs
+			succesfully.
+  CHANGE      : all system messages are now stored in the same way in the messages table.
+			The user name is 'SYS xxx' where xxx stands for the action (enter,
+			exit, promote, delusr, announce, inviteTo and inviteFrom).
+
+
+v 0.13.3 - 10/10/2000
+"""""""""""""""""""""
+
+  ENHANCEMENT : For MySQL database, the OPTIMIZE function is called by the
+			'admin.php'script.
+  ENHANCEMENT : Many cosmetic changes in the help popup (clicking smilies,
+			position of the popup...) thanks to
+			Laurent BRANCALEONI <l.brancaleoni@ision.fr>.
+  ENHANCEMENT : The administrator can always see the e-mail address of an user in
+			the whois popup thanks to Tinou <tinou@tinou.net>.
+  ENHANCEMENT : Added a command to save messages in a local HTML file thanks to
+			Tinou <tinou@tinou.net>. This feature can be enabled in the
+			config file.
+  ENHANCEMENT : Private messages are no more room dependant; i.e., you can send such a
+			message to an user who chats in an other room than the one you
+			are in.
+  ENHANCEMENT : Added a test to avoid twice submitted messages.
+  ENHANCEMENT : Code for persistent connections in messages.php have been put in
+			an independant file to reduce the parsing work for the
+			server.
+  ENHANCEMENT : A message is displayed when the English tutorial is loaded because
+			there is no translation.
+  ENHANCEMENT : Some translations have been completed and a new one has been added
+			(Georgian).
+  BUG FIXED   : 'require' and 'include' paths have been modified to take into account
+			the case in which 'include_path var' is defined in the PHP config
+			file thanks to Laurent BRANCALEONI <l.brancaleoni@ision.fr>.
+  BUG FIXED   : the $PWD variable used in some of the scripts may be owerwriten by
+			the PHP-ENV-Variable $PWD when track_vars option is enabled.
+  CHANGE      : the 'chat/link.php' script has been renamed to 'chat/link.htm.'
+  CHANGE      : the message sent by the promote command is no longer private.
+  CHANGE      : the 'chat/command.php' file has been renamed and moved to the 'chat/lib'
+			directory.
+  CHANGE      : an independant script for the translation from text codes to graphical
+			smilies into messages has been created and put in 'chat/lib'
+			directory so it will be easier to modify the list of smilies
+			used by the script.
+
+
+v 0.13.2 - 20/09/2000
+"""""""""""""""""""""
+
+  ENHANCEMENT : Added a tutorial that users may launch from the start screen thanks to
+			Sharif Islam <mislam@students.uiuc.edu>
+			& Jessica Gibson <oram@uiuc.edu>.
+  ENHANCEMENT : All the scripts have been well documented, so you should be able to
+			change them according to your wants fairly easily.
+  ENHANCEMENT : Join command and index.lib.php have been rewriten together in order
+			to reduce the number of SQL queries.
+  ENHANCEMENT : Add a beep feature in users popup for notification of user entrance.
+  ENHANCEMENT : Message from the system (notification of user entrance/exit, promotion
+			to moderator...) are now all language dependant.
+  ENHANCEMENT : Replaced the drop down list for message color by a color picker for 
+			JavaScript1.1+ enabled browsers thanks to
+			Tomas Haluza <thaluza@kiss.cz>, else display the drop down list.
+  ENHANCEMENT : Added a 'swear words' filter thanks to Gustavo Iwamoto <iwamoto@zaz.com.br>
+			and Fabiano R. Prestes <zoso@post.com>
+  ENHANCEMENT : Added persistent connection mode that allows much faster and non-blinking
+			appearance of new messages thanks to Jezek2 of the phpHeaven Team.
+  ENHANCEMENT : Added an undocumented command to lauch the help popup : /help or /?
+  ENHANCEMENT : ignored nicks are dynamicaly displayed in the ignored popup.
+  ENHANCEMENT : Setup process to automatically check for administrator language at startup.
+  ENHANCEMENT : three more translations (Croatian, partial Korean and some Japanese words).
+  BUG FIXED   : some problems of compatibility with php4 have been solved using
+			associated arrays for input data (POST, GET, cookies, environment and
+			other server variables).
+  BUG FIXED   : on the start page, links for registering and admin stuff lacks of the
+			chat path for javascript non-enabled browsers.
+  BUG FIXED   : users list in users frame and users popup is now well displayed under
+			Netscape Navigator.
+  BUG FIXED   : user can no longer chat in two rooms at the same time with the same nick.
+  BUG FIXED   : user will be automatically connected again when they resize the main
+			window with Netscape.
+  BUG FIXED   : bad link was displayed in whois popup when the user had registered an
+			url without the "http://" prefix.
+  BUG FIXED   : list of nicks separated by a comma wasn't working in the ignore command.
+  BUG FIXED   : cookies didn't work the way they should because of invalid
+			specifications.
+  CHANGE      : the readme.txt file and the whole 'docs' dir have been put to the root
+			of the package.
+
+
+v 0.13.1 - 21/07/2000
+"""""""""""""""""""""
+  ENHANCEMENT : rewrite of the "easy configuration" process. It now allows
+			a choice of interface languages. Also a far better English
+			syntax thanks to Martin Edelius <martin.edelius@spirex.se>.
+
+
+v 0.13.0 - 20/07/2000
+"""""""""""""""""""""
+
+  Huge debugging of the whole script and enhancements, thank to
+	Lolo and Jezek2 of the phpHeaven Team,
+	Alexei Shalin <sysadmin@dom.bishkek.su>,
+	Dean Lin <dean@xlinux.com>,
+	Martin Edelius <martin.edelius@spirex.se>,
+	Charles <webmestre@picardie-infos.com>,
+	Sbastien BERNARD <sbernard@mouzaia.com>,
+	and many other people with great ideas ...
+
+  BUG FIXED   : a private message containing a comma gave an error
+  BUG FIXED   : when a registered user called the join command or clicked
+			on a room name at the users frame, the value of the php variable
+			that contained the password was automatically changed so it no
+			longer corresponded to the password stored in the database.
+  BUG FIXED   : an user who didn't quit phpMyChat in a clean way and who
+			was then kicked by the admin or a moderator never was
+			removed from the database.
+  BUG FIXED   : problems with IE when messages with iso-8859-1 special
+			characters were typed in on a non iso-8859-1 charset
+  BUG FIXED   : bad regular expressions to exclude some special
+			characters from users and rooms name in 'index.php', 
+			'register.php', 'edituser.php'...
+  BUG FIXED   : bad number of message displayed in the message frame when
+			notification was off
+  BUG FIXED   : when no messages were available and notify was off,
+			the 'no message' text wasn't displayed
+  BUG FIXED   : because of notifications, rooms created by users were always
+			displayed in the start page even if there was no "true"
+			message into.
+  ENHANCEMENT : new lib to add the number or list of users connected to any
+			of your own pages
+  ENHANCEMENT : new lib to add the chat connexion layout to your own page
+  ENHANCEMENT : registered users can now log with the same nick even if they
+			weren't deleted from db.
+  ENHANCEMENT : rewrite of the "easy configuration" process that allows now
+			to update database from previous releases (0.12.0 & 0.12.1)
+  ENHANCEMENT : from the admin script, you can now delete rooms. And registered
+			users who haven't login for a delay defined in config file
+			may be automatically deleted.
+  ENHANCEMENT : status of users (admin or moderator/other) are now displayed
+			in user list
+  ENHANCEMENT : you can set a timezone offset between server time and your
+			country in config file.
+  ENHANCEMENT : server time is now displayed in status bar if user choose to
+			show timestamps before messages.
+  ENHANCEMENT : new command '/promote'
+  ENHANCEMENT : database structure and access optimisation
+  ENHANCEMENT : in the config file, a switch allows to show/hide the delete
+			profile link at the start page
+  ENHANCEMENT : three more translations (swedish, romanian and greek)
+  CHANGE      : commands have been separated in multiple files, one for each
+  CHANGE      : commands in help popup are now ordered alphabetically
+
+
+v 0.12.1 - 13/06/2000
+"""""""""""""""""""""
+
+  BUG FIXED   : database query error while kicking an user.
+
+
+v 0.12.0 - 12/06/2000
+"""""""""""""""""""""
+
+  Huge revalidation of the whole script.
+
+  ENHANCEMENT : a registration procedure is available for users, and you can
+			choose to allow only regitered users, or not, with a switch in
+			config file (optional registration is default).
+  ENHANCEMENT : administrator functionalities have been created. You can put
+			a link to run them at the first screen of the chat
+			with a switch in config file (default is disabled).
+  ENHANCEMENT : multi-language stuff can be disabled with a switch in config
+			file (default to enabled).
+  ENHANCEMENT : notifications are added to message tables when users log in or
+			exit. A switch in config file set them displayed or not to
+			default.
+  ENHANCEMENT : more commands (true private messages, whois popup,
+			kick for the administrator of a room, profile to edit his
+			own one, notify to show/hide notifications).
+  ENHANCEMENT : a php setup file has been added to simplify phpMyChat
+			installation.
+  ENHANCEMENT : help popup now contains some lines for text formatting elements.
+  ENHANCEMENT : all "_top" targets in link tags and top objects in javascript
+			functions have been replaced by "_parent".
+  ENHANCEMENT : more translations.
+  BUG FIXED   : style sheet problem in link frame with Netscape Navigator.
+
+
+v 0.11.2 - 30/05/2000
+
+"""""""""""""""""""""
+
+  ENHANCEMENT : when users forget to choose a room, they are logged
+			into the first default room
+  ENHANCEMENT : more translations
+  BUG FIXED   : error when single quotes are included in messages
+
+
+v 0.11.1 - 18/05/2000
+"""""""""""""""""""""
+
+  BUG FIXED   : error in PostgreSQL library
+  BUG FIXED   : style sheet problem in help popup
+  BUG FIXED   : language translation corrections
+
+
+v 0.11.0 - 17/05/2000
+"""""""""""""""""""""
+
+  ENHANCEMENT : more IRC-like commands, thanks to
+                  Loc Chapeaux <loic-info@netcourrier.com>
+  ENHANCEMENT : user can now chose the interface language, thanks to
+                  Loc Chapeaux <loic-info@netcourrier.com>
+  BUG FIXED   : PERL-like regular expressions used only if they are supported  
+  BUG FIXED   : database connections number minimized to avoid errors
+
+
+v 0.10.3 - 28/04/2000
+"""""""""""""""""""""
+
+  BUG FIXED
+
+
+v 0.10.2 - 28/04/2000
+"""""""""""""""""""""
+
+  ENHANCEMENT : now supports some IRC-like commands, thanks to
+                  Loc Chapeaux <loic-info@netcourrier.com>
+
+
+v 0.10.1 - 21/04/2000
+"""""""""""""""""""""
+
+  BUG FIXED   : moving to another room was impossible
+  CHANGE      : available languages shown on index page as flags
+
+
+v 0.10.0 - 19/04/2000
+"""""""""""""""""""""
+
+  A LOT OF CHANGES, YOU MUST MODIFY YOUR TABLES IN THE DATABASE !!!
+  
+  ENHANCEMENT : now supports PostgreSQL database, thanks to
+                  Martin Dvorak <jezek2@penguin.cz>
+  ENHANCEMENT : now supports ODBC, thanks to J. "Guli" Mikulas <guli1@email.cz>
+  ENHANCEMENT : now accepts some HTML tags in messages (configurable), thanks to
+                  Martin Dvorak <jezek2@penguin.cz> and Matthieu Belge <mbelge@free.fr>
+  CHANGE      : more and more options in config/config.lib.php !!!
+
+
+v 0.9.2 - 14/04/2000
+""""""""""""""""""""
+
+  LANGUAGE    : Czech by Martin Dvorak <jezek2@penguin.cz>
+
+
+v 0.9.1 - 14/04/2000
+""""""""""""""""""""
+
+  BUG FIXED   : Users in private rooms were counted on index page
+  ADDITION    : First release with '*.txt' files
+
+
+v 0.9.0 - 13/04/2000
+""""""""""""""""""""
+
+  ENHANCEMENT : Messages order chosable by the user, default one chosen by admin
+  LANGUAGE    : Thai by Patrice Thiroloix <keng@franco-thai.com>
+
+
+v 0.8.0 - 03/04/2000
+""""""""""""""""""""
+
+
+v 0.7.0 - 09/03/2000
+""""""""""""""""""""
+
+  CHANGE      : configuration done with constants instead of variables
+  ENHANCEMENT : now works with PHP4
+  ENHANCEMENT : list of users in a popup
+  ENHANCEMENT : language now configurable, English and French available
+
+
+v 0.1.0 - ?
+"""""""""""
+
+  First release, so no bugs, no changes and no enhancements !!! :D
diff -ruN 0.14.5/docs/copying.txt 0.15.0/docs/copying.txt
--- 0.14.5/docs/copying.txt	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/docs/copying.txt	2004-04-01 03:07:46.000000000 -0600
@@ -1,340 +1,340 @@
-		    GNU GENERAL PUBLIC LICENSE
-		       Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-			    Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-		    GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-			    NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-		     END OF TERMS AND CONDITIONS
-
-	    How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) 19yy  <name of author>
-
-    This program 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.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-    Gnomovision version 69, Copyright (C) 19yy name of author
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-  <signature of Ty Coon>, 1 April 1989
-  Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Library General
-Public License instead of this License.
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) 19yy  <name of author>
+
+    This program 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.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) 19yy name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff -ruN 0.14.5/docs/credits.txt 0.15.0/docs/credits.txt
--- 0.14.5/docs/credits.txt	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/docs/credits.txt	2004-04-01 03:07:46.000000000 -0600
@@ -1,99 +1,127 @@
-
-----------------------------
- phpMyChat Development Team
-----------------------------
-
-
-Core developers
-"""""""""""""""
-
-Nicolas Hoizey <nhoizey@phpheaven.net>
-  Initial concepts and design
-  Bugs fix
-  Documentation
-
-Loc Chapeaux <lolo@phpheaven.net>
-  JavaScript enhancements
-  IRC-style commands
-  Easy installation process
-  Bugs fix
-
-Matthieu Belge <mbelge@free.fr>
-  Great Perl-like regular expressions
-
-Martin Dvorak <jezek2@penguin.cz>
-  HTML tags parsing in messages
-  User registration
-  Administration
-  Commands
-  Bugs fix
-
-Christian Hacker <c.hacker@dreamer-chat.de>
-  Mail feature for the administrator
-
-Etienne Gagnon <tinou@tinou.net>
-  Database optimization
-
-
-Localization
-""""""""""""
-
-  Arabic               : Khalid Aljabri <webksa@yahoo.com>
-  Argentinian spanish  : Jorge Colaccini <jrc@informas.com>
-  Bosnian              : Nermina Akkaya <Seka@bosna.de>
-  Brazilian-Portuguese : Fabiano R. Prestes <zoso@post.com>
-  Catalan & Andoran    : Jan Arbona <jan@myp.ad>
-  Chinese simplified   : BoyStudio <zrr@371.net> and <kde@371.net>, Che Dong <chedong@yeah.net>
-  Chinese traditional  : Wei Shou-da <shouda@ms14.url.com.tw>, Vincent Liao <vincent@roc.net>
-  Croatian             : Vlatko Koturjak <kost@iname.com>
-  Czech                : Martin Dvorak <jezek2@penguin.cz>
-  Danish               : Jonas Koch Bentzen <post@jonaskochbentzen.dk>
-			 & Kenneth Kristiansen <kk@linuxfreak.adsl.dk>
-  Dutch                : Hans Paijmans <paai@kub.nl>, Kasper Souren <guaka@industree.org>,
-                         Sander Corbesir <rock@jascrc.com>
-  English              : Nicolas Hoizey <nhoizey@phpheaven.net>
-  Estonian             : Tarmo Protsin <tarmo@gt.ee>
-  Finnish              : Jani Peltola <webmaster@melnworld.com> & Veli-Pekka Yliniemi <gate@zoo-gate.fi>
-  French               : Loc Chapeaux <lolo@phpheaven.net>
-  French-Canadian      : Guylhem Aznar <guylhem@metalab.unc.edu>
-  Georgian             : George Gongadze <webmaster@georgia-gateway.org>
-  German               : Bernard Piller <bernard@bmpsystems.com>, Silke Oettle <silke@beardedcollie.de>,
-                         Martin Sander <Martin.Sander@touch-screen.de>, Robert Schaller <robert@schaller.com>,
-                         Wolfgang Schneider <schneider@bibelcenter.de>, Michael Schoening <m.schoening@ticketboy.de>
-  Greek                : Nikos Kyriakidis <nikoskyr@hotmail.com>
-  Icelandic            : Andri skarsson <andri@bofh.is>
-  Italian              : Andrea D'Alessandro <andrea@abol.it>, Daniele <danybec@tin.it>,
-                         Massimo Fubini <massimo@tomato.it>, Giuliano Yurij Beccaria <yurij@e-pages.it>,
-                         Marco Borrini <marco.borrini@tradimento.it>,
-                         Bartolotta Gioachino <develoeprs@rockitalia.com>
-                         & Silvia M. Carrassi <silvia@ladysilvia.net>
-  Japanese             : Yosuke Hamamoto <yosuke@key-net.ne.jp>
-  Korean               : Hongki Lee <genius@mail.chonga.pe.kr> & TaeHwan Bae <bth1202@hanmail.net>
-  Malay                : Nazri Hussain <nazrih@mimos.my>
-  Norwegian            : Arne Brune Olsen <router@router.nu>
-  Polish               : Piotr Gapiski <narg@polbox.com>, Krzysztof Szatanik (Diablo/MAO) <diabl0@linuxpl.org>
-  Portuguese           : Gustavo Felisberto <humpback@d-attitude.com>, Jose' Carlos Pereira <phpHeaven@abismo.org>
-  Romanian             : Ciprian Popovici-Oana <floppy@kermit.cs.pub.ro>, Radu Swider <swidera@satline.ro>
-  Russian              : Stas Gobunov <stas@komus.net>, Alexei Shalin <happyalex@totel.kg>
-                         & Dim Zegebart <keks@rbcmail.ru> & Arsen <arsen@betus.usi.ru>
-  Slovak               : Peter Belak <pepek@pobox.sk>, Marek Rybar <webmaster@satelit.sk>
-                         & Richard Marko <spirit@feeha.sk>
-  Spanish              : Alejandro G. Bitran <agallegi@pasteur.minsal.cl>, Caridad Z. Contreras <zzuga@qlogic.net>
-                         Pedro Garassino <pedro@dkanontower.com>, Josep Romn <josep.roman@zuerich-see.ch>
-                         & Victor M. Varela
-  Swedish              : Martin Edelius <martin.edelius@spirex.se>
-  Thai                 : Patrice Thiroloix <keng@franco-thai.com>
-  Turkish              : Hasan Ucar <webmaster@memleketimiz.com>
-
-
-Database Specific Code
-""""""""""""""""""""""
-
-Nicolas Hoizey <nhoizey@phpheaven.net>
-  MySQL library
-
-Martin Dvorak <jezek2@penguin.cz>
-  PostgreSQL library
-
-J. "Guli" Mikulas <guli1@email.cz>
-  ODBC library
+----------------------------
+ phpMyChat Development Team
+----------------------------
+
+
+Core developers
+"""""""""""""""
+
+Nicolas Hoizey <nhoizey@phpheaven.net>
+  Initial concepts and design
+  Bugs fix
+  Documentation
+
+Loc Chapeaux <lolo@phpheaven.net>
+  JavaScript enhancements
+  IRC-style commands
+  Easy installation process
+  Bugs fix
+
+Matthieu Belge <mbelge@free.fr>
+  Great Perl-like regular expressions
+  Benchmarks
+
+Martin Dvorak <jezek2@penguin.cz>
+  HTML tags parsing in messages
+  User registration
+  Administration
+  Commands
+  Bugs fix
+
+Christian Hacker <c.hacker@dreamer-chat.de>
+  Mail feature for the administrator
+
+Etienne Gagnon <tinou@tinou.net>
+  Database design and optimization
+
+Sergey I. Golod <rover@tob.ru>
+  Security analysis
+
+
+Localization
+""""""""""""
+
+  Arabic               : Khalid Aljabri <webksa@yahoo.com>
+  Argentinian spanish  : Jorge Colaccini <jrc@informas.com>
+  Azerbaijani          : Emin Huseynov <emin@bak.net.az>
+  Bosnian              : Nermina Akkaya <Seka@bosna.de>
+  Brazilian-Portuguese : Fabiano R. Prestes <zoso@post.com>
+  Bulgarian            : Lao Dzi <daodadzin@abv.bg>
+  Catalan & Andoran    : Jan Arbona <jan@myp.ad>
+  Chinese simplified   : BoyStudio <zrr@371.net> and <kde@371.net>,
+  							Che Dong <chedong@yeah.net> and Perry Huang <perryhg@hotmail.com>
+  Chinese traditional  : Wei Shou-da <shouda@ms14.url.com.tw>,
+  							Vincent Liao <vincent@roc.net>
+  Croatian             : Vlatko Koturjak <kost@iname.com>
+  Czech                : Martin Dvorak <jezek2@penguin.cz>
+  Danish               : Jonas Koch Bentzen <post@jonaskochbentzen.dk>,
+							Kenneth Kristiansen <kk@linuxfreak.adsl.dk>
+  Dutch                : Hans Paijmans <paai@kub.nl>,
+  							Kasper Souren <guaka@industree.org>,
+							Sander Corbesir <rock@jascrc.com>
+  English              : Nicolas Hoizey <nhoizey@phpheaven.net>
+  Estonian             : Tarmo Protsin <tarmo@gt.ee>
+  Finnish              : Jani Peltola <webmaster@melnworld.com>,
+  							Veli-Pekka Yliniemi <gate@zoo-gate.fi>
+  French               : Loc Chapeaux <lolo@phpheaven.net>
+  French-Canadian      : Guylhem Aznar <guylhem@metalab.unc.edu>
+  Georgian             : George Gongadze <webmaster@georgia-gateway.org>
+  German               : Bernard Piller <bernard@bmpsystems.com>,
+  							Torsten Klein <torsten.klein@berlin.de>,
+							Silke Oettle <silke@beardedcollie.de>,
+							Martin Sander <Martin.Sander@touch-screen.de>,
+							Robert Schaller <robert@schaller.com>,
+							Wolfgang Schneider <schneider@bibelcenter.de>,
+							Michael Schoening <m.schoening@ticketboy.de>
+  Greek                : Nikos Kyriakidis <nikoskyr@hotmail.com>,
+  							Symeon Charalabides <symeon@lycos.com>
+  Hungarian            : Jobbgy Mikls <mike@trigon.hu> from Trigon Informatics Ltd., Budapest
+  Icelandic            : Andri skarsson <andri@bofh.is>
+  Italian              : Andrea D'Alessandro <andrea@abol.it>,
+  							Daniele <danybec@tin.it>,
+							Massimo Fubini <massimo@tomato.it>,
+							Giuliano Yurij Beccaria <yurij@e-pages.it>,
+							Marco Borrini <marco.borrini@tradimento.it>,
+							Bartolotta Gioachino <develoeprs@rockitalia.com>,
+							Silvia M. Carrassi <silvia@ladysilvia.net>
+  Japanese             : Yosuke Hamamoto <yosuke@key-net.ne.jp>
+  Korean               : Hongki Lee <genius@mail.chonga.pe.kr>,
+  							TaeHwan Bae <bth1202@hanmail.net>
+  Malay                : Nazri Hussain <nazrih@mimos.my>
+  Norwegian            : Arne Brune Olsen <router@router.nu>
+  Polish               : Piotr Gapiski <narg@polbox.com>,
+  							Krzysztof Szatanik (Diablo/MAO) <diabl0@linuxpl.org>
+  							Vasyl for www.katolik.pl
+  Portuguese           : Gustavo Felisberto <humpback@d-attitude.com>,
+  							Jose' Carlos Pereira <phpHeaven@abismo.org>
+  Romanian             : Ciprian Popovici-Oana <floppy@kermit.cs.pub.ro>,
+  							Radu Swider <swidera@satline.ro>
+  Russian              : Stas Gobunov <stas@komus.net>,
+  							Alexei Shalin <happyalex@totel.kg>,
+							Dim Zegebart <keks@rbcmail.ru>,
+							Arsen <arsen@betus.usi.ru>
+  Slovak               : Peter Belak <pepek@pobox.sk>,
+  							Marek Rybar <webmaster@satelit.sk>,
+							Richard Marko <spirit@feeha.sk>
+  Spanish              : Alejandro G. Bitran <agallegi@pasteur.minsal.cl>,
+  							Caridad Z. Contreras <zzuga@qlogic.net>,
+							Pedro Garassino <pedro@kanontower.com>,
+							Len Del Ro <leon@webmaster.com.mx>,
+							Josep Romn <josep.roman@zuerich-see.ch>,
+							Victor M. Varela
+  Swedish              : Martin Edelius <martin.edelius@spirex.se>
+  Thai                 : Patrice Thiroloix <keng@franco-thai.com>
+  Turkish              : Hasan Ucar <webmaster@memleketimiz.com>
+
+
+Database Specific Code
+""""""""""""""""""""""
+
+Nicolas Hoizey <nhoizey@phpheaven.net>
+  MySQL library
+
+Martin Dvorak <jezek2@penguin.cz>
+  PostgreSQL library
+
+J. "Guli" Mikulas <guli1@email.cz>
+  ODBC library
diff -ruN 0.14.5/docs/database.txt 0.15.0/docs/database.txt
--- 0.14.5/docs/database.txt	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/docs/database.txt	2004-04-01 03:07:46.000000000 -0600
@@ -1,41 +1,41 @@
------------
- Databases
------------
-
-
-The goal is not to help you setup your database for general use,
-just how to setup the tables for phpMyChat.
-
-
-Requirements
-""""""""""""
-
-phpMyChat currently supports 3 types of database :
-
-   MySql
-   PostgreSQL
-   ODBC
-
-MySql is the original database supported by phpMyChat and should at
-all times (most likely) work for sure.
-
-You will need to have your database preconfigured and working on
-your system before you get to this stage. For help with this, please
-consult your database specific help files.
-
-
-Installation
-""""""""""""
-
-You will need to setup 3 tables.
-
-The database name itself can be anything but the best name for it is
-just 'phpmychat'.
-
-The table names also can be changed; but by leaving them to what is
-shown, you'll have one less step later on.
-
-For those who want to change table names, you'll also need to change
-the values for each within the 'chat/config/config.lib.php3' file.
-
-Table creation scripts are in the 'chat/install/databases' directory.
+-----------
+ Databases
+-----------
+
+
+The goal is not to help you setup your database for general use,
+just how to setup the tables for phpMyChat.
+
+
+Requirements
+""""""""""""
+
+phpMyChat currently supports 3 types of database :
+
+   MySql
+   PostgreSQL
+   ODBC
+
+MySql is the original database supported by phpMyChat and should at
+all times (most likely) work for sure.
+
+You will need to have your database preconfigured and working on
+your system before you get to this stage. For help with this, please
+consult your database specific help files.
+
+
+Installation
+""""""""""""
+
+You will need to setup 3 tables.
+
+The database name itself can be anything but the best name for it is
+just 'phpmychat'.
+
+The table names also can be changed; but by leaving them to what is
+shown, you'll have one less step later on.
+
+For those who want to change table names, you'll also need to change
+the values for each within the 'chat/config/config.lib.php' file.
+
+Table creation scripts are in the 'chat/install/databases' directory.
diff -ruN 0.14.5/docs/help.txt 0.15.0/docs/help.txt
--- 0.14.5/docs/help.txt	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/docs/help.txt	2004-04-01 03:07:46.000000000 -0600
@@ -1,9 +1,9 @@
---------------
- Getting Help
---------------
-
-
-There is a web page for phpMyChat at http://www.phpheaven.net/
-
-There is also a mailing list phpmychat@egroups.com to which you can subscribe
-by sending a blank email to phpmychat-subscribe@egroups.com
+--------------
+ Getting Help
+--------------
+
+
+There is a web page for phpMyChat at http://www.phpheaven.net/
+
+There is also a mailing list phpmychat@egroups.com to which you can subscribe
+by sending a blank email to phpmychat-subscribe@egroups.com
diff -ruN 0.14.5/docs/install.txt 0.15.0/docs/install.txt
--- 0.14.5/docs/install.txt	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/docs/install.txt	2004-04-01 03:07:46.000000000 -0600
@@ -1,69 +1,69 @@
-
---------------------
- Installation Guide
---------------------
-
-
-Requirements
-""""""""""""
-
-  PHP 3.x or greater
-
-  A web server supported by PHP (Apache is most widely used)
-
-  A database with adequate support compiled into PHP
-
-
-Installation
-""""""""""""
-
-The most common method of installing phpMyChat is to grab the archive,
-unzip it somewhere and run through the code making all the changes you need.
-
-Here is the process:
-
-1) Obtain phpmychat*.zip
-
-2) unzip it into the directory you want
-
-3) Make sure your directory structure is like this:
-
-      chat/
-      chat/config
-      chat/images
-      chat/images/smilies
-      chat/install
-      chat/install/databases
-      chat/install/languages
-      chat/lib
-      chat/lib/commands
-      chat/lib/database
-      chat/localization
-      chat/localization/*
-      chat/tutorials
-      docs/
-
-4) Before updating from an older version of phpMyChat, clean the messages table
-   (using the 'chat/admin.php3' script of the old version, for example).
-
-5) Then you have two possibilities :
-
-   a) Use the online configuration tool by accessing 'chat/setup.php3'
-
-   b) Do it manually. Move into 'chat/config' directory and make changes to the
-      config.lib.php3 file. This file is well documented, so you should be able to
-      pick out what you need to change fairly easily.
-
-6) Once all this has been done, you should protect the config file (that contains
-   your login/password for db access). Look at your server documentation to find out
-   how to do this.
-   For the Apache server, you'll need to create an ".htaccess" file (without quotes) in
-   the config subdir that contains:
-
-      <files config.lib.php3>
-      Order Deny,Allow
-      Deny From All
-      </files>
-
-7) Add more languages by downloading them on phpHeaven, and put the directories
-   in chat/localization/
+
+--------------------
+ Installation Guide
+--------------------
+
+
+Requirements
+""""""""""""
+
+  PHP 3.x or greater
+
+  A web server supported by PHP (Apache is most widely used)
+
+  A database with adequate support compiled into PHP
+
+
+Installation
+""""""""""""
+
+The most common method of installing phpMyChat is to grab the archive,
+unzip it somewhere and run through the code making all the changes you need.
+
+Here is the process:
+
+1) Obtain phpmychat*.zip
+
+2) unzip it into the directory you want
+
+3) Make sure your directory structure is like this:
+
+      chat/
+      chat/config
+      chat/images
+      chat/images/smilies
+      chat/install
+      chat/install/databases
+      chat/install/languages
+      chat/lib
+      chat/lib/commands
+      chat/lib/database
+      chat/localization
+      chat/localization/*
+      chat/tutorials
+      docs/
+
+4) Before updating from an older version of phpMyChat, clean the messages table
+   (using the 'chat/admin.php' script of the old version, for example).
+
+5) Then you have two possibilities :
+
+   a) Use the online configuration tool by accessing 'chat/setup.php'
+
+   b) Do it manually. Move into 'chat/config' directory and make changes to the
+      config.lib.php file. This file is well documented, so you should be able to
+      pick out what you need to change fairly easily.
+
+6) Once all this has been done, you should protect the config file (that contains
+   your login/password for db access). Look at your server documentation to find out
+   how to do this.
+   For the Apache server, you'll need to create an ".htaccess" file (without quotes) in
+   the config subdir that contains:
+
+      <files config.lib.php>
+      Order Deny,Allow
+      Deny From All
+      </files>
+
+7) Add more languages by downloading them on phpHeaven, and put the directories
+   in chat/localization/
diff -ruN 0.14.5/docs/todo.txt 0.15.0/docs/todo.txt
--- 0.14.5/docs/todo.txt	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/docs/todo.txt	2004-04-01 03:07:46.000000000 -0600
@@ -1,14 +1,14 @@
---------------
- Things to do
---------------
-
-
-Additionnal features
-""""""""""""""""""""
-
-- Session handler to avoid passing login/password in url
-- Better system to display DB error messages
-- Better design configuration
-- Allow to limit the number of smilies in each message
-- Command for administrator to unpromote
-- Dynamic integration of smilies, like for languages
+--------------
+ Things to do
+--------------
+
+
+Additionnal features
+""""""""""""""""""""
+
+- Session handler to avoid passing login/password in url
+- Better system to display DB error messages
+- Better design configuration
+- Allow to limit the number of smilies in each message
+- Command for administrator to unpromote
+- Dynamic integration of smilies, like for languages
diff -ruN 0.14.5/docs/translation.txt 0.15.0/docs/translation.txt
--- 0.14.5/docs/translation.txt	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/docs/translation.txt	2004-04-01 03:07:46.000000000 -0600
@@ -1,42 +1,42 @@
------------------------
- Translating phpMyChat
------------------------
-
-
-If you can translate phpMyChat in a language that is not included in the
-package or improve/complete an existing translation, please do so and send us back the
-files. They will be included in the next release with credits for you, of
-course.
-
-Four parts of phpMyChat may be translated : the strings used
-during a chat discussion, the tutorial, the string used by the administration
-script and the strings used for the setup process.
-
-
-How to translate phpMyChat ?
-""""""""""""""""""""""""""""
-
-The most important ones are the first three file in the list before. Among them:
-- if you have not much time just translate the first one (used by the main script);
-- if you have a little more time translate the third one (used by the admin script);
-- if you still have some free time, translate the second one (the tutorial).
-
-To create a new translation for phpMyChat:
-- duplicate the 'chat/localization/english' sub-directory and rename it with the
-	name of the new language (for example, 'chat/localization/venusian');
-- inside this new directory, edit the file you want to do the work for
-	('localized.chat.php3', 'localized.admin.php3' and 'localized.tutorial.php3'
-	contain strings used by the main script, the administration script
-	and tutorial) and translate all the English strings inside (those which
-	appear in "define" instructions);
-- you may now add your name and e-mail at the top of the file you have translated;
-- then replace the 'flag.gif' icon with the one corresponding to your translation
-	(same format, please).
-
-To improve/complete a translation: just edit the corresponding file from the
-'chat/localization/yourlang' sub-directory and do the work.
-
-
-Lastly, if you don't know what to do all day long, you can translate the
-setup process. The work to do is the same than the one described before, except that it
-applies to only one file located in the 'chat/setup/languages' sub-directory.
+-----------------------
+ Translating phpMyChat
+-----------------------
+
+
+If you can translate phpMyChat in a language that is not included in the
+package or improve/complete an existing translation, please do so and send us back the
+files. They will be included in the next release with credits for you, of
+course.
+
+Four parts of phpMyChat may be translated : the strings used
+during a chat discussion, the tutorial, the string used by the administration
+script and the strings used for the setup process.
+
+
+How to translate phpMyChat ?
+""""""""""""""""""""""""""""
+
+The most important ones are the first three file in the list before. Among them:
+- if you have not much time just translate the first one (used by the main script);
+- if you have a little more time translate the third one (used by the admin script);
+- if you still have some free time, translate the second one (the tutorial).
+
+To create a new translation for phpMyChat:
+- duplicate the 'chat/localization/english' sub-directory and rename it with the
+	name of the new language (for example, 'chat/localization/venusian');
+- inside this new directory, edit the file you want to do the work for
+	('localized.chat.php', 'localized.admin.php' and 'localized.tutorial.php'
+	contain strings used by the main script, the administration script
+	and tutorial) and translate all the English strings inside (those which
+	appear in "define" instructions);
+- you may now add your name and e-mail at the top of the file you have translated;
+- then replace the 'flag.gif' icon with the one corresponding to your translation
+	(same format, please).
+
+To improve/complete a translation: just edit the corresponding file from the
+'chat/localization/yourlang' sub-directory and do the work.
+
+
+Lastly, if you don't know what to do all day long, you can translate the
+setup process. The work to do is the same than the one described before, except that it
+applies to only one file located in the 'chat/setup/languages' sub-directory.
diff -ruN 0.14.5/index.php 0.15.0/index.php
--- 0.14.5/index.php	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/index.php	2004-04-01 03:06:22.000000000 -0600
@@ -0,0 +1,54 @@
+<?php
+// This is an example of what may be done to include phpMyChat into an
+// existing web page, regardless of its name.
+// You can also include such a file in a frameset.
+
+// Lines below must be at the top of your file because 'index.lib.php'
+// sets headers and cookies.
+$ChatPath = "chat/";	// relative path to chat dir, empty value if this
+						// file is in the same dir than the chat;
+require("./${ChatPath}lib/index.lib.php");
+?>
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML dir="<?php echo(($Charset == "windows-1256") ? "RTL" : "LTR"); ?>">
+
+<HEAD>
+<?php
+// You can put html head statements right after the "<HEAD>" tag.
+
+// Both values are boolean. See explanations in 'index.lib.php' file.
+send_headers(1,1);
+?>
+</HEAD>
+
+<BODY>
+<?php
+// If nothing other than phpMyChat is loaded in this page, or if you want
+// to have the same background color as phpMyChat for the whole page,
+// you have to modify the BODY tag to '<BODY CLASS="ChatBody">'
+// You can put html statements right after the "<BODY>" tag or add
+// php code here.
+
+$Is_Error = (isset($Error));
+
+if (isset($HTTP_COOKIE_VARS))
+{
+	if (isset($HTTP_COOKIE_VARS["CookieUsername"])) $CookieUsername = $HTTP_COOKIE_VARS["CookieUsername"];
+	if (isset($HTTP_COOKIE_VARS["CookieRoom"])) $CookieRoom = $HTTP_COOKIE_VARS["CookieRoom"];
+	if (isset($HTTP_COOKIE_VARS["CookieRoomType"])) $CookieRoomType = $HTTP_COOKIE_VARS["CookieRoomType"];
+};
+$Username = (isset($CookieUsername) ? $CookieUsername : "");
+$Room_name = (isset($CookieRoom) ? $CookieRoom : "");
+$Room_type = (isset($CookieRoomType) ? $CookieRoomType : "");
+
+layout($Is_Error,$Username,$Room_name,$Room_type);
+
+// You can add php code here, or add html statements before the "</BODY>" tag.
+?>
+</BODY>
+
+</HTML>
+<?php
+// The following line is required
+$DbLink->close();
+?>
\ No newline at end of file
diff -ruN 0.14.5/phpMyChat.php3 0.15.0/phpMyChat.php3
--- 0.14.5/phpMyChat.php3	2005-11-30 16:06:11.000000000 -0600
+++ 0.15.0/phpMyChat.php3	1969-12-31 18:00:00.000000000 -0600
@@ -1,54 +0,0 @@
-<?php
-// This is an example of what may be done to include phpMyChat into an
-// existing web page, regardless of its name.
-// You can also include such a file in a frameset.
-
-// Lines below must be at the top of your file because 'index.lib.php3'
-// sets headers and cookies.
-$ChatPath = "chat/";	// relative path to chat dir, empty value if this
-						// file is in the same dir than the chat;
-require("./${ChatPath}lib/index.lib.php3");
-?>
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<HTML dir="<?php echo(($Charset == "windows-1256") ? "RTL" : "LTR"); ?>">
-
-<HEAD>
-<?php
-// You can put html head statements right after the "<HEAD>" tag.
-
-// Both values are boolean. See explanations in 'index.lib.php3' file.
-send_headers(1,1);
-?>
-</HEAD>
-
-<BODY>
-<?php
-// If nothing other than phpMyChat is loaded in this page, or if you want
-// to have the same background color as phpMyChat for the whole page,
-// you have to modify the BODY tag to '<BODY CLASS="ChatBody">'
-// You can put html statements right after the "<BODY>" tag or add
-// php code here.
-
-$Is_Error = (isset($Error));
-
-if (isset($HTTP_COOKIE_VARS))
-{
-	if (isset($HTTP_COOKIE_VARS["CookieUsername"])) $CookieUsername = $HTTP_COOKIE_VARS["CookieUsername"];
-	if (isset($HTTP_COOKIE_VARS["CookieRoom"])) $CookieRoom = $HTTP_COOKIE_VARS["CookieRoom"];
-	if (isset($HTTP_COOKIE_VARS["CookieRoomType"])) $CookieRoomType = $HTTP_COOKIE_VARS["CookieRoomType"];
-};
-$Username = (isset($CookieUsername) ? $CookieUsername : "");
-$Room_name = (isset($CookieRoom) ? $CookieRoom : "");
-$Room_type = (isset($CookieRoomType) ? $CookieRoomType : "");
-
-layout($Is_Error,$Username,$Room_name,$Room_type);
-
-// You can add php code here, or add html statements before the "</BODY>" tag.
-?>
-</BODY>
-
-</HTML>
-<?php
-// The following line is required
-$DbLink->close();
-?>
\ No newline at end of file
diff -ruN 0.14.5/readme.txt 0.15.0/readme.txt
--- 0.14.5/readme.txt	1969-12-31 18:00:00.000000000 -0600
+++ 0.15.0/readme.txt	2004-04-01 03:06:22.000000000 -0600
@@ -0,0 +1,30 @@
+-----------------
+ Read me first !
+-----------------
+
+
+You will find the following files in the 'docs' directory :
+
+install.txt     : Installation guide
+database.txt    : Specific help for databases
+copying.txt     : Copyright license
+changes.txt     : List of changes in each release
+feedback.txt    : How you can help us
+translation.txt : How to translate phpMyChat
+help.txt        : Where you can find help
+credits.txt     : Who developed phpMyChat
+todo.txt        : What has to be done next
+
+
+Read the install.txt file first.
+
+It has everything you need to know to install phpMyChat on your system.
+
+
+We hope you will find phpMyChat useful and easy to use. Thank you for taking
+the time to try it. If you have any questions, just ask.
+
+Enjoy,
+
+
+The phpHeaven Team
\ No newline at end of file
