// Title: Tigra Fader
// URL: http://www.softcomplex.com/products/tigra_fader/
// Version: 1.0 (commented source)
// Date: 07/23/2007
// Notes: This script is free. Visit official site for further details.
function tFader (a_items, a_tpl) {
// validate parameters and set defaults
if (!a_items) return alert("items structure is missing");
if (typeof(a_items) != 'object') return alert("format of the items structure is incorrect");
if (a_items[a_items.length - 1] == null) return alert("last element of the items structure is undefined");
if (!a_tpl) a_tpl = [];
for (var i = 0; i < A_TSLIDEDEFS.length; i += 2)
if (a_tpl[A_TSLIDEDEFS[i]] == null)
a_tpl[A_TSLIDEDEFS[i]] = A_TSLIDEDEFS[i + 1];
// save config parameters in the slider object
this.a_tpl = a_tpl;
this.a_items = a_tpl.random ? tslide_randomize(a_items) : a_items;
// initialize parameters, assign methods
this.n_currentSlide = 0;
this.f_goto = tslide_goto;
this.f_run = function () { this.b_running = 1; this.f_goto(); };
this.f_stop = function () { this.b_running = 0; clearTimeout(this.o_timerS); };
this.f_fadeIn = tslide_fadeIn;
this.f_fadeOut = tslide_fadeOut;
this.f_slideOp = tslide_slideOp;
this.f_showSlide = tslide_showSlide;
// register in the global collection
if (!window.A_SLIDES)
window.A_SLIDES = [];
this.n_id = window.A_SLIDES.length;
window.A_SLIDES[this.n_id] = this;
// generate control's HTML
var s_attributes = ' '
+ (a_tpl['css'] ? ' class="' + a_tpl['css'] + '"' : '')
+ (a_tpl['width'] ? ' width="' + a_tpl['width'] + '"' : '')
+ (a_tpl['height'] ? ' height="' + a_tpl['height'] + '"' : '')
+ (a_tpl['alt'] ? ' title="' + a_tpl['alt'] + '" alt="' + a_tpl['alt'] + '"' : '');
this.a_imgRefs = [];
document.write ('
');
this.a_imgRefs[0] = document.images['tslide' + this.n_id + '_0'];
this.n_currentSlide = 0;
// exit on old browsers
if (!this.a_imgRefs[0] || !this.a_imgRefs[0].style || this.a_imgRefs[0].style.marginLeft == null)
return;
//BORDER: #76004e 3px solid;
for (var i = 1; i < this.a_items.length; i++) {
document.write('
');
this.a_imgRefs[i] = document.images['tslide' + this.n_id + '_' + i];
this.a_imgRefs[i].style.marginLeft = '-' + this.a_tpl.width + 'px';
this.f_slideOp(i, 0);
this.a_imgRefs[i].style.zIndex = i;
}
// calculate transition variables
this.n_timeDec = Math.round(this.a_tpl['transtime'] * 1e3 / this.a_tpl['steps']);
this.n_opacDec = Math.round(100 / this.a_tpl['steps']);
// run this sucker
this.f_run();
}
function tslide_goto (n_slide, b_now) {
// cancel any scheduled transitions
if (this.o_timerS) {
clearTimeout(this.o_timerS);
this.o_timerS = null;
if (this.n_nextSlide) {
this.f_slideOp(this.n_nextSlide, 0);
this.n_nextSlide = null;
}
}
// determine the next slide
this.n_nextSlide = (n_slide == null ? this.n_currentSlide + 1 : n_slide) % this.a_items.length;
if (this.n_nextSlide == this.n_currentSlide) return;
// schedule transition
this.o_timerS = setTimeout('A_SLIDES[' + this.n_id + '].f_fade' + (this.n_nextSlide > this.n_currentSlide ? 'In' : 'Out') + '()', (b_now ? 0 : this.a_tpl['slidetime'] * 1e3));
}
function tslide_fadeIn (n_opacity) {
// new transition
if (n_opacity == null) {
n_opacity = 0;
}
n_opacity += this.n_opacDec;
// end of transition
if (n_opacity > 99) {
this.f_slideOp(this.n_nextSlide, 99);
this.f_slideOp(this.n_currentSlide, 0);
this.n_currentSlide = this.n_nextSlide;
this.n_nextSlide = null;
return this.f_run();
}
// set transparency
this.f_slideOp(this.n_nextSlide, n_opacity);
// cycle
this.o_timerT = setTimeout('A_SLIDES[' + this.n_id + '].f_fadeIn(' + n_opacity + ')', this.n_timeDec);
}
function tslide_fadeOut (n_opacity) {
// new transition
if (n_opacity == null) {
n_opacity = 99;
this.f_slideOp(this.n_nextSlide, 99);
}
n_opacity -= this.n_opacDec;
// end of transition
if (n_opacity < 0) {
this.f_slideOp(this.n_currentSlide, 0);
this.n_currentSlide = this.n_nextSlide;
this.n_nextSlide = null;
return this.f_run();
}
// set transparency
this.f_slideOp(this.n_currentSlide, n_opacity);
// cycle
this.o_timerT = setTimeout('A_SLIDES[' + this.n_id + '].f_fadeOut(' + n_opacity + ')', this.n_timeDec);
}
function tslide_slideOp (n_slide, n_opacity) {
if (!n_slide) return;
var e_slide = this.a_imgRefs[n_slide];
tslide_setOpacity(e_slide, n_opacity);
}
function tslide_showSlide(n_slide, n_opacity)
{
if(n_opacity==0)
{
clearTimeout(this.c_timerT);
var e_current_slide = this.a_imgRefs[this.n_currentSlide];
tslide_setOpacity(e_current_slide, 0);
}
var e_slide = this.a_imgRefs[n_slide];
tslide_setOpacity(e_slide, n_opacity);
var intTimeDelay = this.n_timeDec/3;
intTimeDelay =intTimeDelay.floor;
n_opacity += (this.n_opacDec * 5);
if(n_opacity<100)
{
this.c_timerT = setTimeout('A_SLIDES[' + this.n_id + '].f_showSlide(' + n_slide + ', ' + n_opacity + ')', intTimeDelay);
}
else
{
clearTimeout(this.c_timerT);
this.c_timerT=null;
this.n_currentSlide=n_slide;
var e_current_slide;
for(intIndex=0;intIndex