(function ($) {
	
	var options = {
	};
	
	var TabsElementClass = function (el, opt) {
		
		this.options = {};
		this.tabContainer = el;
		this.debug = false;
		
		this.init = function (object, opt)
	    {
			var defaults = {
				"tabContentSelector": "div.tabContent",
				"tabElementSelector": "li.tab",
				"tabLinkSelector": "a",
				"tabToggleClass": "selected",
				"topBlockClass": "tabBlock"
	    	}
		    	
	    	this.options = jQuery.extend(defaults, opt);
			this.initTabs();
			this.tabContainer.addClass("jQueryPluginTabsProceed");
	    };
	    
	    this.initTabs = function ()
	    {
	    	var opt = this.options;
	    	
	    	var container = this.tabContainer
	    	
			var tabContainer = this.tabContainer;
			var tabs = tabContainer.find(opt.tabElementSelector);
			
			tabContainer.find(opt.tabContentSelector + ' a').live('click', function (e) 
			{
				var match = /^#tab-(\d+)$/i.exec($(this).attr('href'));
				if (match) 
				{
					tabs.filter(match[0]).find(opt.tabLinkSelector).click();
					return false;
				}
			});
			
			tabs.each(function (i) {
				var tab = $(this);
				$(opt.tabLinkSelector, tab).click(function (e) {
					$(opt.tabContentSelector, tabContainer).removeClass(opt.topBlockClass).filter(':eq(' + i + ')').addClass(opt.topBlockClass);
					tabs.removeClass(opt.tabToggleClass);
					tab.addClass(opt.tabToggleClass);
					return false;
				});
			});
    		
	    };	   	    
	    
	    this.init(el, opt);
	};
	
	
	$.extend($.fn, { 
		TabsPlugin: function (inOpt) {
			inOpt = inOpt || {};
			return this.each(function (i) {
				if(!$(this).hasClass("jQueryPluginTabsProceed"))
				{
					var opt = $.extend(true, {}, options, inOpt); // deep merge
					new TabsElementClass($(this),opt);
				}
			});
			return this;
		}
	});
})(jQuery);
