PageRenderTime 52ms CodeModel.GetById 22ms RepoModel.GetById 0ms app.codeStats 1ms

/files/wp-slidedeck2/2.1.20121115/lenses/tool-kit/lens.js

https://gitlab.com/Mirros/jsdelivr
JavaScript | 650 lines | 463 code | 101 blank | 86 comment | 122 complexity | 93669f11a8d455929cdfe5c0967950a6 MD5 | raw file
  1. (function($){
  2. SlideDeckLens['tool-kit'] = function(slidedeck){
  3. var self = this;
  4. var ns = 'tool-kit';
  5. var deck = $(slidedeck).slidedeck();
  6. var verticalDeck = deck.vertical();
  7. var elems = {};
  8. elems.slidedeck = deck.deck;
  9. elems.frame = elems.slidedeck.closest('.lens-' + ns);
  10. elems.slides = deck.slides;
  11. elems.deckWrapper = elems.frame.find('.sd-wrapper');
  12. elems.horizNav = elems.frame.find('.deck-navigation.horizontal');
  13. elems.horizNavPrev = elems.frame.find('.deck-navigation.horizontal.prev');
  14. elems.horizNavNext = elems.frame.find('.deck-navigation.horizontal.next');
  15. elems.vertNav = elems.frame.find('.deck-navigation.vertical');
  16. elems.vertNavPrev = elems.frame.find('.deck-navigation.vertical.prev');
  17. elems.vertNavNext = elems.frame.find('.deck-navigation.vertical.next');
  18. elems.slidedeck.find('.sd2-slide-text a').addClass('accent-color');
  19. deck.loaded(function( deck ){
  20. /**
  21. * Test the deck to see if it has vertical slides.
  22. */
  23. var isVertical = false;
  24. if( elems.frame.find('.slidesVertical').length ){
  25. isVertical = true;
  26. }
  27. /**
  28. * If the deck is vertical, then get the vertical slides instead.
  29. */
  30. if( isVertical ){
  31. elems.slides = deck.vertical().slides;
  32. /**
  33. * Set vertical scroll option to the same as the parent deck.
  34. */
  35. if( deck.options.scroll ) {
  36. verticalDeck.options.scroll = true;
  37. }else{
  38. verticalDeck.options.scroll = false;
  39. }
  40. }
  41. var overlay = function(){
  42. if(elems.frame.hasClass('sd2-frame')){
  43. jQuery('<div class="sd-lens-shadow-top"></div><div class="sd-lens-shadow-left"></div><div class="sd-lens-shadow-corner"></div>').appendTo(elems.slidedeck);
  44. }
  45. }
  46. var deckNavigation = function(){
  47. var self = this;
  48. if(!elems.frame.hasClass('sd2-nav-none')){
  49. deckCount = elems.slides.length;
  50. jQuery('<div class="sd-nav-wrapper"></div>').appendTo(elems.deckWrapper);
  51. elems.navWrapper = elems.frame.find('.sd-nav-wrapper');
  52. jQuery('<dl class="sd-nav-deck"></dl>').appendTo(elems.navWrapper);
  53. elems.navDeck = elems.navWrapper.find('.sd-nav-deck');
  54. /**
  55. * Append a vertical dl to the first slide if it's vertical and uses thumbnails.
  56. */
  57. if( isVertical && elems.frame.hasClass('sd2-nav-thumb') ){
  58. jQuery('<dd><dl class="slidesVertical"></dl></dd>').appendTo(elems.navDeck);
  59. elems.verticalSlides = elems.navDeck.find('.slidesVertical');
  60. }
  61. if(elems.frame.hasClass('sd2-nav-dots')){
  62. // run dot code
  63. var i = 1;
  64. while(i <= deckCount && i <= 10){
  65. jQuery('<dd class="sd-nav-dot"></dd>').appendTo(elems.navDeck);
  66. i++;
  67. }
  68. elems.navDots = elems.navDeck.find('.sd-nav-dot');
  69. elems.navDots.click(function(){
  70. $(elems.slidedeck).slidedeck().options.autoPlay = false;
  71. deck.options.pauseAutoPlay = true;
  72. var $self = jQuery(this);
  73. var classToAdd = 'active';
  74. if( elems.frame.hasClass('sd2-nav-hanging') ) {
  75. classToAdd = 'accent-color-background';
  76. }
  77. elems.navDots.removeClass('accent-color-background active');
  78. $self.addClass(classToAdd);
  79. /**
  80. * If the deck is vertical, then we'll go to the
  81. * vertical slide instead.
  82. */
  83. if( isVertical ){
  84. verticalDeck.goTo( $self.index() + 1 );
  85. }else{
  86. deck.goTo( $self.index() + 1 );
  87. }
  88. });
  89. if( isVertical ){
  90. dotSpacing = parseInt(elems.navDots.outerHeight()+10);
  91. elems.navDots.first().css('margin-top', 0);
  92. var verticalDotNavHeight = (dotSpacing*elems.navDots.length);
  93. elems.navDeck.css({
  94. 'height': verticalDotNavHeight,
  95. });
  96. elems.navWrapper.css({
  97. 'height': verticalDotNavHeight,
  98. 'margin-top': Math.round(verticalDotNavHeight/2) * -1,
  99. });
  100. }else{
  101. /**
  102. * Center the horizontal nav dots if this is a
  103. * horizontal deck.
  104. */
  105. dotSpacing = parseInt(elems.navDots.outerWidth()+10);
  106. elems.navDeck.css('width', (dotSpacing*elems.navDots.length)-parseInt(elems.navDots.last().css('margin-left'),10));
  107. }
  108. if( ( !elems.frame.hasClass('sd2-nav-bar') && !elems.frame.hasClass('sd2-nav-hanging') ) ){
  109. /**
  110. * Only run this positioning code if the deck is horizontal
  111. */
  112. if( !isVertical ){
  113. var spacingVar = parseInt(elems.frame.css('padding-left'), 10)+20;
  114. if(elems.frame.hasClass('sd2-nav-pos-top')){
  115. var topVar = spacingVar;
  116. var bottomVar = 'auto';
  117. }else{
  118. var topVar = 'auto';
  119. var bottomVar = spacingVar
  120. }
  121. var marginLeftVar = -(elems.navWrapper.width()/2);
  122. if( elems.frame.hasClass('sd2-nav-dots') && elems.frame.hasClass('sd2-nav-pos-top') && !elems.frame.hasClass('sd2-nav-default') ){
  123. marginLeftVar = 0;
  124. }
  125. /**
  126. * If the dot nav is outside the slide area and on top, increase the dot distance.
  127. */
  128. if( elems.frame.hasClass('sd2-nav-dots') && elems.frame.hasClass('sd2-nav-pos-top') && elems.frame.hasClass('sd2-nav-hanging') ){
  129. topVar = topVar/2;
  130. }
  131. elems.navWrapper.css({
  132. 'margin-left': marginLeftVar,
  133. 'top': topVar,
  134. 'bottom': bottomVar
  135. });
  136. }
  137. };
  138. if(elems.frame.hasClass('sd2-nav-default') && !elems.frame.hasClass('sd2-title-pos-top') && !elems.frame.hasClass('sd2-hide-title') && !elems.frame.hasClass('sd2-title-pos-bottom') && elems.frame.hasClass('sd2-nav-dots') && !elems.frame.hasClass('sd2-small') ){
  139. if( isVertical ){
  140. /**
  141. * Vertical positioning code
  142. */
  143. if(elems.frame.hasClass('sd2-nav-default') && elems.frame.hasClass('sd2-nav-dots') && !elems.frame.hasClass('sd2-small') ){
  144. elems.navWrapper.css({
  145. 'margin-top': marginLeftVar + marLeftAdjustment
  146. });
  147. }
  148. }else{
  149. /**
  150. * Horizontal positioning code
  151. */
  152. var titleWidth = elems.frame.find('.sd-node-title-box').outerWidth();
  153. if(elems.frame.hasClass('sd2-title-pos-right')){
  154. var marLeftAdjustment = -(titleWidth / 2);
  155. }else if(elems.frame.hasClass('sd2-title-pos-left')){
  156. var marLeftAdjustment = titleWidth / 2;
  157. }
  158. elems.navWrapper.css({
  159. 'margin-left': marginLeftVar + marLeftAdjustment
  160. });
  161. }
  162. }
  163. var classToAdd = 'active';
  164. if( elems.frame.hasClass('sd2-nav-hanging') ) {
  165. classToAdd = 'accent-color-background';
  166. }
  167. $('.sd-nav-dot').eq( deck.current - 1 ).addClass( classToAdd );
  168. // Set the initial dot position
  169. if(isVertical){
  170. verticalDotsIndicatorUpdate( deck.options.startVertical - 1 );
  171. }
  172. } /* End of dots nav */
  173. if(elems.frame.hasClass('sd2-nav-hanging')){
  174. elems.navWrapper.appendTo(elems.frame);
  175. }
  176. if(elems.frame.hasClass('sd2-nav-thumb')){
  177. var navArrowWidth = 73;
  178. // The Nav arrows are wider than the nav buttons... when in their own bar
  179. if( elems.frame.hasClass('sd2-nav-arrow-style-2') && elems.frame.hasClass('sd2-nav-bar') )
  180. navArrowWidth = 85;
  181. if( isVertical ){
  182. // Small arrows for the default nav arrow style
  183. if( elems.frame.hasClass('sd2-small') ){
  184. navArrowWidth = 55;
  185. }
  186. // Small nav arrows for the nav arrow style 2
  187. if( elems.frame.hasClass('sd2-nav-arrow-style-2') && elems.frame.hasClass('sd2-nav-bar') && elems.frame.hasClass('sd2-small') ){
  188. navArrowWidth = 58;
  189. }
  190. elems.navWrapper.css({
  191. 'padding-top': navArrowWidth,
  192. 'padding-bottom': navArrowWidth
  193. });
  194. elems.navWrapper.css('height', ( elems.slidedeck.outerHeight() - ( navArrowWidth * 2 ) ) );
  195. elems.navDeck.css('height', ( elems.slidedeck.outerHeight() - ( navArrowWidth * 2 ) ) );
  196. elems.navWrapper.css({
  197. 'margin-top': Math.round( elems.navWrapper.outerHeight() * -0.5 ),
  198. 'top': '50%'
  199. });
  200. }else{
  201. elems.navWrapper.css({
  202. 'padding-left': navArrowWidth,
  203. 'padding-right': navArrowWidth
  204. });
  205. elems.navWrapper.css('width', ( elems.slidedeck.outerWidth() - ( navArrowWidth * 2 ) ) );
  206. elems.navDeck.css('width', ( elems.slidedeck.outerWidth() - ( navArrowWidth * 2 ) ) );
  207. elems.navWrapper.css({
  208. 'margin-left': Math.round( elems.navWrapper.outerWidth() * -0.5 ),
  209. 'left': '50%'
  210. });
  211. }
  212. //run thumbnail code
  213. elems.navDeck.addClass('thumb');
  214. var i = 1;
  215. while(i <= deckCount){
  216. if( isVertical ){
  217. jQuery('<span class="sd-thumb sd2-custom-title-font"><span class="number">'+i+'</span><span class="inner-image"></span></span>').appendTo(elems.verticalSlides);
  218. }else{
  219. jQuery('<span class="sd-thumb sd2-custom-title-font"><span class="number">'+i+'</span><span class="inner-image"></span></span>').appendTo(elems.navDeck);
  220. }
  221. // Only for IE - detect background image url and update style for DD element
  222. if( $.browser.msie && $.browser.version <= 8.0 ){
  223. elems.frame.find('span.sd-thumb .inner-image').eq(i-1)[0].style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + elems.slides.eq(i-1).attr('data-thumbnail-src') + "', sizingMethod='scale')";
  224. }else{
  225. elems.frame.find('span.sd-thumb .inner-image').eq(i-1).css('background-image', 'url('+elems.slides.eq(i-1).attr('data-thumbnail-src')+')' )
  226. }
  227. i++;
  228. }
  229. // let's dynamically figure out how many thumbnails will fit in our nav
  230. singleThumb = elems.frame.find('.sd-thumb');
  231. if( isVertical ){
  232. thumbHeight = singleThumb.height(),
  233. thumbSpacing = parseInt( singleThumb.last().css('margin-bottom') ),
  234. fullThumb = thumbHeight + thumbSpacing,
  235. thumbsPerSlide = Math.floor( ( ( elems.frame.find('.sd-nav-wrapper').height() + thumbSpacing ) / fullThumb ) );
  236. var thumbs = elems.verticalSlides.children('.sd-thumb');
  237. }else{
  238. thumbWidth = parseInt(singleThumb.css('width'), 10),
  239. thumbSpacing = parseInt(singleThumb.last().css('margin-left'), 10),
  240. fullThumb = thumbWidth + thumbSpacing,
  241. thumbsPerSlide = Math.floor( ( ( elems.frame.find('.sd-nav-wrapper').width() + thumbSpacing ) / fullThumb ) );
  242. var thumbs = elems.navDeck.children('.sd-thumb');
  243. }
  244. thumbs.remove();
  245. var i = 0;
  246. while( i < deckCount ){
  247. if(i == 0 || i % thumbsPerSlide == 0){
  248. if( isVertical ){
  249. jQuery('<dd class="thumb-slide"></dd>').appendTo(elems.verticalSlides);
  250. }else{
  251. jQuery('<dd class="thumb-slide"></dd>').appendTo(elems.navDeck);
  252. }
  253. };
  254. jQuery(thumbs[i]).appendTo(elems.navDeck.find('.thumb-slide').last());
  255. i++
  256. }
  257. // let's center up these thumbs
  258. if( isVertical ){
  259. elems.verticalSlides.children('dd').wrapInner('<div class="nav-centered"></div>');
  260. elems.navDeck.find('.nav-centered').each(function(){
  261. var halfOfThumbMargin = Math.round( parseInt( $(this).find('.sd-thumb').last().css('margin-bottom') ) / 2 );
  262. $(this).css({
  263. 'margin-top': ( $(this).outerHeight() * -0.5 ) + halfOfThumbMargin,
  264. 'margin-left': $(this).outerWidth() * -0.5
  265. });
  266. });
  267. }else{
  268. elems.navDeck.children('dd').wrapInner('<div class="nav-centered"></div>');
  269. elems.navDeck.find('.nav-centered').each(function(){
  270. var $self = $(this);
  271. var thumbsCount = $self.find('.sd-thumb').length,
  272. navCentered = (fullThumb * thumbsCount) - parseInt( $self.find('.sd-thumb').last().css('margin-left') );
  273. $self.css('width', navCentered);
  274. });
  275. }
  276. elems.navDeck.show();
  277. // TODO: Make this not cause the deck to be too high and fail.
  278. // if( isVertical ){
  279. // var thumbMargin = parseInt( elems.navDeck.find('.sd-thumb:last').css('margin-bottom') );
  280. // elems.navWrapper.css('height', ( elems.slidedeck.outerHeight() - ( navArrowWidth * 2 ) + thumbMargin ) );
  281. // elems.navDeck.css('height', ( elems.slidedeck.outerHeight() - ( navArrowWidth * 2 ) + thumbMargin ) );
  282. // }
  283. //initialize thumbnail slidedeck
  284. var cycleOption = false;
  285. if( deck.options.cycle )
  286. cycleOption = true;
  287. var navOptions = {
  288. hideSpines: true,
  289. cycle: cycleOption,
  290. keys: false,
  291. scroll: false
  292. };
  293. elems.navSlideDeck = elems.navDeck.slidedeck( navOptions );
  294. elems.navSlideDeck.vertical( navOptions );
  295. // add click events to thumbnails
  296. elems.thumbs = elems.navDeck.find('.sd-thumb');
  297. elems.navDeck.delegate('.sd-thumb', 'click', function(event){
  298. event.preventDefault();
  299. var $this = $.data(this, '$this'),
  300. thumbIndex = $.data(this, 'thumbIndex');
  301. this.style.backgroundColor = "";
  302. elems.thumbs.removeClass('active accent-color-background');
  303. $this.addClass('active accent-color-background');
  304. /**
  305. * If the deck is vertical, then we'll go to the
  306. * vertical slide instead.
  307. */
  308. if( isVertical ){
  309. $(elems.slidedeck).slidedeck().options.autoPlay = false;
  310. deck.options.pauseAutoPlay = true;
  311. verticalDeck.goTo(thumbIndex + 1);
  312. }else{
  313. deck.goTo(thumbIndex + 1);
  314. }
  315. }).delegate('.sd-thumb', 'mouseenter', function(event){
  316. var $this = $.data(this, '$this'),
  317. thumbIndex = $.data(this, 'thumbIndex');
  318. if(!$this){
  319. $this = $(this);
  320. $.data(this, '$this', $this);
  321. }
  322. if(!thumbIndex){
  323. thumbIndex = elems.thumbs.index($this);
  324. $.data(this, 'thumbIndex', thumbIndex);
  325. }
  326. var accentColor = $this.css('background-color');
  327. var rgb = Raphael.getRGB(accentColor);
  328. var hsl = Raphael.rgb2hsl(rgb.r, rgb.g, rgb.b);
  329. hsl.l = Math.min(100, (120 * hsl.l))/100;
  330. var hoverColor = Raphael.hsl(hsl.h, hsl.s, hsl.l);
  331. $this.css('background-color', hoverColor);
  332. }).delegate('.sd-thumb', 'mouseleave', function(event){
  333. this.style.backgroundColor = "";
  334. });
  335. /**
  336. * Add arrows to the navigation if they are needed.
  337. * For vertical navigation, we need to count the length of the
  338. * .slidesVertical dd elements.
  339. */
  340. elems.navSlides = elems.navDeck.find('dd');
  341. if( isVertical )
  342. elems.navSlides = elems.navDeck.find('.slidesVertical dd');
  343. if(elems.navSlides.length > 1){
  344. jQuery('<a class="deck-navigation-arrows prev" href="#prev" target="_blank"><span>Prev</span></a><a class="deck-navigation-arrows next" href="#next" target="_blank"><span>Next</span></a>').appendTo(elems.navWrapper);
  345. elems.navArrows = elems.navWrapper.find('.deck-navigation-arrows');
  346. elems.navArrows.click(function(event){
  347. event.preventDefault();
  348. // Prevent automatic pagination if user starts interacting (will be reset on next pagination request)
  349. $.data(elems.navDeck[0], 'pauseAutoPaginate', true);
  350. switch(this.href.split('#')[1]){
  351. case 'next':
  352. elems.navSlideDeck.next();
  353. break;
  354. case 'prev':
  355. elems.navSlideDeck.prev();
  356. break;
  357. }
  358. })
  359. }
  360. //set the current slide's thumbnail to active and move to the appropriate nav slide
  361. elems.frame.find('.sd-nav-deck .sd-thumb').eq(deck.current-1).addClass('active accent-color-background');
  362. if( isVertical ){
  363. // Set the start slide and fire the thumbnail updater. (zero indexed)
  364. thumbIndicatorUpdate( deck.options.startVertical - 1 );
  365. }else{
  366. elems.navSlideDeck.goTo(elems.navDeck.find('.chrome-thumb.active').parents('dd').index()+1);
  367. }
  368. }
  369. }
  370. }
  371. var setOptions = function(){
  372. var self = this;
  373. if( isVertical )
  374. deck = verticalDeck;
  375. // Get the old complete and before options
  376. var oldBefore = deck.options.before;
  377. if( isVertical && elems.frame.hasClass('sd2-nav-thumb') )
  378. elems.navSlideDeck = elems.navSlideDeck.vertical();
  379. deck.options.before = function( deck ){
  380. if(typeof(oldBefore) == 'function')
  381. oldBefore(deck);
  382. if(elems.frame.hasClass('sd2-nav-dots')){
  383. /**
  384. * Case for the dot navigation
  385. */
  386. // Which CSS classes are we working with?
  387. var classToRemove = 'active';
  388. if( elems.frame.hasClass('sd2-nav-hanging') ) {
  389. classToRemove = 'accent-color-background';
  390. }
  391. elems.navDots.removeClass(classToRemove);
  392. elems.navDots.eq( deck.current-1 ).addClass(classToRemove);
  393. // Update the dots
  394. if( isVertical ){
  395. verticalDotsIndicatorUpdate( deck.current );
  396. }else{
  397. verticalDotsIndicatorUpdate( deck.current - 1 );
  398. }
  399. }else if(elems.frame.hasClass('sd2-nav-thumb')){
  400. /**
  401. * Case for the thumbnail navigation
  402. */
  403. // Update the thumbnails
  404. thumbIndicatorUpdate( deck.current );
  405. if(!$.data(elems.navDeck[0], 'pauseAutoPaginate')){
  406. elems.navSlideDeck.goTo(elems.navDeck.find('.sd-thumb.active').parents('dd').index()+1);
  407. }
  408. $.data(elems.navDeck[0], 'pauseAutoPaginate', false);
  409. }
  410. }
  411. if( isVertical ){
  412. // Get old complete() of the Vertical SlideDeck if it exists, and then set new complete() and append old one to it.
  413. var oldComplete = verticalDeck.options.complete;
  414. verticalDeck.options.complete = function(deck){
  415. if(typeof(oldComplete) == 'function')
  416. oldComplete(deck);
  417. if(elems.frame.hasClass('sd2-nav-dots')){
  418. }else if(elems.frame.hasClass('sd2-nav-thumb')){
  419. }
  420. };
  421. }
  422. };
  423. // function to control the animation of the vertical-slid-nav-indicator element
  424. var verticalDotsIndicatorUpdate = function(ind){
  425. if( elems.navDots ){
  426. var classToAdd = 'active';
  427. if( elems.frame.hasClass('sd2-nav-hanging') ) {
  428. classToAdd = 'accent-color-background';
  429. }
  430. elems.navDots.removeClass('accent-color-background active');
  431. $(elems.navDots[ind]).addClass(classToAdd);
  432. }
  433. }
  434. var thumbIndicatorUpdate = function(ind){
  435. if( elems.thumbs ){
  436. /**
  437. * If the deck is a horizontal deck, let's go ahead
  438. * and decrement the index value.
  439. */
  440. if( !isVertical )
  441. ind--;
  442. var classToToggle = 'accent-color-background active';
  443. elems.thumbs.removeClass( classToToggle );
  444. $( elems.thumbs[ind] ).addClass( classToToggle );
  445. }
  446. }
  447. var bindScrollEventForDotUpdate = function(){
  448. if(typeof($.event.special.mousewheel) != "undefined"){
  449. elems.frame.bind( 'mousewheel', function(event, mousewheeldelta){
  450. if( verticalDeck.options ){
  451. if( verticalDeck.options.scroll ){
  452. if( mousewheeldelta == 1 ){
  453. verticalDotsIndicatorUpdate(verticalDeck.current);
  454. }else if( mousewheeldelta == -1 ){
  455. verticalDotsIndicatorUpdate(verticalDeck.current);
  456. }
  457. }
  458. }
  459. });
  460. };
  461. }
  462. var bindScrollEventForThumbUpdate = function(){
  463. if(typeof($.event.special.mousewheel) != "undefined"){
  464. elems.frame.bind( 'mousewheel', function(event, mousewheeldelta){
  465. if( verticalDeck.options ){
  466. if( verticalDeck.options.scroll ){
  467. if( mousewheeldelta == 1 ){
  468. thumbIndicatorUpdate(verticalDeck.current);
  469. }else if( mousewheeldelta == -1 ){
  470. thumbIndicatorUpdate(verticalDeck.current);
  471. }
  472. }
  473. }
  474. });
  475. };
  476. }
  477. var deckAdjustments = function(){
  478. if(elems.frame.hasClass('sd2-nav-hanging')){
  479. //elems.hangingWrapper.css('width', elems.slidedeck.width()+2);
  480. }
  481. if(elems.frame.hasClass('sd2-frame') && elems.frame.hasClass('sd2-nav-pos-top') && elems.frame.hasClass('sd2-nav-bar')){
  482. elems.frame.css('padding-bottom', parseInt(elems.frame.css('padding-left'), 10));
  483. }
  484. if(elems.frame.hasClass('sd2-nav-pos-top') && elems.frame.hasClass('sd2-frame') && elems.frame.hasClass('sd2-nav-hanging')){
  485. elems.navWrapper.appendTo(elems.frame);
  486. }
  487. if(elems.frame.hasClass('sd2-nav-thumb') && elems.frame.hasClass('sd2-nav-arrow-style-2')){
  488. if( isVertical ){
  489. var buttonHeight = elems.navWrapper.outerWidth()
  490. elems.navWrapper.find('.deck-navigation-arrows').css('height', buttonHeight);
  491. }else{
  492. var buttonWidth = elems.navWrapper.outerHeight()
  493. elems.navWrapper.find('.deck-navigation-arrows').css('width', buttonWidth);
  494. }
  495. }
  496. var horizOffset;
  497. var vertOffset = 0;
  498. if( elems.frame.hasClass('sd2-small') ){
  499. horizOffset = 3;
  500. }else if( elems.frame.hasClass('sd2-medium') ){
  501. horizOffset = 10;
  502. }else if( elems.frame.hasClass('sd2-large') ){
  503. horizOffset = 10;
  504. }
  505. if( elems.frame.hasClass('sd2-frame') ){
  506. vertOffset = 5;
  507. }
  508. /**
  509. * Adjust left/right position for the nav arrows if
  510. * the frame is used. (not hairline)
  511. */
  512. if( elems.frame.hasClass('sd2-frame') ){
  513. elems.horizNavPrev.css('left', parseInt( elems.horizNavPrev.css('left') ) + horizOffset );
  514. elems.horizNavNext.css('right', parseInt( elems.horizNavNext.css('right') ) + horizOffset );
  515. }
  516. /**
  517. * Adjust the top margin of the nav arrows if the
  518. * hanging or bar nav is used.
  519. */
  520. if( !elems.frame.hasClass('sd2-no-nav') ){
  521. if( elems.frame.hasClass('sd2-nav-pos-top') ){
  522. if( elems.frame.is('.sd2-nav-bar') ){
  523. elems.horizNav.css('marginTop', ( parseInt( elems.horizNav.css('marginTop') ) + Math.round( elems.frame.find('.sd-nav-wrapper').outerHeight() / 2 ) - vertOffset ) );
  524. }
  525. }else{
  526. if( !elems.frame.hasClass('sd2-frame') || elems.frame.hasClass('sd2-nav-bar') ){
  527. if( elems.frame.is('.sd2-nav-bar, .sd2-nav-hanging') ){
  528. elems.horizNav.css('marginTop', parseInt( elems.horizNav.css('marginTop') ) - Math.round( elems.frame.find('.sd-nav-wrapper').outerHeight() / 2 ) + vertOffset );
  529. }
  530. }
  531. }
  532. }
  533. }
  534. deckNavigation();
  535. overlay();
  536. setOptions();
  537. deckAdjustments();
  538. bindScrollEventForDotUpdate();
  539. bindScrollEventForThumbUpdate();
  540. });
  541. };
  542. $(document).ready(function(){
  543. $('.lens-tool-kit .slidedeck').each(function(){
  544. if(typeof($.data(this, 'lens-tool-kit')) == 'undefined' || $.data(this, 'lens-tool-kit') == null){
  545. $.data(this, 'lens-tool-kit', new SlideDeckLens['tool-kit'](this));
  546. }
  547. });
  548. });
  549. })(jQuery);