function URLDecode(string)
{
   // Replace + with ' '
   // Replace %xx with equivalent character
   // Put [ERROR] in output if %xx is invalid.
   var HEXCHARS = "0123456789ABCDEFabcdef"; 
   var encoded = string;
   var plaintext = "";
   var i = 0;
   while (i < encoded.length) {
       var ch = encoded.charAt(i);
	   if (ch == "+") {
	       plaintext += " ";
		   i++;
	   } else if (ch == "%") {
			if (i < (encoded.length-2) 
					&& HEXCHARS.indexOf(encoded.charAt(i+1)) != -1 
					&& HEXCHARS.indexOf(encoded.charAt(i+2)) != -1 ) {
				plaintext += unescape( encoded.substr(i,3) );
				i += 3;
			} else {
				alert( 'Bad escape combination near ...' + encoded.substr(i) );
				plaintext += "%[ERROR]";
				i++;
			}
		} else {
		   plaintext += ch;
		   i++;
		}
	} // while
   return plaintext;
};


function init()
{
	// Vertical splitter. Set min/max/starting sizes for the left pane.
	$("#MySplitter").splitter({
		splitVertical: true,
		outline: true,
		sizeLeft: 0, minLeft: 0, maxLeft: 200,
		anchorToWindow: true,
		accessKey: "L"
	});
	// First horizontal splitters, nested in the right pane of the vertical splitter.
	$("#TopSplitter").splitter({
		splitHorizontal: true,
		outline: true,
		sizeBottom: 220, minTop: 50, maxTop: 700,
		accessKey: "V"
	});
	
	// Second horizontal splitter, nested in bottom pane of first horizontal splitter
	$("#BottomSplitter").splitter({
		splitHorizontal: true,
		outline: true,
		sizeBottom: 35,
		accessKey: "J"
	});
	
	// Second horizontal splitter, nested in bottom pane of first horizontal splitter
	$("#MessageSplitter").splitter({
		splitHorizontal: true,
		outline: true,
		sizeTop: 20, minTop: 20, maxTop: 20,
		accessKey: "K"
	});
	
	load_messages(1,0);
	
}

var counter = "1";
var thread_id = "";
var stats = "";
var pages = "";
var x = 0;

