Files
shop-old/themes/admin/media/js/rsTabs.js
T

118 lines
3.0 KiB
JavaScript

/*
* R&S Tabs - jQuery plug-in
*
* Copyright 2010, Darius Zylka
* MIT License (http://www.opensource.org/licenses/mit-license.php)
*
* Depends: jQuery 1.4.2+
*/
(function($) {
var defaults = {
'cssNamespace': 'rsTabs',
'position': 'left',
'cufon': false,
'ajax': {}
};
var methods = {
init : function(options) {
$.extend(defaults, options);
return this.each(function() {
var $this = $(this);
var data = $this.data('rsTabs');
if (!data) {
$(this).data('rsTabs', {
'target': $this
});
}
$this.addClass(defaults.cssNamespace);
var $header = $('<div />').addClass(defaults.cssNamespace + '_Header');
var $body = $('<div />').addClass(defaults.cssNamespace + '_Body');
$(this).children('div[title]').each(function() {
var $thisContent = $(this);
if (defaults.ajax[$thisContent.attr('id')]) {
$thisContent.addClass('isAjaxableRsTab');
}
var $tab = $('<div />')
.click(function() {
if (!$(this).hasClass(defaults.cssNamespace + '_HeaderTabActive')) {
$('.' + defaults.cssNamespace + '_HeaderTab', $this).removeClass(defaults.cssNamespace + '_HeaderTabActive');
$(this).addClass(defaults.cssNamespace + '_HeaderTabActive');
$('.' + defaults.cssNamespace + '_BodyElementActive', $this).removeClass(defaults.cssNamespace + '_BodyElementActive');
$(this).data('rsTabs').addClass(defaults.cssNamespace + '_BodyElementActive');
if (defaults.ajax[$thisContent.attr('id')]) {
$('.isAjaxableRsTab *').unbind();
$('.isAjaxableRsTab').empty();
defaults.ajax[$thisContent.attr('id')]($thisContent);
}
}
})
.addClass(defaults.cssNamespace + '_HeaderTab')
.css({
'float': defaults.position
})
.append('<span>' + $(this).attr('title') + '</span>')
.appendTo($header)
.attr('data-idrel', $thisContent.attr('id'))
;
$tab.data('rsTabs', $thisContent);
$thisContent.bind('error', function(e, msg) {
$('.error', $tab).remove();
$('<div />').addClass('error').html(msg).appendTo($tab);
});
$thisContent.addClass(defaults.cssNamespace + '_BodyElement').appendTo($body);
$thisContent.attr({
title: ''
});
});
$header.children(':first').addClass(defaults.cssNamespace + '_HeaderTabActive');
$body.children(':first').addClass(defaults.cssNamespace + '_BodyElementActive');
$body.prependTo($this);
$header.prependTo($this);
if (typeof defaults.cufon === 'object') {
Cufon.replace($header, defaults.cufon);
}
});
},
destroy : function() {
return this.each(function() {
});
}
};
$.fn.rsTabs = function(method) {
if (methods[method]) {
return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
} else if (typeof method === 'object' || ! method) {
return methods.init.apply(this, arguments);
} else {
$.error('Method ' + method + ' does not exist on jQuery.rsTabs');
return false;
}
};
})( jQuery );