var topic = new function()
{
	var o = this;
	var topic_id = null; // Get this from the page that calls it

	this.replies_toggle = function(el, discussion_id)
	{
		var replies = $("#reply_to_"+discussion_id);
		if(replies.is(':visible'))
		{
			replies.slideUp('fast');
			el.innerHTML = 'Show Replies';
		}
		else
		{
			replies.slideDown('fast');
			el.innerHTML = 'Hide Replies';
		}
	}
	this.replies_show_all = function(el)
	{
		el = $(el);
		var el_replies = el.parents('.discussion_replies').find('.more_replies');
		el.parent().remove();
		el_replies.slideDown('fast'); 
	}
	
	// Gets the form box
	this.reply_start = function(el, discussion_id)
	{
		if(!user.id)
			return non_user('Post to Topic Discussions');		
			
		
		
		
		el = $(el);
		discussion_id = discussion_id ? discussion_id : 0;
		

		var url = '/topic/a_reply_form.php';
		var data = {topic_id: o.topic_id};
		 
		if(discussion_id) // if it's a reply
			data.parent_id = discussion_id;
		else
		{
			$.scrollTo(
				"#discussion",
				{
					duration: 800, 
					easing: 'easeOutBounce',
					offset: -200
				}
			); 
		}

		// The box exists just leave it there
		if($('#form_discussion_'+discussion_id).size())
			return;
			
		$.getJSON(url, data, function(data) { o.reply_start_done(el, data, discussion_id); } );
	}
	// Gets the form and displays it
	this.reply_start_done = function(el, data, discussion_id)
	{
		
		var el_form = $(data.content).hide();
		
		if(discussion_id)
			el_form.appendTo(el.parents('.avatar'))
		else
		{
			el_form.prependTo($('#discussion'));
		}
			
		el_form.fadeIn();
	
		var options = {
			dataType: 'json',
			success: function(data) { o.reply_submit_done(el, data); }
		};
	
		el_form.find('form').ajaxForm( options );
	}

	// Display the post
	this.reply_submit_done = function(el, data)
	{
		if(data.error)
		{
			alert(data.error);
			return;
		}
		var el_post = $(data.post).hide().fadeTo(0.1, 0).show();

		if(data.post_data.parent_id != 0) // It's a reply, if not, prepend it to the top.  Also, add it to the counter
		{
			var reply_container = $("#reply_to_" + data.post_data.parent_id);
			var child_count = $('#children_count_'+ data.post_data.parent_id); // Add to the counter
			var viewing_count = $('#viewing_count'); // Add to the counter
			var replies_count = $('#replies_count'); // Add to the counter
			var fade_time = 4000;
			
			el_post.appendTo(reply_container);
			child_count.html( child_count.html() * 1 + 1 );
			viewing_count.html( viewing_count.html() * 1 + 1 );
			replies_count.html( replies_count.html() * 1 + 1 );
			reply_container.find('.view_all_replies').remove();
			reply_container.find('.more_replies').show();
		}
		else
		{
			el_post.append('<div class="discussion_replies" id="reply_to_'+data.post_data.discussion_id+'"></div>'); // Need a container for the replies
			el_post.prependTo($("#discussion"));
			var fade_time = 1000;
		}

		$.scrollTo(
			"#discussion_"+data.post_data.discussion_id,
			{
				duration: 800,
				easing: 'easeOutBounce',
				offset: -200,
				onAfter: function() { el_post.fadeTo(fade_time, 1); }
			}
		);
			
		$('#form_discussion_'+data.post_data.parent_id).remove();
	}
	
	// Handles editing a reply
	this.reply_edit_start = function(discussion_id)
	{
		// The box exists just leave it there
		if($('#form_discussion_'+discussion_id).size())
			return;

		var el = $('#content_box_'+discussion_id);


		var url = '/topic/a_reply_form.php';
		var data = {
			topic_id: o.topic_id, 
			discussion_id: discussion_id
		};
			
		$.getJSON(url, data, function(data) { o.reply_edit_start_done(el, data, discussion_id); } );
		return;
	}
	// Regets the data
	this.reply_edit_cancel = function(discussion_id)
	{
		var url = '/topic/a_reply_form.php';
		var data = {
			topic_id: o.topic_id, 
			discussion_id: discussion_id,
			cancel: true
		};
		$('#content_box_'+discussion_id).load(url, data);
	}
	this.reply_edit_start_done = function(el, data, discussion_id)
	{
		if(data.error)
		{
			alert(data.error);
			return;
		}

		el.html(data.content);

		var options = {
			dataType: 'json',
			success: function(data) { o.reply_edit_submit_done(el, data); }
		};
		el.find('form').ajaxForm( options );
	}
	this.reply_edit_submit_done = function(el, data)
	{
		if(data.error)
		{
			alert(data.error);
			return;
		}
		el.html(data.post_data.content.replace(/\n/g, "<br>"));
	}
	// Reply delete
	this.reply_delete = function(id, parent_id)
	{
		var dialogue = parent_id ? "Delete this?" :  "Delete this and all it's replies?";
		if(!confirm(dialogue))
			return;
		
		var data = {delete_me: true, discussion_id: id, topic_id: topic.topic_id};
		var url = '/topic/a_discussion_submit.php';
		$.post(url, data);
		
		if(!parent_id)
			$('#reply_to_'+id).slideUp('fast', function() { $(this).remove() } );
		$('#discussion_'+id).slideUp('fast', function() { $(this).remove() } );
	}

	this.topic_search=function() {
		if ($.trim($("#topic_search_input").val()).length<2) {
			alert("Your search must be at least 2 characters long");
			return false;
		}
	}	
	
	this.user_delete = function(user_id) {
		if (confirm("are you sure? all comments made by this user will be deleted!")) {
			var data={
				action: "delete_user",
				user_id: user_id
			}; 
			var url = '/topic/a_discussion_submit.php';
			$.post(url, data, function() {
				window.location.reload(true);
			});
		}
		return;
	}	
	

}