function loadStructure(data)
{
	
	var html = "";
	if(counter == 1)
	{
		stats = data.stats;
		pages = data.pages;
		if(data.stickies)
		{
			html += "<div style=\"padding:5px;width:650px;background-color:#e5e5e5;border:1px dashed #bbbbbb\">";
			$.each(data.stickies, function()
			{
				html += "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\">";
				html += "<tr>";
				html += "	<td><img src=\"images/tree_plus_notail_sticky.gif\"></td>";
				html += "	<td>&nbsp;<a href=\"rpc/index.php?action=visit&"+this.id+"\" onclick=\"view_message("+this.id+",1)\" target=\"hidden_message\">" + URLDecode(this.subject)+"</a> <strong>"+URLDecode(this.nickname)+"</strong> ["+this.date+" "+this.time+ "] Views: "+this.views;
				html += "</tr>";
				html += "</table>";
			});
			html += "</div>";
		}
		html += "<div style=\"padding:5px\"></div>";
		var data = data.messages;
		counter++;
	}
	
	if (data.length > 0)
	{
	
		while (data.length > 0) 
		{
			
				var message_id = data[0].message_id;
				
				var j = data.length - 1;
				
				$.each(data.slice(1), function(i)
					{
						if (this.message_id.substring(0, message_id.length) != message_id) 
						{
							j = i;
							return false;
						}
					}
				);
							
				var sub = data.slice(1, j + 1);
				var arr = data[0].message_id.split(".");
				if(data[0].video == 1)
						var video = "<span style='color:#dd0000'> [V]</span>";
					else
						var video = "";
						
				if(data[0].has_children == "0")
					if(data[0].gold == "1" || data[0].votes >= 10)
						var dot = "<img src=\"images/tree_plus_notail_gold.gif\" border=\"0\">";
					else
						var dot = "<img src=\"images/tree_plus_notail.gif\" border=\"0\">";
				else
					if(data[0].gold == "1" || data[0].votes >= 10)
						var dot = "<img src=\"images/tree_plus_gold.gif\" border=\"0\">";
					else
						var dot = "<img src=\"images/tree_plus.gif\" border=\"0\">";
				
				if (sub.length > 0) 
				{
					
					if(data.slice(j + 1).length > 0 && data[0].message_id.split(".").length > 1)
						html += "<div style=\"background-image:url('images/tree_bar.gif');background-repeat:repeat-y\">";				
					else
						html += "<div>";	
					if ((data.slice(j + 1).length > 0) && (data.slice(j + 1)[0].message_id.split(".").slice == sub[0].message_id))
						html += "<div style=\"background-image:url('images/tree_bar.gif');background-repeat:repeat-y\"><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr>";
					else
						html += "<div><table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr>";
					if(arr.length > 1)	
						html += (data.length > j+1 ? "<td><img src=\"images/tree_connector.gif\" style=\"vertical-align:middle;\"/></td>" : "<td><img src=\"images/tree_end_connector.gif\" style=\"vertical-align:middle;\"/></td>");
					html += "<td>"+dot+"</td><td>&nbsp;<a href=\"rpc/index.php?action=visit&"+data[0].id+"\" onclick=\"view_message("+data[0].id+")\" target=\"hidden_message\">" + URLDecode(data[0].subject)+video+"</a> <strong>"+URLDecode(data[0].nickname)+"</strong> ["+data[0].date+" "+data[0].time+ "] Views: "+data[0].views;
					if(typeof data[0].ip != "undefined")
						html += " <span id=\"admin_"+data[0].id+"\">[<a href=\"javascript:load_admin("+data[0].id+",'"+data[0].ip+"',0,0)\">"+data[0].ip + "</a>]</span>";
					html += "</td>";
					html += "</tr></table>";
					if(arr.length > 1)
						html += "<div style=\"padding-left:15px\">";
					else
						html += "<div>";
					html += loadStructure(sub);
					html += "</div>";
					html += "</div>";
					html += "</div>";
				}
				else
				{
					if(data[0].video == 1)
						var video = "<span style='color:#dd0000'> [V]</span>";
					else
						var video = "";
						
					if((arr.length == 1 && thread_id == data[0].thread_id))
						html += "<div style=\"padding:5px\">";
					else
						html += "<div id='test5'>";	
					html += "<div id='test4'>";
					html += "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr>";
					if(arr.length > 1)
						html += (data.length > j+1 ? "<td><img src=\"images/tree_connector.gif\" style=\"vertical-align:middle;\"/></td>" : "<td><img src=\"images/tree_end_connector.gif\" style=\"vertical-align:middle;\"/></td>");
					html += "<td>"+dot+"</td><td>&nbsp;<a href=\"rpc/index.php?action=visit&"+data[0].id+"\" onclick=\"view_message("+data[0].id+")\" target=\"hidden_message\">" + URLDecode(data[0].subject)+video+"</a> <strong>"+URLDecode(data[0].nickname)+"</strong> ["+data[0].date+" "+data[0].time+ "] Views: "+data[0].views;
					
					if(typeof data[0].ip != "undefined")
					{
						html += " <span id=\"admin_"+data[0].id+"\">[<a href=\"javascript:load_admin("+data[0].id+",'"+data[0].ip+"',0)\">"+data[0].ip + "</a>]</span>";
						x = 1;
					}
					html += "</td>";
					html += "</tr></table>";
					html += "</div>";
					html += "</div>";
				}
				thread_id =  data[0].thread_id;
				data = data.slice(j + 1);
				
		}
	}
	
	return html;
}

var nickname = "";

