(function($) {
	$.fn.extend( {
		tabify : function() {
		
			function getHref(el) {
				hash = $(el).find('span a').attr('href');
				if (hash)
					return hash.substring(0, hash.length - 4);
				else
					return false;
			}

			function setActive(el) {
				
				$(el).addClass('active');
				if (getHref(el)) {
					$(getHref(el)).show();
				} else
					return false;

				$(el).siblings('li').each(function() {
					$(this).removeClass('active');
					$(getHref(this)).hide();
				});
			}
			return this.each(function() {
				var self = this;

				$(this).find('li span a').each(function() {
					$(this).attr('href', $(this).attr('href') + '-tab');
				});

				function handleHash() {
					if (location.hash)
						setActive($(self).find('a[href=' + location.hash + ']').parent().parent());
				}

				if (location.hash)
					handleHash();
				
				setInterval(handleHash, 100);

				$(this).find('li').each(function() {
					if ($(this).hasClass('active'))
						$(getHref(this)).show();
					else
						$(getHref(this)).hide();
				});
			});
		}
	});
})(jQuery);
