text: (function (F) {
  	/**
  	 * This namespace contains commonly used string utility methods.
  	 * @namespace FooTable.str
  	 */
  	F.str = {};
  
  	/**
  	 * Checks if the supplied string contains the given substring.
  	 * @memberof FooTable.str
  	 * @function contains
  	 * @param {string} str - The string to check.
  	 * @param {string} contains - The string to check for.
  	 * @param {boolean} [ignoreCase] - Whether or not to ignore casing when performing the check.
  	 * @returns {boolean}
  	 */
  	F.str.contains = function (str, contains, ignoreCase) {
  		return !F.is.emptyString(str)
  			&& !F.is.emptyString(contains) && contains.length <= str.length
  			&& (ignoreCase ? str.toUpperCase().indexOf(contains.toUpperCase()) : str.indexOf(contains)) !== -1;
  	};
  
  	/**
  	 * Checks if the supplied string contains the given word.
  	 * @memberof FooTable.str
  	 * @function containsWord
  	 * @param {string} str - The string to check.
  	 * @param {string} word - The word to check for.
  	 * @param {boolean} [ignoreCase] - Whether or not to ignore casing when performing the check.
  	 * @returns {boolean}
  	 */
  	F.str.containsWord = function(str, word, ignoreCase){
  		if (F.is.emptyString(str) || F.is.emptyString(word) || str.length < word.length)
  			return false;
  		var parts = str.split(/\W/);
  		for (var i = 0, len = parts.length; i < len; i++){
  			if (ignoreCase ? parts[i].toUpperCase() == word.toUpperCase() : parts[i] == word) return true;
  		}
  		return false;
  	};
  
  	/**
  	 * Returns the remainder of a string split on the first index of the given substring.
  	 * @memberof FooTable.str
  	 * @function from
  	 * @param {string} str - The string to split.
  	 * @param {string} from - The substring to split on.
  	 * @returns {string}
  	 */
  	F.str.from = function (str, from) {
  		return this.contains(str, from) ? str.substring(str.indexOf(from) + 1) : str;
  	};
  
  	/**
  	 * Checks if a string starts with the supplied prefix.
  	 * @memberof FooTable.str
  	 * @function startsWith
  	 * @param {string} str - The string to check.
  	 * @param {string} prefix - The prefix to check for.
  	 * @returns {boolean}
  	 */
  	F.str.startsWith = function (str, prefix) {
  		return str.slice(0, prefix.length) == prefix;
  	};
  
  	/**
  	 * Takes the supplied string and converts it to camel case.
  	 * @memberof FooTable.str
  	 * @function toCamelCase
  	 * @param {string} str - The string to camel case.
  	 * @returns {string}
  	 */
  	F.str.toCamelCase = function (str) {
  		if (str.toUpperCase() === str) return str.toLowerCase();
  		return str.replace(/^([A-Z])|[-\s_](\w)/g, function (match, p1, p2) {
  			if (p2) return p2.toUpperCase();
  			return p1.toLowerCase();
  		});
  	};
  
  })(FooTable);