var followUpArray;
var clicksBool = true;
function drawEnter (response, status)
{
	$('.loadingClone').remove();
	if (status == 'success')
		{
			if (response['success'])
			{
			navArray = [];
			navPosition = 0;
			//put onclicks for max replies and longest chain
			var longestChainButton = $('.longestChainButton');
			var mostRepliesButton = $('.mostRepliesButton');
			var longestChainPosition = response ['maxDepthPosition'];
			var mostRepliesPosition = response['maxReplyCountPosition'];
			mostRepliesButton.attr('postposition',mostRepliesPosition);
			longestChainButton.attr('postposition',longestChainPosition);
			if (clicksBool)
			{
				mostRepliesButton.click(showPostNavigation);
				longestChainButton.click(showPostNavigation);
				clicksBool = false;
			}
			
			outerTreeArray = response ['posts'];
			var clicked = response ['clickedPostPosition'];		
			var postsHolder = pa.find('.posts');
			
			var clickedPosition = response ['clickedPostPosition'];
			
			//draw clicked post
			var currentPost = outerTreeArray [clickedPosition];
			var post = makePost(currentPost, clickedPosition,0);
			postsHolder.prepend(post);
			var theMarker = post.find('.clickedPostMarker');
			theMarker.show();
			var scrollTo = post;
			var clickedPostID = currentPost['postID'];
			var type = 'chain';
			
			//Draw parents
			drawParents(clickedPosition);
			
			//continue type conditions
			/*if(fromSignUp == 'true')
			{
				drawReplyPost(clickedPosition, clickedPostID);
				type = 'replyBox';
			}
			
			else {			
				//draw replies
				drawChain (clickedPosition); //draw chain
			}*/
			drawChain (clickedPosition); //draw chain
			
			//SCROLL
			var distanceToScroll = (scrollTo.offset().top)-320;
			//$('body').scrollTop(distanceToScroll);
			$(window).scrollTop(distanceToScroll);
			
			/*$('html, body').animate({
				scrollTop: (scrollTo.offset().top)-400
			}, 600);*/
			
			//empty state array
			navArray = [];
			//save current state
			var scrollPosition = $('body').scrollTop();
			navArrayUpdate (clickedPosition,type,scrollPosition);
			return;
		} else {
			errorToConsole ('error 001: unable to retrieve conversation');
			return;
		}
	}
	errorToConsole ('error 002: query failed');	
}

function drawParents (childPosition)
{
	var selectedPost = outerTreeArray [childPosition];
	var postsHolder = pa.find('.posts');
	while (selectedPost['parentID'] != null)
	{
		var newPosition = selectedPost['parentPosition'];
		selectedPost = outerTreeArray [newPosition];
		post = makePost(selectedPost, newPosition,0);		
		postsHolder.prepend(post);
	}
}

function drawPost(position) // post position
{
	var postsHolder = pa.find('.posts');
	var selectedPost = outerTreeArray[position];
	post = makePost(selectedPost, position,0);
	postsHolder.append(post);
}

function drawReplies (pstn,slide)
{
	var postsHolder = pa.find('.posts');
	var repliesWrapper = $('#templates .repliesWrapper').clone(true);
	repliesWrapper.addClass('repliesWrapperCloned');
	
	var position = pstn;
	var replies = outerTreeArray[position]['replies'];
	
	parentPost = pa.find('.post[postposition='+position+']');
	//change button
	span = parentPost.find('.showRepliesButton');
	$('.replyBoldRemover').removeClass('active');
	span.addClass('active');
	
	for(var i = replies.length-1; i >=0; i--)
	{
		var divLine = $('#templates .divReplyLineWrap').clone(true);
		divLine.addClass('divReplyLineCloned');	
		repliesWrapper.append (divLine);
		position = replies[i];		
		post = makePost(outerTreeArray[replies[i]],position,1);		
		repliesWrapper.append(post);	
	}	
	repliesWrapper.hide();	
	postsHolder.append(repliesWrapper);	
	if (slide)
	{
		repliesWrapper.slideDown('fast',addRepliesAfterSlide);
		return
	}
	else
	{
		repliesWrapper.show();
	}
	var lines = $('.divReplyLineCloned'); //adjust line heights
	for (var i = 0; i<lines.length; i++)
	{
		var prevPost = $(lines[i]).prev().height();
		if (prevPost == null)
		{
			prevPost = 100;
		}
		$(lines[i]).find('.divReplyLine').height(prevPost + 30);
	}
}

function drawChain (pstn)
{
	var postsHolder = pa.find('.posts');
	var position = pstn;
	$('.replyBoldRemover').removeClass('active');
	try 
	{
		var currentPost = outerTreeArray[position];
		var repliesCount = currentPost['replies'].length;
		position = currentPost['replies'][repliesCount-1];
		while (position < outerTreeArray.length)
		{
			var currentPost = outerTreeArray[position];
			post = makePost (currentPost, position, 0);
			postsHolder.append(post);
			var replyNumber = currentPost['replies'].length;
			if (replyNumber == 0)
			{
				if (outerTreeArray [currentPost['parentPosition']]['replies'].length != 1)
				{
					var currentIndex = postsHolder.children().index(post);
					//var parentIndex = currentIndex - 1; Not needed because nth child starts with 1  //we can also use previous!!   .prev()
					var span =  postsHolder.children ('.post:nth-child('+currentIndex+')').find('.showRepliesButton');
					drawReplies (position,true);
				}
				break;
			}
			//select the next reply
			position = currentPost['replies'][0];//[replyNumber-1];
		}
	} catch (err)
	{
	
	}
}
var currentPostTagbox
function drawReplyPost(position, id) // postposition
{
	var postsHolder = pa.find('.posts');
	var replyBox;
	/*if (signInStatus == false)
	{
		var replyBox = $('#templates .signInRequired').clone(true,true);
		var addEnters = replyBox.find('.withDefault');
		addEnters.keyup(loginEnterHandleConv);
		replyBox.addClass('post');
		replyBox.find('.signUpButton').attr('href','/signUp.php?source=conversation.php?postID='+id);
		postsHolder.append(replyBox);
	}
	else{*/
		replyBox= $('#templates > .composePostTemplate').clone(true,true);
		replyBox.removeClass('composePostTemplate');
		replyBox.addClass('composePost');
		replyBox.addClass('post');		
		replyBox.attr('parentid',id);
		replyBox.attr('parentposition', position);		
		var button = replyBox.find('.postSendButton');
		button.addClass('creatingReply');
		button.click(sendCreatePost);
		postsHolder.append(replyBox);
		
		currentPostTagbox = replyBox.find('.tagBox');
		var parentPost = replyBox.prev();
		var tags = parentPost.find('.postTag');
		for (var i = 0; i<tags.length; i++)
		{
			var tag = $(tags[i]);
			var tagid = tag.attr('tagid');
			var text = tag.html();
			addTag(text,tagid);
		}
	//}
	if ($.browser.msie)
	{
		replyBox.css('border','2px solid #ccc');
	}
	
	//replyBox.hide();
	//replyBox.slideDown('fast');
	//add show chain to parentID
	var parent = replyBox.prev();
	var parentPosition = parent.attr('postposition');
	var parentInArray = outerTreeArray[parentPosition];
	if (parentInArray['replies'].length>0)
	{
		parent.find('.showChainCell').show();
	}
	replyBox.find('.postBox').focus();
	createUploader();
}

function drawChainClicked (span) //post (from span)
{
	followUpArray = 'chain';
	var post = $(span).parents('.post');
	var postPosition = post.attr('postposition');
	post.find('.showChainCell').hide(); // for clicking above replybox

	//save current state
	var scrollPosition = $('body').scrollTop();
	navArrayUpdate (postPosition,'chain',scrollPosition);	
	
	if (post.hasClass('replyPost'))
	{
		var repliesWrapper = pa.find('.repliesWrapperCloned');//retractReplies
		followUpArray = new Array ('chain',postPosition);
		repliesWrapper.slideUp('fast',removeRepliesAfterSlide);
		return;
		//drawPost
		drawPost(postPosition);
	}
	else //(post above reply post)
	{
		post.next().remove();
	}
	//make scroll to the post that was clicked
	//var scrollTo = pa.find('.post:last-child');	

	drawChain(postPosition); //drawChain
	
	//SCROLL
	/*
	$('html, body').animate({
		scrollTop: (scrollTo.offset().top) - 80
	}, 600);
	*/
}

