/**
* jQuery Smooth Tabs version 1.1.0
*
* Author: Alexander Petkov
* E-mail: petkov@webdesign-bulgaria.com
* URL: http://www.webdesign-bulgaria.com
* Copyright: (c) 2010 - Alexander Petkov, Webdesign Bulgaria Group Ltd.
*
* Example:
* $('.smoothTabs').smoothTabs(FADE-SPEED-IN-MILISECONDS);
*
* Works for:
*
*
*
* content for tab 1
*
*
* content for tab 2
*
*
*
* Tested with jQuery 1.3.2
*
* Changelog:
* 1.1: - Added hash support.
* - Fixed the hidden div bug.
* - Fixed some coding style
*
* LICENSE:
*
* Copyright (c) 2010 Alexander Petkov, http://www.webdesign-bulgaria.com
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
(function($) {
$.fn.smoothTabs = function(fadeSpeed) {
// Visible index
var currentIndex = 0;
// Clicked tab class
var smoothTabsLiCurrent = 'smoothTabsLiCurrent';
// Hidden div class
var smoothTabsDivHidden = 'smoothTabsDivHidden';
// Visible div class
var smoothTabsDivVisible = 'smoothTabsDivVisible';
// Current hash if any.
var hash = document.location.hash.substr(1, document.location.hash.length);
if (hash && $('#'+hash, this).size()) {
currentIndex = $('#'+hash, this).index();
}
// Makes first tab current, hides all divs and fades in the first one
this.each(function() {
$('ul li:eq('+currentIndex+')', this).addClass(smoothTabsLiCurrent);
$(this).children("div").addClass(smoothTabsDivHidden);
$('div:eq('+currentIndex+')', this).fadeIn(fadeSpeed)
.addClass(smoothTabsDivVisible)
.removeClass(smoothTabsDivHidden);
});
// Tab click function
$('ul li', this).click(function(){
var $parentUl = $(this).parent();
var $parentDiv = $($parentUl).parent();
$('li', $parentUl).removeClass(smoothTabsLiCurrent);
$(this).addClass(smoothTabsLiCurrent);
var $clickedIndex = $('li', $parentUl).index(this);
var $currentDiv = $('div', $parentDiv).get($clickedIndex);
// If current tab is clicked - we're done
if ($($currentDiv).attr('class') == smoothTabsDivVisible) {
return false;
}
// Current div is replaced by the selected one
$('.'+smoothTabsDivVisible, $parentDiv).fadeOut(fadeSpeed, function(){
$($currentDiv).fadeIn(fadeSpeed).addClass(smoothTabsDivVisible).removeClass(smoothTabsDivHidden);
});
$('.'+smoothTabsDivVisible, $parentDiv).removeClass(smoothTabsDivVisible).addClass(smoothTabsDivHidden);
});
};
})(jQuery);