//Bunch of functions for the ajax forum stuffs

//function that checks if user is logged in and then call the new message box if successfull
function new_message(target_anchor)
{
	if(document.getElementById("new_topic_box") && document.getElementById("new_topic_box").style.display == "block")
	{
    show_hide_div("new_topic_box");
  }
  else
  {
    document.getElementById('login_box').target_anchor=target_anchor;
	  document.getElementById('login_box').h_position='right';
	  document.getElementById('login_box').v_position='bottom';
    if(target_anchor.substring(0,4)=="edit")
    {
      var url = "getpost.php?id="+target_anchor.slice(5)+"&dummy="+new Date().getTime();
    }
    else
    {
      var url = "loggedin.php";
    }
    request.open("GET", url, true); 
	  switch(target_anchor)
	  {
      case 'new_topic_button_bottom':
        document.getElementById('login_box').v_position='top';
      break;
      case 'reply_button_bottom':
        document.getElementById('login_box').v_position='top';
      break;
    }    
		show_hide_div('processing_box',target_anchor,document.getElementById('login_box').v_position,document.getElementById('login_box').h_position);
	  request.onreadystatechange = new_message_box;
    request.send(null);
	}
}

//open new message box if already logged in, or the login box
function new_message_box()
{
	if (request.readyState == 4)
	{
	  if (request.status == 200)
		{
			show_hide_div('processing_box');
			/* Get the response from the server */
			var success = request.responseText;
			if((document.getElementById('login_box').target_anchor!='new_topic_button') && (document.getElementById('login_box').target_anchor!='new_topic_button_bottom'))
      {
        document.getElementById("new_topic_title_checkbox").style.display="none";
        document.getElementById("new_topic_box_title").innerHTML="Post a Reply";
        document.getElementById("new_blog_entry_checkbox").style.visibility="hidden";
        document.getElementById("new_topic_box").mode="reply";
        document.getElementById("new_topic_content").value="";
      }
      else
      {
        document.getElementById("new_topic_content").value="";
        document.getElementById("new_topic_title_checkbox").style.display="block";
        document.getElementById("new_topic_box_title").innerHTML="Create a New Topic";
        document.getElementById("new_topic_box").mode="new";
      }
      switch(success)
      {
        case 'true':
				  show_hide_div('new_topic_box', document.getElementById('login_box').target_anchor, document.getElementById('login_box').v_position, document.getElementById('login_box').h_position);
        break;
        case 'false':
				  if (document.getElementById('login_box').style.display == "block")
				  {
            show_hide_div('login_box');
				  }
				  reset_login_status();
				  document.getElementById("login_status").style.color = '#f00';
				  document.getElementById("login_status").innerHTML = 'Please enter you name and email address.';
				  show_hide_div('login_box', document.getElementById('login_box').target_anchor, document.getElementById('login_box').v_position, document.getElementById('login_box').h_position);
				  document.getElementById('login_box').target_box='new_topic_box';
				  setTimeout("give_login_focus()",1000);
				break;
				default:
				  document.getElementById("new_topic_title_checkbox").style.display="none";
				  document.getElementById("new_topic_box_title").innerHTML="Edit Your Post";
          document.getElementById("new_blog_entry_checkbox").style.visibility="visible";
          document.getElementById("new_topic_box").mode="edit";
				  document.getElementById("new_topic_content").value=success;
			    show_hide_div('new_topic_box', document.getElementById('login_box').target_anchor, document.getElementById('login_box').v_position, document.getElementById('login_box').h_position);
				break;
			}
		}
	}
}

//function that transform the message box to preview mode and ask for a preview to be generated, or comes back from preview to edit mode.
//creates error message if no text typed in
function preview_new_topic()
{
	var state=document.getElementById("new_topic_preview_button").title;
	if (state == 'Preview')
	{
		var content=document.getElementById("new_topic_content").value;
		if (content !="")
		{
			var url = "preview.php";
			request.open("POST", url, true);
			request.onreadystatechange = preview_topic_result;
			request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
			request.send("text=" + encodeURIComponent(content));
		}
		else
		{
			document.getElementById("new_topic_status").innerHTML = 'Please type a message to preview it.';
			if (document.getElementById("new_topic_log_box").title == "closed")
			{
				if (!document.getElementById("new_topic_log_box").style.top)
				{
					document.getElementById("new_topic_log_box").style.top= document.getElementById('new_topic_box').offsetHeight - document.getElementById('new_topic_log_box').offsetHeight;
				}
				fold_unfold('new_topic_log_box', 0, document.getElementById('new_topic_box').offsetHeight - 16, 0, document.getElementById('new_topic_box').offsetHeight - document.getElementById('new_topic_log_box').offsetHeight);
			}
		}
	}
	else
	{
		document.getElementById("new_topic_content").style.display='block';
		document.getElementById("topic_preview").style.display='none';
		document.getElementById("new_topic_preview_button").title='Preview';
		document.getElementById("new_topic_preview_button").src=theme_path+'button_preview.gif';
	}
}

//get the generated preview and displays it in another div as html
//Closes error message if any
function preview_topic_result()
{
	if (request.readyState == 4)
	{
	    if (request.status == 200)
		{
			/* Get the response from the server */
			var success = request.responseText;
			document.getElementById("topic_preview").innerHTML=success;
			document.getElementById("new_topic_content").style.display='none';
			document.getElementById("topic_preview").style.display='block';
			document.getElementById("new_topic_preview_button").title='Edit';
			document.getElementById("new_topic_preview_button").src=theme_path+'button_edit.gif';
			if (document.getElementById("new_topic_smiles_box").title != "closed")
			{
				PanRestore('new_topic_smiles_box', 0, 0);
			}
			if (document.getElementById("new_topic_log_box").title != "closed")
			{
				if (!document.getElementById("new_topic_log_box").style.top)
				{
					document.getElementById("new_topic_log_box").style.top= document.getElementById('new_topic_box').offsetHeight - document.getElementById('new_topic_log_box').offsetHeight;
				}
				fold_unfold('new_topic_log_box', 0, document.getElementById('new_topic_box').offsetHeight - 16, 0, document.getElementById('new_topic_box').offsetHeight - document.getElementById('new_topic_log_box').offsetHeight);
			}
			document.getElementById("new_topic_status").innerHTML ="";
		}
	}
}

//Checks every fields before submiting
//if no error is generated, closes all bbcode tags, and and calls submition script 
function submit_new_topic()
{
  var mode=document.getElementById("new_topic_box").mode;
  var content=document.getElementById("new_topic_content").value;
  var err=false;
  if (content == "")
	{
    document.getElementById("new_topic_status").innerHTML = 'Looks like you forgot to write your message.';
    err=true;
	}
  switch(mode)
  {
    case 'new':
      var title=document.getElementById("new_topic_title").value;
      if(title == "")
      {  
        if(err)
        {
          document.getElementById("new_topic_status").innerHTML = 'Please give a title to your new topic.<BR />' + document.getElementById("new_topic_status").innerHTML;
        }
        else
        {
          document.getElementById("new_topic_status").innerHTML = 'Please give a title to your new topic.';
          err=true;
        }
      }
      if(document.getElementById("new_topic_blog").checked)
		  {
        var blog='1';
      }
      else
      {
        var blog='0';
      }
      var url = "newthread.php";
      var parameters = "text=" + encodeURIComponent(content) + "&title=" + encodeURIComponent(title)+"&blog="+blog;
    break;
    case 'edit':
      if(document.getElementById("new_topic_blog").checked && (document.getElementById("new_blog_entry_checkbox").style.display == "inline"))
		  {
        var blog='1';
      }
      else
      {
        var blog='0';
      }
      var url = "forumedit.php";
      var postid = document.getElementById('login_box').target_anchor.slice(5);
      var parameters = "text=" + encodeURIComponent(content) + "&id=" + encodeURIComponent(postid) + "&blog=" + blog;
    break;
    case 'reply':
      var url = "reply.php";
      var thread_id = document.getElementById("thread_id").value;
      var parameters = "text=" + encodeURIComponent(content) + "&thread=" + encodeURIComponent(thread_id);
    break;
  }
	
	if(err)
	{
    if (document.getElementById("new_topic_log_box").title == "closed")
    {
      if (!document.getElementById("new_topic_log_box").style.top)
		  {
        document.getElementById("new_topic_log_box").style.top= document.getElementById('new_topic_box').offsetHeight - document.getElementById('new_topic_log_box').offsetHeight;
		  }
		  fold_unfold('new_topic_log_box', 0, document.getElementById('new_topic_box').offsetHeight - 16, 0, document.getElementById('new_topic_box').offsetHeight - document.getElementById('new_topic_log_box').offsetHeight);
		}
	}
	else
	{
		document.getElementById("new_topic_title").readOnly = true;
		document.getElementById("new_topic_content").readOnly = true;
		document.getElementById("submit_new_topic_button").disabled = true;
		document.getElementById("cancel_new_topic_button").disabled = true;
		document.getElementById("new_topic_preview_button").disabled = true;
		request.open("POST", url, true);
		request.onreadystatechange = new_topic_submited;
		request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		request.send(parameters);
		show_hide_div("processing_box","submit_new_topic_button","bottom","right");
	}
}

//Catch reply after sumition of a new topic
function new_topic_submited()
{
	if (request.readyState == 4)
	{
	  if (request.status == 200)
		{
		  show_hide_div("processing_box");
			/* Get the response from the server */
			var success = request.responseText;
			var error=true;
			switch (success)
			{
			   //new topic submitted successfully, goes back to forum main page
				case 'true':
				  var error=false;
					history.go();
				break;
				
				//Could not submit new topic
				case 'false':
					document.getElementById("new_topic_status").innerHTML = 'Could not submit your new thread.';
					document.getElementById("new_topic_title").readOnly = false;
					document.getElementById("new_topic_content").readOnly = false;
					document.getElementById("submit_new_topic_button").disabled = false;
					document.getElementById("cancel_new_topic_button").disabled = false;
					document.getElementById("new_topic_preview_button").disabled = false;
				break;
				
				//input missing
				case 'incomplete':
					document.getElementById("new_topic_status").innerHTML = 'Please fill every field.';
					document.getElementById("new_topic_title").readOnly = false;
					document.getElementById("new_topic_content").readOnly = false;
					document.getElementById("submit_new_topic_button").disabled = false;
					document.getElementById("cancel_new_topic_button").disabled = false;
					document.getElementById("new_topic_preview_button").disabled = false;
				break;
				
				//Flooding
				case 'flooded':
					document.getElementById("new_topic_status").innerHTML = 'Not so fast... please wait at least 60 seconds before posting again.';
					document.getElementById("new_topic_title").readOnly = false;
					document.getElementById("new_topic_content").readOnly = false;
					document.getElementById("submit_new_topic_button").disabled = false;
					document.getElementById("cancel_new_topic_button").disabled = false;
					document.getElementById("new_topic_preview_button").disabled = false;
				break;
				
				case 'unauth':
					document.getElementById("new_topic_status").innerHTML = 'You are not allowed to perform this action.';
					document.getElementById("new_topic_title").readOnly = false;
					document.getElementById("new_topic_content").readOnly = false;
					document.getElementById("submit_new_topic_button").disabled = false;
					document.getElementById("cancel_new_topic_button").disabled = false;
					document.getElementById("new_topic_preview_button").disabled = false;
				break;
			}
			//Open error message box if closed
			if (document.getElementById("new_topic_log_box").title == "closed" && error)
			{
			  if (!document.getElementById("new_topic_log_box").style.top)
			  {
			    document.getElementById("new_topic_log_box").style.top= document.getElementById('new_topic_box').offsetHeight - document.getElementById('new_topic_log_box').offsetHeight;
			  }
				fold_unfold('new_topic_log_box', 0, document.getElementById('new_topic_box').offsetHeight - 16, 0, document.getElementById('new_topic_box').offsetHeight - document.getElementById('new_topic_log_box').offsetHeight);
			}
		}
	}
}

//Reset the new topic box to default values
function reset_new_topic_box()
{
	document.getElementById("new_topic_status").innerHTML = '&nbsp;';
	document.getElementById("new_topic_content").style.display='block';
	document.getElementById("topic_preview").style.display='none';
	document.getElementById("new_topic_preview_button").title='Preview';
	document.getElementById("new_topic_title").readOnly = false;
	document.getElementById("new_topic_content").readOnly = false;
	document.getElementById("submit_new_topic_button").disabled = false;
	document.getElementById("cancel_new_topic_button").disabled = false;
	document.getElementById("new_topic_preview_button").disabled = false;
	document.getElementById("new_topic_preview_button").src=theme_path+"button_preview.gif";
	if(document.getElementById("forum_info_box").style.display=='block')
	{
    show_hide_div("forum_info_box");
  }
  if(document.getElementById("url_box").style.display=='block')
	{
    show_hide_div("url_box");
  }
}

/*------------------------------------------------------*/
function delete_box(postid)
{
	show_hide_div('delete_box','delete_' + postid,'bottom','right');
	document.getElementById("delete_button").name=postid;
}

function delete_message()
{
	var postid=document.getElementById("delete_button").name;
	var url = "forumdelete.php";
	request.open("POST", url, true);
	request.onreadystatechange = message_deleted;
	request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	request.send("id=" + encodeURIComponent(postid));
}

function message_deleted()
{
	if (request.readyState == 4)
	{
	    if (request.status == 200)
		{
			/* Get the response from the server */
			var success = request.responseText;
			switch (success)
			{
				case 'true':
					history.go();
				break;
				case 'false':
					document.getElementById("delete_status").innerHTML = 'Could not delete your message';
				break;
				case 'incomplete':
					document.getElementById("delete_status").innerHTML = 'Error, post ID is missing';
				break;
				case 'flooded':
					document.getElementById("delete_status").innerHTML = 'Not so fast... please wait at least 60 seconds';
				break;
				case 'unauth':
					document.getElementById("delete_status").innerHTML = 'You are not allowed to delete this message';
				break;
				case 'thread':
					location.replace("forum.php");
				break;
			}
		}
	}
}

/*----------------------------------------------------------*/

function flag_post(post_id)
{
	if (document.getElementById('flag_report').style.display == "block")
	{
		show_hide_div('flag_report');
	}
	if (document.getElementById('login_box').style.display == "block")
	{
		show_hide_div('login_box');
	}
	var url = "flag.php";
	request.open("POST", url, true);
	request.onreadystatechange = post_flagged;
	request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	request.send("id=" + encodeURIComponent(post_id));
}

function post_flagged()
{
	if (request.readyState == 4)
	{
	    if (request.status == 200)
		{
			/* Get the response from the server */
			var success = request.responseText;
			result=success.substring(0,5);
			elemid=success.slice(6);
			flag="flag"+elemid;
			switch (result)
			{
				case 'flagd':
					document.getElementById("flag_report_content").innerHTML = 'This post has been flagged.';
					show_hide_div('flag_report',flag,'bottom','left');
					document.getElementById(flag).style.visibility='hidden';
				break;
				case 'error':
					document.getElementById("flag_report_content").innerHTML = 'You already flagged this post.';
					show_hide_div('flag_report',flag,'bottom','left');
				break;
				case 'nolog':
					reset_login_status();
					document.getElementById("login_status").style.color = '#f00';
					document.getElementById("login_status").innerHTML = 'Please login.';
					show_hide_div('login_box',flag,'bottom','left');
					setTimeout("give_Login_focus()",1000);
					document.getElementById('login_box').target_anchor=elemid;
					document.getElementById('login_box').target_box="flag";
				break;
			}
		}
	}
}

