| Current Path : /home/azimutno/www/libraries/nextend/assets/smartslider/js/ |
| Current File : /home/azimutno/www/libraries/nextend/assets/smartslider/js/layers.js |
;
(function ($, scope, undefined) {
scope.ssLayers = NClass.extend({
slide: null,
$slide: null,
layers: null,
show: null,
mode: 'desktop',
init: function (slider, slide, options) {
var _this = this;
this.options = {};
this.slider = slider;
this.slide = slide;
this.$slide = $(slide);
$.extend(this.options, options);
this.refresh();
$(slider).on('resize', function (e, ratio, width, height) {
_this.onResize(ratio, width, height);
});
this.$slide.on('ssanimatelayersin',function () {
_this.animateIn();
}).on('ssanimatelayerssetinstart',function () {
_this.setInStart();
}).on('ssanimatelayerssetoutstart',function () {
_this.setOutStart();
}).on('ssanimatelayersresetin',function () {
_this.resetIn();
}).on('ssanimatelayersresetout',function () {
_this.resetOut();
}).on('ssanimatelayersout',function () {
_this.animateOut();
}).on('ssanimatestop', function () {
_this.stop();
});
},
refresh: function () {
var _this = this;
this.layers = $([]);
var _layers = $('.smart-slider-layer', this.slide),
_active = $(this.slide).hasClass('smart-slider-slide-active');
_layers.each(function () {
var $layer = $(this);
if ($layer.data('animation') !== undefined) {
//$layer.css('display', 'none');
_this.layers.push(this);
$layer.data('slide', _this.slide);
$layer.data('layermanager', _this);
var motionin = _this.getMotionIn($layer);
$layer.data('motionin', motionin);
var motionout = _this.getMotionOut($layer);
$layer.data('motionout', motionout);
if (window.ssadmin === 1) {
motionout.setOutStart();
motionout.reset();
motionin.reset();
}
if(!_active){
motionin.setInStart();
}
}
});
this.show = {
realall: _layers,
notall: $(),
hidden: _layers.filter('*[data-showdesktop="0"][data-showtablet="0"][data-showphone="0"]'),
desktop: _layers.filter('*[data-showdesktop="1"]'),
tablet: _layers.filter('*[data-showtablet="1"]') ,
phone: _layers.filter('*[data-showphone="1"]')
};
this.show.all = _layers.not(this.show.hidden).not(this.show.desktop).not(this.show.tablet).not(this.show.phone)
this.show.notdesktop = $.merge($.merge($([]), this.show.tablet), this.show.phone);
this.show.nottablet = $.merge($.merge($([]), this.show.desktop), this.show.phone);
this.show.notphone = $.merge($.merge($([]), this.show.desktop), this.show.tablet);
this.show.hidden.css('display', 'none');
return this;
},
onResize: function (ratio, width, height) {
this.options.width = width;
this.options.height = height;
},
changeMode: function(mode){
this.mode = mode;
if(mode == 'all'){
this.show['realall'].css('display', 'block');
this.layers = $.merge($([]), this.show['realall']);
mode = 'desktop';
}else{
this.show['not'+mode].css('display', 'none');
this.show['all'].css('display', 'block');
this.show[mode].css('display', 'block');
this.layers = $.merge($.merge($([]), this.show[mode]), this.show['all']);
}
this.layers.each(function(){
var $this = $(this);
var dim = {
left: $this.data(mode+'left'),
top: $this.data(mode+'top'),
width: $this.data(mode+'width'),
height: $this.data(mode+'height')
};
for(var k in dim){
if(typeof dim[k] == 'undefined') dim[k] = $this.data('desktop'+k);
if(typeof dim[k] != 'undefined') this.style[k] = dim[k];
}
$this.data('motionin').refreshPosition(dim);
$this.data('motionout').refreshPosition(dim);
});
},
stop: function () {
this.layers.each(function () {
$(this).data('motionin').stop();
$(this).data('motionout').stop();
});
return this;
},
resetIn: function () {
this.layers.each(function () {
$(this).data('motionin').reset();
});
return this;
},
resetOut: function () {
this.layers.each(function () {
$(this).data('motionout').reset();
});
return this;
},
animateIn: function () {
if (this.layers.length === 0) {
$(this.slide).trigger('noanimation');
} else {
this.layers.each(function () {
$(this).data('motionin').animateIn();
});
}
return this;
},
setInStart: function () {
this.layers.each(function () {
$(this).data('motionout').setOutStart();
$(this).data('motionin').setInStart();
});
return this;
},
animateOut: function () {
if (this.layers.length === 0) {
$(this.slide).trigger('noanimation');
} else {
this.layers.each(function () {
$(this).data('motionout').animateOut();
});
}
return this;
},
setOutStart: function () {
this.layers.each(function () {
$(this).data('motionout').setOutStart();
});
return this;
},
setHiddenState: function () {
this.layers.each(function () {
$(this).data('motionout').setHiddenState();
});
return this;
},
getMotionIn: function ($layer) {
var options = this.options;
return ssAnimationManager.getAnimation($layer.data('animationin'), $layer, {
width: options.width,
height: options.height,
intervalIn: parseInt($layer.data('durationin')),
easingIn: $layer.data('easingin'),
delayIn: parseInt($layer.data('delayin')),
parallaxIn: parseFloat($layer.data('parallaxin'))
});
},
getMotionOut: function ($layer) {
var options = this.options;
return ssAnimationManager.getAnimation($layer.data('animationout'), $layer, {
width: options.width,
height: options.height,
intervalOut: parseInt($layer.data('durationout')),
easingOut: $layer.data('easingout'),
delayOut: parseInt($layer.data('delayout')),
parallaxOut: parseFloat($layer.data('parallaxout'))
});
}
});
})(njQuery, window);