Advertisement
Guest User

Untitled

a guest
Aug 5th, 2015
353
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 29.08 KB | None | 0 0
  1. /*
  2. * jQuery Nivo Slider v3.2
  3. * http://nivo.dev7studios.com
  4. *
  5. * Copyright 2012, Dev7studios
  6. * Free to use and abuse under the MIT license.
  7. * http://www.opensource.org/licenses/mit-license.php
  8. */
  9.  
  10. (function($) {
  11. var NivoSlider = function(element, options){
  12. // Defaults are below
  13. var settings = $.extend({}, $.fn.nivoSlider.defaults, options);
  14.  
  15. // Useful variables. Play carefully.
  16. var vars = {
  17. currentSlide: 0,
  18. currentImage: '',
  19. totalSlides: 0,
  20. running: false,
  21. paused: false,
  22. stop: false,
  23. controlNavEl: false
  24. };
  25.  
  26. // Get this slider
  27. var slider = $(element);
  28. slider.data('nivo:vars', vars).addClass('nivoSlider');
  29.  
  30. // Find our slider children
  31. var kids = slider.children();
  32. kids.each(function() {
  33. var child = $(this);
  34. var link = '';
  35. if(!child.is('img')){
  36. if(child.is('a')){
  37. child.addClass('nivo-imageLink');
  38. link = child;
  39. }
  40. child = child.find('img:first');
  41. }
  42. // Get img width & height
  43. var childWidth = (childWidth === 0) ? child.attr('width') : child.width(),
  44. childHeight = (childHeight === 0) ? child.attr('height') : child.height();
  45.  
  46. if(link !== ''){
  47. link.css('display','none');
  48. }
  49. child.css('display','none');
  50. vars.totalSlides++;
  51. });
  52.  
  53. // If randomStart
  54. if(settings.randomStart){
  55. settings.startSlide = Math.floor(Math.random() * vars.totalSlides);
  56. }
  57.  
  58. // Set startSlide
  59. if(settings.startSlide > 0){
  60. if(settings.startSlide >= vars.totalSlides) { settings.startSlide = vars.totalSlides - 1; }
  61. vars.currentSlide = settings.startSlide;
  62. }
  63.  
  64. // Get initial image
  65. if($(kids[vars.currentSlide]).is('img')){
  66. vars.currentImage = $(kids[vars.currentSlide]);
  67. } else {
  68. vars.currentImage = $(kids[vars.currentSlide]).find('img:first');
  69. }
  70.  
  71. // Show initial link
  72. if($(kids[vars.currentSlide]).is('a')){
  73. $(kids[vars.currentSlide]).css('display','block');
  74. }
  75.  
  76. // Set first background
  77. var sliderImg = $('<img/>').addClass('nivo-main-image');
  78. sliderImg.attr('src', vars.currentImage.attr('src')).show();
  79. slider.append(sliderImg);
  80.  
  81. // Detect Window Resize
  82. $(window).resize(function() {
  83. slider.children('img').width(slider.width());
  84. sliderImg.attr('src', vars.currentImage.attr('src'));
  85. sliderImg.stop().height('auto');
  86. $('.nivo-slice').remove();
  87. $('.nivo-box').remove();
  88. });
  89.  
  90. //Create caption
  91. slider.append($('<div class="nivo-caption"></div>'));
  92.  
  93. // Process caption function
  94. var processCaption = function(settings){
  95. var nivoCaption = $('.nivo-caption', slider);
  96. if(vars.currentImage.attr('title') != '' && vars.currentImage.attr('title') != undefined){
  97. var title = vars.currentImage.attr('title');
  98. if(title.substr(0,1) == '#') title = $(title).html();
  99.  
  100. if(nivoCaption.css('display') == 'block'){
  101. setTimeout(function(){
  102. nivoCaption.html(title);
  103. }, settings.animSpeed);
  104. } else {
  105. nivoCaption.html(title);
  106. nivoCaption.stop().fadeIn(settings.animSpeed);
  107. }
  108. } else {
  109. nivoCaption.stop().fadeOut(settings.animSpeed);
  110. }
  111. }
  112.  
  113. //Process initial caption
  114. processCaption(settings);
  115.  
  116. // In the words of Super Mario "let's a go!"
  117. var timer = 0;
  118. if(!settings.manualAdvance && kids.length > 1){
  119. timer = setInterval(function(){ nivoRun(slider, kids, settings, false); }, settings.pauseTime);
  120. }
  121.  
  122. // Add Direction nav
  123. if(settings.directionNav){
  124. slider.append('<div class="nivo-directionNav"><a class="nivo-prevNav">'+ settings.prevText +'</a><a class="nivo-nextNav">'+ settings.nextText +'</a></div>');
  125.  
  126. $(slider).on('click', 'a.nivo-prevNav', function(){
  127. if(vars.running) { return false; }
  128. clearInterval(timer);
  129. timer = '';
  130. vars.currentSlide -= 2;
  131. nivoRun(slider, kids, settings, 'prev');
  132. });
  133.  
  134. $(slider).on('click', 'a.nivo-nextNav', function(){
  135. if(vars.running) { return false; }
  136. clearInterval(timer);
  137. timer = '';
  138. nivoRun(slider, kids, settings, 'next');
  139. });
  140. }
  141.  
  142. // Add Control nav
  143. if(settings.controlNav){
  144. vars.controlNavEl = $('<div class="nivo-controlNav"></div>');
  145. slider.after(vars.controlNavEl);
  146. for(var i = 0; i < kids.length; i++){
  147. if(settings.controlNavThumbs){
  148. vars.controlNavEl.addClass('nivo-thumbs-enabled');
  149. var child = kids.eq(i);
  150. if(!child.is('img')){
  151. child = child.find('img:first');
  152. }
  153. if(child.attr('data-thumb')) vars.controlNavEl.append('<a class="nivo-control" rel="'+ i +'"><img src="'+ child.attr('data-thumb') +'" alt="" /></a>');
  154. } else {
  155. vars.controlNavEl.append('<a class="nivo-control" rel="'+ i +'">'+ (i + 1) +'</a>');
  156. }
  157. }
  158.  
  159. //Set initial active link
  160. $('a:eq('+ vars.currentSlide +')', vars.controlNavEl).addClass('active');
  161.  
  162. $('a', vars.controlNavEl).bind('click', function(){
  163. if(vars.running) return false;
  164. if($(this).hasClass('active')) return false;
  165. clearInterval(timer);
  166. timer = '';
  167. sliderImg.attr('src', vars.currentImage.attr('src'));
  168. vars.currentSlide = $(this).attr('rel') - 1;
  169. nivoRun(slider, kids, settings, 'control');
  170. });
  171. }
  172.  
  173. //For pauseOnHover setting
  174. if(settings.pauseOnHover){
  175. slider.hover(function(){
  176. vars.paused = true;
  177. clearInterval(timer);
  178. timer = '';
  179. }, function(){
  180. vars.paused = false;
  181. // Restart the timer
  182. if(timer === '' && !settings.manualAdvance){
  183. timer = setInterval(function(){ nivoRun(slider, kids, settings, false); }, settings.pauseTime);
  184. }
  185. });
  186. }
  187.  
  188. // Event when Animation finishes
  189. slider.bind('nivo:animFinished', function(){
  190. sliderImg.attr('src', vars.currentImage.attr('src'));
  191. vars.running = false;
  192. // Hide child links
  193. $(kids).each(function(){
  194. if($(this).is('a')){
  195. $(this).css('display','none');
  196. }
  197. });
  198. // Show current link
  199. if($(kids[vars.currentSlide]).is('a')){
  200. $(kids[vars.currentSlide]).css('display','block');
  201. }
  202. // Restart the timer
  203. if(timer === '' && !vars.paused && !settings.manualAdvance){
  204. timer = setInterval(function(){ nivoRun(slider, kids, settings, false); }, settings.pauseTime);
  205. }
  206. // Trigger the afterChange callback
  207. settings.afterChange.call(this);
  208. });
  209.  
  210. // Add slices for slice animations
  211. var createSlices = function(slider, settings, vars) {
  212. if($(vars.currentImage).parent().is('a')) $(vars.currentImage).parent().css('display','block');
  213. $('img[src="'+ vars.currentImage.attr('src') +'"]', slider).not('.nivo-main-image,.nivo-control img').width(slider.width()).css('visibility', 'hidden').show();
  214. var sliceHeight = ($('img[src="'+ vars.currentImage.attr('src') +'"]', slider).not('.nivo-main-image,.nivo-control img').parent().is('a')) ? $('img[src="'+ vars.currentImage.attr('src') +'"]', slider).not('.nivo-main-image,.nivo-control img').parent().height() : $('img[src="'+ vars.currentImage.attr('src') +'"]', slider).not('.nivo-main-image,.nivo-control img').height();
  215.  
  216. for(var i = 0; i < settings.slices; i++){
  217. var sliceWidth = Math.round(slider.width()/settings.slices);
  218.  
  219. if(i === settings.slices-1){
  220. slider.append(
  221. $('<div class="nivo-slice" name="'+i+'"><img src="'+ vars.currentImage.attr('src') +'" style="position:absolute; width:'+ slider.width() +'px; height:auto; display:block !important; top:0; left:-'+ ((sliceWidth + (i * sliceWidth)) - sliceWidth) +'px;" /></div>').css({
  222. left:(sliceWidth*i)+'px',
  223. width:(slider.width()-(sliceWidth*i))+'px',
  224. height:sliceHeight+'px',
  225. opacity:'0',
  226. overflow:'hidden'
  227. })
  228. );
  229. } else {
  230. slider.append(
  231. $('<div class="nivo-slice" name="'+i+'"><img src="'+ vars.currentImage.attr('src') +'" style="position:absolute; width:'+ slider.width() +'px; height:auto; display:block !important; top:0; left:-'+ ((sliceWidth + (i * sliceWidth)) - sliceWidth) +'px;" /></div>').css({
  232. left:(sliceWidth*i)+'px',
  233. width:sliceWidth+'px',
  234. height:sliceHeight+'px',
  235. opacity:'0',
  236. overflow:'hidden'
  237. })
  238. );
  239. }
  240. }
  241.  
  242. $('.nivo-slice', slider).height(sliceHeight);
  243. sliderImg.stop().animate({
  244. height: $(vars.currentImage).height()
  245. }, settings.animSpeed);
  246. };
  247.  
  248. // Add boxes for box animations
  249. var createBoxes = function(slider, settings, vars){
  250. if($(vars.currentImage).parent().is('a')) $(vars.currentImage).parent().css('display','block');
  251. $('img[src="'+ vars.currentImage.attr('src') +'"]', slider).not('.nivo-main-image,.nivo-control img').width(slider.width()).css('visibility', 'hidden').show();
  252. var boxWidth = Math.round(slider.width()/settings.boxCols),
  253. boxHeight = Math.round($('img[src="'+ vars.currentImage.attr('src') +'"]', slider).not('.nivo-main-image,.nivo-control img').height() / settings.boxRows);
  254.  
  255.  
  256. for(var rows = 0; rows < settings.boxRows; rows++){
  257. for(var cols = 0; cols < settings.boxCols; cols++){
  258. if(cols === settings.boxCols-1){
  259. slider.append(
  260. $('<div class="nivo-box" name="'+ cols +'" rel="'+ rows +'"><img src="'+ vars.currentImage.attr('src') +'" style="position:absolute; width:'+ slider.width() +'px; height:auto; display:block; top:-'+ (boxHeight*rows) +'px; left:-'+ (boxWidth*cols) +'px;" /></div>').css({
  261. opacity:0,
  262. left:(boxWidth*cols)+'px',
  263. top:(boxHeight*rows)+'px',
  264. width:(slider.width()-(boxWidth*cols))+'px'
  265.  
  266. })
  267. );
  268. $('.nivo-box[name="'+ cols +'"]', slider).height($('.nivo-box[name="'+ cols +'"] img', slider).height()+'px');
  269. } else {
  270. slider.append(
  271. $('<div class="nivo-box" name="'+ cols +'" rel="'+ rows +'"><img src="'+ vars.currentImage.attr('src') +'" style="position:absolute; width:'+ slider.width() +'px; height:auto; display:block; top:-'+ (boxHeight*rows) +'px; left:-'+ (boxWidth*cols) +'px;" /></div>').css({
  272. opacity:0,
  273. left:(boxWidth*cols)+'px',
  274. top:(boxHeight*rows)+'px',
  275. width:boxWidth+'px'
  276. })
  277. );
  278. $('.nivo-box[name="'+ cols +'"]', slider).height($('.nivo-box[name="'+ cols +'"] img', slider).height()+'px');
  279. }
  280. }
  281. }
  282.  
  283. sliderImg.stop().animate({
  284. height: $(vars.currentImage).height()
  285. }, settings.animSpeed);
  286. };
  287.  
  288. // Private run method
  289. var nivoRun = function(slider, kids, settings, nudge){
  290. // Get our vars
  291. var vars = slider.data('nivo:vars');
  292.  
  293. // Trigger the lastSlide callback
  294. if(vars && (vars.currentSlide === vars.totalSlides - 1)){
  295. settings.lastSlide.call(this);
  296. }
  297.  
  298. // Stop
  299. if((!vars || vars.stop) && !nudge) { return false; }
  300.  
  301. // Trigger the beforeChange callback
  302. settings.beforeChange.call(this);
  303.  
  304. // Set current background before change
  305. if(!nudge){
  306. sliderImg.attr('src', vars.currentImage.attr('src'));
  307. } else {
  308. if(nudge === 'prev'){
  309. sliderImg.attr('src', vars.currentImage.attr('src'));
  310. }
  311. if(nudge === 'next'){
  312. sliderImg.attr('src', vars.currentImage.attr('src'));
  313. }
  314. }
  315.  
  316. vars.currentSlide++;
  317. // Trigger the slideshowEnd callback
  318. if(vars.currentSlide === vars.totalSlides){
  319. vars.currentSlide = 0;
  320. settings.slideshowEnd.call(this);
  321. }
  322. if(vars.currentSlide < 0) { vars.currentSlide = (vars.totalSlides - 1); }
  323. // Set vars.currentImage
  324. if($(kids[vars.currentSlide]).is('img')){
  325. vars.currentImage = $(kids[vars.currentSlide]);
  326. } else {
  327. vars.currentImage = $(kids[vars.currentSlide]).find('img:first');
  328. }
  329.  
  330. // Set active links
  331. if(settings.controlNav){
  332. $('a', vars.controlNavEl).removeClass('active');
  333. $('a:eq('+ vars.currentSlide +')', vars.controlNavEl).addClass('active');
  334. }
  335.  
  336. // Process caption
  337. processCaption(settings);
  338.  
  339. // Remove any slices from last transition
  340. $('.nivo-slice', slider).remove();
  341.  
  342. // Remove any boxes from last transition
  343. $('.nivo-box', slider).remove();
  344.  
  345. var currentEffect = settings.effect,
  346. anims = '';
  347.  
  348. // Generate random effect
  349. if(settings.effect === 'random'){
  350. anims = new Array('sliceDownRight','sliceDownLeft','sliceUpRight','sliceUpLeft','sliceUpDown','sliceUpDownLeft','fold','fade',
  351. 'boxRandom','boxRain','boxRainReverse','boxRainGrow','boxRainGrowReverse');
  352. currentEffect = anims[Math.floor(Math.random()*(anims.length + 1))];
  353. if(currentEffect === undefined) { currentEffect = 'fade'; }
  354. }
  355.  
  356. // Run random effect from specified set (eg: effect:'fold,fade')
  357. if(settings.effect.indexOf(',') !== -1){
  358. anims = settings.effect.split(',');
  359. currentEffect = anims[Math.floor(Math.random()*(anims.length))];
  360. if(currentEffect === undefined) { currentEffect = 'fade'; }
  361. }
  362.  
  363. // Custom transition as defined by "data-transition" attribute
  364. if(vars.currentImage.attr('data-transition')){
  365. currentEffect = vars.currentImage.attr('data-transition');
  366. }
  367.  
  368. // Run effects
  369. vars.running = true;
  370. var timeBuff = 0,
  371. i = 0,
  372. slices = '',
  373. firstSlice = '',
  374. totalBoxes = '',
  375. boxes = '';
  376.  
  377. if(currentEffect === 'sliceDown' || currentEffect === 'sliceDownRight' || currentEffect === 'sliceDownLeft'){
  378. createSlices(slider, settings, vars);
  379. timeBuff = 0;
  380. i = 0;
  381. slices = $('.nivo-slice', slider);
  382. if(currentEffect === 'sliceDownLeft') { slices = $('.nivo-slice', slider)._reverse(); }
  383.  
  384. slices.each(function(){
  385. var slice = $(this);
  386. slice.css({ 'top': '0px' });
  387. if(i === settings.slices-1){
  388. setTimeout(function(){
  389. slice.animate({opacity:'1.0' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); });
  390. }, (100 + timeBuff));
  391. } else {
  392. setTimeout(function(){
  393. slice.animate({opacity:'1.0' }, settings.animSpeed);
  394. }, (100 + timeBuff));
  395. }
  396. timeBuff += 50;
  397. i++;
  398. });
  399. } else if(currentEffect === 'sliceUp' || currentEffect === 'sliceUpRight' || currentEffect === 'sliceUpLeft'){
  400. createSlices(slider, settings, vars);
  401. timeBuff = 0;
  402. i = 0;
  403. slices = $('.nivo-slice', slider);
  404. if(currentEffect === 'sliceUpLeft') { slices = $('.nivo-slice', slider)._reverse(); }
  405.  
  406. slices.each(function(){
  407. var slice = $(this);
  408. slice.css({ 'bottom': '0px' });
  409. if(i === settings.slices-1){
  410. setTimeout(function(){
  411. slice.animate({opacity:'1.0' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); });
  412. }, (100 + timeBuff));
  413. } else {
  414. setTimeout(function(){
  415. slice.animate({opacity:'1.0' }, settings.animSpeed);
  416. }, (100 + timeBuff));
  417. }
  418. timeBuff += 50;
  419. i++;
  420. });
  421. } else if(currentEffect === 'sliceUpDown' || currentEffect === 'sliceUpDownRight' || currentEffect === 'sliceUpDownLeft'){
  422. createSlices(slider, settings, vars);
  423. timeBuff = 0;
  424. i = 0;
  425. var v = 0;
  426. slices = $('.nivo-slice', slider);
  427. if(currentEffect === 'sliceUpDownLeft') { slices = $('.nivo-slice', slider)._reverse(); }
  428.  
  429. slices.each(function(){
  430. var slice = $(this);
  431. if(i === 0){
  432. slice.css('top','0px');
  433. i++;
  434. } else {
  435. slice.css('bottom','0px');
  436. i = 0;
  437. }
  438.  
  439. if(v === settings.slices-1){
  440. setTimeout(function(){
  441. slice.animate({opacity:'1.0' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); });
  442. }, (100 + timeBuff));
  443. } else {
  444. setTimeout(function(){
  445. slice.animate({opacity:'1.0' }, settings.animSpeed);
  446. }, (100 + timeBuff));
  447. }
  448. timeBuff += 50;
  449. v++;
  450. });
  451. } else if(currentEffect === 'fold'){
  452. createSlices(slider, settings, vars);
  453. timeBuff = 0;
  454. i = 0;
  455.  
  456. $('.nivo-slice', slider).each(function(){
  457. var slice = $(this);
  458. var origWidth = slice.width();
  459. slice.css({ top:'0px', width:'0px' });
  460. if(i === settings.slices-1){
  461. setTimeout(function(){
  462. slice.animate({ width:origWidth, opacity:'1.0' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); });
  463. }, (100 + timeBuff));
  464. } else {
  465. setTimeout(function(){
  466. slice.animate({ width:origWidth, opacity:'1.0' }, settings.animSpeed);
  467. }, (100 + timeBuff));
  468. }
  469. timeBuff += 50;
  470. i++;
  471. });
  472. } else if(currentEffect === 'fade'){
  473. createSlices(slider, settings, vars);
  474.  
  475. firstSlice = $('.nivo-slice:first', slider);
  476. firstSlice.css({
  477. 'width': slider.width() + 'px'
  478. });
  479.  
  480. firstSlice.animate({ opacity:'1.0' }, (settings.animSpeed*2), '', function(){ slider.trigger('nivo:animFinished'); });
  481. } else if(currentEffect === 'slideInRight'){
  482. createSlices(slider, settings, vars);
  483.  
  484. firstSlice = $('.nivo-slice:first', slider);
  485. firstSlice.css({
  486. 'width': '0px',
  487. 'opacity': '1'
  488. });
  489.  
  490. firstSlice.animate({ width: slider.width() + 'px' }, (settings.animSpeed*2), '', function(){ slider.trigger('nivo:animFinished'); });
  491. } else if(currentEffect === 'slideInLeft'){
  492. createSlices(slider, settings, vars);
  493.  
  494. firstSlice = $('.nivo-slice:first', slider);
  495. firstSlice.css({
  496. 'width': '0px',
  497. 'opacity': '1',
  498. 'left': '',
  499. 'right': '0px'
  500. });
  501.  
  502. firstSlice.animate({ width: slider.width() + 'px' }, (settings.animSpeed*2), '', function(){
  503. // Reset positioning
  504. firstSlice.css({
  505. 'left': '0px',
  506. 'right': ''
  507. });
  508. slider.trigger('nivo:animFinished');
  509. });
  510. } else if(currentEffect === 'boxRandom'){
  511. createBoxes(slider, settings, vars);
  512.  
  513. totalBoxes = settings.boxCols * settings.boxRows;
  514. i = 0;
  515. timeBuff = 0;
  516.  
  517. boxes = shuffle($('.nivo-box', slider));
  518. boxes.each(function(){
  519. var box = $(this);
  520. if(i === totalBoxes-1){
  521. setTimeout(function(){
  522. box.animate({ opacity:'1' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); });
  523. }, (100 + timeBuff));
  524. } else {
  525. setTimeout(function(){
  526. box.animate({ opacity:'1' }, settings.animSpeed);
  527. }, (100 + timeBuff));
  528. }
  529. timeBuff += 20;
  530. i++;
  531. });
  532. } else if(currentEffect === 'boxRain' || currentEffect === 'boxRainReverse' || currentEffect === 'boxRainGrow' || currentEffect === 'boxRainGrowReverse'){
  533. createBoxes(slider, settings, vars);
  534.  
  535. totalBoxes = settings.boxCols * settings.boxRows;
  536. i = 0;
  537. timeBuff = 0;
  538.  
  539. // Split boxes into 2D array
  540. var rowIndex = 0;
  541. var colIndex = 0;
  542. var box2Darr = [];
  543. box2Darr[rowIndex] = [];
  544. boxes = $('.nivo-box', slider);
  545. if(currentEffect === 'boxRainReverse' || currentEffect === 'boxRainGrowReverse'){
  546. boxes = $('.nivo-box', slider)._reverse();
  547. }
  548. boxes.each(function(){
  549. box2Darr[rowIndex][colIndex] = $(this);
  550. colIndex++;
  551. if(colIndex === settings.boxCols){
  552. rowIndex++;
  553. colIndex = 0;
  554. box2Darr[rowIndex] = [];
  555. }
  556. });
  557.  
  558. // Run animation
  559. for(var cols = 0; cols < (settings.boxCols * 2); cols++){
  560. var prevCol = cols;
  561. for(var rows = 0; rows < settings.boxRows; rows++){
  562. if(prevCol >= 0 && prevCol < settings.boxCols){
  563. /* Due to some weird JS bug with loop vars
  564. being used in setTimeout, this is wrapped
  565. with an anonymous function call */
  566. (function(row, col, time, i, totalBoxes) {
  567. var box = $(box2Darr[row][col]);
  568. var w = box.width();
  569. var h = box.height();
  570. if(currentEffect === 'boxRainGrow' || currentEffect === 'boxRainGrowReverse'){
  571. box.width(0).height(0);
  572. }
  573. if(i === totalBoxes-1){
  574. setTimeout(function(){
  575. box.animate({ opacity:'1', width:w, height:h }, settings.animSpeed/1.3, '', function(){ slider.trigger('nivo:animFinished'); });
  576. }, (100 + time));
  577. } else {
  578. setTimeout(function(){
  579. box.animate({ opacity:'1', width:w, height:h }, settings.animSpeed/1.3);
  580. }, (100 + time));
  581. }
  582. })(rows, prevCol, timeBuff, i, totalBoxes);
  583. i++;
  584. }
  585. prevCol--;
  586. }
  587. timeBuff += 100;
  588. }
  589. }
  590. };
  591.  
  592. // Shuffle an array
  593. var shuffle = function(arr){
  594. for(var j, x, i = arr.length; i; j = parseInt(Math.random() * i, 10), x = arr[--i], arr[i] = arr[j], arr[j] = x);
  595. return arr;
  596. };
  597.  
  598. // For debugging
  599. var trace = function(msg){
  600. if(this.console && typeof console.log !== 'undefined') { console.log(msg); }
  601. };
  602.  
  603. // Start / Stop
  604. this.stop = function(){
  605. if(!$(element).data('nivo:vars').stop){
  606. $(element).data('nivo:vars').stop = true;
  607. trace('Stop Slider');
  608. }
  609. };
  610.  
  611. this.start = function(){
  612. if($(element).data('nivo:vars').stop){
  613. $(element).data('nivo:vars').stop = false;
  614. trace('Start Slider');
  615. }
  616. };
  617.  
  618. // Trigger the afterLoad callback
  619. settings.afterLoad.call(this);
  620.  
  621. return this;
  622. };
  623.  
  624. $.fn.nivoSlider = function(options) {
  625. return this.each(function(key, value){
  626. var element = $(this);
  627. // Return early if this element already has a plugin instance
  628. if (element.data('nivoslider')) { return element.data('nivoslider'); }
  629. // Pass options to plugin constructor
  630. var nivoslider = new NivoSlider(this, options);
  631. // Store plugin object in this element's data
  632. element.data('nivoslider', nivoslider);
  633. });
  634. };
  635.  
  636. //Default settings
  637. $.fn.nivoSlider.defaults = {
  638. effect: 'random',
  639. slices: 15,
  640. boxCols: 8,
  641. boxRows: 4,
  642. animSpeed: 500,
  643. pauseTime: 3000,
  644. startSlide: 0,
  645. directionNav: true,
  646. controlNav: true,
  647. controlNavThumbs: false,
  648. pauseOnHover: true,
  649. manualAdvance: false,
  650. prevText: 'Prev',
  651. nextText: 'Next',
  652. randomStart: false,
  653. beforeChange: function(){},
  654. afterChange: function(){},
  655. slideshowEnd: function(){},
  656. lastSlide: function(){},
  657. afterLoad: function(){}
  658. };
  659.  
  660. $.fn._reverse = [].reverse;
  661.  
  662. })(jQuery);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement