var request;
var form;

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;
}

function _showpreview()
{
	if(request.readyState == 4)
	{
		if(request.status == 200)
		{
			document.getElementById('CommentBody_Preview').innerHTML = request.responseText;
			
			getform().btnPreview.value = 'Vorschau aktualisieren';
		}
	}
}

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';
				document.getElementById('Content').appendChild(obj);
			}
			
			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 : 'a', 
								href : baseurl+'account.php?u='+user.id, 
								content : user.name
							} )
						}, {
							name : 'li', 
							content : ' jetzt gerade'
						} )
					}, {
						name : 'span', 
						//content : '&nbsp;'
						children : Array( {
							name : 'a', 
							href : 'javascript:getform().submit();', 
							content : 'Kommentar senden'
						} )
					} )
				}, {
					name : 'div', 
					id : 'CommentBody_Preview', 
					classname : 'CommentBody'
				} )
			} ));
			
			document.getElementById('Comment_Preview').style.backgroundImage = 
				'url(' + baseurl + 'extensions/PreviewPost/preview.png)';
		}
		
		//encode text
		text = (encodeURIComponent) ? encodeURIComponent(form.Body.value) : 
			escape(form.Body.value.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;
}