/*
* jquery nivo slider v2.6
* http://nivo.dev7studios.com
*
* copyright 2011, gilbert pellegrom
* free to use and abuse under the mit license.
*
* march 2010
*/
(function($) {
var nivoslider = function(element, options) {
var settings = $.extend({}, $.fn.nivoslider.defaults, options);
var vars = {
currentslide : 0,
currentimage : '',
totalslides : 0,
randanim : '',
running : false,
paused : false,
stop : false
};
var slider = $(element);
slider.data('nivo:vars', vars);
slider.css('position', 'relative');
slider.addclass('nivoslider');
var kids = slider.children();
kids.each(function() {
var child = $(this);
var link = '';
if (!child.is('img')) {
if (child.is('a')) {
child.addclass('nivo-imagelink');
link = child;
}
child = child.find('img:first');
}
var childwidth = child.width();
if (childwidth == 0){
childwidth = child.attr('width');
}
var childheight = child.height();
if (childheight == 0){
childheight = child.attr('height');
}
if (childwidth > slider.width()) {
//slider.width(childwidth);
}
if (childheight > slider.height()) {
slider.height(childheight);
}
if (link != '') {
link.css('display', 'none');
}
child.css('display', 'none');
vars.totalslides++;
});
if (settings.startslide > 0) {
if (settings.startslide >= vars.totalslides)
settings.startslide = vars.totalslides - 1;
vars.currentslide = settings.startslide;
}
if ($(kids[vars.currentslide]).is('img')) {
vars.currentimage = $(kids[vars.currentslide]);
} else {
vars.currentimage = $(kids[vars.currentslide]).find('img:first');
}
if ($(kids[vars.currentslide]).is('a')) {
$(kids[vars.currentslide]).css('display', 'block');
}
slider.css('background', 'url("' + vars.currentimage.attr('src')
+ '") no-repeat center center');
slider.append($('
').css({
display : 'none',
opacity : settings.captionopacity
}));
var processcaption = function(settings) {
var nivocaption = $('.nivo-caption', slider);
if (vars.currentimage.attr('title') != ''
&& vars.currentimage.attr('title') != undefined) {
var title = vars.currentimage.attr('title');
if (title.substr(0, 1) == '#')
title = $(title).html();
if (nivocaption.css('display') == 'block') {
nivocaption.find('p').fadeout(settings.animspeed,
function() {
$(this).html(title);
$(this).fadein(settings.animspeed);
});
} else {
nivocaption.find('p').html(title);
}
nivocaption.fadein(settings.animspeed);
} else {
nivocaption.fadeout(settings.animspeed);
}
}
processcaption(settings);
var timer = 0;
if (!settings.manualadvance && kids.length > 1) {
timer = setinterval(function() {
nivorun(slider, kids, settings, false);
}, settings.pausetime);
}
var nivocontrolbox=$('',{'class':'nivo-control-box'})
.css('position','absolute')
.css('top','0px')
.width(settings.controlboxwidth || slider.width())
.height(slider.height())
.appendto(slider);
nivocontrolbox.css('left',((slider.width()-nivocontrolbox.width())/2)+'px');
if (settings.directionnav) {
nivocontrolbox
.append('');
if (settings.directionnavhide) {
$('.nivo-directionnav', slider).hide();
slider.hover(function() {
$('.nivo-directionnav', slider).show();
}, function() {
$('.nivo-directionnav', slider).hide();
});
}
$('a.nivo-prevnav', slider).on('click', function() {
if (vars.running)
return false;
clearinterval(timer);
timer = '';
vars.currentslide -= 2;
nivorun(slider, kids, settings, 'prev');
});
$('a.nivo-nextnav', slider).on('click', function() {
if (vars.running)
return false;
clearinterval(timer);
timer = '';
nivorun(slider, kids, settings, 'next');
});
}
if (settings.controlnav) {
var nivocontrol = $('');
nivocontrolbox.append(nivocontrol);
for (var i = 0; i < kids.length; i++) {
if (settings.controlnavthumbs) {
var child = kids.eq(i);
if (!child.is('img')) {
child = child.find('img:first');
}
if (settings.controlnavthumbsfromrel) {
nivocontrol.append('
');
} else {
nivocontrol.append('
');
}
} else {
nivocontrol.append('' + (i + 1) + '');
}
}
$('.nivo-controlnav a:eq(' + vars.currentslide + ')', slider)
.addclass('active');
$('.nivo-controlnav a', slider).on(
'click',
function() {
if (vars.running)
return false;
if ($(this).hasclass('active'))
return false;
clearinterval(timer);
timer = '';
slider.css('background', 'url("'
+ vars.currentimage.attr('src')
+ '") no-repeat');
vars.currentslide = $(this).attr('rel') - 1;
nivorun(slider, kids, settings, 'control');
});
}
if (settings.keyboardnav) {
$(window).keypress(function(event) {
if (event.keycode == '37') {
if (vars.running)
return false;
clearinterval(timer);
timer = '';
vars.currentslide -= 2;
nivorun(slider, kids, settings, 'prev');
}
if (event.keycode == '39') {
if (vars.running)
return false;
clearinterval(timer);
timer = '';
nivorun(slider, kids, settings, 'next');
}
});
}
if (settings.pauseonhover) {
slider.hover(function() {
vars.paused = true;
clearinterval(timer);
timer = '';
}, function() {
vars.paused = false;
if (timer == '' && !settings.manualadvance) {
timer = setinterval(function() {
nivorun(slider, kids, settings, false);
}, settings.pausetime);
}
});
}
slider.bind('nivo:animfinished', function() {
vars.running = false;
$(kids).each(function() {
if ($(this).is('a')) {
$(this).css('display', 'none');
}
});
if ($(kids[vars.currentslide]).is('a')) {
$(kids[vars.currentslide]).css('display', 'block');
}
if (timer == '' && !vars.paused && !settings.manualadvance) {
timer = setinterval(function() {
nivorun(slider, kids, settings, false);
}, settings.pausetime);
}
settings.afterchange.call(this);
});
var createslices = function(slider, settings, vars) {
for (var i = 0; i < settings.slices; i++) {
var slicewidth = math.round(slider.width() / settings.slices);
if (i == settings.slices - 1) {
slider
.append($('')
.css(
{
left : (slicewidth * i) + 'px',
width : (slider.width() - (slicewidth * i))
+ 'px',
height : '0px',
opacity : '0',
background : 'url("'
+ vars.currentimage
.attr('src')
+ '") no-repeat -'
+ ((slicewidth + (i * slicewidth)) - slicewidth)
+ 'px 0%'
}));
} else {
slider
.append($('')
.css(
{
left : (slicewidth * i) + 'px',
width : slicewidth + 'px',
height : '0px',
opacity : '0',
background : 'url("'
+ vars.currentimage
.attr('src')
+ '") no-repeat -'
+ ((slicewidth + (i * slicewidth)) - slicewidth)
+ 'px 0%'
}));
}
}
}
var createboxes = function(slider, settings, vars) {
var boxwidth = math.round(slider.width() / settings.boxcols);
var boxheight = math.round(slider.height() / settings.boxrows);
for (var rows = 0; rows < settings.boxrows; rows++) {
for (var cols = 0; cols < settings.boxcols; cols++) {
if (cols == settings.boxcols - 1) {
slider
.append($('')
.css(
{
opacity : 0,
left : (boxwidth * cols)
+ 'px',
top : (boxheight * rows)
+ 'px',
width : (slider.width() - (boxwidth * cols))
+ 'px',
height : boxheight + 'px',
background : 'url("'
+ vars.currentimage
.attr('src')
+ '") no-repeat -'
+ ((boxwidth + (cols * boxwidth)) - boxwidth)
+ 'px -'
+ ((boxheight + (rows * boxheight)) - boxheight)
+ 'px'
}));
} else {
slider
.append($('')
.css(
{
opacity : 0,
left : (boxwidth * cols)
+ 'px',
top : (boxheight * rows)
+ 'px',
width : boxwidth + 'px',
height : boxheight + 'px',
background : 'url("'
+ vars.currentimage
.attr('src')
+ '") no-repeat -'
+ ((boxwidth + (cols * boxwidth)) - boxwidth)
+ 'px -'
+ ((boxheight + (rows * boxheight)) - boxheight)
+ 'px'
}));
}
}
}
}
var nivorun = function(slider, kids, settings, nudge) {
var vars = slider.data('nivo:vars');
if (vars && (vars.currentslide == vars.totalslides - 1)) {
settings.lastslide.call(this);
}
if ((!vars || vars.stop) && !nudge)
return false;
settings.beforechange.call(this);
if (!nudge) {
slider.css('background', 'url("'
+ vars.currentimage.attr('src') + '") no-repeat');
} else {
if (nudge == 'prev') {
slider.css('background', 'url("'
+ vars.currentimage.attr('src') + '") no-repeat');
}
if (nudge == 'next') {
slider.css('background', 'url("'
+ vars.currentimage.attr('src') + '") no-repeat');
}
}
vars.currentslide++;
if (vars.currentslide == vars.totalslides) {
vars.currentslide = 0;
settings.slideshowend.call(this);
}
if (vars.currentslide < 0)
vars.currentslide = (vars.totalslides - 1);
if ($(kids[vars.currentslide]).is('img')) {
vars.currentimage = $(kids[vars.currentslide]);
} else {
vars.currentimage = $(kids[vars.currentslide])
.find('img:first');
}
if (settings.controlnav) {
$('.nivo-controlnav a', slider).removeclass('active');
$('.nivo-controlnav a:eq(' + vars.currentslide + ')', slider)
.addclass('active');
}
processcaption(settings);
$('.nivo-slice', slider).remove();
$('.nivo-box', slider).remove();
if (settings.effect == 'random') {
var anims = new array('slicedownright', 'slicedownleft',
'sliceupright', 'sliceupleft', 'sliceupdown',
'sliceupdownleft', 'fold', 'fade', 'boxrandom',
'boxrain', 'boxrainreverse', 'boxraingrow',
'boxraingrowreverse');
vars.randanim = anims[math.floor(math.random()
* (anims.length + 1))];
if (vars.randanim == undefined)
vars.randanim = 'fade';
}
if (settings.effect.indexof(',') != -1) {
var anims = settings.effect.split(',');
vars.randanim = anims[math
.floor(math.random() * (anims.length))];
if (vars.randanim == undefined)
vars.randanim = 'fade';
}
vars.running = true;
if (settings.effect == 'slicedown'
|| settings.effect == 'slicedownright'
|| vars.randanim == 'slicedownright'
|| settings.effect == 'slicedownleft'
|| vars.randanim == 'slicedownleft') {
createslices(slider, settings, vars);
var timebuff = 0;
var i = 0;
var slices = $('.nivo-slice', slider);
if (settings.effect == 'slicedownleft'
|| vars.randanim == 'slicedownleft')
slices = $('.nivo-slice', slider)._reverse();
slices.each(function() {
var slice = $(this);
slice.css({
'top' : '0px'
});
if (i == settings.slices - 1) {
settimeout(function() {
slice.animate({
height : '100%',
opacity : '1.0'
}, settings.animspeed, '', function() {
slider.trigger('nivo:animfinished');
});
}, (100 + timebuff));
} else {
settimeout(function() {
slice.animate({
height : '100%',
opacity : '1.0'
}, settings.animspeed);
}, (100 + timebuff));
}
timebuff += 50;
i++;
});
} else if (settings.effect == 'sliceup'
|| settings.effect == 'sliceupright'
|| vars.randanim == 'sliceupright'
|| settings.effect == 'sliceupleft'
|| vars.randanim == 'sliceupleft') {
createslices(slider, settings, vars);
var timebuff = 0;
var i = 0;
var slices = $('.nivo-slice', slider);
if (settings.effect == 'sliceupleft'
|| vars.randanim == 'sliceupleft')
slices = $('.nivo-slice', slider)._reverse();
slices.each(function() {
var slice = $(this);
slice.css({
'bottom' : '0px'
});
if (i == settings.slices - 1) {
settimeout(function() {
slice.animate({
height : '100%',
opacity : '1.0'
}, settings.animspeed, '', function() {
slider.trigger('nivo:animfinished');
});
}, (100 + timebuff));
} else {
settimeout(function() {
slice.animate({
height : '100%',
opacity : '1.0'
}, settings.animspeed);
}, (100 + timebuff));
}
timebuff += 50;
i++;
});
} else if (settings.effect == 'sliceupdown'
|| settings.effect == 'sliceupdownright'
|| vars.randanim == 'sliceupdown'
|| settings.effect == 'sliceupdownleft'
|| vars.randanim == 'sliceupdownleft') {
createslices(slider, settings, vars);
var timebuff = 0;
var i = 0;
var v = 0;
var slices = $('.nivo-slice', slider);
if (settings.effect == 'sliceupdownleft'
|| vars.randanim == 'sliceupdownleft')
slices = $('.nivo-slice', slider)._reverse();
slices.each(function() {
var slice = $(this);
if (i == 0) {
slice.css('top', '0px');
i++;
} else {
slice.css('bottom', '0px');
i = 0;
}
if (v == settings.slices - 1) {
settimeout(function() {
slice.animate({
height : '100%',
opacity : '1.0'
}, settings.animspeed, '', function() {
slider.trigger('nivo:animfinished');
});
}, (100 + timebuff));
} else {
settimeout(function() {
slice.animate({
height : '100%',
opacity : '1.0'
}, settings.animspeed);
}, (100 + timebuff));
}
timebuff += 50;
v++;
});
} else if (settings.effect == 'fold' || vars.randanim == 'fold') {
createslices(slider, settings, vars);
var timebuff = 0;
var i = 0;
$('.nivo-slice', slider).each(function() {
var slice = $(this);
var origwidth = slice.width();
slice.css({
top : '0px',
height : '100%',
width : '0px'
});
if (i == settings.slices - 1) {
settimeout(function() {
slice.animate({
width : origwidth,
opacity : '1.0'
}, settings.animspeed, '', function() {
slider.trigger('nivo:animfinished');
});
}, (100 + timebuff));
} else {
settimeout(function() {
slice.animate({
width : origwidth,
opacity : '1.0'
}, settings.animspeed);
}, (100 + timebuff));
}
timebuff += 50;
i++;
});
} else if (settings.effect == 'fade' || vars.randanim == 'fade') {
createslices(slider, settings, vars);
var firstslice = $('.nivo-slice:first', slider);
firstslice.css({
'height' : '100%',
'width' : slider.width() + 'px'
});
firstslice.animate({
opacity : '1.0'
}, (settings.animspeed * 2), '', function() {
slider.trigger('nivo:animfinished');
});
} else if (settings.effect == 'slideinright'
|| vars.randanim == 'slideinright') {
createslices(slider, settings, vars);
var firstslice = $('.nivo-slice:first', slider);
firstslice.css({
'height' : '100%',
'width' : '0px',
'opacity' : '1'
});
firstslice.animate({
width : slider.width() + 'px'
}, (settings.animspeed * 2), '', function() {
slider.trigger('nivo:animfinished');
});
} else if (settings.effect == 'slideinleft'
|| vars.randanim == 'slideinleft') {
createslices(slider, settings, vars);
var firstslice = $('.nivo-slice:first', slider);
firstslice.css({
'height' : '100%',
'width' : '0px',
'opacity' : '1',
'left' : '',
'right' : '0px'
});
firstslice.animate({
width : slider.width() + 'px'
}, (settings.animspeed * 2), '', function() {
firstslice.css({
'left' : '0px',
'right' : ''
});
slider.trigger('nivo:animfinished');
});
} else if (settings.effect == 'boxrandom'
|| vars.randanim == 'boxrandom') {
createboxes(slider, settings, vars);
var totalboxes = settings.boxcols * settings.boxrows;
var i = 0;
var timebuff = 0;
var boxes = shuffle($('.nivo-box', slider));
boxes.each(function() {
var box = $(this);
if (i == totalboxes - 1) {
settimeout(function() {
box.animate({
opacity : '1'
}, settings.animspeed, '', function() {
slider.trigger('nivo:animfinished');
});
}, (100 + timebuff));
} else {
settimeout(function() {
box.animate({
opacity : '1'
}, settings.animspeed);
}, (100 + timebuff));
}
timebuff += 20;
i++;
});
} else if (settings.effect == 'boxrain'
|| vars.randanim == 'boxrain'
|| settings.effect == 'boxrainreverse'
|| vars.randanim == 'boxrainreverse'
|| settings.effect == 'boxraingrow'
|| vars.randanim == 'boxraingrow'
|| settings.effect == 'boxraingrowreverse'
|| vars.randanim == 'boxraingrowreverse') {
createboxes(slider, settings, vars);
var totalboxes = settings.boxcols * settings.boxrows;
var i = 0;
var timebuff = 0;
var rowindex = 0;
var colindex = 0;
var box2darr = new array();
box2darr[rowindex] = new array();
var boxes = $('.nivo-box', slider);
if (settings.effect == 'boxrainreverse'
|| vars.randanim == 'boxrainreverse'
|| settings.effect == 'boxraingrowreverse'
|| vars.randanim == 'boxraingrowreverse') {
boxes = $('.nivo-box', slider)._reverse();
}
boxes.each(function() {
box2darr[rowindex][colindex] = $(this);
colindex++;
if (colindex == settings.boxcols) {
rowindex++;
colindex = 0;
box2darr[rowindex] = new array();
}
});
for (var cols = 0; cols < (settings.boxcols * 2); cols++) {
var prevcol = cols;
for (var rows = 0; rows < settings.boxrows; rows++) {
if (prevcol >= 0 && prevcol < settings.boxcols) {
(function(row, col, time, i, totalboxes) {
var box = $(box2darr[row][col]);
var w = box.width();
var h = box.height();
if (settings.effect == 'boxraingrow'
|| vars.randanim == 'boxraingrow'
|| settings.effect == 'boxraingrowreverse'
|| vars.randanim == 'boxraingrowreverse') {
box.width(0).height(0);
}
if (i == totalboxes - 1) {
settimeout(
function() {
box
.animate(
{
opacity : '1',
width : w,
height : h
},
settings.animspeed / 1.3,
'',
function() {
slider
.trigger('nivo:animfinished');
});
}, (100 + time));
} else {
settimeout(function() {
box.animate({
opacity : '1',
width : w,
height : h
}, settings.animspeed / 1.3);
}, (100 + time));
}
})(rows, prevcol, timebuff, i, totalboxes);
i++;
}
prevcol--;
}
timebuff += 100;
}
}
}
var shuffle = function(arr) {
for (var j, x, i = arr.length; i; j = parseint(math.random() * i), x = arr[--i], arr[i] = arr[j], arr[j] = x)
;
return arr;
}
var trace = function(msg) {
if (this.console && typeof console.log != "undefined")
console.log(msg);
}
this.stop = function() {
if (!$(element).data('nivo:vars').stop) {
$(element).data('nivo:vars').stop = true;
trace('stop slider');
}
}
this.start = function() {
if ($(element).data('nivo:vars').stop) {
$(element).data('nivo:vars').stop = false;
trace('start slider');
}
}
settings.afterload.call(this);
return this;
};
$.fn.nivoslider = function(options) {
return this.each(function(key, value) {
var element = $(this);
if (element.data('nivoslider'))
return element.data('nivoslider');
var nivoslider = new nivoslider(this, options);
element.data('nivoslider', nivoslider);
});
};
$.fn.nivoslider.defaults = {
effect : 'random',
slices : 15,
boxcols : 8,
boxrows : 4,
animspeed : 500,
pausetime : 3000,
startslide : 0,
directionnav : true,
directionnavhide : true,
controlboxwidth:'100%',
controlnav : true,
controlnavthumbs : false,
controlnavthumbsfromrel : false,
controlnavthumbssearch : '.jpg',
controlnavthumbsreplace : '_thumb.jpg',
keyboardnav : true,
pauseonhover : true,
manualadvance : false,
captionopacity : 0.8,
prevtext : 'prev',
nexttext : 'next',
beforechange : function() {
},
afterchange : function() {
},
slideshowend : function() {
},
lastslide : function() {
},
afterload : function() {
}
};
$.fn._reverse = [].reverse;
})(jquery);