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();
	
}

function load_messages(page)
{
	$("#threads").html("<table width=\"99%\" height=\"100%\"><tr><td align=\"center\"><img src=\"images/loadinganimation.gif\"></td></tr></table>");
	if(!page)
			var page = 1;
	$.post("rpc/index.php?action=messages&"+Math.random(),{page : page}, 
	function(data)
	{
		var html = "data";
		$("#threads").html(data);
		$("#ToolBar").load("rpc/stats.php", 
			{
				threads_today: $("#threads_today").val()
			,	posts_today: $("#posts_today").val()
			,	total_posts: $("#total_posts").val()
			,	sessions: $("#sessions").val()
			}
		);
		$("#PageButtons").load("rpc/pages.php", 
			{
				page: $("#page").val()
			,	total: $("#total").val()
			}
		);
	});
}

function view_message(id)
{
	$.getJSON("rpc/index.php?action=view_message",
		{
			id: id
		}
	,
    	function(json)
		{
			var html = "";
			html += "<div style=\"width: 98%; padding-left: 10px;padding-top: 3px\">";
			html += "On " + json.date + " at " + json.time + ", <strong>" + json.nickname + "</strong> wrote: <strong style=\"padding-left:10px\">" + json.subject + "</strong>";
			html += "</div>"
			
			$("#subject").html(html);
			
			html = "";
			html += "<div style=\"width: 97%; padding-left: 15px;padding-top: 15px\">";
			html += json.message;
			html += "<input type=\"hidden\" id=\"message_id\" value=\""+json.id+"\">";
			html += "<input type=\"hidden\" id=\"thread_id\" value=\""+json.thread_id+"\">";
			html += "<input type=\"hidden\" id=\"message_subject\" value=\""+json.subject+"\">";
			html += "</div>"
			
			$("#message").html(html);
		}
	);
	
	$("#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=\""+$("#wa_nick").val()+"\"></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($("#admin").val() == "true")
		{
			html += "	<td align=\"left\"><strong>Sticky:</strong></td>";
			html += "	<td style=\"padding-right:10px\"><input type=\"checkbox\" id=\"sticky\"></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").append(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=\""+$("#wa_nick").val()+"\"></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=\""+$("#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($("#admin").val() == "true")
		{
			html += "	<td align=\"left\"><strong>Sticky:</strong></td>";
			html += "	<td style=\"padding-right:10px\"><input type=\"checkbox\" id=\"sticky\"></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").append(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() == "on")
			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() == "on")
			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", { 
			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)
{

	$("#admin_"+id).html("Loading...");	
	$.post("rpc/index.php?action=admin", 
	{ 
		id: id
	,	ip: ip
	,	banned: banned
	}
	,	function(data)
		{
	    	$("#admin_"+id).html(data);
	 	}
	);
//	$("#admin_"+id).load("rpc/index.php?action=admin&id="+id)
	
}

function submit_admin(id, ip, banned)
{
	$.post("rpc/index.php?action=do_admin", 
	{ 
			id : id
		,	action : $("#admin_select_"+id).val()
		,	ip: ip
		,	banned: banned
	}
	,	function(data)
		{
	    	load_messages(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;
}

