primo commit
This commit is contained in:
138
media/com_phocagallery/js/jak/jak_slideshow.js
Normal file
138
media/com_phocagallery/js/jak/jak_slideshow.js
Normal file
@ -0,0 +1,138 @@
|
||||
/*-----------------slideshow-----------------------*/
|
||||
SZN.SlideShow = SZN.ClassMaker.makeClass({
|
||||
NAME: 'SZN.SlideShow',
|
||||
VERSION: '1.0',
|
||||
CLASS: 'class',
|
||||
IMPLEMENT: [SZN.SigInterface]
|
||||
});
|
||||
|
||||
SZN.SlideShow.prototype.$constructor = function(owner, name, settings) {
|
||||
this.owner = owner;
|
||||
this.options = {
|
||||
duration : 2,
|
||||
autoplay: false,
|
||||
id : false,
|
||||
className: 'image-browser-slideshow',
|
||||
pauseId: false,
|
||||
pauseClassName: 'image-browser-slideshow-pause',
|
||||
playId: false,
|
||||
playClassName: 'image-browser-slideshow-play'
|
||||
};
|
||||
/*prepsani vychoziho nastaveni z uziv. konfigurace*/
|
||||
for (var p in settings) { this.options[p] = settings[p]; }
|
||||
/*interval pro animaci*/
|
||||
this.interval = null;
|
||||
/*zbindovani metody pro pouziti v intervalu*/
|
||||
this._timeoutDone = SZN.bind(this, this._timeoutDone);
|
||||
/*uschovna DOM elementu*/
|
||||
this.dom = {};
|
||||
|
||||
this._addEvents();
|
||||
this._render();
|
||||
/*schovani jednoho z tlacitek*/
|
||||
this.options.autoplay ? this._hidePlay() : this._hidePause();
|
||||
};
|
||||
|
||||
SZN.SlideShow.prototype.$destructor = function(){
|
||||
this.removeListener('close', '_stop', this.owner);
|
||||
this.removeListener('transitionDone', '_next', this.owner);
|
||||
|
||||
for (var i in this) {
|
||||
this[i] = null;
|
||||
}
|
||||
};
|
||||
|
||||
SZN.SlideShow.prototype._addEvents = function() {
|
||||
if (this.options.autoplay) {
|
||||
this.addListener('transitionDone', '_next', this.owner);
|
||||
}
|
||||
this.addListener('close', '_stop', this.owner);
|
||||
};
|
||||
|
||||
SZN.SlideShow.prototype._render = function() {
|
||||
var c = SZN.cEl('div', this.options.id, this.options.className);
|
||||
|
||||
var pause = SZN.cEl('a', this.options.pauseId, this.options.pauseClassName);
|
||||
pause.href = '#';
|
||||
c.appendChild(pause);
|
||||
|
||||
var play = SZN.cEl('a', this.options.playId, this.options.playClassName);
|
||||
play.href = '#';
|
||||
c.appendChild(play);
|
||||
|
||||
SZN.Events.addListener(pause, 'click', this, '_stopClick');
|
||||
SZN.Events.addListener(play, 'click', this, '_playClick');
|
||||
|
||||
this.dom.pause = pause;
|
||||
this.dom.play = play;
|
||||
|
||||
this.owner.dom.content.appendChild(c);
|
||||
};
|
||||
|
||||
/**
|
||||
* metoda spustena pri kliku na tlacitko pause
|
||||
* @param {event} e
|
||||
* @param {HTMLelement} elm
|
||||
*/
|
||||
SZN.SlideShow.prototype._stopClick = function(e, elm) {
|
||||
SZN.Events.cancelDef(e);
|
||||
this.removeListener('transitionDone', '_next', this.owner);
|
||||
this._hidePause();
|
||||
this._stop();
|
||||
};
|
||||
|
||||
/**
|
||||
* metoda spustena pri kliku na tlacitko play
|
||||
* @param {event} e
|
||||
* @param {HTMLelement} elm
|
||||
*/
|
||||
SZN.SlideShow.prototype._playClick = function(e, elm) {
|
||||
SZN.Events.cancelDef(e);
|
||||
this.addListener('transitionDone', '_next', this.owner);
|
||||
this._hidePlay();
|
||||
this._next();
|
||||
};
|
||||
|
||||
/**
|
||||
* zastaveni slideshow
|
||||
*/
|
||||
SZN.SlideShow.prototype._stop = function() {
|
||||
clearTimeout(this.interval);
|
||||
};
|
||||
|
||||
/**
|
||||
* spusteni slideshow
|
||||
*/
|
||||
SZN.SlideShow.prototype._next = function() {
|
||||
this.interval = setTimeout(this._timeoutDone, this.options.duration*1000);
|
||||
};
|
||||
|
||||
/**
|
||||
* schovani tlacitka play, zobrazeni pause
|
||||
*/
|
||||
SZN.SlideShow.prototype._hidePlay = function() {
|
||||
this.dom.play.style.display = 'none';
|
||||
this.dom.pause.style.display = '';
|
||||
};
|
||||
|
||||
/**
|
||||
* schovani tlacitka pause, zobrazeni play
|
||||
*/
|
||||
SZN.SlideShow.prototype._hidePause = function() {
|
||||
this.dom.play.style.display = '';
|
||||
this.dom.pause.style.display = 'none';
|
||||
};
|
||||
|
||||
/**
|
||||
* metoda volana timeoutem, ktery je nastaven v metode _next
|
||||
* zde je vlastni posunuti na dalsi obrazek
|
||||
*/
|
||||
SZN.SlideShow.prototype._timeoutDone = function() {
|
||||
clearTimeout(this.interval);
|
||||
this.owner.next();
|
||||
};
|
||||
|
||||
/*-----------------------------*/
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user