Thread = {
	init: function()
	{
		var toggle = Thread.getElementsByName("div","popup_toggle");
		var elems = Thread.getElementsByName("div","username");
		var posts = Thread.getElementsByName("td","postcontainer");
		var deletes = Thread.getElementsByName("a","deletepost");
		var edits = Thread.getElementsByName("a","editpost");
		var post_content = Thread.getElementsByName("div","postcontent");
		var ips = Thread.getElementsByName("span","ipspan");
		
		Thread.elems = elems;
		Thread.toggle = toggle;
		Thread.posts = posts;
		Thread.deletes = deletes;
		Thread.edits = edits;
		Thread.post_content = post_content;
		Thread.ips = ips;
		
		Thread.postsClickable();
		
		var elem;
		
		document.onmousedown = Thread.closeAllWindows;
		for (var i = 0; i < toggle.length; i++)
		{
			elem = toggle[i];
			elem.i = i;
			elems[i].i = i;
			elem.onmouseover = function()
			{
				this.style.backgroundColor = "#FFFFFF";
			}
			elem.onmouseout = function()
			{
				if (elems[this.i].style.display != "block")
				{
					this.style.backgroundColor = "#EEEEEE";
				}
			}
			elem.onclick = function()
			{
				if (elems[this.i].style.display == "block")
				{
					if (!Thread.elems[this.i].isFading)
					{
						Thread.elems[this.i].isFading = true;
						Thread.fadeOut(this.i);
					}
				}
				else
				{
					if (!Thread.elems[this.i].isFading)
					{
						Thread.elems[this.i].isFading = true;
						elems[this.i].style.display = "block";
						
						if (!Thread.scrl)
						{
							var scrl = elems[this.i].scrollHeight;
							Thread.scrl = scrl;
						}
						elems[this.i].style.height = "0px";
						
						Thread.fadeIn(this.i,Thread.scrl);
					}
				}
				return false;
			}
			elems[i].onmouseover = function()
			{
				toggle[this.i].style.backgroundColor = "#FFFFFF";
			}
		}
	},
	quickEdit: function(pid,ind)
	{
		new ajax('../xmlhttp.php?action=getpost&pid='+pid, {method: 'get', onComplete: function(request) {Thread.quickEditLoad(request,ind,pid);}});
		Thread.closeAllWindows("close");
	},
	quickEditLoad: function(request,ind,pid)
	{
		if (!Thread.posts[ind].isEditing)
		{
			var frm = document.createElement('form');
			frm.setAttribute("id","form_"+ind);
			frm.id = "form_"+ind;
			frm.pid = pid;
			
			frm.onsubmit = function()
			{
				Thread.editPost(this.id,this.pid);
				return false;
			}
			
			var btnSubmit = document.createElement('input');
			btnSubmit.type = "submit";
			btnSubmit.value = "Edit";
			
			var btnCancel = document.createElement('input');
			btnCancel.type = "button";
			btnCancel.value = "Cancel";
			btnCancel.setAttribute("id","cancel_"+ind);
			btnCancel.id = "cancel_"+ind;
			btnCancel.onclick = function ()
			{
				Thread.cancelEdit(this.id);
				return false;
			}
			
			var textar = document.createElement('textarea');
			textar.cols = 45;
			textar.rows = 10;
			textar.id = "editor_"+ind;
			textar.setAttribute("id","editor_"+ind);
			textar.value = request.responseText;
			
			var br = document.createElement('br');
			
			frm.appendChild(textar);
			frm.appendChild(br);
			frm.appendChild(btnSubmit);
			frm.appendChild(btnCancel);
			
			Thread.post_content[ind].style.display = "none";
			
			Thread.posts[ind].insertBefore(frm,Thread.ips[ind]);
			Thread.posts[ind].isEditing = true;
		}
	},
	editPost: function(ind,pid)
	{
		ind = ind.split("_");
		ind = ind[1];
		var newpost = document.getElementById("editor_"+ind).value.replace(/\+/g, "%2B");
		
		var postData = "message="+encodeURIComponent(newpost)+"&token="+token;
		
		if (newpost.length > 4)
		{
			new ajax('../xmlhttp.php?action=do_editpost&pid='+pid, {method: 'post', postBody: postData, onComplete: function(request) { Thread.postEdited(request, ind); }});
		
			Thread.posts[ind].removeChild(document.getElementById("form_"+ind));
		}
		else
		{
			alert('Message too short');
		}
		
		return false;
	},
	postEdited: function(request,ind)
	{
		if (request.responseText == "error")
		{
			alert("Edit failed");
		}
		else
		{
			Thread.posts[ind].isEditing = false;
			Thread.post_content[ind].innerHTML = request.responseText;
			Thread.post_content[ind].style.display = "block";
		}
	},
	cancelEdit: function(ind)
	{
		ind = ind.split("_");
		ind = ind[1];
		Thread.posts[ind].isEditing = false;
		Thread.posts[ind].removeChild(document.getElementById("form_"+ind));
		Thread.post_content[ind].style.display = "block";
		return false;
	},
	postsClickable: function()
	{
		var post;
		var pid;
		for (var i = 0; i < Thread.posts.length; i++)
		{
			post = Thread.posts[i];
			post.i = i;
			
			post.oncontextmenu = function(e)
			{
				if (document.all)
				{
					var mouseX = event.clientX + document.documentElement.scrollLeft;
					var mouseY = event.clientY + document.documentElement.scrollTop;
				}
				else
				{
					var mouseX = e.pageX;
					var mouseY = e.pageY;
				}
				
				var divis = document.createElement('div');
				divis.style.border = "1px solid black";
				divis.style.position = "absolute";
				divis.style.left = mouseX+"px";
				divis.style.top = mouseY+"px";
				divis.style.zIndex = "50";
				divis.setAttribute("id","cntmenu");
				divis.setAttribute("class","popup2");
				divis.className = "popup2";
				
				pid = Thread.deletes[this.i].getAttribute("href").split("=");
				pid = pid[pid.length-1];
				
				divis.innerHTML = "<span class=\"popup_item\"><a href=\""+Thread.deletes[this.i].getAttribute("href")+"\" class=\"noclose\">Delete</a></span>";
				divis.innerHTML += "<span class=\"popup_item\"><a href=\""+Thread.edits[this.i].getAttribute("href")+"\" class=\"noclose\">Full edit</a></span>";
				divis.innerHTML += "<span class=\"popup_item\"><a href=\"javascript:Thread.quickEdit('"+pid+"','"+this.i+"')\" class=\"noclose\">Quick edit</a></span>";
				divis.innerHTML += "<span class=\"popup_item\"><a href=\"javascript:Thread.quickQuote('"+pid+"')\" class=\"noclose\">Quick quote</a></span>";
				divis.innerHTML += "<span class=\"popup_item\"><a href=\"zip.php?pid="+pid+"\" target=\"_blank\" class=\"noclose\">Download PHP</a></span>";
				if (st == 1)
				{
					divis.innerHTML += "<span class=\"popup_item\"><a href=\"javascript:Thread.quickBan('"+pid+"')\" class=\"noclose\">Ban user</a></span>";
				}
				document.body.appendChild(divis);
				
				return false;
			}
		}
	},
	quickBan: function (pid)
	{
		Thread.closeAllWindows("close");
		var reason = prompt("What is your reason?");
		
		if (reason != null)
		{
			new ajax('../xmlhttp.php?action=ban&pid='+pid+'&token='+token+'&reason='+escape(reason), {method: 'get', onComplete: function(request)
			{
				alert('User banned successfully');
			}});
		}
		else
		{
			alert("The user was not banned");
		}
	},
	quickQuote: function(pid)
	{
		new ajax('../xmlhttp.php?action=quote&pid='+pid, {method: 'get', onComplete: function(request)
		{
			document.getElementById('messagecontent').value += request.responseText;
			Thread.closeAllWindows("close");
		}});
	},
	getElementsByName: function (tag, elemName)
	{
		var elems = document.getElementsByTagName(tag);
		var returnElems = new Array();
		var b = 0;
		
		for (var i = 0; i < elems.length; i++)
		{
			if (elems[i].getAttribute("name") == elemName || elems[i].name == elemName)
			{
				returnElems[b] = elems[i];
				b++;
			}
		}
		
		return returnElems;
	},
	
	closeAllWindows: function (parm)
	{
		if (parm != "close")
		{
			if (document.all)
			{
				var clss = window.event.srcElement.className;
			}
			else
			{
				var clss = parm.target.getAttribute("class");
			}
		}
		else
		{
			var clss = "test";
		}
		
		if (clss != "popup" && clss != "popup_item" && clss != "popup_toggle" && clss != "noclose")
		{
			if (document.getElementById("cntmenu"))
			{
				document.body.removeChild(document.getElementById("cntmenu"));
			}
			var elems = Thread.getElementsByName("div","username");
			var toggle = Thread.getElementsByName("div","popup_toggle");
			for (var i = 0; i < elems.length; i++)
			{
				if (!Thread.elems[i].isFading)
				{
					elems[i].style.display = "none";
					toggle[i].style.backgroundColor = "#EEEEEE";
				}
			}
		}
	},
	fadeIn: function (i,toheight)
	{
		var ht = parseInt(Thread.elems[i].style.height);
		if (ht < toheight)
		{
			if (Thread.toggle[i].style.backgroundColor == "rgb(238, 238, 238)" || Thread.toggle[i].style.backgroundColor == "#eeeeee")
			{
				Thread.toggle[i].style.backgroundColor = "#FFFFFF";
			}
			
			if (Thread.elems[i].style.display != "block")
			{
				Thread.elems[i].style.display = "block";
			}
			
			if (ht >= toheight-3)
			{
				Thread.elems[i].isFading = false;
			}
			else
			{
				Thread.elems[i].style.height = ht+3+"px";
				window.setTimeout("Thread.fadeIn('" + i + "','" + toheight + "')",3);
			}
		}
	},
	fadeOut: function (i)
	{
		var ht = parseInt(Thread.elems[i].style.height);
		if (ht > 0)
		{
			if (ht < 4)
			{
				Thread.toggle[i].style.backgroundColor = "#EEEEEE";
				Thread.elems[i].style.display = "none";
				Thread.elems[i].isFading = false;
			}
			else
			{
				Thread.elems[i].style.height = ht-3+"px";
				window.setTimeout("Thread.fadeOut('"+i+"')",3);
			}
		}
	}
}
Event.observe(window, "load", Thread.init);