function load_messages(page,gold)
{
	counter = 1;
	thread_id = "";
	$("#threads").html("<table width=\"99%\" height=\"100%\"><tr><td align=\"center\"><img src=\"images/loadinganimation.gif\"></td></tr></table>");
	if(!page)
			var page = 1;
	if(gold)
		var action = "messages_gold";
	else
		var action = "messages";
	$.getJSON("rpc/index.php?action="+action,
	{
		page : page
	,	rand: Math.random()
	},
	function(data)
	{
		var html = loadStructure(data);

		document.getElementById("threads").innerHTML = "<div style=\"padding:10px\">"+html+"</div>";
		
		nickname = URLDecode(stats.nickname);
		
		html = "<div id=\"stats_container\">";
		html +=	"<div class=\"stats_content\">";
		html +=	"	<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"stats_counter\">";
		html +=	"	<tr>";
		html +=	"		<td>Cup count: <strong>"+stats.users+"</strong></td>";
		html +=	"		<td>&nbsp;</td>";
		html +=	"		<td>&nbsp;</td>";
		html +=	"		<td>Posts today:</td>";
		html +=	"		<td>&nbsp;</td>";
		html +=	"		<td><strong>"+stats.messages+"</strong> ("+stats.total+" since 21/05/04)</td>";
		html +=	"		<td>&nbsp;</td>";
		html +=	"		<td>Threads today:</td>";
		html +=	"		<td>&nbsp;</td>";
		html +=	"		<td><strong>"+stats.threads+"</strong></td>";
		html +=	"	</tr>";
		html +=	"	</table>	";
		html +=	"	</div>";
		html +=	"</div>";
		
		$("#ToolBar").html(html);
		

		var next_page = parseInt(pages.current) + parseInt(1);
		var last_page = parseInt(pages.current) - parseInt(1);

		var first_page_class = "button_back_all";
		var previous_page_class = "button_back";

		var next_page_class = "button_forward";
		var last_page_class = "button_forward_all";

		

		html = "<div id=\"stats_container\" style=\"margin-right:4px\">";
		html += "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" height=\"30\">";
		html += "<tr>";
		html += "<td>";
		html += "<div class=\""+first_page_class+"\">";
		if(parseInt(pages.current) > 1)
			html += "<a href=\"javascript:load_messages(1);\"></a>";
		html += "</div>";
		html += "</td>";
		html += "<td>";
		html += "<div class=\""+previous_page_class+"\">";
		if(parseInt(pages.current) > 1)
			html += "<a href=\"javascript:load_messages("+last_page+");\"></a>";
			
			html += "</div>";
		html += "</td>";
		html += "<td style=\"padding-left:3px;padding-right:3px\">";
		html += "<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" height=\"100%\"><tr><td style=\"padding-right:4px;font-family:Arial;font-size:11px\">Page</td><td>";
		html += "<select id=\"current_page\" onchange=\"load_messages(this.value)\">";
		var count = 1;
		while (count <= parseInt(pages.total)) 
		{
			if(count == parseInt(pages.current))
				selected = "selected";
			else
				selected = "";
				
			html += "<option value=\""+count+"\" "+selected+">"+count+"</option>"
			count++;
		}
		html += "</select>";
		html += "</td><td style=\"padding-left:4px;font-family:Arial;font-size:11px\">of "+pages.total+"</td></tr></table>";
		html += "</td>";
		html += "<td>";
		html += "<div class=\""+next_page_class+"\">";
		if(parseInt(pages.current) < parseInt(pages.total))
			html += "<a href=\"javascript:load_messages("+next_page+");\"></a>";
		html += "</div>";
		html += "</td>";
		html += "<td>";
		html += "<div class=\""+last_page_class+"\">";
		if(parseInt(pages.current) < parseInt(pages.total))
			html += "<a href=\"javascript:load_messages("+pages.total+");\"></a></div>";
		html += "</td>";
		html += "</tr>";
		html += "</table>";
		html += "</div>";

		$("#PageButtons").html(html);
		
		var l = $("#threads_container").children().length;
		/*
		$("#threads_container").children().each(
				function(i)
				{
					var $this = $(this);
					var id = this.id;
					var chunks = id.split(".");
					
					
					
					if(l > (i+2))
						var nnid = $this.next().next()[0].id;
					else
						var nnid = "";
						
					if(i > 0)
						var pid = $this.prev()[0].id;
					else
						var pid = "";
							
					if(l > (i+1))
						var nid = $this.next()[0].id;
					else
						var nid = "";
						
					if(pid != "")
					{
						if(id.substring(0,pid.length) === pid)
							if(nid.substring(0,id.length) === id)
							{
								$this.prepend("<img src='images/bar_tail.gif'><img src='images/ball_two_tails.gif'>");
							}
							else	
								$this.prepend("<img src='images/angle.gif'><img src='images/ball_left_tail.gif'>");
								
						else
							if(nid.substring(0,id.length) === id)
								$this.prepend("<img src='images/ball_tail.gif'>");
							else
								$this.prepend("<img src='images/ball.gif'>");	
					}
					else
					{
						if(nid.substring(0,id.length) === id)
							$this.prepend("<img src='images/ball_tail.gif'>");
						else
							$this.prepend("<img src='images/ball.gif'>");
					}
					
					
					if(chunks.length >= 2)
					{
						if(chunks.length == 2 && nid.substring(0,id.length) != id && nid.substring(0,id.length).length > id)
						{
							var spacer = (chunks.length-1)*20;
						}
						else
						{
							var spacer = (chunks.length-2)*20;
						}
						$this.prepend("<img src='images/none.gif' width='"+spacer+"' height='10'>");
					}
				}
		)
		*/
	});
}

