ACC SHELL
(function($) { /* 2009 Hubsoft.com && SebringCreative.com (written by Jason Sebring, mail@jasonsebring.com) - Dual licensed under the MIT and GPL licenses. */
$.fn.dumbCrossFade = function(settings) {
var publicAccessorLabel = 'dumbCrossFade.publicAccessor';
var configLabel = 'dumbCrossFade.config';
if (typeof(this.data(publicAccessorLabel)) !== 'undefined' && this.data(publicAccessorLabel) !== null) {
var pa = this.data(publicAccessorLabel);
var cg = this.data(configLabel);
var args = Array.prototype.slice.apply(arguments);
if (args.length > 0) {
if (typeof(args[0]) === 'object') {
if (settings) $.extend(cg, settings);
var args = Array.prototype.slice.apply(arguments);
if (args.length > 1) {
args = args.slice(1,args.length);
} else {
pa.start();
return this;
}
}
if (arguments.length === 1) {
pa[arguments[0]]();
} else if (arguments.length > 1) {
var args = Array.prototype.slice.apply(arguments);
args = args.slice(1,args.length);
pa[arguments[0]].apply(this,args);
}
}
return this;
}
var config = {
'slideType':'slidehorizontal',
'index':0,
'showTime':5000,
'transitionTime':1000,
'doHoverPause':true,
'maxZIndex':10,
'slideChange':null,
'direction':'forward',
'fadeInOut':false
},
timeOut = null,
itemArray = [],
blockAnimation = false,
lastIndexRequest = -1,
$self = this
$window = $(window),
$body = $('body');
if (settings) $.extend(config, settings);
function cancelSlideShow() {
if (timeOut !== null) { window.clearTimeout(timeOut); timeOut = null; }
}
function doSlideShowNow() {
if (blockAnimation) {
if (arguments.length > 0) {
lastIndexRequest = arguments[0];
}
return;
}
var currentIndex = config.index;
var nextIndex = (arguments.length > 0) ? arguments[0] : (config.index >= itemArray.length - 1) ? 0 : config.index + 1;
if (config.direction === 'backward') {
if (currentIndex === 0) {
nextIndex = itemArray.length - 1;
} else {
nextIndex = currentIndex - 1;
}
}
if (currentIndex == nextIndex) { return; }
var $f = itemArray[currentIndex].show(),
$n = itemArray[nextIndex];
blockAnimation = true;
doneF = function () {
$f.hide();
if (config.fadeInOut) {
$f.css({'opacity':'1.0'});
$n.css({'opacity':'1.0'});
}
blockAnimation = false;
if (lastIndexRequest != -1) {
doSlideShowNow(lastIndexRequest);
lastIndexRequest = -1;
}
};
$f.css('z-index',(config.maxZIndex-1)+'');
$n.css('z-index',config.maxZIndex+'');
switch (config.slideType) {
case 'slidehorizontal' :
var pos = $f.position(),
width = $f.width(),
adjustX = '-='+width;
if (config.direction === 'forward') {
$n.css({'left':(parseInt(pos.left) + width) + 'px'});
} else {
$n.css({'left':(parseInt(pos.left) - width) + 'px'});
adjustX = '+='+width;
}
if (config.fadeInOut) {
$n.css({'opacity':'0','display':'block'});
$f.animate({'left':adjustX,'opacity':'0'},config.transitionTime,'swing');
$n.animate({'left':adjustX,'opacity':'1.0'},config.transitionTime,'swing',doneF);
} else {
$n.show();
$f.animate({'left':adjustX},config.transitionTime,'swing');
$n.animate({'left':adjustX},config.transitionTime,'swing',doneF);
}
break;
case 'slidevertical' :
var pos = $f.position(),
height = $f.height(),
adjustY = '-='+height;
if (config.direction === 'forward') {
$n.css({'top':(parseInt(pos.top) + height) + 'px','display':'block'});
} else {
$n.css({'top':(parseInt(pos.top) - height) + 'px','display':'block'});
adjustY = '+='+height;
}
if (config.fadeInOut) {
$n.css({'opacity':'0','display':'block'});
$f.animate({'top':adjustY,'opacity':'0'},config.transitionTime,'swing');
$n.animate({'top':adjustY,'opacity':'1.0'},config.transitionTime,'swing',doneF);
}
else {
$n.show();
$f.animate({'top':adjustY},config.transitionTime);
$n.animate({'top':adjustY},config.transitionTime,doneF);
}
break;
case 'fade' :
$n.fadeIn(config.transitionTime,doneF);
break;
}
if (config.slideChange !== null) {
config.slideChange(nextIndex);
}
config.index = nextIndex;
}
function doSlideShow() {
cancelSlideShow();
timeOut = window.setTimeout(function() {
doSlideShowNow();
doSlideShow();
},config.showTime);
}
$self.each(function() {
(itemArray.length === config.index) ? $(this).show() : $(this).hide();
if (itemArray.length === 0) {
if (config.doHoverPause) {
$(this).parent().hover(
function() {
cancelSlideShow();
},
function() {
cancelSlideShow();
doSlideShow();
}
);
}
}
itemArray[itemArray.length] = $(this);
});
var publicAccessor = {
'jump' : function (index) {
cancelSlideShow();
doSlideShowNow(index);
return publicAccessor;
},
'start' : function () {
$self.children().hide();
itemArray[config.index].show();
config.direction = 'forward';
doSlideShow();
},
'stop' : function () {
cancelSlideShow();
},
'next' : function () {
config.direction = 'forward';
cancelSlideShow();
doSlideShowNow();
},
'previous' : function () {
config.direction = 'backward';
cancelSlideShow();
doSlideShowNow();
}
};
this.data(publicAccessorLabel,publicAccessor);
this.data(configLabel,config);
doSlideShow();
return this;
};
})(jQuery);
ACC SHELL 2018