//Extensions to Core Javascript Objects */
function listAppend(s, delim) {
	var list = this;
	var listLen = list.length;
	var delimLen = delim.length;

	if (listLen > 0 && delimLen > 0 && (listLen < delimLen || list.substr((listLen - delimLen, delimLen) != delim)))
		list = list + delim;

	list = list + s;

	return list;
}
function rtrim() {
	return this.replace(/\s+$/,"");
}
function trim() {
	return this.replace(/(^\s+)|(\s+$)/g,"");
}
function truncate(maxLength) {
	var ret;
	var theChar;
	var s = this;
	var s2 = "";
	var isSpace = false;
	var pattern = /\s/;
	var len = parseInt(maxLength) + 1;

	if (s.length > parseInt(maxLength)) {
		do {
			s2 = s.substr(0,len);
			theChar = s2.substr((len - 1),1);
			isSpace = theChar.match(pattern);
			len = len - 1;
		} while (len >= 0 && !isSpace)
		ret = s2.trim();
	} else {
		ret = s;
	};

	return ret;
}

String.prototype.listAppend = listAppend;
String.prototype.rtrim = rtrim;
String.prototype.trim = trim;
String.prototype.truncate = truncate;