function view_message(id,sticky)
{
		
	
	$.getJSON("rpc/index.php?action=view_message",
		{
			id: id
		}
	,
    	function(json)
		{
			
			$("#vote_cell").html("<a href=\"javascript:vote("+json.id+")\"><strong>Vote ("+json.votes+")</strong></a>");
			$("#vote_cell").show();
			var html = "";
			html += "<div style=\"width: 98%; padding-left: 10px;padding-top: 3px\">";
			html += "On " + URLDecode(json.date) + " at " + json.time + ", <strong>" + URLDecode(json.nickname) + "</strong> wrote: <strong style=\"padding-left:10px\">" + URLDecode(json.subject) + "</strong>";
			html += "</div>";
			
			$("#subject").html(html);
			
			html = "";
			html += "<div style=\"width: 97%; padding-left: 15px;padding-top: 15px\">";
			html += "<input type=\"hidden\" id=\"id\" value=\""+json.id+"\">";
			html += "<input type=\"hidden\" id=\"message_id\" value=\""+json.message_id+"\">";
			html += "<input type=\"hidden\" id=\"thread_id\" value=\""+json.thread_id+"\">";
			html += "<input type=\"hidden\" id=\"parent_id\" value=\""+json.parent_id+"\">";
			html += "<input type=\"hidden\" id=\"message_subject\" value=\""+json.subject+"\">";
			html += URLDecode(json.message);
			html += "</div>"
			
			$("#message").html(html);
			
			if(sticky)
				$("#reply_bar").hide();
			else
			{
				
				$("#reply_bar").show();
			}
		}
	);
	
	
}

function view_thread(id)
{
	$.post("rpc/index.php?action=view_thread", 
	{ 
		id: id 
	}
	,	function(data)
		{
			$("#table_"+id).hide()
	    	$("#message_div_"+id).append(data);
		});
}

function hide_thread(id)
{
	$("#thread_"+id).remove();
	$("#table_"+id).show();
}

function new_thread()
{
	var html = "";
		
		html += "<div id=\"InputForm\">";
		html += "<table border=\"0\">";
		html += "<tr>";
		html += "	<td align=\"right\"><strong>Name:</strong></td>";
		html += "	<td><input tabindex=\"1\" class=\"input_text\" type=\"text\" id=\"nickname\" onkeyup=\"inline_validate(this)\" maxlength=\"150\" value=\""+URLDecode(nickname)+"\"></td>";
		html += "	<td id=\"nickname_alert\"></td>";
		html += "</tr>";
		html += "<tr>";
		html += "	<td align=\"right\"><strong>Subject:</strong></td>";
		html += "	<td><input tabindex=\"2\" class=\"input_text\" type=\"text\" id=\"subject\" onkeyup=\"inline_validate(this)\" maxlength=\"200\"></td>";
		html += "	<td id=\"subject_alert\"></td>";
		html += "</tr>";
		html += "<tr>";
		html += "	<td align=\"right\" valign=\"top\"><strong>Message:</strong></td>";
		html += "	<td><textarea tabindex=\"3\" class=\"input_text rte-zone\" id=\"message\"></textarea></td>";
		html += "</tr>";
		html += "<tr>";
		html += "	<td colspan=\"2\" align=\"right\">";
		html += "	<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\">";
		html += "	<tr>";
		if(x == 1)
		{
			html += "	<td align=\"left\"><strong>Sticky:</strong></td>";
			html += "	<td style=\"padding-right:10px\"><input type=\"checkbox\" id=\"sticky\" value=\"1\"></td>";
			html += "	<td align=\"left\" style=\"padding-right:4px\"><strong>Dot Colour:</strong></td>";
			html += "	<td style=\"padding-right:10px\"><select id=\"dot\"><option value=\"white\">White</option><option value=\"red\">Red</option></select></td>";
		}
			html += "	<td align=\"right\"><input type=\"button\" id=\"post_message\" class=\"button\" value=\"Post Message\" onclick=\"post_thread()\"></td>";
			html += "</tr>";
			html += "</table>";
			html += "</td>";
		html += "</tr>";
		html += "</table>";
		html += "</div>";
		
		$("#InputForm").remove();
		$("#threads_container").hide();
		$("#threads").html(html);
		$('.rte-zone').rte('stylesheets/rte.css', 'images/');
		$("#bold").click();
		$("#bold").click();
	

}

