
var commentsLength = 1400;
var commentsText = "(" + window.addComma(commentsLength) + " character limit; ";

function isControlCharacter(evt) {
	var characters = "\b\0\x25\x26\x27\x28";
	var isSpecial = false;
	if (typeof evt != "undefined" && typeof evt.modifiers != "undefined") {
		isSpecial = evt.modifiers ^ 2 == 2;
	} else {
		isSpecial = evt.ctrlKey;
	}
	if (!isSpecial) {
		var keycode = typeof evt.which != "undefined" ? evt.which : evt.keyCode;
		isSpecial = keycode == 0 || characters.indexOf(String.fromCharCode(keycode)) != -1;
	}
	return isSpecial;
}

function checkCommentField(evt) {
	if (document.forms[0]){
		var field = document.forms[0].COMMENTS;
		setTimeout('checkRemaining()', 100);
		return field.value.length < commentsLength || isControlCharacter(evt);
	}
}

function checkRemaining() {
	if (document.forms[0]){
		var field = document.forms[0].COMMENTS;
		if (field.value.length > commentsLength) field.value = field.value.substring(0, commentsLength)
		var charCount = field.value.length;
		var t = document.createTextNode("(" + window.addComma(commentsLength) +  " character limit; " + window.addComma(commentsLength - charCount) + " remaining)")
		var e = document.getElementById('indicator');
		e.replaceChild(t,e.firstChild);
	}
}
function addCommentsHandlers() {
	if (document.forms[0]){
		var commentsField = document.forms[0].COMMENTS;
		var clearButton = document.forms[0].Clear;
		addEvent(commentsField, "keyup",    checkCommentField);
		addEvent(commentsField, "cut",      checkCommentField);
		addEvent(commentsField, "paste",    checkCommentField);
		addEvent(clearButton, "click", clear);
		setTimeout('checkRemaining()', 100);
	}
}

function clear(){
	if (document.forms[0]){
		void(document.forms[0].reset());
		setTimeout('checkRemaining()', 100);
		return false;
	}
}

addEvent(document, "readystatechange", addCommentsHandlers);