function setup() {
	entryForm = document.createElement('form');
	entryBox = document.createElement('input');
	entryBox.type = "text";
	entryBox.maxlength = 200;
	entrySubmit = document.createElement('input');
	entrySubmit.type = "button";
	entrySubmit.value = "write";
	if (document.addEventListener) document.addEventListener("click", addBox, false);
	else if (document.attachEvent) document.attachEvent("onclick", nearlyAddBox);
	var messagedo = setInterval("getMessages();", 2000);
	document.cookie = "color=" + getRandomHex();
	getMessages();

}
function nearlyAddBox() {
	addBox(window.event);
}

function getRandomHex() {
	var newHex = ""
	alphabet = "0123456789AB"
	for (var r=1; r<=6; r++) {
		newHex += alphabet.charAt(parseInt(Math.random()*11));
	}
	return newHex

}




function subForm(objectv) {
	addText(objectv);
	return false;
}

function makeRequest() {
	var httprequest = null	
	try {
		httprequest = new XMLHttpRequest();
	} catch (trymicrosoft) {
		try {
			httprequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (othermicrosoft) {
			try {
				httprequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (failed) {
				httprequest = null;
			}
		}
	}
	return httprequest;
}

function addBox(objectv) {
	if (!document.getElementById('entryform') || objectv.button == 1) {
		document.body.appendChild(entryForm);
		entryForm.appendChild(entryBox);
		entryForm.appendChild(entrySubmit);
		entryForm.style.position = "absolute";
		entryForm.style.left = objectv.clientX + "px";
		entryForm.style.top = objectv.clientY + "px";
		entryForm.id = "entryform";
		entryForm.border = 0;
		if (entryForm.addEventListener) entryForm.addEventListener("submit", subForm, false);
		else if (entryForm.attachEvent) entryForm.attachEvent("onsubmit", nearlySubForm);
		if (entrySubmit.addEventListener) entrySubmit.addEventListener("click", addText, false);
		else if (entrySubmit.attachEvent) entrySubmit.attachEvent("onclick", nearlyAddText);
		entryBox.focus();
	}
}
function nearlySubForm() {
	subForm(window.event);
}
function nearlyAddText() {
	addText(window.event);
}

function addText(objectv) {
	
	XCoord = parseInt(entryForm.style.left.substring(0, entryForm.style.left.length-2));
	YCoord = parseInt(entryForm.style.top.substring(0, entryForm.style.top.length-2));
	nText = entryBox.value
	entryForm.reset();
	document.body.removeChild(entryForm);
	if (nText.length >= 1) {
		pcolour = document.cookie.substring(document.cookie.length-6,document.cookie.length)
		if (pcolour.length <6) pcolour = getRandomHex();
		sendMessage(nText, XCoord, YCoord, pcolour);
	}
	if (objectv.stopPropagation) objectv.stopPropagation();
}

function sendMessage(msgText, msgLeft, msgTop, msgColour) {

	var request = makeRequest();
	var url = "receivemessage.php";
	request.open("POST", url, true);
	request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	request.send("text=" + msgText + "&left=" + msgLeft + "&top=" + msgTop + "&colour=" + msgColour);
}

function getMessages() {
	arequest = makeRequest();
	var url = "messages.txt";
	url += "?dummy=" + new Date().getTime();
	arequest.open("GET", url, true);
	arequest.onreadystatechange = printMessages;
	arequest.send(null);
}

function printMessages() {

	if (arequest.readyState == 4) {
		if (arequest.status == 200) {
			var jsonData = eval('{data: [' + arequest.responseText + ']}');
			document.getElementById('spanny').innerHTML = "";
			for (var x in jsonData) {
				var newDiv = document.createElement('div');
				document.getElementById('spanny').appendChild(newDiv);
				newDiv.style.position = "absolute";
				newDiv.style.left = jsonData[x].left + "px";
				newDiv.style.top = jsonData[x].top + "px";
				newDiv.style.backgroundColor = "#FFFFFF";
				newDiv.style.color = jsonData[x].colour;
				var newText = document.createTextNode(jsonData[x].text);
				newDiv.appendChild(newText);
			}
		}
	}
}