function new_reply()
{
	
	var html = "";
	
	html += "<div id=\"InputForm\">";
	html += "<table border=\"0\">";
	html += "<tr>";
	html += "	<td align=\"right\"><strong>Name:</strong></td>";
	html += "	<td><input tabindex=\"1\" class=\"input_text\" type=\"text\" id=\"nickname\" maxlength=\"150\" value=\""+URLDecode(nickname)+"\"></td>";
	html += "	<td id=\"nickname_alert\"></td>";
	html += "</tr>";
	html += "<tr>";
	html += "	<td align=\"right\"><strong>Subject:</strong></td>";
	html += "	<td><input tabindex=\"2\" class=\"input_text\" value=\""+URLDecode($("#message_subject").val())+"\" type=\"text\" id=\"subject\" maxlength=\"200\"></td>";
	html += "	<td id=\"subject_alert\"></td>";
	html += "</tr>";
	html += "<tr>";
	html += "	<td align=\"right\" valign=\"top\"><strong>Message:</strong></td>";
	html += "	<td height=\"120\"><textarea tabindex=\"3\" class=\"input_text rte-zone\" id=\"message\"></textarea></td>";
	html += "</tr>";
	html += "<tr>";
		html += "	<td colspan=\"2\" align=\"right\">";
		html += "	<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\">";
		html += "	<tr>";
		if(x == 1)
		{
			html += "	<td align=\"left\"><strong>Sticky:</strong></td>";
			html += "	<td style=\"padding-right:10px\"><input type=\"checkbox\" id=\"sticky\" value=\"1\"></td>";
			html += "	<td align=\"left\" style=\"padding-right:4px\"><strong>Dot Colour:</strong></td>";
			html += "	<td style=\"padding-right:10px\"><select id=\"dot\"><option value=\"white\">White</option><option value=\"red\">Red</option></select></td>";
		}
			html += "	<td align=\"right\"><input type=\"button\" id=\"post_message\" class=\"button\" value=\"Post Message\" onclick=\"post_reply()\"></td>";
			html += "</tr>";
			html += "</table>";
			html += "</td>";
		html += "</tr>";
	html += "</table>";
	html += "</div>";
	
	$("#InputForm").remove();
	$("#threads_container").hide();
	$("#threads").html(html);
	$('.rte-zone').rte('stylesheets/rte.css', 'images/');
	$("#bold").click();
	$("#bold").click();
}

function post_thread()
{
	$("#InputForm").hide();
	$("#nickname").stripHtml();
	$("#subject").stripHtml();
	$("#close_rte").click();
	var message = $("#message").val();
	message = message.replace("<a","<a target='_blank'");
	message = message.replace("<A","<a target='_blank'");
	
	if(validate_form())
	{
		$("#post_message").hide();
		//$("#message").clickUrl();
		if($('#sticky:checked').val() == "1")
			var sticky = 1
		else
			var sticky = 0
			
		
		if($("#dot").length == 0)
			var dot = "w";
		else
			var dot = $("#dot").val()
			
		$.post("rpc/index.php?action=post_message", { 
			nickname: $("#nickname").val()
		, 	subject: $("#subject").val()
		,	message:message
		,	sticky: sticky 
		,	dot: dot}
		,	function(data){
		    	load_messages();
		  });
	}
}

