var request;
var form;
var comprev;

function createrequest_post(url, params, func)
{
	request = false;
	if(window.XMLHttpRequest)
	{
		request = new XMLHttpRequest();
		if(request.overrideMimeType) request.overrideMimeType('text/xml');
	}
	else if(window.ActiveXObject)
	{
		try
		{
			request = new ActiveXObject('Msxml2.XMLHTTP');
		}
		catch(error)
		{
			try
			{
				request = new ActiveXObject('Microsoft.XMLHTTP');
			}
			catch(error) {}
		}
	}
	
	if(!request) return false;
	
	request.onreadystatechange = func;
	request.open('POST', url, true);
	request.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
	request.setRequestHeader('Content-length', params.length);
	request.setRequestHeader('Connection', 'close');
	request.send(params);
	
	return true;
}

function getform()
{
	var frm = document.getElementById('frmPostDiscussion');
	if(!frm) frm = document.getElementById('frmPostComment');
	
	return frm;//$('#frmPostDiscussion, #frmPostComment');
}

function _showpreview()
{
	if(request.readyState == 4)
	{
		if(request.status == 200)
		{
			document.getElementById('CommentBody_Preview').innerHTML = request.responseText;
			document.getElementById('CommentBody_Preview').innerHTML = document.getElementById('CommentBox').value;
			var eAP = document.getElementById('Alert_Preview');
			var eSP = document.getElementById('Send_Preview');
			eAP.removeAttribute('style');
			eAP.innerHTML = 'Sua mensagem ainda não foi enviada. Este é apenas um rascunho.<br /> ';
			eAP.innerHTML += 'Para enviar sua mensagem agora clique em:';
			eSP.innerHTML = '<a href="javascript:getform().submit();">Enviar esta mensagem</a>';
			getform().btnPreview.value = 'Atualizar Visualização';
		}
	}
}
function createelements(parent, tree)
{
	var i, obj;
	
	for(i = 0; i < tree.length; i++)
	{
		obj = document.createElement(tree[i].name);
		if(tree[i].classname) obj.className = tree[i].classname;
		if(tree[i].id) obj.id = tree[i].id;
		if(tree[i].href) obj.href = tree[i].href;
		
		if(tree[i].content) obj.innerHTML = tree[i].content;
		else if(tree[i].children) createelements(obj, tree[i].children);
		
		parent.appendChild(obj);
	}
	
	return;
}
function showpreview(baseurl, user)
{
	var comprev, text, type, i, f;
	
	form = getform();
	if(form)
	{
		//our new 'comment' dosn't exist yet, so we need to first create it
		if(!document.getElementById('CommentBody_Preview'))
		{
			if(!document.getElementById('Comments')) //we're in a 'new discussion' page
			{
				obj = document.createElement('ul');
				obj.id = 'Comments';
				obj.className = 'Preview';
				var frm = document.getElementById('Form');
				var parentDiv = frm.parentNode;
				parentDiv.insertBefore(obj, frm);
			}
			
			createelements(document.getElementById('Comments'), Array( {
				name : 'li', 
				id : 'Comment_Preview', 
				children : Array( {
					name : 'div', 
					classname : 'CommentHeader', 
					children : Array( {
						name : 'ul', 
						children : Array( {
							name : 'li', 
							children : Array( {
								name : 'strong', 
								classname : 'autor', 
								content : user.name
							},
							{
								name : 'br'	
							},
							{
								name : 'span', 
								classname : 'detalhes', 
								content : 'neste instante'
							} ),
						} )
					} )
				}, {
					name : 'div', 
					id : 'CommentBody_Preview', 
					classname : 'CommentBody'
				}, {
					name : 'div', 
					id : 'CommentFoot_Preview', 
					classname : 'CommentFoot', 
					children : Array( {
						name : 'p', 
						id: 'Alert_Preview', 
						content : 'Aguarde! O rascunho está sendo formatado.'
					}, {
						name : 'p', 
						id: 'Send_Preview', 
						content : ' '
					} )
				} )
			} ));
			
			document.getElementById('Comment_Preview').style.backgroundImage = 
				'url(http://s.navj.us/i/rascunho.gif)';
			document.getElementById('Alert_Preview').style.color = 'red';
		}
		
		//encode text
		text = (encodeURIComponent) ? encodeURIComponent(form.Body.value) : 
			escape(form.Body.value.replace(/\+/g, '%2B'));

		//var oEditor = FCKeditorAPI.GetInstance('Body');
		//var oEditor = tinyMCE.getInstanceById("mce_editor_0");
		//text = (encodeURIComponent) ? encodeURIComponent(tinyMCE.getContent()) : 
		//	escape(tinyMCE.getContent().replace(/\+/g, '%2B'));

		//find format type
		if(!form.FormatType.length) type = form.FormatType.value;
		else
		{
			for(i = f = 0; i < form.FormatType.length; i++)
			{
				if(form.FormatType[i].checked)
				{
					f = 1;
					break;
				}
			}
			if(!f) i = 0;
			type = escape(form.FormatType[i].value);
		}
		
		//make POST request
		if(!createrequest_post(baseurl+'extensions/PreviewPost/ajax.php', 'Data='+text+'&Type='+type, _showpreview)) 
			alert('An error occured while attempting to set up request');
	}
	else alert('Unable to find form');
	
	return;
}