<?php

// Startfunktion för att beräkna på hur många millisekunder sidan laddas.
function startTiming()
{
	global $startTime;
	$microtime = microtime();
	$microsecs = substr($microtime, 2, 8);
	$secs = substr($microtime, 11);
	$startTime = "$secs.$microsecs";
}


// Slutfunktion för att beräkna på hur många millisekunder sidan laddas.
function stopTiming()
{
	global $startTime;

	$microtime = microtime();
	$microsecs = substr($microtime, 2, 8);
	$secs = substr($microtime, 11);
	$endTime = "$secs.$microsecs";
	echo "<font size=1 face=Verdana>" . round($endTime - $startTime,3) . "</font>";
}


// Funktion för att se hur många användare det är online
function getOnlineUsers()
{
	global $myDatabase,$idleTime;
	
	// Rensar ev. cachade variabler.
	unset ($vGuests);
	unset ($vReg);
	unset ($regUsers);
	unset ($userID);
	unset ($x);
	
	$vReg = 0;
	$vGuests = 0;
	
	// Hämtar userID 
	if (!$_COOKIE['userID']) $userID = 0;
	else $userID = $_COOKIE['userID'];
	
	$result = mysql_db_query($myDatabase,"SELECT * FROM McForum_onlineCounter") or die(mysql_error());
	
	// Antal besökare
	$vAntal = mysql_num_rows($result);
	
	while ($row = mysql_fetch_array($result))
	{
		// Om det är en registrerad eller inte registreard besökare
		if ($row['id'] > 0) $vReg++;
		else $vGuests++;
	
		// Ta bort från databasen om användaren varit inaktiv längre än $idleTime minuter
		if (($row['time'] + ($idleTime * 60)) < date(U))
		{
			mysql_db_query($myDatabase,"DELETE FROM McForum_onlineCounter WHERE id = '$row[id]' AND ip = '$row[ip]' AND time = '$row[time]'") or die(mysql_error());	
			$vAntal--;
			
			if ($row['id'] > 0) $vReg--;
			else $vGuests--;
		}
		
		// Om användaren finns i databasen och valt att titta på något, då uppdaterar vi dennes idletime
		if ($row[ip] == $_SERVER['REMOTE_ADDR'] && ($row['time'] + ($idleTime * 60)) > date(U))
		{	
			if ($userID != $row['id']) 
			{
				if ($userID != 0)
				{
					$vReg++; 
					$vGuests--; 
				}
				if ($userID == 0) 
				{
					$vGuests++; 
					$vReg--;
				}
			}
			
			mysql_db_query($myDatabase,"UPDATE McForum_onlineCounter SET id = '$userID', time = '".date(U)."' WHERE id = '$row[id]' AND ip = '".$_SERVER['REMOTE_ADDR']."' AND time = '$row[time]'") or die(mysql_error());
			$updated = 1;
		}
	}
	
	// Användaren finns inte med i databasen, då lagrar vi
	if (!$updated)
	{
		if ($userID > 0) $vReg++;
		else $vGuests++;
		mysql_db_query($myDatabase,"INSERT INTO McForum_onlineCounter (`id`,`ip`,`time`) VALUES ('$userID','".$_SERVER['REMOTE_ADDR']."','".date(U)."')") or die(mysql_error());
		$vAntal++;
		
		$regID = "".$userID.",".$regID."";
	}
	
	
	// Vi vill ha korrekt svenska ^^
	if ($vReg != "1") $vRegSprak = "e";
	if ($vGuests != "1") $vGuestSprak = "er";
	
	// Om det finns registrerade användare online vill vi självklart visa vilka de är
	if ($vReg > 0)
	{
		$antalx = 0;
		
		// Hämtar besökare
		$time = (date("U") - ($idleTime * 60));
		
		$result = mysql_db_query($myDatabase,"SELECT id FROM McForum_onlineCounter WHERE id != '0'") or die(mysql_error());

		$ant =1;

		while ($count = mysql_fetch_array($result))
		{
			if ($ant <= mysql_num_rows($result))
			{
				$regID = $count['id'];
				
				if (mysql_num_rows($result) > 1)
				{
					if ($ant < mysql_num_rows($result)) $teck = ",";
					else $teck = "";
					
					$regg = "$teck ".$regID."".$regg."";
				}
				
				if ($count['id'] != 0) $antalx++;
			}
			
			$ant++;
		}
		
		if ($regg) $regID = $regg;
				
		$regID = explode(",",$regID);
		$antal = count($regID);
		$komma = 0;

		// Sparar dom fint i en variabel
		for ($i = 0; $i <= $antal; $i++)
		{#echo "$i - $regID[$i]<br>";
		
			if (!empty($regID[$i]))
			{
				$myInfo = mysql_db_query($myDatabase,"SELECT id,username FROM McForum_users WHERE id = '$regID[$i]'") or die(mysql_error());
				$info = mysql_fetch_array($myInfo);
			
				$reUsers = "<a href=viewProfile.php?id=".$info['id'].">".$info['username']."</a>";

				if ($antalx > 0)
				{
					if ($komma == $antal || $komma == 0) $kom = "";
					else $kom = ",";		
				
					$regUsers = "".$regUsers."".$kom." ".$reUsers."";
				}
				else $regUsers = $reUsers;
				$komma++;
			}		
		}
	}
	
	if ($regUsers) $regUsers = "<br><br>Registrerade: ".$regUsers."";
	
	// Skicka ut svaret.
	return "För närvarandet är det <b>".$vAntal."</b> användare online: <b>".$vReg."</b> registrerad".$vRegSprak." och <b>".$vGuests."</b> gäst".$vGuestSprak.". ".$regUsers."";
}


