if( !String.prototype.trim ) {
	String.prototype.trim = function () {
	  return this.replace(/^\s*(\S*(\s+\S+)*)\s*$/, "$1");
	};
}

function onKeyEventCounter(fieldID, count, maxChar) {
	var field = document.getElementById(fieldID);
	var counter = document.getElementById(count);
	var len = field.value.length;

	if ( len > maxChar ){
		alert("The maximum number of characters\nthat can be entered is " + maxChar + ".\n\n You have entered " + len + " characters.");
		field.value = field.value.substring(0, field.value.length+maxChar-len);
		counter.innerHTML = 0;
		field.focus();
	} else {
		counter.innerHTML = (maxChar - len);
	}
}

function checkRequired(field, legal) {
	var valid = true;
	var optionalFields = new Array('ugcSecurityCode_'+field); // Used on pages that require CAPCHA codes
	if (legal) {
		var requiredFields = new Array('Legal','ugcComments_'+field);
	} else {
		var requiredFields = new Array('ugcComments_'+field);
	}
	
	for (i=0; i<requiredFields.length; i++) {
		var el = document.getElementById(requiredFields[i]);
		
		// check that required checkboxes are checked
		if (el.type == 'checkbox') {
			if (!el.checked) {
				valid = false;
			}
		} else {
			el.value = el.value.trim();
			if (el.value == '' || el.length == 0) {
				valid = false;
			}
		}		
	}
	
	// Check to see if we should require CAPCHA
	for (i=0; i<optionalFields.length; i++) {
		var oe = document.getElementById(optionalFields[i]);
		if(oe) {
			oe.value = oe.value.trim();
			if (oe.value == '') {
				valid = false;
			}
		}
	}
	
	if(!valid) {
		alert('Please complete all fields before submitting.');
	}
	
	return valid;
}