function post_reply()
{
	
	$("#InputForm").hide();
	$("#nickname").stripHtml();
	$("#subject").stripHtml();
	$("#close_rte").click();
	var message = $("#message").val();
	message = message.replace("<a","<a target='_blank'");
	
	if(validate_form())
	{
		$("#post_message").hide();
		//$("#message").clickUrl();
		
		if($('#sticky:checked').val() == "1")
			var sticky = 1
		else
			var sticky = 0
			
		if($("#dot").length == 0)
			var dot = "w";
		else
			var dot = $("#dot").val()
			
		$.post("rpc/index.php?action=post_reply", { 
			id : $("#id").val()
		,	message_id : $("#message_id").val()
		,	thread_id : $("#thread_id").val()
		,	nickname: $("#nickname").val()
		, 	subject: $("#subject").val()
		,	message: message
		,	sticky: sticky 
		,	dot: dot}
		,	function(data){
		    	load_messages();
		  });
	}

}

function add_link()
{
	if($("#link_title").val() == "")
		var link_title = $("#address").val();
	else
		var link_title = $("#link_title").val();
	var link_code = "<a href=\""+$("#address").val()+"\" target=\"_blank\">"+link_title+"</a>";
	$("#message").val($("#message").val() + "\n\n" +link_code); 
	$("#address").val("");
	$("#link_title").val("");
	
}

function load_admin(id, ip, banned, gold)
{
	if(gold != 1)
	{
		var html = "<select id=\"admin_select_"+id+"\" onchange=\"submit_admin('"+id+"','"+ip+"',0,0)\">";
		html += "<option value=\"\">Select...</option>";
		html += "<option value=\"delete_message\">Delete Message</option>";
		html += "<option value=\"delete_thread\">Delete Thread</option>";
		html += "<option value=\"delete_all\">Delete All</option>";
		html += "</select>";
	}
	else
	{
		var html = "<select id=\"admin_select_"+id+"\" onchange=\"submit_admin('"+id+"','"+ip+"',0,1)\">";
		html += "<option value=\"\">Select...</option>";
		html += "<option value=\"delete_message_gold\">Delete Message</option>";
		html += "<option value=\"delete_thread_gold\">Delete Thread</option>";
		html += "<option value=\"delete_all_gold\">Delete All</option>";
		html += "</select>";
	}
	$("#admin_"+id).html(html);	
	
}

function submit_admin(id, ip, banned, gold)
{
	$.post("rpc/index.php?action=do_admin", 
	{ 
			id : id
		,	admin_action : $("#admin_select_"+id).val()
		,	ip: ip
		,	banned: banned
	}
	,	function(data)
		{
			if(!gold)
	    		load_messages(1);
			else
				load_messages(1,1);
	  	}
	);
}

function validate_form()
{
	var validated = true;
	
	var regexp2 = /^\s+|\s+$/g;
	
	
	var val = $("#nickname").val().replace(regexp2,"");
	
	
	if((val.search(/</g) > -1) || (val.search(/>/g) > -1) || (val == ""))
	{
		validated = false;
		$("#nickname_alert").html("<img src=\"images/alert.gif\">");
	}
	
	var val = $("#subject").val().replace(regexp2,"");

	if((val.search(/</g) > -1) || (val.search(/>/g) > -1) || (val == ""))
	{
		validated = false;
		$("#subject_alert").html("<img src=\"images/alert.gif\">");
	}
	return validated;
}

function inline_validate(item)
{
	$("#"+item.id).stripHtml();
	
	var regexp2 = /^\s+|\s+$/g;
	var val = $("#"+item.id).val().replace(regexp2,"");
	val = val.replace(/</g,"");
	val = val.replace(/>/g,"");
	
	//$("#"+item.id).val(val);
	
	if(val == "")
		$("#"+item.id+"_alert").html("<img src=\"images/alert.gif\">");
	else
		$("#"+item.id+"_alert").html("<img src=\"images/ok.gif\">");
}

function toggle(obj)
{
	if(obj.className == "")
	{
		obj.style.cursor = "hand";
		obj.className = "bgGrey";
	}
	else
	{
		obj.style.cursor = "pointer";
		obj.className = "";
	}
}