// Visa online...
function showOnlineUsers()
{
	global $idleTime;

	// Korrekt svenska är bra!!1 :]
	if ($idleTime <= 1) $correct = "den senaste minuten."; 
	else $correct = "de senaste ".$idleTime." minuterna.";
	
	return ("
		<table cellpadding=0 cellspacing=0 border=0>
		<tr><td height=10></td></tr>
		<tr><td valign=bottom>".getOnlineUsers()."</td></tr>
		<tr><td height=5></td></tr>
		<tr><td valign=bottom class=smallNormal>Informationen är baserad på aktiva användare under ".$correct."</td></tr>
		</table>
	");
}


// Funktion för att visa var man befinner sig i forumet
function showWhereWeAre($headid,$threadid,$type)
{
	global $myDatabase,$PageTitle;
	
	$myHead = mysql_db_query($myDatabase,"SELECT cat_id,headline FROM McForum_headForum WHERE id = '$headid'") or die(mysql_error());
	$headRow = mysql_fetch_array($myHead);
	
	$myCat = mysql_db_query($myDatabase,"SELECT * FROM McForum_category WHERE id = '$headRow[cat_id]'") or die(mysql_error());
	$catRow = mysql_fetch_array($myCat);

	if ($threadid != 0 || $type == "newThread")
	{
		// Om tråden är låst och användaren inte är moderator eller administrator skall man inte kunna komma åt "Skriv Svar" knapp
		if (getLocked($threadid) != 1 || getRulers($head['head_id'],status) > 0) $postAwns = "<a href=postAwns.php?id=".$_GET['id']."><img src=img/ikon/postreply.gif border=0 alt='Skriv svar'></a>";

		$myThread = mysql_db_query($myDatabase,"SELECT headline FROM McForum_thread WHERE id = '$threadid'") or die(mysql_error());
		$threadRow = mysql_fetch_array($myThread);
		
		$headlink = "<a href=viewForum.php?id=".$headid.">";
		if ($type == "view") $thread = "</a>&raquo; ".$threadRow['headline']."";
		if ($type == "postAwns") $thread = "</a>&raquo; <a href=viewThread.php?id=".$threadid.">".$threadRow['headline']."</a>";

	}
	
	if ($type == "view") $knappar = "<a href=newThread.php?id=".$headid."><img src=img/ikon/nythread.gif border=0 alt='Ny tråd'></a> ".$postAwns."";
	
	return ("
		<table width=100% cellpadding=0 cellspacing=0 border=0>
		<tr><td colspan=2 align=left>
		<img src=img/plupp.gif vspace=2> <font size=2><b><a href=index.php>".$PageTitle."</a> &raquo; <a href=index.php#".$catRow['id'].">".$catRow['name']."</a> &raquo; ".$headlink."".$headRow['headline']." ".$thread."</b></font>
		</td></tr>
		<tr><td align=left class=smallNormal>Moderator: ".getRulers($headid,name)."</td><td align=right>".$knappar."</td></tr>
		<tr><td height=8></td></tr>
		</table>
	");
}


// Funktion för att visa vem som bestämmer i forumet (endast moderatorer, admins tycker om att vara hemliga!)
function getRulers($forumID,$type)
{
	global $myDatabase;
	
	// Moderatorer
	$myModerator = mysql_db_query($myDatabase,"SELECT * FROM McForum_moderators WHERE forum_id = '$forumID'") or die(mysql_error());
	
	if ($type == "name")
	{	
		$i = 1;
		
		while ($mod = mysql_fetch_array($myModerator))
		{
			$myUsername = mysql_db_query($myDatabase,"SELECT username FROM McForum_users WHERE id = '$mod[user_id]'") or die(mysql_error());
			$user = mysql_fetch_array($myUsername);
		
			if (mysql_num_rows($myModerator) != $i) $kom = ",";
			else unset ($kom);
			
			$mods = $mods . "<a href=viewProfile.php?id=".$mod['user_id'].">".$user['username']."</a>".$kom." ";
		
			$i++;
		}	
		
		if (empty($mods)) $mods = "Ingen moderator tillänglig";
		
		return $mods;
	}
		if ($type == "admin")
	{	
		$i = 1;
		
		while ($mod = mysql_fetch_array($myModerator))
		{
			$myUsername = mysql_db_query($myDatabase,"SELECT username FROM McForum_users WHERE id = '$mod[user_id]'") or die(mysql_error());
			$user = mysql_fetch_array($myUsername);
		
			if (mysql_num_rows($myModerator) != $i) $kom = ",";
			else unset ($kom);
			
			$mods = $mods . "<a href=".$_SERVER['PHP_SELF']."?do=delMod&uid=".$mod['user_id']."&fid=".$mod['forum_id']." title='Ta bort moderator'>".$user['username']."</a>".$kom." ";
		
			$i++;
		}	
		
		if (empty($mods)) $mods = "Ingen moderator tillänglig";
		
		return $mods;
	}
	if ($type == "status")
	{
		$myModeratorS = mysql_db_query($myDatabase,"SELECT forum_id FROM McForum_moderators WHERE user_id = '$_COOKIE[userID]' AND forum_id = '$forumID'") or die(mysql_error());
		
		$myAdmin = mysql_db_query($myDatabase,"SELECT * FROM McForum_admins WHERE id = '$_COOKIE[userID]'") or die(mysql_error());
		
		if (mysql_num_rows($myModeratorS) > 0 || mysql_num_rows($myAdmin) > 0) return "1";
		else return "0";
	}
}


// Funktion för att visa antalet registrerade användare, samt visa senast registrerad
function showRegistered()
{
	global $myDatabase;
	
	$myReg = mysql_db_query($myDatabase,"SELECT id,username FROM McForum_users ORDER BY id DESC") or die(mysql_error());
	$row = mysql_fetch_assoc($myReg);
	
	$myThreads = mysql_db_query($myDatabase,"SELECT id FROM McForum_thread") or die(mysql_error());
	$myAwns = mysql_db_query($myDatabase,"SELECT id FROM McForum_awnsers") or die(mysql_error());

	if ($_COOKIE['userID'])
	{
		$myName = mysql_db_query($myDatabase,"SELECT username FROM McForum_users WHERE id = '$_COOKIE[userID]'") or die(mysql_error());
		$namn = mysql_fetch_array($myName);
		
		$name = "Välkommen <b>".$namn['username']."</b>!";
	}
	
	return ("
		<table width=100% cellpadding=0 cellspacing=0 class=smallNormal>
		<tr><td colspan=2>Vi har totalt <b>".mysql_num_rows($myReg)."</b> registrerade användare.</td></tr>
		<tr><td colspan=2>Dessa har skrivit  totalt <b>".mysql_num_rows($myAwns)."</b> st. inlägg i <b>".mysql_num_rows($myThreads)."</b> st. trådar.</td></tr>
		<tr><td height=5 colspan=2></td></tr>
		<tr><td>Vi välkommnar vår senaste medlem, <a href=viewProfile.php?id=".$row['id']."><b>".$row['username']."</b></a>.</td>
		<td align=right class=normal>".$name."</td></tr>
		<tr><td height=10 colspan=2></td></tr>
		</table>
	");
	
	
}


// Funktion för att räkna ut åldern på en användare
function countAge($birth)
{
	$age = explode("-", $birth);
	
	$mandag = $age[1] . $age[2];
	
	if ($mandag < date('md')) $relAge = (date('Y') - $age[0]);
	else $relAge = ((date('Y') - $age[0]) - 1);
	
	if ($relAge != date('Y')) return $relAge;
}


// Funktion för att visa befintiliga inlägg när man skriver svar
function showThreadPreview($id)
{
	global $myDatabase,$postPerPage;
	
	$myReplys = mysql_db_query($myDatabase,"SELECT * FROM McForum_awnsers WHERE `thread_id` = '$id' ORDER BY id DESC LIMIT ".$postPerPage."") or die(mysql_error());

	if (mysql_num_rows($myReplys) > 0)
	{
		echo ("
			<table width=100% cellpadding=1 cellspacing=1 border=0 bgcolor=#948E7F>
			<tr><td bgcolor=#FCFCFC>
			<table width=100% cellpadding=3 cellspacing=1 border=0 bgcolor=#FCFCFC>
			<tr bgcolor=#A0AAB3 class=phat><td height=23 align=left colspan=2>översikt (senaste först)</td></tr>
			<tr bgcolor=#D7DFE6 class=phat><td height=23 align=left>författare</td><td>inlägg</td></tr>
		");
		
		while ($row = mysql_fetch_array($myReplys))
		{
			echo "<tr><td width=150 bgcolor=#E4E8ED valign=top>".getAuthor($row['by'])."</td><td bgcolor=#ECEFF2>".parseText($row['content'])."</td></tr>";
		}
		
		echo "</table></td></tr></table>";
	}
}


// Fukntion för att räkna antal inlägg av en användare
function counPosts($id)
{
	global $myDatabase;
	
	$myPosts = mysql_db_query($myDatabase,"SELECT id FROM McForum_awnsers WHERE `by` = '$id'") or die(mysql_error());

	return mysql_num_rows($myPosts);
}


// Funktion för att hämta författare
function getAuthor($id)
{
	global $myDatabase;
	
	$myAuthor = mysql_db_query($myDatabase,"SELECT username FROM McForum_users WHERE id = '$id'") or die(mysql_error());
	
	$row = mysql_fetch_array($myAuthor);
	
	return $row['username'];
}


// Funktion för att fixa en text, byta ut \n till <br> etc.
function parseText($text)
{

	$text = strip_tags($text);

	// Vi börjar med att göra eventuella länkar klickbara
	// Koden är baserad på Nathan Coddings html parser.
	// Först måte vi lägga till et " " innan texten, för att kunna känna igen ev. länk direkt i början av texten
	$text = ' ' . $text;

	// Gör en "http://" länk klickbar
	$text = preg_replace("#([\t\r\n ])([a-z0-9]+?){1}://([\w\-]+\.([\w\-]+\.)*[\w]+(:[0-9]+)?(/[^ \"\n\r\t<]*)?)#i", '\1<a href="\2://\3" target="_blank"><u>\2://\3</u></a>', $text);

	// Gör en "www" eller "ftp" länk klickbar
	$text = preg_replace("#([\t\r\n ])(www|ftp)\.(([\w\-]+\.)*[\w]+(:[0-9]+)?(/[^ \"\n\r\t<]*)?)#i", '\1<a href="http://\2.\3" target="_blank"><u>\2.\3</u></a>', $text);

	// Gör e-postadresser klickbara
	$text = preg_replace("#([\n ])([a-z0-9\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+)#i", "\\1<a href=\"mailto:\\2@\\3\"><u>\\2@\\3</u></a>", $text);

	// Ta bort " " som vi la till i början
	$text = substr($text, 1);

	// Slut på kod som är baserad på Nathan Coddings html parser

	// Byter ut alla \n till <br>
	$text = str_replace("\n","<br>",$text);
	
	// Gör fetstilt
	$text = str_replace("[b]","<b>",$text);
	$text = str_replace("[/b]","</b>",$text);
	
	// Gör kursivt
	$text = str_replace("[i]","<i>",$text);
	$text = str_replace("[/i]","</i>",$text);

	// Gör understruket
	$text = str_replace("[u]","<u>",$text);
	$text = str_replace("[/u]","</u>",$text);
	
	// Gör bild
	$text = str_replace("[img]","<img src=",$text);
	$text = str_replace("[/img]"," border=0>",$text);
	
	// Gör citat
	$text = str_replace("[citat]","<br><blockquote><i>\"",$text);
	$text = str_replace("[/citat]","\"</i></blockquote>",$text);
	
	// Gör kod
	$text = str_replace("[code]","showCode(",$text);
	$text = str_replace("[/code]",")",$text);
	
	
	
	// Smilys
	$text = str_replace(" >:["," <img src=img/smilys/evil.gif> ",$text);
	$text = str_replace(" >:]"," <img src=img/smilys/badgrin.gif> ",$text);
	$text = str_replace(" :)"," <img src=img/smilys/smile.gif> ",$text);
	$text = str_replace(" :D"," <img src=img/smilys/biggrin.gif> ",$text);
	$text = str_replace(" :("," <img src=img/smilys/sad.gif> ",$text);
	$text = str_replace(" :o"," <img src=img/smilys/shock.gif> ",$text);
	$text = str_replace(" ;)"," <img src=img/smilys/wink.gif> ",$text);
	$text = str_replace(" ::)"," <img src=img/smilys/rolleyes.gif> ",$text);
	$text = str_replace(" :lol:"," <img src=img/smilys/lol.gif> ",$text);
	$text = str_replace(" >:("," <img src=img/smilys/mad.gif> ",$text);
	$text = str_replace(" :/"," <img src=img/smilys/doubt.gif> ",$text);
	$text = str_replace(" :O"," <img src=img/smilys/surprised.gif> ",$text);
	$text = str_replace(" 8)"," <img src=img/smilys/cool.gif> ",$text);
	$text = str_replace(" :["," <img src=img/smilys/redface.gif> ",$text);
	$text = str_replace(" :|"," <img src=img/smilys/neutral.gif> ",$text);
	$text = str_replace(" ;("," <img src=img/smilys/cry.gif> ",$text);
	
	// [size] and [/size] for setting text size
	$text = preg_replace("#\[size=([1-2]?[0-9])\](.*?)\[/size\]#si", "<span style=font-size:\\1px;>\\2</span>", $text);

	return $text;
}


// Funktion för att skapa en länk
// Funktion för att fixa en text, byta ut \n till <br> etc.
function parseURL($text)
{

	$text = strip_tags($text);

	// Vi börjar med att göra eventuella länkar klickbara
	// Koden är baserad på Nathan Coddings html parser.
	// Först måte vi lägga till et " " innan texten, för att kunna känna igen ev. länk direkt i början av texten
	$text = ' ' . $text;

	// Gör en "http://" länk klickbar
	$text = preg_replace("#([\t\r\n ])([a-z0-9]+?){1}://([\w\-]+\.([\w\-]+\.)*[\w]+(:[0-9]+)?(/[^ \"\n\r\t<]*)?)#i", '\12://\3', $text);

	// Gör en "www" eller "ftp" länk klickbar
	$text = preg_replace("#([\t\r\n ])(www|ftp)\.(([\w\-]+\.)*[\w]+(:[0-9]+)?(/[^ \"\n\r\t<]*)?)#i", '\1http://\2.\3', $text);

	// Ta bort " " som vi la till i början
	$text = substr($text, 1);

	// Slut på kod som är baserad på Nathan Coddings html parser
	
	return $text;
}

// Funktion för att visa en kodsnutt
function showCode($text) 
{ 
	$text = stripslashes($text); 
	
	$splitText = explode("\n", $text); 
	$counText = count($splitText); 
	
	echo "<table bgcolor=#ffffff bordercolor=black cellspacing=0 width=100%>"; 
	
	for($i = 0; $i < $counText; $i++) 
	{ 
		$t = $i + 1; 
		$text = highlight_string($text, true); 

		echo "<tr><td bgcolor=#CCCCCC width=14><div align=right><font face=verdana size=1>".$t."</font></div></td>"; 

		if($t < 2) echo "<td style='padding-left: 5px' rowspan='10000' valign='top'>".$text."</td>";  

		echo "</tr>"; 
	} 
} 



// Funktion för att hämta status för en användare
function getStatus($id)
{
	global $myDatabase;
	
	$myAdmin = mysql_db_query($myDatabase,"SELECT id FROM McForum_admins WHERE id = '$id'") or die(mysql_error());
	$myMod = mysql_db_query($myDatabase,"SELECT user_id FROM McForum_moderators WHERE user_id = '$id'") or die(mysql_error());
	$myActive = mysql_db_query($myDatabase,"SELECT confirmed FROM McForum_users WHERE id = '$id' AND confirmed = '0'") or die(mysql_error());
	$myVarning = mysql_db_query($myDatabase,"SELECT id FROM McForum_varning WHERE id = '$id'") or die(mysql_error());
	
	if (mysql_num_rows($myAdmin) > 0) return "Administrator";
	if (mysql_num_rows($myMod) > 0) return "Moderator";
	if (mysql_num_rows($myActive) > 0) return "Avstängd";
	if (mysql_num_rows($myVarning) > 0) return "Varnad";
	else return "Medlem";	
}

// Funktion för att visa en signatur
function parseSignature($id)
{
	global $myDatabase;
	
	$mySign = mysql_db_query($myDatabase,"SELECT includesign,signature FROM McForum_users WHERE id = '$id'") or die(mysql_error());
	$row = mysql_fetch_array($mySign);	
	
	if ($row['includesign'] == 1 && $row['signature']) return "<br><img src=img/spacer.gif width=100% height=1 vspace=10><br>".parseText($row['signature'])."";
}


// Funktion för att visa antalet trådar
function getThreads($threads)
{
	global $myDatabase;
	
	$myThreads = mysql_db_query($myDatabase,"SELECT count(id) AS antal FROM McForum_thread WHERE head_id = '$threads'") or die(mysql_error());
	
	$row = mysql_fetch_array($myThreads);
	
	return $row['antal'];
}


// Funktion för att visa antalet inlägg
function getAwnsers($awnsers,$type)
{
	global $myDatabase;

	$myAwnsers = mysql_db_query($myDatabase,"SELECT count(id) AS antal FROM McForum_awnsers WHERE ".$type."_id = '$awnsers'") or die(mysql_error());
	$row = mysql_fetch_array($myAwnsers);
	$antal = $row['antal'];
	
	if ($antal > 0) $antal--;
	
	return $antal;
}

// Funktion för att kontrollera att e-postadress är riktig
function validateEmail($mail)
{ 
	$str = strtolower($mail); 
	
	if(ereg("^([^[:space:]][a-zA-Z0-9#_\-]+)@([^[:space:]][a-zA-Z0-9._\-]+)\.(ad|ae|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|cr|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|fi|fj|fk|fm|fo|fr|fx|ga|gb|gov|gd|ge|gf|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nato|nc|ne|net|nf|ng|ni|nl|no|np|nr|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$",$mail))
	{ 
		return 1; 
	} 
	else return 0; 
} 


// Funktion för att hämta första svaret
function getFirstPost($id)
{
	global $myDatabase;
	
	$myFirst = mysql_db_query($myDatabase,"SELECT * FROM McForum_awnsers WHERE id = '$id'") or die(mysql_error());
	$row = mysql_fetch_array($myFirst);
	
	return limitText($row['content']);
}


// Funktion för att förkorta en stor text
function limitText($text)
{
	$maxchar = 250;

	// Tittar om texten innehåller mer än $maxchar tecken
	if (strlen($text) >= $maxchar)
	{
		// Det gjorde den då delar vi upp den
		$split=explode(" ",$text);
		$i=0;
		
		while (TRUE)
		{
			$len=(strlen($newtext)+strlen($split[$i]));
			if($len>$maxchar) break;
			else
			{
				$newtext=$newtext." ".$split[$i];
				$i++;
			}
		}
		
		// Retunera kortare text
		return "".$newtext."...";
	}
	
	// Den var inte längre än $maxchar, då skickar vi tillbaka vanliga texten
	else return $text;
}


// Funktion för att hämta senaste inlägg av...
function getLatestPostBy($id)
{
	global $myDatabase;
	
	$myLatest = mysql_db_query($myDatabase,"SELECT `datum`,`by`,`id`  FROM McForum_awnsers WHERE thread_id = '$id' ORDER BY id DESC LIMIT 1 ") or die(mysql_error());
	$row = mysql_fetch_array($myLatest);
	
	return "<span class=smallNormal>".$row['datum']."</span><br>av <a href=viewProfile.php?id=".$row['by'].">".getAuthor($row['by'])."</a> <a href=viewThread.php?id=".$id."#".$row['id']."><img src=img/ikon/goto.gif alt='Visa' border=0></a>";
}

// Funktion för att kontrollera att födelsedatumet är rätt...
function validateBirth($birth)
{
	$year = $birth[0]."".$birth[1]."".$birth[2]."".$birth[3];
	$month = $birth[5]."".$birth[6];
	$day = $birth[8]."".$birth[9];

	if (ereg("^([[:digit:]]{4})-([[:digit:]]{2})-([[:digit:]]{2})$",$birth) && (date(Y) - 125) <= $year && $year <= date(Y) &&  $month <= 12 && $month >= 01 &&  $day <= 31 && $day >= 01) return 1; 
	else return 0;
}


// FUnktion som kollar om en variabel består enbart av siffor
function valideNumbers($num)
{
	if (ereg("^[[:digit:]]+$",$num)) return 1;
	else return 0;
}

// Funktion för att spara bild från en webbplats
function saveImgFile()
{
	global $avatarPath;
	
	$file = pathinfo($_FILES['forumFileAvatar']['name']);
	$localFilename = md5(uniqid(rand(), 1)) . "." . $file['extension'];
	
	$name = $localFilename;
	
	@move_uploaded_file($_FILES['forumFileAvatar']['tmp_name'], $avatarPath . $localFilename);
	@chmod($avatarPath . $localFilename, 0755);
	
	return $name;
}


// Funktion för att spara bild från en webbplats
function saveImgWeb($url)
{
	global $avatarPath;
	
	$urlParsed = parse_url($url);
	
	if (!$urlParsed[host]) $url = "http://".$url."";
	
	$url = urldecode($url);
		
	if ($remote = @fopen($url, "r"))
	{
		$file = pathinfo($url);
		$localFilename = md5(uniqid(rand(), 1)) . "." . $file['extension'];
		
		$local = fopen($avatarPath . $localFilename, "w");
		
		fwrite($local, fread($remote, 9999999));
				
		fclose($remote);
		fclose($local);
		
		return $localFilename;
	}	
}


// Funktion för att visa loginruta
function showLogin()
{
	echo ("
		<form method=post action=".$_SERVER['PHP_SELF'].">
		<table width=100% cellpadding=1 cellspacing=1 border=0 bgcolor=#948E7F>
		<tr><td bgcolor=#FCFCFC>
		
			<table width=100% cellpadding=3 cellspacing=1 border=0 bgcolor=#FCFCFC>
			<tr bgcolor=#A0AAB3 class=phat><td height=23 align=left colspan=2>logga in med registrerad användare</td></tr>
			<tr bgcolor=#D7DFE6><td height=10 align=left colspan=2>Fyll i ditt användarnamn och lösenord för att logga in.</td></tr>
			<tr><td bgcolor=#E4E8ED width=210>Användarnamn: </td><td bgcolor=#ECEFF2><input type=text name=forumUsername size=35 maxlength=25> </td></tr>
			<tr><td bgcolor=#E4E8ED width=210>Lösenord: </td><td bgcolor=#ECEFF2><input type=password name=forumPass size=35></td></tr>
			<tr bgcolor=#ECEFF2><td height=10 align=left colspan=2><a href=forgotPass.php>Jag har glömt mitt lösenord</a></td></tr>
			<tr bgcolor=#D7DFE6><td height=23 align=center colspan=2><input type=submit value='Logga in' style=\"width: 80px\"> <input type=button value='Registrera' onclick=location.href='register.php'; style=\"width: 80px\"></td></tr>
			</table>
		
		</td></tr>
		</table>
		
		<input type=hidden name=forumLogin value='login'>
		
		</form>
	");
}


// Funktion för att skapa ett lösenord
function createKey()
{
	for ($i = 1; $i<= 6; $i++) 
	{
		// Väljer en sumpmässig siffra mellan 1 och 61
        $randomNumber = rand(1, 61);

		// Väljer slumpmässigt tecken
		if ($randomNumber < 11) $key .= Chr($randomNumber + 48 - 1); // [1,10] => [0,9]
		else if ($randomNumber < 36) $key .= Chr($randomNumber + 65 - 10); // [11,36] => [A,Z]
		else $key .= Chr($randomNumber + 97 - 36); // [37,62] => [a,z]
	}
   
	return $key;
}


// Funktion för att ränka hur många varningar en användare har
function countVarnings($id)
{
	global $myDatabase;
	
	$myVarn = mysql_db_query($myDatabase,"SELECT antal FROM McForum_varning WHERE id = '$id'") or die(mysql_error());
	$varn = mysql_fetch_array($myVarn);
	
	return $varn['antal'];	
}


// Funktion för att hämta en användares senast kända IP
function getLatestIP($uid)
{
	global $myDatabase;
	
	$myIP = mysql_db_query($myDatabase,"SELECT ip FROM McForum_awnsers WHERE `by` = '$uid' ORDER BY id DESC LIMIT 1") or die(mysql_error());
	$ip = mysql_fetch_array($myIP);
	
	return $ip['ip'];	
}


// Funktion för förhansvisar trådar och svar
function showPreview($postHead,$postMessage)
{
	global $myDatabase;
	
		echo ("
			<table width=100% cellpadding=1 cellspacing=1 border=0 bgcolor=#948E7F>
			<tr><td bgcolor=#FCFCFC>
			<table width=100% cellpadding=3 cellspacing=1 border=0 bgcolor=#FCFCFC>
			<tr bgcolor=#A0AAB3 class=phat><td height=23 align=left width=150>författare</td><td align=left colspan=2>inlägg</td></tr>
		");
	
		$myInfo = mysql_db_query($myDatabase,"SELECT * FROM McForum_users WHERE id = '$_COOKIE[userID]'") or die(mysql_error());
		$info = mysql_fetch_array($myInfo);
	
		// Avatar, Från, Registrerad, ICQ etc....
		if ($info['avatar']) $avatar = "<img src=img/avatars/".$info['avatar'].">";
		if ($info['from']) $from = "Från: ".$info['from']."";
		if ($info['icq']) $icq = "<a href=http://wwp.icq.com/scripts/search.dll?to=".$info['icq']."><img src=img/ikon/icq.gif border=0 align=absmiddle vspace=2></a>";
		if ($info['showmail']) $mail = "<a href=mailto:".$info['mail']."><img src=img/ikon/email.gif border=0 align=absmiddle vspace=2></a>";
		if ($info['url']) $www = "<a href=".$info['url']." target=_blank><img src=img/ikon/www.gif border=0 align=absmiddle vspace=2></a>";
		if ($info['msn']) $msn = "<a href=viewProfile.php?id=".$info['id']."><img src=img/ikon/msn.gif border=0 align=absmiddle vspace=2></a>";
		$reg = explode(",", $info['registered']);
		
		echo ("
			<tr><td width=150 bgcolor=#E4E8ED valign=top rowspan=4>
			<table width=100% height=160 cellpadding=0 cellspacing=0 border=0>
			<tr><td valign=top height=10><font size=2><b>".$info['username']."</b></font></td></tr>
			<tr><td class=smallNormal valign=top height=10>".getStatus($_COOKIE['userID'])."</td></tr>
			<tr><td height=5></td></tr>
			<tr><td valign=top height=100>".$avatar."</td></tr>
			<tr><td valign=bottom class=smallNormal>Registrerad: ".$reg[0]."</td></tr>
			<tr><td valign=bottom class=smallNormal>".$from."</td></tr>
			<tr><td height=2></td></tr>
			<tr><td valign=bottom class=smallNormal>Inlägg: ".counPosts($_COOKIE['userID'])."</td></tr>
			</table>
			</td><td bgcolor=#ECEFF2 valign=top class=smallNormal width=420 height=20><b>".strip_tags($postHead)."</b></td><td bgcolor=#ECEFF2 align=right class=smallNormal height=20>Skriven: ".date("Y-m-d H:i")."</td></tr>
			<tr><td bgcolor=#948E7F height=1 colspan=2></td></tr>
			<tr><td bgcolor=#ECEFF2 valign=top colspan=2 height=150>".parseText($postMessage)."".parseSignature($_COOKIE['userID'])."</td></tr>
			<tr><td bgcolor=#ECEFF2 valign=top colspan=2 height=25><a href=viewProfile.php?id=".$_COOKIE['userID']."><img src=img/ikon/profil.gif border=0 vspace=2 align=absmiddle></a> ".$mail." ".$www." ".$icq." ".$msn."</td></tr>
			</table>
			</table>
		");
}


// Funktion som visar antalet sidor, (limit definieras i config)
function showPages($type,$id)
{
	global $myDatabase,$threadsPerPage,$postPerPage;

	// Om det är i "viewForum.php"
	if ($type == "forum")
	{
		$myAntal = mysql_db_query($myDatabase,"SELECT id FROM McForum_thread WHERE head_id = '$id'") or die(mysql_error());
		$antalr = mysql_num_rows($myAntal);
		
		// Antal sidor
		$antal = ceil($antalr / $threadsPerPage);
		
		$typeNum = $threadsPerPage;
		
		$page = "viewForum.php";
	}
	
	// Om det är i "viewThread.php"
	if ($type == "thread")
	{
		$myAntal = mysql_db_query($myDatabase,"SELECT id FROM McForum_awnsers WHERE thread_id = '$id'") or die(mysql_error());
		$antalr = mysql_num_rows($myAntal);
		
		// Antal sidor
		$antal = ceil($antalr / $postPerPage);
		
		$typeNum = $postPerPage;
		
		$page = "viewThread.php";	
	}
	
	if ($antal > 1)
	{
		echo ("
			<table width=100% cellpadding=0 cellspacing=0 border=0>
			<tr><td height=10></td></tr>
			<tr><td align=right>
		");
	}
	
	// Om användaren valt eller inte valt någon sida
	if ($_GET['off']) $off = $_GET['off'];
	else $off = 0;

	// En sida är vald...
	if ($_GET['off'])
	{
		// Då gör vi så knapp "Föregående sida" visas
		$prev = ($_GET['off'] - $typeNum);
		echo "<a href=".$page."?id=".$_GET['id']."&off=".$prev.">&laquo; Förgående sida</a> ";
	}
	
	// Ser vilken sida vi är på nu
	$pagenum = ($_GET['off'] / $typeNum);
	$pagenum++;
	
	// Om det är mer än 7 sidor totalt, och sidan vi ser på nu är högre än 3
	if ($antal > 7 && $pagenum > 3)
	{
		// Då gör vi att offset räknaren räknar rätt
		$forNum = ($pagenum - 3);
		$forMax = ($pagenum + 3);
		
		// Eftersom sidan är högre än 3 betyder det att användaren inte längre är på första sidan
		// och därmet är $off satt.
		// Vi hämtar värdet på variablen och drar av tre
		$realOFF = ($_GET['off'] - 3);
	}
	else 
	{
		// Annars får den visa 1 till 7
		$forNum = 1;
		$forMax  = 7;
		
		// Användaren är på första sidan och offset är 0
		$realOFF = 0;
	}

	// skriver endast ut 7 sidor
	for ($i = $forNum; $i <= $forMax; $i++)
	{
		// Vi vill inte ha ett kommatecken efter sista sidan om det inte finns mer sidor därefter (brukar det finnar mer sidor efter sista sidan???)
		if ($i != $antal) $kom = ",";
		else unset($kom);

		// om sidan som ska skrivas ut nu inte är högre än antal, och antalet är högre än 1
		// (Förhindrar att skriva ut tex. sidan 13 om det endast finns 12 sidor OCH skriver inte ut nåt om det inte finns mer än 1 sida
		if ($i <= $antal && $antal > 1)
		{
			// Sidan vi är på nu vill vi ha i fetstilt och skall inte gå att klicka på
			if ($i == $pagenum) echo "<b>".$i."</b>".$kom." ";
			
			// Dom andra vill vi inte ha i fetstilt och de skall gå att klicka på
			else echo "<a href=".$page."?id=".$_GET['id']."&off=".$realOFF.">".$fet_s."".$i."".$fet_e."</a>".$kom." ";
		}
		
		// Ökar på offset 
		$realOFF = ($realOFF + $typeNum);
	}
	
	// sätter värde på "Nästa sidan" variabel
	$next = ($_GET['off'] + $typeNum);

	// Finns det mer sidor, visas "nästa sida" knapp
	if ($next < $antalr)
	{
		echo "<a href=".$page."?id=".$_GET['id']."&off=".$next.">Nästa sida &raquo;</a> ";
	}
	
	if ($antal > 1)
	{	
		echo ("
			</td></tr>
			<tr><td height=10></td></tr>
			</table>
		");
	}
}



// Funktion för att se om en tråd är låst eller inte
function getLocked($id)
{
	global $myDatabase;

	$myLock = mysql_db_query($myDatabase,"SELECT * FROM McForum_locked WHERE thread_id = '$id'") or die(mysql_error());
	
	if (mysql_num_rows($myLock) > 0) return "1";
	else return "0";
}

// Funktion för att visa om det finns nya inlägg lr inte
function getAnythingNew($id)
{
	global $myDatabase;
	
	$namee = "view-".$id."";
	
	$idT = explode("-", $_COOKIE[$namee]);
	
	$myTid = mysql_db_query($myDatabase,"SELECT datum FROM McForum_thread WHERE id = '$idT[1]'") or die(mysql_error());
	$time = mysql_fetch_array($myTid);
	
	if (getLocked($id) == 1) return "<img src=img/ikon/locked.gif alt='Denna tråd är låst'>";
	elseif ($time['datum'] > $_COOKIE[$namee]) return "<img src=img/ikon/new.gif alt='Det finns nya inlägg'>";
	else return "<img src=img/ikon/read.gif alt='Det finns inga nya inlägg'>";
}


// Funktion för att visa smilies
function showSmilies()
{
	return ("
		<table cellpadding=3 border=0 cellspacing=0>
			<tr>
			<td><img src=img/smilys/smile.gif alt='Glad :)' title='Glad :)' onClick=\"McCode(':)');\" class=img></td>
			<td><img src=img/smilys/wink.gif alt='Blink ;)' title='Blink ;)' onClick=\"McCode(';)');\" class=img></td>
			<td><img src=img/smilys/biggrin.gif alt='Jätteglad :D' title='Jätteglad :D' onClick=\"McCode(':D');\" class=img></td>
			<td><img src=img/smilys/lol.gif alt='Gladast :lol:' title='Gladast :lol:' onClick=\"McCode(':lol:');\" class=img></td>
			</tr>
			<tr>
			<td><img src=img/smilys/mad.gif alt='Arg >:(' title='Arg >:(' onClick=\"McCode('>:(');\" class=img></td>
			<td><img src=img/smilys/sad.gif alt='Ledsen :(' title='Ledsen :(' onClick=\"McCode(':(');\" class=img></td>
			<td><img src=img/smilys/badgrin.gif alt='Hämdlysten >:]' title='Hämdlysten >:]' onClick=\"McCode('>:]');\" class=img></td>
			<td><img src=img/smilys/evil.gif alt='Ond >:[' title='Ond >:[' onClick=\"McCode('>:[');\" class=img></td>
			</tr>
			<tr>
			<td><img src=img/smilys/cry.gif alt='Gråter ;(' title='Gråter ;(' onClick=\"McCode(';(');\" class=img></td>
			<td><img src=img/smilys/doubt.gif alt='Tvivlar :/' title='Tvivlar :/' onClick=\"McCode(':/');\" class=img></td>
			<td><img src=img/smilys/shock.gif alt='Shockad :o' title='Shockad :o' onClick=\"McCode(':o');\" class=img></td>
			<td><img src=img/smilys/neutral.gif alt='Neutral :|' title='Neutral :|' onClick=\"McCode(':|');\" class=img></td>
			</tr>
			<tr>
			<td><img src=img/smilys/surprised.gif alt='Förvånad :O' title='Förvånad :O' onClick=\"McCode(':O');\" class=img></td>
			<td><img src=img/smilys/cool.gif alt='Cool 8)' title='Cool 8)' onClick=\"McCode('8)');\" class=img></td>
			<td><img src=img/smilys/redface.gif alt='Skäms :[' title='Skäms :[' onClick=\"McCode(':[');\" class=img></td>
			<td><img src=img/smilys/rolleyes.gif alt='Ironisk ::)' title='Ironisk ::)' onClick=\"McCode('::)');\" class=img></td>
			</tr>
		</table>
	");
}

?>