Advertisement
Guest User

Untitled

a guest
Jul 3rd, 2016
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.09 KB | None | 0 0
  1. /*
  2. * jQuery Nivo Slider v1.9
  3. * http://nivo.dev7studios.com
  4. *
  5. * Copyright 2010, Gilbert Pellegrom
  6. * Free to use and abuse under the MIT license.
  7. * http://www.opensource.org/licenses/mit-license.php
  8. *
  9. * April 2010 - controlNavThumbs option added by Jamie Thompson (http://jamiethompson.co.uk)
  10. * March 2010 - manualAdvance option added by HelloPablo (http://hellopablo.co.uk)
  11. */
  12.  
  13. (function($) {
  14.  
  15. $.fn.nivoSlider = function(options) {
  16.  
  17. //Defaults are below
  18. var settings = $.extend({}, $.fn.nivoSlider.defaults, options);
  19.  
  20. return this.each(function() {
  21. //Useful variables. Play carefully.
  22. var vars = {
  23. currentSlide: 0,
  24. currentImage: '',
  25. totalSlides: 0,
  26. randAnim: '',
  27. running: false,
  28. paused: false,
  29. stop:false
  30. };
  31.  
  32. //Get this slider
  33. var slider = $(this);
  34. slider.data('nivo:vars', vars);
  35. slider.css('position','relative');
  36. slider.width('1px');
  37. slider.height('1px');
  38. slider.addClass('nivoSlider');
  39.  
  40. //Find our slider children
  41. var kids = slider.children();
  42. kids.each(function() {
  43. var child = $(this);
  44. if(!child.is('img')){
  45. if(child.is('a')){
  46. child.addClass('nivo-imageLink');
  47. }
  48. child = child.find('img:first');
  49. }
  50. //Don't ask
  51. var childWidth = child.width();
  52. if(childWidth == 0) childWidth = child.attr('width');
  53. var childHeight = child.height();
  54. if(childHeight == 0) childHeight = child.attr('height');
  55. //Resize the slider
  56. if(childWidth > slider.width()){
  57. slider.width(childWidth);
  58. }
  59. if(childHeight > slider.height()){
  60. slider.height(childHeight);
  61. }
  62. child.css('display','none');
  63. vars.totalSlides++;
  64. });
  65.  
  66. //Set startSlide
  67. if(settings.startSlide > 0){
  68. if(settings.startSlide >= vars.totalSlides) settings.startSlide = vars.totalSlides - 1;
  69. vars.currentSlide = settings.startSlide;
  70. }
  71.  
  72. //Get initial image
  73. if($(kids[vars.currentSlide]).is('img')){
  74. vars.currentImage = $(kids[vars.currentSlide]);
  75. } else {
  76. vars.currentImage = $(kids[vars.currentSlide]).find('img:first');
  77. }
  78.  
  79. //Show initial link
  80. if($(kids[vars.currentSlide]).is('a')){
  81. $(kids[vars.currentSlide]).css('display','block');
  82. }
  83.  
  84. //Set first background
  85. slider.css('background','url('+ vars.currentImage.attr('src') +') no-repeat');
  86.  
  87. //Add initial slices
  88. for(var i = 0; i < settings.slices; i++){
  89. var sliceWidth = Math.round(slider.width()/settings.slices);
  90. if(i == settings.slices-1){
  91. slider.append(
  92. $('<div class="nivo-slice"></div>').css({ left:(sliceWidth*i)+'px', width:(slider.width()-(sliceWidth*i))+'px' })
  93. );
  94. } else {
  95. slider.append(
  96. $('<div class="nivo-slice"></div>').css({ left:(sliceWidth*i)+'px', width:sliceWidth+'px' })
  97. );
  98. }
  99. }
  100.  
  101. //Create caption
  102. slider.append(
  103. $('<div class="nivo-caption"><p></p></div>').css({ display:'none', opacity:settings.captionOpacity })
  104. );
  105. //Process initial caption
  106. if(vars.currentImage.attr('title') != ''){
  107. $('.nivo-caption p', slider).html(vars.currentImage.attr('title'));
  108. $('.nivo-caption', slider).fadeIn(settings.animSpeed);
  109. }
  110.  
  111. //In the words of Super Mario "let's a go!"
  112. var timer = 0;
  113. if(!settings.manualAdvance){
  114. timer = setInterval(function(){ nivoRun(slider, kids, settings, false); }, settings.pauseTime);
  115. }
  116.  
  117. //Add Direction nav
  118. if(settings.directionNav){
  119. slider.append('<div class="nivo-directionNav"><a class="nivo-prevNav">Prev</a><a class="nivo-nextNav">Next</a></div>');
  120.  
  121. //Hide Direction nav
  122. if(settings.directionNavHide){
  123. $('.nivo-directionNav', slider).hide();
  124. slider.hover(function(){
  125. $('.nivo-directionNav', slider).show();
  126. }, function(){
  127. $('.nivo-directionNav', slider).hide();
  128. });
  129. }
  130.  
  131. $('a.nivo-prevNav', slider).live('click', function(){
  132. if(vars.running) return false;
  133. clearInterval(timer);
  134. timer = '';
  135. vars.currentSlide-=2;
  136. nivoRun(slider, kids, settings, 'prev');
  137. });
  138.  
  139. $('a.nivo-nextNav', slider).live('click', function(){
  140. if(vars.running) return false;
  141. clearInterval(timer);
  142. timer = '';
  143. nivoRun(slider, kids, settings, 'next');
  144. });
  145. }
  146.  
  147. //Add Control nav
  148. if(settings.controlNav){
  149. var nivoControl = $('<div class="nivo-controlNav"></div>');
  150. slider.append(nivoControl);
  151. for(var i = 0; i < kids.length; i++){
  152. if(settings.controlNavThumbs){
  153. var child = kids.eq(i);
  154. if(!child.is('img')){
  155. child = child.find('img:first');
  156. }
  157. nivoControl.append('<a class="nivo-control" rel="'+ i +'"><img src="'+ child.attr('src').replace(settings.controlNavThumbsSearch, settings.controlNavThumbsReplace) +'"></a>');
  158. } else {
  159. nivoControl.append('<a class="nivo-control" rel="'+ i +'">'+ i +'</a>');
  160. }
  161.  
  162. }
  163. //Set initial active link
  164. $('.nivo-controlNav a:eq('+ vars.currentSlide +')', slider).addClass('active');
  165.  
  166. $('.nivo-controlNav a', slider).live('click', function(){
  167. if(vars.running) return false;
  168. if($(this).hasClass('active')) return false;
  169. clearInterval(timer);
  170. timer = '';
  171. slider.css('background','url('+ vars.currentImage.attr('src') +') no-repeat');
  172. vars.currentSlide = $(this).attr('rel') - 1;
  173. nivoRun(slider, kids, settings, 'control');
  174. });
  175. }
  176.  
  177. //Keyboard Navigation
  178. if(settings.keyboardNav){
  179. $(window).keypress(function(event){
  180. //Left
  181. if(event.keyCode == '37'){
  182. if(vars.running) return false;
  183. clearInterval(timer);
  184. timer = '';
  185. vars.currentSlide-=2;
  186. nivoRun(slider, kids, settings, 'prev');
  187. }
  188. //Right
  189. if(event.keyCode == '39'){
  190. if(vars.running) return false;
  191. clearInterval(timer);
  192. timer = '';
  193. nivoRun(slider, kids, settings, 'next');
  194. }
  195. });
  196. }
  197.  
  198. //For pauseOnHover setting
  199. if(settings.pauseOnHover){
  200. slider.hover(function(){
  201. vars.paused = true;
  202. clearInterval(timer);
  203. timer = '';
  204. }, function(){
  205. vars.paused = false;
  206. //Restart the timer
  207. if(timer == '' && !settings.manualAdvance){
  208. timer = setInterval(function(){ nivoRun(slider, kids, settings, false); }, settings.pauseTime);
  209. }
  210. });
  211. }
  212.  
  213. //Event when Animation finishes
  214. slider.bind('nivo:animFinished', function(){
  215. vars.running = false;
  216. //Hide child links
  217. $(kids).each(function(){
  218. if($(this).is('a')){
  219. $(this).css('display','none');
  220. }
  221. });
  222. //Show current link
  223. if($(kids[vars.currentSlide]).is('a')){
  224. $(kids[vars.currentSlide]).css('display','block');
  225. }
  226. //Restart the timer
  227. if(timer == '' && !vars.paused && !settings.manualAdvance){
  228. timer = setInterval(function(){ nivoRun(slider, kids, settings, false); }, settings.pauseTime);
  229. }
  230. //Trigger the afterChange callback
  231. settings.afterChange.call(this);
  232. });
  233. });
  234.  
  235. function nivoRun(slider, kids, settings, nudge){
  236. //Get our vars
  237. var vars = slider.data('nivo:vars');
  238. if((!vars || vars.stop) && !nudge) return false;
  239.  
  240. //Trigger the beforeChange callback
  241. settings.beforeChange.call(this);
  242.  
  243. //Set current background before change
  244. if(!nudge){
  245. slider.css('background','url('+ vars.currentImage.attr('src') +') no-repeat');
  246. } else {
  247. if(nudge == 'prev'){
  248. slider.css('background','url('+ vars.currentImage.attr('src') +') no-repeat');
  249. }
  250. if(nudge == 'next'){
  251. slider.css('background','url('+ vars.currentImage.attr('src') +') no-repeat');
  252. }
  253. }
  254. vars.currentSlide++;
  255. if(vars.currentSlide == vars.totalSlides){
  256. vars.currentSlide = 0;
  257. //Trigger the slideshowEnd callback
  258. settings.slideshowEnd.call(this);
  259. }
  260. if(vars.currentSlide < 0) vars.currentSlide = (vars.totalSlides - 1);
  261. //Set vars.currentImage
  262. if($(kids[vars.currentSlide]).is('img')){
  263. vars.currentImage = $(kids[vars.currentSlide]);
  264. } else {
  265. vars.currentImage = $(kids[vars.currentSlide]).find('img:first');
  266. }
  267.  
  268. //Set acitve links
  269. if(settings.controlNav){
  270. $('.nivo-controlNav a', slider).removeClass('active');
  271. $('.nivo-controlNav a:eq('+ vars.currentSlide +')', slider).addClass('active');
  272. }
  273.  
  274. //Process caption
  275. if(vars.currentImage.attr('title') != ''){
  276. if($('.nivo-caption', slider).css('display') == 'block'){
  277. $('.nivo-caption p', slider).fadeOut(settings.animSpeed, function(){
  278. $(this).html(vars.currentImage.attr('title'));
  279. $(this).fadeIn(settings.animSpeed);
  280. });
  281. } else {
  282. $('.nivo-caption p', slider).html(vars.currentImage.attr('title'));
  283. }
  284. $('.nivo-caption', slider).fadeIn(settings.animSpeed);
  285. } else {
  286. $('.nivo-caption', slider).fadeOut(settings.animSpeed);
  287. }
  288.  
  289. //Set new slice backgrounds
  290. var i = 0;
  291. $('.nivo-slice', slider).each(function(){
  292. var sliceWidth = Math.round(slider.width()/settings.slices);
  293. $(this).css({ height:'0px', opacity:'0',
  294. background: 'url('+ vars.currentImage.attr('src') +') no-repeat -'+ ((sliceWidth + (i * sliceWidth)) - sliceWidth) +'px 0%' });
  295. i++;
  296. });
  297.  
  298. if(settings.effect == 'random'){
  299. var anims = new Array("sliceDownRight","sliceDownLeft","sliceUpRight","sliceUpLeft","sliceUpDown","sliceUpDownLeft","fold","fade");
  300. vars.randAnim = anims[Math.floor(Math.random()*(anims.length + 1))];
  301. if(vars.randAnim == undefined) vars.randAnim = 'fade';
  302. }
  303.  
  304. //Run effects
  305. vars.running = true;
  306. if(settings.effect == 'sliceDown' || settings.effect == 'sliceDownRight' || vars.randAnim == 'sliceDownRight' ||
  307. settings.effect == 'sliceDownLeft' || vars.randAnim == 'sliceDownLeft'){
  308. var timeBuff = 0;
  309. var i = 0;
  310. var slices = $('.nivo-slice', slider);
  311. if(settings.effect == 'sliceDownLeft' || vars.randAnim == 'sliceDownLeft') slices = $('.nivo-slice', slider).reverse();
  312. slices.each(function(){
  313. var slice = $(this);
  314. slice.css('top','0px');
  315. if(i == settings.slices-1){
  316. setTimeout(function(){
  317. slice.animate({ height:'100%', opacity:'1.0' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); });
  318. }, (100 + timeBuff));
  319. } else {
  320. setTimeout(function(){
  321. slice.animate({ height:'100%', opacity:'1.0' }, settings.animSpeed);
  322. }, (100 + timeBuff));
  323. }
  324. timeBuff += 50;
  325. i++;
  326. });
  327. }
  328. else if(settings.effect == 'sliceUp' || settings.effect == 'sliceUpRight' || vars.randAnim == 'sliceUpRight' ||
  329. settings.effect == 'sliceUpLeft' || vars.randAnim == 'sliceUpLeft'){
  330. var timeBuff = 0;
  331. var i = 0;
  332. var slices = $('.nivo-slice', slider);
  333. if(settings.effect == 'sliceUpLeft' || vars.randAnim == 'sliceUpLeft') slices = $('.nivo-slice', slider).reverse();
  334. slices.each(function(){
  335. var slice = $(this);
  336. slice.css('bottom','0px');
  337. if(i == settings.slices-1){
  338. setTimeout(function(){
  339. slice.animate({ height:'100%', opacity:'1.0' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); });
  340. }, (100 + timeBuff));
  341. } else {
  342. setTimeout(function(){
  343. slice.animate({ height:'100%', opacity:'1.0' }, settings.animSpeed);
  344. }, (100 + timeBuff));
  345. }
  346. timeBuff += 50;
  347. i++;
  348. });
  349. }
  350. else if(settings.effect == 'sliceUpDown' || settings.effect == 'sliceUpDownRight' || vars.randAnim == 'sliceUpDown' ||
  351. settings.effect == 'sliceUpDownLeft' || vars.randAnim == 'sliceUpDownLeft'){
  352. var timeBuff = 0;
  353. var i = 0;
  354. var v = 0;
  355. var slices = $('.nivo-slice', slider);
  356. if(settings.effect == 'sliceUpDownLeft' || vars.randAnim == 'sliceUpDownLeft') slices = $('.nivo-slice', slider).reverse();
  357. slices.each(function(){
  358. var slice = $(this);
  359. if(i == 0){
  360. slice.css('top','0px');
  361. i++;
  362. } else {
  363. slice.css('bottom','0px');
  364. i = 0;
  365. }
  366.  
  367. if(v == settings.slices-1){
  368. setTimeout(function(){
  369. slice.animate({ height:'100%', opacity:'1.0' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); });
  370. }, (100 + timeBuff));
  371. } else {
  372. setTimeout(function(){
  373. slice.animate({ height:'100%', opacity:'1.0' }, settings.animSpeed);
  374. }, (100 + timeBuff));
  375. }
  376. timeBuff += 50;
  377. v++;
  378. });
  379. }
  380. else if(settings.effect == 'fold' || vars.randAnim == 'fold'){
  381. var timeBuff = 0;
  382. var i = 0;
  383. $('.nivo-slice', slider).each(function(){
  384. var slice = $(this);
  385. var origWidth = slice.width();
  386. slice.css({ top:'0px', height:'100%', width:'0px' });
  387. if(i == settings.slices-1){
  388. setTimeout(function(){
  389. slice.animate({ width:origWidth, opacity:'1.0' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); });
  390. }, (100 + timeBuff));
  391. } else {
  392. setTimeout(function(){
  393. slice.animate({ width:origWidth, opacity:'1.0' }, settings.animSpeed);
  394. }, (100 + timeBuff));
  395. }
  396. timeBuff += 50;
  397. i++;
  398. });
  399. }
  400. else if(settings.effect == 'fade' || vars.randAnim == 'fade'){
  401. var i = 0;
  402. $('.nivo-slice', slider).each(function(){
  403. $(this).css('height','100%');
  404. if(i == settings.slices-1){
  405. $(this).animate({ opacity:'1.0' }, (settings.animSpeed*2), '', function(){ slider.trigger('nivo:animFinished'); });
  406. } else {
  407. $(this).animate({ opacity:'1.0' }, (settings.animSpeed*2));
  408. }
  409. i++;
  410. });
  411. }
  412. }
  413. };
  414.  
  415. //Default settings
  416. $.fn.nivoSlider.defaults = {
  417. effect:'random',
  418. slices:15,
  419. animSpeed:500,
  420. pauseTime:3000,
  421. startSlide:0,
  422. directionNav:true,
  423. directionNavHide:true,
  424. controlNav:true,
  425. controlNavThumbs:false,
  426. controlNavThumbsSearch: '.jpg',
  427. controlNavThumbsReplace: '_thumb.jpg',
  428. keyboardNav:true,
  429. pauseOnHover:true,
  430. manualAdvance:false,
  431. captionOpacity:0.8,
  432. beforeChange: function(){},
  433. afterChange: function(){},
  434. slideshowEnd: function(){}
  435. };
  436.  
  437. $.fn.reverse = [].reverse;
  438.  
  439. })(jQuery);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement