var discussionPostContentDiv;
var discussionPostTextAreaID;
function isTextArea(element)
{
	return element.type == "textarea";
}
var responseEditPostSuccess = function(o){
	// show the form
	o.argument.innerHTML = o.responseText;
	
	// init tinymce on the textarea in the returned form
	var tinyMCEtextarea = YAHOO.util.Dom.getElementBy(isTextArea, "textarea", o.argument);
	discussionPostTextAreaID = tinyMCEtextarea.id;
	tinyMCE.execCommand('mceAddControl', false, discussionPostTextAreaID);
	
	return;
}
var responseEditPostFailure = function(o){
	alert("%%ajax_fail_error_message%%");
	return;
}
function showDiscussionPostEditForm(url, editFormDiv)
{
	discussionPostContentDiv = document.getElementById(editFormDiv);
	var callback = {success:responseEditPostSuccess,failure:responseEditPostFailure,argument:discussionPostContentDiv};
	YAHOO.util.Connect.asyncRequest('GET', url, callback);
	return false;
}

function cancelEditingPost()
{
	// grab the original post text
	var textAreaElement = document.getElementById(discussionPostTextAreaID);
	var oldPostText = textAreaElement.value;
	
	// unlink tinymce from the textarea
	tinyMCE.execCommand('mceFocus', false, discussionPostTextAreaID);
	tinyMCE.execCommand('mceRemoveControl', false, discussionPostTextAreaID);
	
	// replace the textarea with the original post text
	discussionPostContentDiv.innerHTML = oldPostText;
}

function ajaxEditValidate (formID, ajaxURL)
{
	var theform = document.getElementById(formID);
	var theformvalues; 
	var editedText;
	var errorEditPostMessageId = 'errorEditPostMessage';
	
	formData2QueryString = function (docForm) 
	{
		var submitString = '';
		var lastElementName = '';
		for(i = 0 ; i < docForm.elements.length ; i++) {
			formElement = docForm.elements[i];
			switch(formElement.type) {
				case 'text' :
				case 'button' :
				case 'select-one' :
				case 'hidden' :
				case 'password' :
					submitString += formElement.name + '=' + paramEscape(formElement.value) + '&';
					break;
				case 'textarea' :
					editedText = tinyMCE.activeEditor.getContent();
					submitString += formElement.name + '=' + paramEscape(editedText) + '&';
					break;
				case 'radio' :
					if(formElement.checked) {
						submitString += formElement.name + '=' + paramEscape(formElement.value) + '&';
					}
					break;
				case 'checkbox' :
					if(formElement.checked) {
						if(formElement.name == lastElementName) {
							if(submitString.lastIndexOf('&') == submitString.length - 1) {
								submitString = submitString.substring(0, submitString.length - 1);
							}
							submitString += ',' + paramEscape(formElement.value);
						} else {
							submitString += formElement.name + '=' + paramEscape(formElement.value);
						}
						submitString += '&';
						lastElementName = formElement.name;
					}
					break;
			}
		}
		submitString = submitString.substring(0, submitString.length - 1);
		return submitString;
	};
	getJsonResponse = function () 
	{
		new postJsonResponse(ajaxURL, 5000, "", loadEditPostSuccess, theformvalues, theform);
	};
	loadEditPostSuccess = function (e, target, argument) 
	{
		tinyMCE.execCommand('mceFocus', false, discussionPostTextAreaID);
		tinyMCE.execCommand('mceRemoveControl', false, discussionPostTextAreaID);
		discussionPostContentDiv.innerHTML = e.payload;
	};
	theformvalues = formData2QueryString(theform);
	getJsonResponse();
}