/*****************************\
* Autor:  PAV                 *
* e-mail: proalex85@gmail.com *
\*****************************/

var j = 1;
jQuery.fn.TabsPanel = function(settings) {
	settings = jQuery.extend ({
		easeFunc: 'expoinout',
		easeTime: 750,
		fadespeed: 1000
	}, settings);
	return this.each(function() {
		var container = jQuery(this);
		container.find('p.loading').remove();
		container.removeClass('preloader').addClass('PanelsShow');
		var panelCount = container.find('li.tabpanel').size();

		container.find('li.tabpanel').css('display', 'none');
		container.find('ul.panelContainer').css({'display' : 'block', 'visibility' : 'visible'});

		container.each(function(i) {
			jQuery(this).before('<div class="navTabs clearfix" id="navTabs' + j + '"><ul><\/ul><\/div>');
			jQuery(this).find('li.tabpanel').each(function(n) {
				var tab_title = jQuery(this).find('.PanelTab_Title span').html();
				if (tab_title==null) tab_title = 'Tab ' + (n+1);
				var jt = j;
				if (j < 2) jt = '';
				jQuery('div#navTabs' + j + ' ul').append('<li class="tab' + (n+1) + '"><a href="#ptab' + jt + '_' + (n+1) + '"><span>' + tab_title + '<\/span><\/a><\/li>');
			});

			container.find('.PanelTab_Title').remove();

			jQuery('div#navTabs' + j + ' a').each(function(z) {
				jQuery(this).bind('click', function() {
					container.find('ul.panelContainer').animate({ 'height': jQuery(this).parent().parent().parent().next().find('li.tabpanel:eq('+z+')').height()}, settings.easeTime, settings.easeFunc);
					jQuery(this).addClass('current').parent().parent().find('a').not(jQuery(this)).removeClass('current');
					jQuery(this).parent().parent().parent().next().find('li.tabpanel.current').fadeOut(settings.fadespeed,function(){jQuery(this).parent().parent().parent().next().find('li.tabpanel.current').hide('fast');}).removeClass('current');
					jQuery(this).parent().parent().parent().next().find('li.tabpanel:eq('+z+')').fadeIn(settings.fadespeed,function(){jQuery(this).parent().parent().parent().next().find('li.tabpanel:eq('+z+')').show('fast');}).addClass('current');
				});
			});

			jQuery('div.panelContent').each(function(x) {
				jQuery(this).addClass('tab'+(x+1));
			});

			var Tab = j;
			var numTab = 0;
			if (location.hash) {
				var location_hash = location.hash.slice(1);
				location_hash = location_hash.replace('ptab','1');
				if (location_hash.indexOf('_')>-1) {
					var splits = location_hash.split('_');
					Tab = parseInt(splits[0]);
					if (j==Tab) numTab = parseInt(splits[1])-1;
				} else numTab = parseInt(location_hash)-1;
			}

			if (location.hash && numTab < panelCount) {
				jQuery("div#navTabs" + j + " a:eq(" + numTab + ")").addClass("current").parent().parent().find("a").not(jQuery("div#navTabs" + j + " a:eq(" + numTab + ")")).removeClass("current");
				container.find("ul.panelContainer").animate({ height: jQuery("div#navTabs" + j + " a:eq(" + numTab + ")").parent().parent().parent().next().find("li.tabpanel:eq(" + numTab + ")").height()}, settings.easeTime, settings.easeFunc);
				jQuery("div#navTabs" + j + " a:eq(" + numTab + ")").parent().parent().parent().next().find("li.tabpanel:eq(" + numTab + ")").fadeIn(settings.fadespeed,function(){jQuery("div#navTabs" + j + " a:eq(" + numTab + ")").parent().parent().parent().next().find("li.tabpanel:eq(" + numTab + ")").show("fast");}).addClass("current");
			} else {
				jQuery("div#navTabs" + j + " a:eq(0)").addClass("current").parent().parent().find("a").not(jQuery("div#navTabs" + j + " a:eq(0)")).removeClass("current");
				container.find("ul.panelContainer").animate({ height: jQuery("div#navTabs" + j + " a:eq(0)").parent().parent().parent().next().find("li.tabpanel:eq(0)").height()}, settings.easeTime, settings.easeFunc);
				jQuery("div#navTabs" + j + " a:eq(0)").parent().parent().parent().next().find("li.tabpanel:eq(0)").fadeIn(settings.fadespeed,function(){jQuery("div#navTabs" + j + " a:eq(0)").parent().parent().parent().next().find("li.tabpanel:eq(0)").show("fast");}).addClass("current");
			}
		});
		j++;
	});
};