// *******************************************************************************************************************
// AD:DYNAMO StringUtils.js - VERSION 1.0.0
// *******************************************************************************************************************
// CREATED BY: Clive Munro
// DATE CREATED: 2010/08/27
// DATE UPDATED: 2010/08/27
// *******************************************************************************************************************

// Converts a string to title case (e.g. "tHe QuICK brown fOx jUmPs over the LAZY doG" will become "The Quick Brown Fox Jumps over the Lazy Dog")
function toTitleCase(str) {
	try {
		return convertToTitleCase(str);
	} catch (e) {
		return str;
	}
}

//Converts a string to sentence case (e.g. "tHe QuICK brown fOx jUmPs over the LAZY doG" will become "The quick brown fox jumps over the lazy dog")
function toSentenceCase(str) {
	try {
		return convertToSentenceCase(str);
	} catch (e) {
		return str;
	}
}

// Function to remove extra spacing in a string (e.g. " This is a string" will
// become "This is a string")
function normalizeSpaces(str) {
	try {
		return str.replace(/\s{2,}/g, " ");
	} catch (e) {
		return str;
	}
}

/** **************************************************************************************************************** */
/* PRIVATE FUNCTIONS */
/** **************************************************************************************************************** */

function convertToTitleCase(str) {
	return str.toLowerCase().replace(/\b\w+\b/g, cnvrt);
	function cnvrt() {
		if (arguments[arguments.length - 2] == 0)
			return arguments[0].replace(/^[a-z]/, cnvrt2);
		else if (/^(a|about|after|an|and|at|by|for|from|in|into|nor|of|on|onto|over|the|to|up|with|within)$/.test(arguments[0]))
			return arguments[0];
		else
			return arguments[0].replace(/^[a-z]/, cnvrt2);
	}
	function cnvrt2() {
		return arguments[0].toUpperCase();
	}
}

function convertToSentenceCase(str) {
	return str.toLowerCase().replace(/\b\w+\b/g, cnvrt);
	function cnvrt() {
		if (arguments[arguments.length - 2] == 0)
			return arguments[0].replace(/^[a-z]/, cnvrt2);
		else if (/^(i)$/.test(arguments[0]))
			return arguments[0].replace(/^[a-z]/, cnvrt2);
		else
			return arguments[0];
	}
	function cnvrt2() {
		return arguments[0].toUpperCase();
	}
}

