var hintText = "Feel free to use as much space as you need to type your message!";
var messageUpdatedTimer;
var messageBox;
var charsLeftSpan;

function setMessageText(t, c) {
	if(!c) c = '';
	charsLeftSpan.innerHTML = t;
	charsLeftSpan.className = c;
}

function updatedMessage() {
	
	var charsRemaining = 2048 - messageBox.value.length;

	// Reset length for grey hint text
	if(messageBox.value == hintText) {
		charsRemaining = 2048;
	}

	if(charsRemaining < 0) {
		messageBox.value = messageBox.value.substring(0, 2048);
		alert("Woa! You\'ve written too much for this email. It needs to be less than 2048 characters!");
	} else if(charsRemaining == 0) {
		setMessageText("absolutely nothing!");
	} else if(charsRemaining < 200)  {
		if(charsRemaining < 150) {
			setMessageText(charsRemaining + " left", 'alert');
		} else {
			setMessageText(charsRemaining + " left");
		}
	} else if(charsRemaining < 250) {
		setMessageText("less than 250");
	} else if(charsRemaining < 500) {
		setMessageText("less than 500");
	} else if(charsRemaining < 600) {
		setMessageText("nearly there...");
	} else if(charsRemaining < 700) {
		setMessageText(charsRemaining + " left");
	} else if(charsRemaining < 800) {
		setMessageText("ok, I\'ll count again soon...");
	} else if(charsRemaining < 900) {	
		setMessageText("getting close...");		
	} else if(charsRemaining < 1000) {
		setMessageText("less than 1000...");
	} else if(charsRemaining < 1300) {
		setMessageText(charsRemaining + " left");
	} else if(charsRemaining < 1400) {
		setMessageText("ok, I\'ll count again soon...");		
	} else if(charsRemaining < 1500) {
		setMessageText("less than 1500...");
	} else if(charsRemaining < 1600) {		
		setMessageText("the number\'s still in 4 figures...");
	} else if(charsRemaining < 1700) {
		setMessageText("you\'re not even close!");
	} else if(charsRemaining < 1800) {
		setMessageText("keep typing...");
	} else if(charsRemaining < 1900) {		
		setMessageText("quite a fair few to go...");
	} else if(charsRemaining < 2040) {		
		setMessageText("plenty yet...");
	} else {		
		setMessageText(charsRemaining + " left");
	}
}

function MessageTools(id) { 
  YAHOO.util.Event.onContentReady(id, this.handleOnContentReady, this);  
}

MessageTools.prototype.handleOnContentReady = function(me) {
	messageBox = document.getElementById("emailMessage");
	charsLeftContainer = document.getElementById("charsLeftContainer");
	charsLeftContainer.innerHTML = "Character\'s Remaining: <span id=\"charsLeft\"></span>";
	charsLeftSpan = document.getElementById("charsLeft");
	
	messageHint();
	updatedMessage();
}
	 
var obj = new MessageTools("contactForm");

function messageHint() {
	if(messageBox.value == hintText) {
		messageBox.style.color = "#000000";
		messageBox.value = "";
	} else if(messageBox.value == "") {
		messageBox.style.color = "#666666";
		messageBox.value = hintText;
	}
}

function messageUpdatedFocus() {
	messageUpdatedTimer = setInterval("updatedMessage()", 50);
	messageHint();
}

function messageUpdatedBlurred() {
	messageHint();
	clearInterval(messageUpdatedTimer);
}

function messageOvertype(e) {
	var evt = e || window.event;
	if(messageBox.value.length >= 2048){
		if((evt.keyCode != 8) && (evt.keyCode != 40) && (evt.keyCode != 39) && (evt.keyCode != 38) && (evt.keyCode != 37)) {
			return false;
		}
	}
	return true;
}
