;(function($){

	 $.fn.gdTab = function(settings){
	 
	 	settings = $.extend({
	 		tabConteiner: ".conteiner",		/*nazwa obiektu ktory bedzie przetwarzany na pojedynczy tab */
	 		tabHeader: "h3",				/* nazwa obiektu ktory bedzie poszukiwany i wyświetlany na pasku z tabami */
			tabsNavName: "gdTab",			/*nazwa utworzonego obiektyu z tabami do przelaczania, kazda kolejna instancja bedzie dodawana miala numer*/
			tabsNavClass: "",				/*klasa dodawana do utworzonego obiektyu z tabami do przelaczania*/
			hideTabHeader : true,			/*czy ukrywac naglowki po przeksztalceniu */
			filtersClass : null	,	    	/*klasa z której brane sa filtry do wyświetlenia */
			extraTabsNavName : "extra",
			setNumber : false
			
	 	}, settings)
	 	

		useFilter =( settings.filtersClass != null && settings.filtersClass != "") ? true :  false;
        clicked_tab = false;

		/*Przycisk zamykajacy do filtrow*/		
		if (useFilter) {
			$(this).find(".closeBtn").click(function(){
				$(this).parent().slideUp("slow");
			})
		
		}
		
		if (useFilter) 
		{
			$(this).find("."+settings.filtersClass).find("input").click(function(){
				
				
				container =  $(this).parents("." +settings.filtersClass).parent();
				
				toogleElements = $(this).attr("value");
				relations = $(this).attr("rel");

				if (relations != undefined && relations != "")
				{
					loadExternalData(this, relations,container); 
				}

				$(container).find("table").hide();
				$(container).find("table."+toogleElements).show(0);
				
				

			});
		}
		
		
		function loadExternalData(_this,relations,container)
		{
			$(_this).removeAttr("rel");

				loading(1,container);

				$.post(relations, function(data){
					
					$(container).append(data);
						endpage('box');
					$(container).find(".pagin_pagin span").removeAttr("id");
					loading(0);
				});


		}
		
	 	function clickTabs()
		{
			
				$(this).parent().parent().find("a").removeClass("active");

				$(this).parent().parent().parent().find(settings.tabConteiner).hide(0);  
				
				

				$("#" + $(this).attr("href").split("#")[1]).show(0);
				$(this).addClass("active");

				newHash = $(this).attr("href").split("#")[1]
		
				 $(this).parent().parent().parent().find(settings.tabConteiner).find("form").each(function(){
				 	oldHref = $(this).attr("action").split("#")[0];
					$(this).attr("action",newHref = oldHref + "#" + 'tab_' + newHash);
				 })

				
			
				
				 window.location.hash = 'tab_' + newHash;	
				
				if ($(this).parent().parent().parent().find(settings.tabConteiner+":visible").find("."+settings.filtersClass).length > 0)
				{
					$(this).parent().parent().find("li."+settings.extraTabsNavName).show(0);
				}
				else
				{
					/* $(this).parent().parent().find("li."+settings.extraTabsNavName).hide(0);*/
				}

                clicked_tab = true;
                return false;	

		}
		
		
		function filterClickTabs()
		{
			$(this).parent().parent().parent().find("."+settings.filtersClass).slideToggle("slow");
			
		}
		
		function triggerBrowserBack()
		{
            if(clicked_tab)
            {
                urlHashTrigger = window.location.hash;
                clicked_tab = false;
                return;
            }
            if (urlHashTrigger != window.location.hash)
			{
                urlHashTrigger = window.location.hash;
				$(tabsNav).find("a").removeClass("active");
				$(tabsConteiners).hide();
                startUrl = window.location.hash.substr(5);
                if(startUrl.indexOf(settings.tabsNavName)!=-1) tab_nr = parseInt(startUrl.replace(/.+_([0-9])/g, '$1')) - 1;
                else
                {
                    top_nr = startUrl.replace(/.+([0-9]+)_.+/g, '$1');
                    if(parseInt(top_nr)==top_nr) tab_nr = top_nr;
                    else tab_nr = 0;
                }
                $(tabsConteiners).eq(tab_nr).show(0);
    			$(tabsNav).find("a").eq(tab_nr).addClass("active");
			}
		}

        if(settings.setNumber)
	 	{
            var urlHashTrigger = window.location.hash;
	 	    window.setInterval(triggerBrowserBack, 1000);
        }

	 	return this.each(function(i){

			index = (i == 0 ? "" : i);
	 		tabsNav = $("<ul id="+ settings.tabsNavName+ index +">");
				
				if (settings.tabsNavClass != "")
				{$(tabsNav).addClass(settings.tabsNavClass)};


				tabsConteiners = $(this).find(settings.tabConteiner);
				
					
					addExtra = false;
					$(tabsConteiners).each(function(ii){
					
						tabHeader = $(this).find(settings.tabHeader);

									var extra_li_class='';
									if(ii==0)
										extra_li_class=' class="li_first"';
									else if(ii==$(tabsConteiners).length-1)
										extra_li_class=' class="li_last"';
									hashID = settings.tabsNavName + index + '_'+ ++ii;
									$(tabsNav).append('<li'+extra_li_class+'><a href="'+ window.location.pathname + '#' + hashID  + '" title="' + $(tabHeader).text() + '">'+ $(tabHeader).html() +'<\/a><\/li>')
		
										if (settings.hideTabHeader) {
											$(tabHeader).remove();
										}
			
									$(this).attr("id",hashID).hide(0);
								
								
								
								if (useFilter) {
	
									if (($(this).find("." + settings.filtersClass).length) > 0) 
									{
										addExtra = true;
									}
									
								}
					});


				$(this).prepend(tabsNav);	
				if (addExtra)
				{
					$(tabsNav).append('<li class="'+ settings.extraTabsNavName +'"><a><\/a><\/li>');
				}

			/* EVENTS */
			$("#" + settings.tabsNavName + index ).find("li").not("." + settings.extraTabsNavName ).find("a").bind("click", clickTabs);	
			$("#" + settings.tabsNavName + index ).find("li." + settings.extraTabsNavName ).find("a").bind("click", filterClickTabs);	

			/* WARTOSCI POCZATKOWE */
			
            if(settings.setNumber)
            {
                startUrl = window.location.hash.substr(5);

                if(startUrl.indexOf(settings.tabsNavName)!=-1) tab_nr = parseInt(startUrl.replace(/.+_([0-9])/g, '$1')) - 1;
                else
                {
                    top_nr = startUrl.replace(/.+([0-9]+)_.+/g, '$1');
                    if(parseInt(top_nr)==top_nr) tab_nr = top_nr;
                    else tab_nr = 0;
                }
            }
            else
            {
                tab_nr = 0;
            }
            $(tabsConteiners).eq(tab_nr).show(0);
			$(tabsNav).find("a").eq(tab_nr).addClass("active");

		})
	 
	 }
	 

})(jQuery);









