(function ($) {
	
	/**
	 * jQuery-Focus Selector
	 *
	 * <a href="http://stackoverflow.com/questions/2683742/is-there-a-has-focus-in-javascript-or-jquery/2683838#2683838">Source</a>
	 *
	 * @example if ($(selector).is(':focus')) { ... }
	 * @example $('input:focus').doStuff();	
	 */
	$.extend(jQuery.expr[':'], {
		focus: function (e) {
			try {
				return e === document.activeElement;
			}
			catch (err) {
				return false;
			}
		}
	});
	
	var idCount = 0;
	$.extend({
		/**
		 * generate unique ID
		 */
		generateID: function (prefix) {
			idCount++;
			return prefix ? prefix + '-' + idCount : idCount; 
		},
		
		/**
		 * check if element is a single checkbox
		 */
		isSingleCheckbox: function (element) {
			var $element = $(element);
			
			if (!$element.is(':checkbox')) {
				return false;
			}
			
			return $element.parents('.checkboxgroup').length || $element.closest('.checkbox').siblings('.checkbox').length ? false : true;
		}
	});

	$.fn.extend({
		outerHtml: function () {
			return $('<div>').append(this.eq(0).clone()).html();
		}
	});
			
}(jQuery));