function urldecode( str ) {
    // http://kevin.vanzonneveld.net
    // +   original by: Philip Peterson
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +      input by: AJ
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Brett Zamir (http://brettz9.blogspot.com)
    // +      input by: travc
    // +      input by: Brett Zamir (http://brettz9.blogspot.com)
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Lars Fischer
    // %          note 1: info on what encoding functions to use from: http://xkr.us/articles/javascript/encode-compare/
    // *     example 1: urldecode('Kevin+van+Zonneveld%21');
    // *     returns 1: 'Kevin van Zonneveld!'
    // *     example 2: urldecode('http%3A%2F%2Fkevin.vanzonneveld.net%2F');
    // *     returns 2: 'http://kevin.vanzonneveld.net/'
    // *     example 3: urldecode('http%3A%2F%2Fwww.google.nl%2Fsearch%3Fq%3Dphp.js%26ie%3Dutf-8%26oe%3Dutf-8%26aq%3Dt%26rls%3Dcom.ubuntu%3Aen-US%3Aunofficial%26client%3Dfirefox-a');
    // *     returns 3: 'http://www.google.nl/search?q=php.js&ie=utf-8&oe=utf-8&aq=t&rls=com.ubuntu:en-US:unofficial&client=firefox-a'
    
    var histogram = {}, ret = str.toString(), unicodeStr='', hexEscStr='';
    
    var replacer = function(search, replace, str) {
        var tmp_arr = [];
        tmp_arr = str.split(search);
        return tmp_arr.join(replace);
    };
    
    // The histogram is identical to the one in urlencode.
    histogram["'"]   = '%27';
    histogram['(']   = '%28';
    histogram[')']   = '%29';
    histogram['*']   = '%2A';
    histogram['~']   = '%7E';
    histogram['!']   = '%21';
    histogram['%20'] = '+';
    histogram['\u00DC'] = '%DC';
    histogram['\u00FC'] = '%FC';
    histogram['\u00C4'] = '%D4';
    histogram['\u00E4'] = '%E4';
    histogram['\u00D6'] = '%D6';
    histogram['\u00F6'] = '%F6';
    histogram['\u00DF'] = '%DF'; 
    histogram['\u20AC'] = '%80';
    histogram['\u0081'] = '%81';
    histogram['\u201A'] = '%82';
    histogram['\u0192'] = '%83';
    histogram['\u201E'] = '%84';
    histogram['\u2026'] = '%85';
    histogram['\u2020'] = '%86';
    histogram['\u2021'] = '%87';
    histogram['\u02C6'] = '%88';
    histogram['\u2030'] = '%89';
    histogram['\u0160'] = '%8A';
    histogram['\u2039'] = '%8B';
    histogram['\u0152'] = '%8C';
    histogram['\u008D'] = '%8D';
    histogram['\u017D'] = '%8E';
    histogram['\u008F'] = '%8F';
    histogram['\u0090'] = '%90';
    histogram['\u2018'] = '%91';
    histogram['\u2019'] = '%92';
    histogram['\u201C'] = '%93';
    histogram['\u201D'] = '%94';
    histogram['\u2022'] = '%95';
    histogram['\u2013'] = '%96';
    histogram['\u2014'] = '%97';
    histogram['\u02DC'] = '%98';
    histogram['\u2122'] = '%99';
    histogram['\u0161'] = '%9A';
    histogram['\u203A'] = '%9B';
    histogram['\u0153'] = '%9C';
    histogram['\u009D'] = '%9D';
    histogram['\u017E'] = '%9E';
    histogram['\u0178'] = '%9F';
 
    for (unicodeStr in histogram) {
        hexEscStr = histogram[unicodeStr]; // Switch order when decoding
        ret = replacer(hexEscStr, unicodeStr, ret); // Custom replace. No regexing
    }
    
    // End with decodeURIComponent, which most resembles PHP's encoding functions
    ret = decodeURIComponent(ret);
 
    return ret;
}

function load_search()
{
	var html = "";
	
	html = "<table width=\"100%\" height=\"100%\" cellpadding=\"10\" cellspacing=\"0\" border=\"0\"";
	html += "<tr><td id=\"search_results_cell\" valign=\"top\">";
	html += "<table border=\"0\" cellpadding=\"5\" cellspacing=\"0\" style=\"border: 1px #cccccc dashed;background-color:#eeeeee\">";
	html += "<tr>";
	html += "	<td>";
	html += "	<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"display:block\">";
	html +=	"	<tr>";
	html +=	"		<td>";
	html +=	"			<select id=\"search_part\">";
	html +=	"				<option value=\"nickname\">Nickname</option>";
	html +=	"				<option value=\"subject\">Subject</option>";
	html +=	"				<option value=\"message\">Message Body</option>";
	html +=	"			</select>";
	html +=	"			</td>";
	html +=	"			<td><input type=\"text\" id=\"search_text\" class=\"input_text\" style=\"width:120px\"></td>";
	html +=	"			<td><input type=\"button\" value=\"Go\" class=\"button\" onclick=\"do_search()\"></td>";
	html +=	"	</tr>";
	html +=	"	</table>";	
	
	html += "	</td>";
	html += "</tr>";
	html += "</table>";
	html += "&nbsp;";
	html += "<table border=\"0\" cellpadding=\"5\" cellspacing=\"0\" style=\"border: 1px #cccccc dashed;background-color:#eeeeee\">";
	html += "<tr>";
	html += "	<td id=\"last_ten\">";
	html += "	</td>";
	html += "</tr>";
	html += "</table>";
	html += "</td>";
	html += "</tr></table>";
	
	$("#threads").html(html);
	
	html = "";
	
	$.getJSON("rpc/index.php?action=get_searches", 
	{ }
	,	function(data)
		{
			var data = data.searches;
			html += "	<table border=\"0\" cellpadding=\"3\" cellspacing=\"0\" style=\"display:block\">";
			html +=	"	<tr>";
			html +=	"		<td>#</td>";
			html +=	"		<td><strong>Search Criterion</strong></td>";
			html +=	"		<td><strong>Search Text</strong></td>";
			html += "		<td><strong>Date/Time</strong></td>";
			html +=	"	</tr>";
			
			$.each(data, function(i)
			{
				html += "<tr><td>"+(i+1)+"</td><td>"+this.search_part+"</td><td>"+this.search_text+"</td><td>"+this.date_searched+" " +this.time_searched+"</td></tr>";
			})
			html +=	"	</table>";	
			$("#last_ten").html(html);
	 	}
	);	
}


function do_search()
{
	var search_part = $("#search_part").val();
	var search_text = $("#search_text").val();
	
	$("#search_results_cell").html("<table width=\"99%\" height=\"100%\"><tr><td align=\"center\"><img src=\"images/loadinganimation.gif\"></td></tr></table>");
	
	$.getJSON("rpc/index.php?action=search", 
	{ 
		search_part: search_part
	,	search_text: search_text
	}
	,	function(data)
		{
			var data = data.messages;
			var html = "";
			html += "Your search produced <span style=\"color:red\">"+data.length+"</span> results <br><br>";
			html += "<table border=\"0\" cellpadding=\"5\" cellspacing=\"0\" style=\"border: 1px #cccccc dashed;background-color:#eeeeee\">";
			html += "<tr>";
			html += "	<td id=\"last_ten\">";
			html += "<table cellpadding=\"3\" cellspacing=\"0\">";
			html += "<tr><td><strong>#</strong></td><td><strong>Nickname</strong></td><td><strong>Subject</strong></td><td><strong>Date/Time</strong></td></tr>";
	    	$.each(data, function(i)
			{
				i++;
				html += "<tr><td>"+i+"</td><td>"+URLDecode(this.nickname)+"</td><td><a href=\"rpc/index.php?action=visit&id="+this.id+"\" onclick=\"view_message("+this.id+")\" target=\"hidden_message\">"+URLDecode(this.subject)+"</td><td>"+this.date+" "+this.time+"</td></tr>";
			})
			html += "</table>";
			html += "	</td>";
			html += "</tr>";
			html += "</table>";
			$("#search_results_cell").html(html);
	 	}
	);	
}

function vote(id)
{
	$.getJSON("rpc/index.php?action=vote", 
	{ 
		id: id
	}
	,	function(data)
		{
			$("#vote_cell").html("<a href=\"javascript:vote("+id+")\"><strong>Vote ("+data.votes+")</strong></a>");
	 	}
	);
}
