(function($){

	$.fn.tabs = function(options) {

		var defaults = {
			tabs:			'ul.tabList',
			node:			'div.tabContent',
			selected:		'selected'
		};
		
		var opts = $.extend(defaults, options);
		
		return $(this).each(function(){
			var $this = $(this),
				$tabs = $this.find(opts.tabs),
				$nodes = $this.find(opts.node),
				currentTab;
			
			$tabs.find("a").each(function(j){
				$(this).click(function(){
					return changeTab(j);
				});
				if($(this).closest('li').hasClass(opts.selected)) {
					changeTab(j);
				}
			});
			
			changeTab(0);
		
			function changeTab(tab){
				if(tab != currentTab && $nodes[tab]) {
					// swap classes on tabs
					$tabs.find('.selected').removeClass(opts.selected);
					$tabs.find('li:eq('+tab+')').addClass(opts.selected);
					
					// show and hide the relevant nodes
					$nodes.hide();
					$($nodes[tab]).show();
					$this.trigger('tabs.change',tab);
				}
				return false;
			}
			
		});
	}

})(jQuery)
