;(function($) {
	// Write noscript style
	document.write("<style type='text/css'>.noscript{display:none}</style>");
	
	var panels = [];
	var panel_id =0;
	var triggercount = 0;
	
	//click action handler
	function panelClickHandler(e, panel, hash, $listitem) {
		
		panel.$previousTab = panel.$currentTab;
		panel.$previousTab.removeClass('active');
		panel.$currentTab = $listitem;
		panel.$currentTab.addClass('active');
		
		var content_placeholders = $(panel.panelContainer + ' ' + panel.contentContainer + ' > div');
		//hide every other panel content
		$(content_placeholders).each(function(i)
		{
			$(this).css("left",-9999);
		});
		//show selected panel content
		$(content_placeholders[hash]).css("left", 0);
		
		if(panel.settings.linkPanel != null)
		{
			var panel_items = $(panel.settings.linkPanel + ' ul > li');
			if(triggercount == 1)
			{
				triggercount = 0;
			}
			else if(panel_items.length > 0 && triggercount < 1)
			{
				triggercount++;
				$(panel_items[hash]).trigger('click');
			}
		}
	}
	
	//extend the panels function
	$.fn.panels = function(panelContainer,settings){
		//  Extend Panel Object
		$.extend(this, {
				 
			//init panel
			initPanel: function(){
				this.data = [];
				var panel = this;
				
				var panel_items = $(panelContainer+ ' ul.'+ settings.ulClass + ' > li');
				var $placeholder = $(panelContainer + ' ' + settings.contentContainer);
				$placeholder.empty();
				panel_items.each(function(i) 
				{
					var $li = $(this);
					var hash = i;
					
					if(i==0)
					{
						panel.$currentTab = $li;
						panel.$previousTab = $li;
						$li.addClass('active');
					}
					panel.data.push({
						content:$li.find(settings.contentClass),//.remove(),
						hash:hash
					});
					//clear list item's anchor
					$li.children('a').removeAttr("href");
					//bind tab button
					$li.click(function(e) {
						panelClickHandler(e, panel, hash, $li);
					})
					
					$li.find(settings.contentClass).css({'left' : -9999, 'position' : 'absolute'}).appendTo($placeholder);
				});
				
				var first_panel = $(panelContainer+ ' ul.'+ settings.ulClass + ' li:first-child');
				panelClickHandler(null, panel, 0, first_panel);
				return this;
			}
			
		});//of extend
		
		this.settings = settings;
		// Set the hash index offset for this panel
		this.$currentTab = 0;
		this.$previousTab = 0;
		this.panelContainer = panelContainer;
		this.contentContainer = settings.contentContainer;
		this.contentClass = settings.contentClass;
		this.initPanel();
		
		//store in global panels array
		panels[panel_id] = this;
		panel_id++;
		return this;
	};
})(jQuery);
