(function($){
	
	_ns = 'vsa';
	
	function Util() {
		/**
		*  Checks to see if an element has a given inline style set on it.
		*  @param{HTMLElement} el The element to inspect
		*  @param{String} style The inline style you would like to know about
		*  @returns{Boolean|null|undefined} Returns `true` is the string is present, `false` if it is not, `null` if there are no inline styles set on `el`, and `undefined` if `style` is not a string. 
		*/
		this.hasInlineStyle = function hasInlineStyle (el, style) {
			var inlineStyles = $(el).attr('style'),
				i;
			
			if (!inlineStyles) {
				// There are no inline styles at all, return null (this is handy!)
				return null;
			}
			
			if (typeof style === 'string') {
				
				inlineStyles = inlineStyles.toLowerCase().replace(/\s/g, '').split(';')
			
				for (i = 0; i < inlineStyles.length; i++) {
					if (inlineStyles[i].split(':')[0] === style.toLowerCase()) {
						return true;
					}
				}
			
				return false;
			}
			
			// `style` was not a string, just return `undefined` (this is implicit, anyways)
			return undefined;
		};
		
		/**
		*  Return the natural height of an element - the cimputed height that the element would have if
		*  it did not have any inline styles acting upon it (such as those applied with JavaScript)
		*  @param {HTMLElement} el The element to get the natural height of
		*  @returns {Number}
		*/
		this.getNaturalHeight = function getNaturalHeight (el) {
			var currCssHeight,
				naturalHeight;

			el = $(el);

			if (this.hasInlineStyle(el, 'height')) {
				currCssHeight = el.css('height');
				el.css({ 'height': 'auto' });
				naturalHeight = el.height();
				el.css({ 'height': currCssHeight });
			} else {
				el.css({ 'height': 'auto' });
				naturalHeight = el.height();
				el.css({ 'height': '' });
			}

			return naturalHeight;
		}

		this.capitalizeString = function getSentenceCase (str) {
			return str.charAt(0).toUpperCase() + str.slice(1);
		}
	}
	
	window[_ns] = new Util;
	
})(jQuery);