function showRepliesClicked () //post (from span)
{
	span = $(this);
	
	var post = span.parents('.post');
	var postPosition = post.attr('postposition');
	
	//save current state
	var type = 'replies';
	if (span.hasClass('active'))
	{
		type = navArray[navPosition-1][1];
	}
	var scrollPosition = $('body').scrollTop();
	navArrayUpdate (postPosition,type,scrollPosition);
	
	if (span.hasClass('active'))
	{
		var repliesWrapper = pa.find('.repliesWrapperCloned');//retractReplies
		followUpArray = new Array ('retractReplies',postPosition);
		repliesWrapper.slideUp('fast',removeRepliesAfterSlide);
		return;
	}	
		
	if (post.hasClass('replyPost'))
	{
		var repliesWrapper = pa.find('.repliesWrapperCloned');//retractReplies
		followUpArray = new Array ('replies',postPosition);
		repliesWrapper.slideUp('fast',removeRepliesAfterSlide);
		return;
		drawPost(postPosition);
	}
	else
	{
		post.nextAll().remove();//clear after
	}
	
	drawReplies(postPosition,true); //drawReplies
	
	//SCROLL to show replies
}

function ReplyButtonClicked (span)
{
	//change button
	if ($(span).hasClass('active'))
	{
		return;
	}
	$('.replyBoldRemover').removeClass('active');
	$(span).addClass('active');
	

	
	var post = $(span).parents('.post');
	var postPosition = post.attr('postposition');
	//save current state
	var scrollPosition = $('body').scrollTop();
	navArrayUpdate (postPosition,'replyBox',scrollPosition);	
	var postID = post.attr('postid');
	if (post.hasClass('replyPost'))
	{
		var repliesWrapper = pa.find('.repliesWrapperCloned');//retractReplies
		followUpArray = new Array ('replyBox',postPosition,postID);
		repliesWrapper.slideUp('fast',removeRepliesAfterSlide);
		return;
		drawPost(postPosition);
	}
	else
	{
		post.nextAll().remove();//clear after
	}	
	drawReplyPost (postPosition,postID);//drawReplyPost
}

function removeRepliesAfterSlide()
{
	$(this).remove();
	
	//follow up according to what was clicked
	if (followUpArray[0] == 'chain')
	{
		drawPost(followUpArray[1]);
		drawChain(followUpArray[1]);
	}
	if (followUpArray[0] == 'replies')
	{
		drawPost(followUpArray[1]);
		drawReplies(followUpArray[1]);
	}
	if (followUpArray[0] == 'replyBox')
	{
		drawPost(followUpArray[1]);
		drawReplyPost (followUpArray[1],followUpArray[2]);
	}
	if (followUpArray[0] == 'retractReplies')
	{
		navigateDraw (navArray[navPosition-2]);
	}
}

function addRepliesAfterSlide()
{
	var lines = $('.divReplyLineCloned'); //adjust line heights
	for (var i = 0; i<lines.length; i++)
	{
		var prevPost = $(lines[i]).prev().height();
		if (prevPost == null)
		{
			prevPost = 100;
		}
		$(lines[i]).find('.divReplyLine').height(prevPost + 30);
	}
}

function showPostNavigation ()
{
	button = $(this);
	type = button.attr('buttontype');
	var postsHolder = pa.find('.posts');
	var postPosition = button.attr('postposition');
	//save current state
	var scrollPosition = $('body').scrollTop();
	navArrayUpdate (postPosition,type,scrollPosition);
	
	postsHolder.empty();	
	
	drawPost(postPosition);
	drawParents(postPosition);
	if (type == 'replies')
	{
		drawReplies(postPosition);
	}
	else if (type == 'chain')
	{
		drawChain(postPosition);
	}
}

function alerts()
{
	alert('navPosition: '+navPosition);
}
