Просмотр файла KoolTube/owl-carousel/owl.carousel.js

Размер файла: 51.66Kb
  1. /*
  2. * jQuery OwlCarousel v1.3.3
  3. *
  4. * Copyright (c) 2013 Bartosz Wojciechowski
  5. * http://www.owlgraphic.com/owlcarousel/
  6. *
  7. * Licensed under MIT
  8. *
  9. */
  10.  
  11. /*JS Lint helpers: */
  12. /*global dragMove: false, dragEnd: false, $, jQuery, alert, window, document */
  13. /*jslint nomen: true, continue:true */
  14.  
  15. if (typeof Object.create !== "function") {
  16. Object.create = function (obj) {
  17. function F() {}
  18. F.prototype = obj;
  19. return new F();
  20. };
  21. }
  22. (function ($, window, document) {
  23.  
  24. var Carousel = {
  25. init : function (options, el) {
  26. var base = this;
  27.  
  28. base.$elem = $(el);
  29. base.options = $.extend({}, $.fn.owlCarousel.options, base.$elem.data(), options);
  30.  
  31. base.userOptions = options;
  32. base.loadContent();
  33. },
  34.  
  35. loadContent : function () {
  36. var base = this, url;
  37.  
  38. function getData(data) {
  39. var i, content = "";
  40. if (typeof base.options.jsonSuccess === "function") {
  41. base.options.jsonSuccess.apply(this, [data]);
  42. } else {
  43. for (i in data.owl) {
  44. if (data.owl.hasOwnProperty(i)) {
  45. content += data.owl[i].item;
  46. }
  47. }
  48. base.$elem.html(content);
  49. }
  50. base.logIn();
  51. }
  52.  
  53. if (typeof base.options.beforeInit === "function") {
  54. base.options.beforeInit.apply(this, [base.$elem]);
  55. }
  56.  
  57. if (typeof base.options.jsonPath === "string") {
  58. url = base.options.jsonPath;
  59. $.getJSON(url, getData);
  60. } else {
  61. base.logIn();
  62. }
  63. },
  64.  
  65. logIn : function () {
  66. var base = this;
  67.  
  68. base.$elem.data({
  69. "owl-originalStyles": base.$elem.attr("style"),
  70. "owl-originalClasses": base.$elem.attr("class")
  71. });
  72.  
  73. base.$elem.css({opacity: 0});
  74. base.orignalItems = base.options.items;
  75. base.checkBrowser();
  76. base.wrapperWidth = 0;
  77. base.checkVisible = null;
  78. base.setVars();
  79. },
  80.  
  81. setVars : function () {
  82. var base = this;
  83. if (base.$elem.children().length === 0) {return false; }
  84. base.baseClass();
  85. base.eventTypes();
  86. base.$userItems = base.$elem.children();
  87. base.itemsAmount = base.$userItems.length;
  88. base.wrapItems();
  89. base.$owlItems = base.$elem.find(".owl-item");
  90. base.$owlWrapper = base.$elem.find(".owl-wrapper");
  91. base.playDirection = "next";
  92. base.prevItem = 0;
  93. base.prevArr = [0];
  94. base.currentItem = 0;
  95. base.customEvents();
  96. base.onStartup();
  97. },
  98.  
  99. onStartup : function () {
  100. var base = this;
  101. base.updateItems();
  102. base.calculateAll();
  103. base.buildControls();
  104. base.updateControls();
  105. base.response();
  106. base.moveEvents();
  107. base.stopOnHover();
  108. base.owlStatus();
  109.  
  110. if (base.options.transitionStyle !== false) {
  111. base.transitionTypes(base.options.transitionStyle);
  112. }
  113. if (base.options.autoPlay === true) {
  114. base.options.autoPlay = 5000;
  115. }
  116. base.play();
  117.  
  118. base.$elem.find(".owl-wrapper").css("display", "block");
  119.  
  120. if (!base.$elem.is(":visible")) {
  121. base.watchVisibility();
  122. } else {
  123. base.$elem.css("opacity", 1);
  124. }
  125. base.onstartup = false;
  126. base.eachMoveUpdate();
  127. if (typeof base.options.afterInit === "function") {
  128. base.options.afterInit.apply(this, [base.$elem]);
  129. }
  130. },
  131.  
  132. eachMoveUpdate : function () {
  133. var base = this;
  134.  
  135. if (base.options.lazyLoad === true) {
  136. base.lazyLoad();
  137. }
  138. if (base.options.autoHeight === true) {
  139. base.autoHeight();
  140. }
  141. base.onVisibleItems();
  142.  
  143. if (typeof base.options.afterAction === "function") {
  144. base.options.afterAction.apply(this, [base.$elem]);
  145. }
  146. },
  147.  
  148. updateVars : function () {
  149. var base = this;
  150. if (typeof base.options.beforeUpdate === "function") {
  151. base.options.beforeUpdate.apply(this, [base.$elem]);
  152. }
  153. base.watchVisibility();
  154. base.updateItems();
  155. base.calculateAll();
  156. base.updatePosition();
  157. base.updateControls();
  158. base.eachMoveUpdate();
  159. if (typeof base.options.afterUpdate === "function") {
  160. base.options.afterUpdate.apply(this, [base.$elem]);
  161. }
  162. },
  163.  
  164. reload : function () {
  165. var base = this;
  166. window.setTimeout(function () {
  167. base.updateVars();
  168. }, 0);
  169. },
  170.  
  171. watchVisibility : function () {
  172. var base = this;
  173.  
  174. if (base.$elem.is(":visible") === false) {
  175. base.$elem.css({opacity: 0});
  176. window.clearInterval(base.autoPlayInterval);
  177. window.clearInterval(base.checkVisible);
  178. } else {
  179. return false;
  180. }
  181. base.checkVisible = window.setInterval(function () {
  182. if (base.$elem.is(":visible")) {
  183. base.reload();
  184. base.$elem.animate({opacity: 1}, 200);
  185. window.clearInterval(base.checkVisible);
  186. }
  187. }, 500);
  188. },
  189.  
  190. wrapItems : function () {
  191. var base = this;
  192. base.$userItems.wrapAll("<div class=\"owl-wrapper\">").wrap("<div class=\"owl-item\"></div>");
  193. base.$elem.find(".owl-wrapper").wrap("<div class=\"owl-wrapper-outer\">");
  194. base.wrapperOuter = base.$elem.find(".owl-wrapper-outer");
  195. base.$elem.css("display", "block");
  196. },
  197.  
  198. baseClass : function () {
  199. var base = this,
  200. hasBaseClass = base.$elem.hasClass(base.options.baseClass),
  201. hasThemeClass = base.$elem.hasClass(base.options.theme);
  202.  
  203. if (!hasBaseClass) {
  204. base.$elem.addClass(base.options.baseClass);
  205. }
  206.  
  207. if (!hasThemeClass) {
  208. base.$elem.addClass(base.options.theme);
  209. }
  210. },
  211.  
  212. updateItems : function () {
  213. var base = this, width, i;
  214.  
  215. if (base.options.responsive === false) {
  216. return false;
  217. }
  218. if (base.options.singleItem === true) {
  219. base.options.items = base.orignalItems = 1;
  220. base.options.itemsCustom = false;
  221. base.options.itemsDesktop = false;
  222. base.options.itemsDesktopSmall = false;
  223. base.options.itemsTablet = false;
  224. base.options.itemsTabletSmall = false;
  225. base.options.itemsMobile = false;
  226. return false;
  227. }
  228.  
  229. width = $(base.options.responsiveBaseWidth).width();
  230.  
  231. if (width > (base.options.itemsDesktop[0] || base.orignalItems)) {
  232. base.options.items = base.orignalItems;
  233. }
  234. if (base.options.itemsCustom !== false) {
  235. //Reorder array by screen size
  236. base.options.itemsCustom.sort(function (a, b) {return a[0] - b[0]; });
  237.  
  238. for (i = 0; i < base.options.itemsCustom.length; i += 1) {
  239. if (base.options.itemsCustom[i][0] <= width) {
  240. base.options.items = base.options.itemsCustom[i][1];
  241. }
  242. }
  243.  
  244. } else {
  245.  
  246. if (width <= base.options.itemsDesktop[0] && base.options.itemsDesktop !== false) {
  247. base.options.items = base.options.itemsDesktop[1];
  248. }
  249.  
  250. if (width <= base.options.itemsDesktopSmall[0] && base.options.itemsDesktopSmall !== false) {
  251. base.options.items = base.options.itemsDesktopSmall[1];
  252. }
  253.  
  254. if (width <= base.options.itemsTablet[0] && base.options.itemsTablet !== false) {
  255. base.options.items = base.options.itemsTablet[1];
  256. }
  257.  
  258. if (width <= base.options.itemsTabletSmall[0] && base.options.itemsTabletSmall !== false) {
  259. base.options.items = base.options.itemsTabletSmall[1];
  260. }
  261.  
  262. if (width <= base.options.itemsMobile[0] && base.options.itemsMobile !== false) {
  263. base.options.items = base.options.itemsMobile[1];
  264. }
  265. }
  266.  
  267. //if number of items is less than declared
  268. if (base.options.items > base.itemsAmount && base.options.itemsScaleUp === true) {
  269. base.options.items = base.itemsAmount;
  270. }
  271. },
  272.  
  273. response : function () {
  274. var base = this,
  275. smallDelay,
  276. lastWindowWidth;
  277.  
  278. if (base.options.responsive !== true) {
  279. return false;
  280. }
  281. lastWindowWidth = $(window).width();
  282.  
  283. base.resizer = function () {
  284. if ($(window).width() !== lastWindowWidth) {
  285. if (base.options.autoPlay !== false) {
  286. window.clearInterval(base.autoPlayInterval);
  287. }
  288. window.clearTimeout(smallDelay);
  289. smallDelay = window.setTimeout(function () {
  290. lastWindowWidth = $(window).width();
  291. base.updateVars();
  292. }, base.options.responsiveRefreshRate);
  293. }
  294. };
  295. $(window).resize(base.resizer);
  296. },
  297.  
  298. updatePosition : function () {
  299. var base = this;
  300. base.jumpTo(base.currentItem);
  301. if (base.options.autoPlay !== false) {
  302. base.checkAp();
  303. }
  304. },
  305.  
  306. appendItemsSizes : function () {
  307. var base = this,
  308. roundPages = 0,
  309. lastItem = base.itemsAmount - base.options.items;
  310.  
  311. base.$owlItems.each(function (index) {
  312. var $this = $(this);
  313. $this
  314. .css({"width": base.itemWidth})
  315. .data("owl-item", Number(index));
  316.  
  317. if (index % base.options.items === 0 || index === lastItem) {
  318. if (!(index > lastItem)) {
  319. roundPages += 1;
  320. }
  321. }
  322. $this.data("owl-roundPages", roundPages);
  323. });
  324. },
  325.  
  326. appendWrapperSizes : function () {
  327. var base = this,
  328. width = base.$owlItems.length * base.itemWidth;
  329.  
  330. base.$owlWrapper.css({
  331. "width": width * 2,
  332. "left": 0
  333. });
  334. base.appendItemsSizes();
  335. },
  336.  
  337. calculateAll : function () {
  338. var base = this;
  339. base.calculateWidth();
  340. base.appendWrapperSizes();
  341. base.loops();
  342. base.max();
  343. },
  344.  
  345. calculateWidth : function () {
  346. var base = this;
  347. base.itemWidth = Math.round(base.$elem.width() / base.options.items);
  348. },
  349.  
  350. max : function () {
  351. var base = this,
  352. maximum = ((base.itemsAmount * base.itemWidth) - base.options.items * base.itemWidth) * -1;
  353. if (base.options.items > base.itemsAmount) {
  354. base.maximumItem = 0;
  355. maximum = 0;
  356. base.maximumPixels = 0;
  357. } else {
  358. base.maximumItem = base.itemsAmount - base.options.items;
  359. base.maximumPixels = maximum;
  360. }
  361. return maximum;
  362. },
  363.  
  364. min : function () {
  365. return 0;
  366. },
  367.  
  368. loops : function () {
  369. var base = this,
  370. prev = 0,
  371. elWidth = 0,
  372. i,
  373. item,
  374. roundPageNum;
  375.  
  376. base.positionsInArray = [0];
  377. base.pagesInArray = [];
  378.  
  379. for (i = 0; i < base.itemsAmount; i += 1) {
  380. elWidth += base.itemWidth;
  381. base.positionsInArray.push(-elWidth);
  382.  
  383. if (base.options.scrollPerPage === true) {
  384. item = $(base.$owlItems[i]);
  385. roundPageNum = item.data("owl-roundPages");
  386. if (roundPageNum !== prev) {
  387. base.pagesInArray[prev] = base.positionsInArray[i];
  388. prev = roundPageNum;
  389. }
  390. }
  391. }
  392. },
  393.  
  394. buildControls : function () {
  395. var base = this;
  396. if (base.options.navigation === true || base.options.pagination === true) {
  397. base.owlControls = $("<div class=\"owl-controls\"/>").toggleClass("clickable", !base.browser.isTouch).appendTo(base.$elem);
  398. }
  399. if (base.options.pagination === true) {
  400. base.buildPagination();
  401. }
  402. if (base.options.navigation === true) {
  403. base.buildButtons();
  404. }
  405. },
  406.  
  407. buildButtons : function () {
  408. var base = this,
  409. buttonsWrapper = $("<div class=\"owl-buttons\"/>");
  410. base.owlControls.append(buttonsWrapper);
  411.  
  412. base.buttonPrev = $("<div/>", {
  413. "class" : "owl-prev",
  414. "html" : base.options.navigationText[0] || ""
  415. });
  416.  
  417. base.buttonNext = $("<div/>", {
  418. "class" : "owl-next",
  419. "html" : base.options.navigationText[1] || ""
  420. });
  421.  
  422. buttonsWrapper
  423. .append(base.buttonPrev)
  424. .append(base.buttonNext);
  425.  
  426. buttonsWrapper.on("touchstart.owlControls mousedown.owlControls", "div[class^=\"owl\"]", function (event) {
  427. event.preventDefault();
  428. });
  429.  
  430. buttonsWrapper.on("touchend.owlControls mouseup.owlControls", "div[class^=\"owl\"]", function (event) {
  431. event.preventDefault();
  432. if ($(this).hasClass("owl-next")) {
  433. base.next();
  434. } else {
  435. base.prev();
  436. }
  437. });
  438. },
  439.  
  440. buildPagination : function () {
  441. var base = this;
  442.  
  443. base.paginationWrapper = $("<div class=\"owl-pagination\"/>");
  444. base.owlControls.append(base.paginationWrapper);
  445.  
  446. base.paginationWrapper.on("touchend.owlControls mouseup.owlControls", ".owl-page", function (event) {
  447. event.preventDefault();
  448. if (Number($(this).data("owl-page")) !== base.currentItem) {
  449. base.goTo(Number($(this).data("owl-page")), true);
  450. }
  451. });
  452. },
  453.  
  454. updatePagination : function () {
  455. var base = this,
  456. counter,
  457. lastPage,
  458. lastItem,
  459. i,
  460. paginationButton,
  461. paginationButtonInner;
  462.  
  463. if (base.options.pagination === false) {
  464. return false;
  465. }
  466.  
  467. base.paginationWrapper.html("");
  468.  
  469. counter = 0;
  470. lastPage = base.itemsAmount - base.itemsAmount % base.options.items;
  471.  
  472. for (i = 0; i < base.itemsAmount; i += 1) {
  473. if (i % base.options.items === 0) {
  474. counter += 1;
  475. if (lastPage === i) {
  476. lastItem = base.itemsAmount - base.options.items;
  477. }
  478. paginationButton = $("<div/>", {
  479. "class" : "owl-page"
  480. });
  481. paginationButtonInner = $("<span></span>", {
  482. "text": base.options.paginationNumbers === true ? counter : "",
  483. "class": base.options.paginationNumbers === true ? "owl-numbers" : ""
  484. });
  485. paginationButton.append(paginationButtonInner);
  486.  
  487. paginationButton.data("owl-page", lastPage === i ? lastItem : i);
  488. paginationButton.data("owl-roundPages", counter);
  489.  
  490. base.paginationWrapper.append(paginationButton);
  491. }
  492. }
  493. base.checkPagination();
  494. },
  495. checkPagination : function () {
  496. var base = this;
  497. if (base.options.pagination === false) {
  498. return false;
  499. }
  500. base.paginationWrapper.find(".owl-page").each(function () {
  501. if ($(this).data("owl-roundPages") === $(base.$owlItems[base.currentItem]).data("owl-roundPages")) {
  502. base.paginationWrapper
  503. .find(".owl-page")
  504. .removeClass("active");
  505. $(this).addClass("active");
  506. }
  507. });
  508. },
  509.  
  510. checkNavigation : function () {
  511. var base = this;
  512.  
  513. if (base.options.navigation === false) {
  514. return false;
  515. }
  516. if (base.options.rewindNav === false) {
  517. if (base.currentItem === 0 && base.maximumItem === 0) {
  518. base.buttonPrev.addClass("disabled");
  519. base.buttonNext.addClass("disabled");
  520. } else if (base.currentItem === 0 && base.maximumItem !== 0) {
  521. base.buttonPrev.addClass("disabled");
  522. base.buttonNext.removeClass("disabled");
  523. } else if (base.currentItem === base.maximumItem) {
  524. base.buttonPrev.removeClass("disabled");
  525. base.buttonNext.addClass("disabled");
  526. } else if (base.currentItem !== 0 && base.currentItem !== base.maximumItem) {
  527. base.buttonPrev.removeClass("disabled");
  528. base.buttonNext.removeClass("disabled");
  529. }
  530. }
  531. },
  532.  
  533. updateControls : function () {
  534. var base = this;
  535. base.updatePagination();
  536. base.checkNavigation();
  537. if (base.owlControls) {
  538. if (base.options.items >= base.itemsAmount) {
  539. base.owlControls.hide();
  540. } else {
  541. base.owlControls.show();
  542. }
  543. }
  544. },
  545.  
  546. destroyControls : function () {
  547. var base = this;
  548. if (base.owlControls) {
  549. base.owlControls.remove();
  550. }
  551. },
  552.  
  553. next : function (speed) {
  554. var base = this;
  555.  
  556. if (base.isTransition) {
  557. return false;
  558. }
  559.  
  560. base.currentItem += base.options.scrollPerPage === true ? base.options.items : 1;
  561. if (base.currentItem > base.maximumItem + (base.options.scrollPerPage === true ? (base.options.items - 1) : 0)) {
  562. if (base.options.rewindNav === true) {
  563. base.currentItem = 0;
  564. speed = "rewind";
  565. } else {
  566. base.currentItem = base.maximumItem;
  567. return false;
  568. }
  569. }
  570. base.goTo(base.currentItem, speed);
  571. },
  572.  
  573. prev : function (speed) {
  574. var base = this;
  575.  
  576. if (base.isTransition) {
  577. return false;
  578. }
  579.  
  580. if (base.options.scrollPerPage === true && base.currentItem > 0 && base.currentItem < base.options.items) {
  581. base.currentItem = 0;
  582. } else {
  583. base.currentItem -= base.options.scrollPerPage === true ? base.options.items : 1;
  584. }
  585. if (base.currentItem < 0) {
  586. if (base.options.rewindNav === true) {
  587. base.currentItem = base.maximumItem;
  588. speed = "rewind";
  589. } else {
  590. base.currentItem = 0;
  591. return false;
  592. }
  593. }
  594. base.goTo(base.currentItem, speed);
  595. },
  596.  
  597. goTo : function (position, speed, drag) {
  598. var base = this,
  599. goToPixel;
  600.  
  601. if (base.isTransition) {
  602. return false;
  603. }
  604. if (typeof base.options.beforeMove === "function") {
  605. base.options.beforeMove.apply(this, [base.$elem]);
  606. }
  607. if (position >= base.maximumItem) {
  608. position = base.maximumItem;
  609. } else if (position <= 0) {
  610. position = 0;
  611. }
  612.  
  613. base.currentItem = base.owl.currentItem = position;
  614. if (base.options.transitionStyle !== false && drag !== "drag" && base.options.items === 1 && base.browser.support3d === true) {
  615. base.swapSpeed(0);
  616. if (base.browser.support3d === true) {
  617. base.transition3d(base.positionsInArray[position]);
  618. } else {
  619. base.css2slide(base.positionsInArray[position], 1);
  620. }
  621. base.afterGo();
  622. base.singleItemTransition();
  623. return false;
  624. }
  625. goToPixel = base.positionsInArray[position];
  626.  
  627. if (base.browser.support3d === true) {
  628. base.isCss3Finish = false;
  629.  
  630. if (speed === true) {
  631. base.swapSpeed("paginationSpeed");
  632. window.setTimeout(function () {
  633. base.isCss3Finish = true;
  634. }, base.options.paginationSpeed);
  635.  
  636. } else if (speed === "rewind") {
  637. base.swapSpeed(base.options.rewindSpeed);
  638. window.setTimeout(function () {
  639. base.isCss3Finish = true;
  640. }, base.options.rewindSpeed);
  641.  
  642. } else {
  643. base.swapSpeed("slideSpeed");
  644. window.setTimeout(function () {
  645. base.isCss3Finish = true;
  646. }, base.options.slideSpeed);
  647. }
  648. base.transition3d(goToPixel);
  649. } else {
  650. if (speed === true) {
  651. base.css2slide(goToPixel, base.options.paginationSpeed);
  652. } else if (speed === "rewind") {
  653. base.css2slide(goToPixel, base.options.rewindSpeed);
  654. } else {
  655. base.css2slide(goToPixel, base.options.slideSpeed);
  656. }
  657. }
  658. base.afterGo();
  659. },
  660.  
  661. jumpTo : function (position) {
  662. var base = this;
  663. if (typeof base.options.beforeMove === "function") {
  664. base.options.beforeMove.apply(this, [base.$elem]);
  665. }
  666. if (position >= base.maximumItem || position === -1) {
  667. position = base.maximumItem;
  668. } else if (position <= 0) {
  669. position = 0;
  670. }
  671. base.swapSpeed(0);
  672. if (base.browser.support3d === true) {
  673. base.transition3d(base.positionsInArray[position]);
  674. } else {
  675. base.css2slide(base.positionsInArray[position], 1);
  676. }
  677. base.currentItem = base.owl.currentItem = position;
  678. base.afterGo();
  679. },
  680.  
  681. afterGo : function () {
  682. var base = this;
  683.  
  684. base.prevArr.push(base.currentItem);
  685. base.prevItem = base.owl.prevItem = base.prevArr[base.prevArr.length - 2];
  686. base.prevArr.shift(0);
  687.  
  688. if (base.prevItem !== base.currentItem) {
  689. base.checkPagination();
  690. base.checkNavigation();
  691. base.eachMoveUpdate();
  692.  
  693. if (base.options.autoPlay !== false) {
  694. base.checkAp();
  695. }
  696. }
  697. if (typeof base.options.afterMove === "function" && base.prevItem !== base.currentItem) {
  698. base.options.afterMove.apply(this, [base.$elem]);
  699. }
  700. },
  701.  
  702. stop : function () {
  703. var base = this;
  704. base.apStatus = "stop";
  705. window.clearInterval(base.autoPlayInterval);
  706. },
  707.  
  708. checkAp : function () {
  709. var base = this;
  710. if (base.apStatus !== "stop") {
  711. base.play();
  712. }
  713. },
  714.  
  715. play : function () {
  716. var base = this;
  717. base.apStatus = "play";
  718. if (base.options.autoPlay === false) {
  719. return false;
  720. }
  721. window.clearInterval(base.autoPlayInterval);
  722. base.autoPlayInterval = window.setInterval(function () {
  723. base.next(true);
  724. }, base.options.autoPlay);
  725. },
  726.  
  727. swapSpeed : function (action) {
  728. var base = this;
  729. if (action === "slideSpeed") {
  730. base.$owlWrapper.css(base.addCssSpeed(base.options.slideSpeed));
  731. } else if (action === "paginationSpeed") {
  732. base.$owlWrapper.css(base.addCssSpeed(base.options.paginationSpeed));
  733. } else if (typeof action !== "string") {
  734. base.$owlWrapper.css(base.addCssSpeed(action));
  735. }
  736. },
  737.  
  738. addCssSpeed : function (speed) {
  739. return {
  740. "-webkit-transition": "all " + speed + "ms ease",
  741. "-moz-transition": "all " + speed + "ms ease",
  742. "-o-transition": "all " + speed + "ms ease",
  743. "transition": "all " + speed + "ms ease"
  744. };
  745. },
  746.  
  747. removeTransition : function () {
  748. return {
  749. "-webkit-transition": "",
  750. "-moz-transition": "",
  751. "-o-transition": "",
  752. "transition": ""
  753. };
  754. },
  755.  
  756. doTranslate : function (pixels) {
  757. return {
  758. "-webkit-transform": "translate3d(" + pixels + "px, 0px, 0px)",
  759. "-moz-transform": "translate3d(" + pixels + "px, 0px, 0px)",
  760. "-o-transform": "translate3d(" + pixels + "px, 0px, 0px)",
  761. "-ms-transform": "translate3d(" + pixels + "px, 0px, 0px)",
  762. "transform": "translate3d(" + pixels + "px, 0px,0px)"
  763. };
  764. },
  765.  
  766. transition3d : function (value) {
  767. var base = this;
  768. base.$owlWrapper.css(base.doTranslate(value));
  769. },
  770.  
  771. css2move : function (value) {
  772. var base = this;
  773. base.$owlWrapper.css({"left" : value});
  774. },
  775.  
  776. css2slide : function (value, speed) {
  777. var base = this;
  778.  
  779. base.isCssFinish = false;
  780. base.$owlWrapper.stop(true, true).animate({
  781. "left" : value
  782. }, {
  783. duration : speed || base.options.slideSpeed,
  784. complete : function () {
  785. base.isCssFinish = true;
  786. }
  787. });
  788. },
  789.  
  790. checkBrowser : function () {
  791. var base = this,
  792. translate3D = "translate3d(0px, 0px, 0px)",
  793. tempElem = document.createElement("div"),
  794. regex,
  795. asSupport,
  796. support3d,
  797. isTouch;
  798.  
  799. tempElem.style.cssText = " -moz-transform:" + translate3D +
  800. "; -ms-transform:" + translate3D +
  801. "; -o-transform:" + translate3D +
  802. "; -webkit-transform:" + translate3D +
  803. "; transform:" + translate3D;
  804. regex = /translate3d\(0px, 0px, 0px\)/g;
  805. asSupport = tempElem.style.cssText.match(regex);
  806. support3d = (asSupport !== null && asSupport.length === 1);
  807.  
  808. isTouch = "ontouchstart" in window || window.navigator.msMaxTouchPoints;
  809.  
  810. base.browser = {
  811. "support3d" : support3d,
  812. "isTouch" : isTouch
  813. };
  814. },
  815.  
  816. moveEvents : function () {
  817. var base = this;
  818. if (base.options.mouseDrag !== false || base.options.touchDrag !== false) {
  819. base.gestures();
  820. base.disabledEvents();
  821. }
  822. },
  823.  
  824. eventTypes : function () {
  825. var base = this,
  826. types = ["s", "e", "x"];
  827.  
  828. base.ev_types = {};
  829.  
  830. if (base.options.mouseDrag === true && base.options.touchDrag === true) {
  831. types = [
  832. "touchstart.owl mousedown.owl",
  833. "touchmove.owl mousemove.owl",
  834. "touchend.owl touchcancel.owl mouseup.owl"
  835. ];
  836. } else if (base.options.mouseDrag === false && base.options.touchDrag === true) {
  837. types = [
  838. "touchstart.owl",
  839. "touchmove.owl",
  840. "touchend.owl touchcancel.owl"
  841. ];
  842. } else if (base.options.mouseDrag === true && base.options.touchDrag === false) {
  843. types = [
  844. "mousedown.owl",
  845. "mousemove.owl",
  846. "mouseup.owl"
  847. ];
  848. }
  849.  
  850. base.ev_types.start = types[0];
  851. base.ev_types.move = types[1];
  852. base.ev_types.end = types[2];
  853. },
  854.  
  855. disabledEvents : function () {
  856. var base = this;
  857. base.$elem.on("dragstart.owl", function (event) { event.preventDefault(); });
  858. base.$elem.on("mousedown.disableTextSelect", function (e) {
  859. return $(e.target).is('input, textarea, select, option');
  860. });
  861. },
  862.  
  863. gestures : function () {
  864. /*jslint unparam: true*/
  865. var base = this,
  866. locals = {
  867. offsetX : 0,
  868. offsetY : 0,
  869. baseElWidth : 0,
  870. relativePos : 0,
  871. position: null,
  872. minSwipe : null,
  873. maxSwipe: null,
  874. sliding : null,
  875. dargging: null,
  876. targetElement : null
  877. };
  878.  
  879. base.isCssFinish = true;
  880.  
  881. function getTouches(event) {
  882. if (event.touches !== undefined) {
  883. return {
  884. x : event.touches[0].pageX,
  885. y : event.touches[0].pageY
  886. };
  887. }
  888.  
  889. if (event.touches === undefined) {
  890. if (event.pageX !== undefined) {
  891. return {
  892. x : event.pageX,
  893. y : event.pageY
  894. };
  895. }
  896. if (event.pageX === undefined) {
  897. return {
  898. x : event.clientX,
  899. y : event.clientY
  900. };
  901. }
  902. }
  903. }
  904.  
  905. function swapEvents(type) {
  906. if (type === "on") {
  907. $(document).on(base.ev_types.move, dragMove);
  908. $(document).on(base.ev_types.end, dragEnd);
  909. } else if (type === "off") {
  910. $(document).off(base.ev_types.move);
  911. $(document).off(base.ev_types.end);
  912. }
  913. }
  914.  
  915. function dragStart(event) {
  916. var ev = event.originalEvent || event || window.event,
  917. position;
  918.  
  919. if (ev.which === 3) {
  920. return false;
  921. }
  922. if (base.itemsAmount <= base.options.items) {
  923. return;
  924. }
  925. if (base.isCssFinish === false && !base.options.dragBeforeAnimFinish) {
  926. return false;
  927. }
  928. if (base.isCss3Finish === false && !base.options.dragBeforeAnimFinish) {
  929. return false;
  930. }
  931.  
  932. if (base.options.autoPlay !== false) {
  933. window.clearInterval(base.autoPlayInterval);
  934. }
  935.  
  936. if (base.browser.isTouch !== true && !base.$owlWrapper.hasClass("grabbing")) {
  937. base.$owlWrapper.addClass("grabbing");
  938. }
  939.  
  940. base.newPosX = 0;
  941. base.newRelativeX = 0;
  942.  
  943. $(this).css(base.removeTransition());
  944.  
  945. position = $(this).position();
  946. locals.relativePos = position.left;
  947.  
  948. locals.offsetX = getTouches(ev).x - position.left;
  949. locals.offsetY = getTouches(ev).y - position.top;
  950.  
  951. swapEvents("on");
  952.  
  953. locals.sliding = false;
  954. locals.targetElement = ev.target || ev.srcElement;
  955. }
  956.  
  957. function dragMove(event) {
  958. var ev = event.originalEvent || event || window.event,
  959. minSwipe,
  960. maxSwipe;
  961.  
  962. base.newPosX = getTouches(ev).x - locals.offsetX;
  963. base.newPosY = getTouches(ev).y - locals.offsetY;
  964. base.newRelativeX = base.newPosX - locals.relativePos;
  965.  
  966. if (typeof base.options.startDragging === "function" && locals.dragging !== true && base.newRelativeX !== 0) {
  967. locals.dragging = true;
  968. base.options.startDragging.apply(base, [base.$elem]);
  969. }
  970.  
  971. if ((base.newRelativeX > 8 || base.newRelativeX < -8) && (base.browser.isTouch === true)) {
  972. if (ev.preventDefault !== undefined) {
  973. ev.preventDefault();
  974. } else {
  975. ev.returnValue = false;
  976. }
  977. locals.sliding = true;
  978. }
  979.  
  980. if ((base.newPosY > 10 || base.newPosY < -10) && locals.sliding === false) {
  981. $(document).off("touchmove.owl");
  982. }
  983.  
  984. minSwipe = function () {
  985. return base.newRelativeX / 5;
  986. };
  987.  
  988. maxSwipe = function () {
  989. return base.maximumPixels + base.newRelativeX / 5;
  990. };
  991.  
  992. base.newPosX = Math.max(Math.min(base.newPosX, minSwipe()), maxSwipe());
  993. if (base.browser.support3d === true) {
  994. base.transition3d(base.newPosX);
  995. } else {
  996. base.css2move(base.newPosX);
  997. }
  998. }
  999.  
  1000. function dragEnd(event) {
  1001. var ev = event.originalEvent || event || window.event,
  1002. newPosition,
  1003. handlers,
  1004. owlStopEvent;
  1005.  
  1006. ev.target = ev.target || ev.srcElement;
  1007.  
  1008. locals.dragging = false;
  1009.  
  1010. if (base.browser.isTouch !== true) {
  1011. base.$owlWrapper.removeClass("grabbing");
  1012. }
  1013.  
  1014. if (base.newRelativeX < 0) {
  1015. base.dragDirection = base.owl.dragDirection = "left";
  1016. } else {
  1017. base.dragDirection = base.owl.dragDirection = "right";
  1018. }
  1019.  
  1020. if (base.newRelativeX !== 0) {
  1021. newPosition = base.getNewPosition();
  1022. base.goTo(newPosition, false, "drag");
  1023. if (locals.targetElement === ev.target && base.browser.isTouch !== true) {
  1024. $(ev.target).on("click.disable", function (ev) {
  1025. ev.stopImmediatePropagation();
  1026. ev.stopPropagation();
  1027. ev.preventDefault();
  1028. $(ev.target).off("click.disable");
  1029. });
  1030. handlers = $._data(ev.target, "events").click;
  1031. owlStopEvent = handlers.pop();
  1032. handlers.splice(0, 0, owlStopEvent);
  1033. }
  1034. }
  1035. swapEvents("off");
  1036. }
  1037. base.$elem.on(base.ev_types.start, ".owl-wrapper", dragStart);
  1038. },
  1039.  
  1040. getNewPosition : function () {
  1041. var base = this,
  1042. newPosition = base.closestItem();
  1043.  
  1044. if (newPosition > base.maximumItem) {
  1045. base.currentItem = base.maximumItem;
  1046. newPosition = base.maximumItem;
  1047. } else if (base.newPosX >= 0) {
  1048. newPosition = 0;
  1049. base.currentItem = 0;
  1050. }
  1051. return newPosition;
  1052. },
  1053. closestItem : function () {
  1054. var base = this,
  1055. array = base.options.scrollPerPage === true ? base.pagesInArray : base.positionsInArray,
  1056. goal = base.newPosX,
  1057. closest = null;
  1058.  
  1059. $.each(array, function (i, v) {
  1060. if (goal - (base.itemWidth / 20) > array[i + 1] && goal - (base.itemWidth / 20) < v && base.moveDirection() === "left") {
  1061. closest = v;
  1062. if (base.options.scrollPerPage === true) {
  1063. base.currentItem = $.inArray(closest, base.positionsInArray);
  1064. } else {
  1065. base.currentItem = i;
  1066. }
  1067. } else if (goal + (base.itemWidth / 20) < v && goal + (base.itemWidth / 20) > (array[i + 1] || array[i] - base.itemWidth) && base.moveDirection() === "right") {
  1068. if (base.options.scrollPerPage === true) {
  1069. closest = array[i + 1] || array[array.length - 1];
  1070. base.currentItem = $.inArray(closest, base.positionsInArray);
  1071. } else {
  1072. closest = array[i + 1];
  1073. base.currentItem = i + 1;
  1074. }
  1075. }
  1076. });
  1077. return base.currentItem;
  1078. },
  1079.  
  1080. moveDirection : function () {
  1081. var base = this,
  1082. direction;
  1083. if (base.newRelativeX < 0) {
  1084. direction = "right";
  1085. base.playDirection = "next";
  1086. } else {
  1087. direction = "left";
  1088. base.playDirection = "prev";
  1089. }
  1090. return direction;
  1091. },
  1092.  
  1093. customEvents : function () {
  1094. /*jslint unparam: true*/
  1095. var base = this;
  1096. base.$elem.on("owl.next", function () {
  1097. base.next();
  1098. });
  1099. base.$elem.on("owl.prev", function () {
  1100. base.prev();
  1101. });
  1102. base.$elem.on("owl.play", function (event, speed) {
  1103. base.options.autoPlay = speed;
  1104. base.play();
  1105. base.hoverStatus = "play";
  1106. });
  1107. base.$elem.on("owl.stop", function () {
  1108. base.stop();
  1109. base.hoverStatus = "stop";
  1110. });
  1111. base.$elem.on("owl.goTo", function (event, item) {
  1112. base.goTo(item);
  1113. });
  1114. base.$elem.on("owl.jumpTo", function (event, item) {
  1115. base.jumpTo(item);
  1116. });
  1117. },
  1118.  
  1119. stopOnHover : function () {
  1120. var base = this;
  1121. if (base.options.stopOnHover === true && base.browser.isTouch !== true && base.options.autoPlay !== false) {
  1122. base.$elem.on("mouseover", function () {
  1123. base.stop();
  1124. });
  1125. base.$elem.on("mouseout", function () {
  1126. if (base.hoverStatus !== "stop") {
  1127. base.play();
  1128. }
  1129. });
  1130. }
  1131. },
  1132.  
  1133. lazyLoad : function () {
  1134. var base = this,
  1135. i,
  1136. $item,
  1137. itemNumber,
  1138. $lazyImg,
  1139. follow;
  1140.  
  1141. if (base.options.lazyLoad === false) {
  1142. return false;
  1143. }
  1144. for (i = 0; i < base.itemsAmount; i += 1) {
  1145. $item = $(base.$owlItems[i]);
  1146.  
  1147. if ($item.data("owl-loaded") === "loaded") {
  1148. continue;
  1149. }
  1150.  
  1151. itemNumber = $item.data("owl-item");
  1152. $lazyImg = $item.find(".lazyOwl");
  1153.  
  1154. if (typeof $lazyImg.data("src") !== "string") {
  1155. $item.data("owl-loaded", "loaded");
  1156. continue;
  1157. }
  1158. if ($item.data("owl-loaded") === undefined) {
  1159. $lazyImg.hide();
  1160. $item.addClass("loading").data("owl-loaded", "checked");
  1161. }
  1162. if (base.options.lazyFollow === true) {
  1163. follow = itemNumber >= base.currentItem;
  1164. } else {
  1165. follow = true;
  1166. }
  1167. if (follow && itemNumber < base.currentItem + base.options.items && $lazyImg.length) {
  1168. $lazyImg.each(function() {
  1169. base.lazyPreload($item, $(this));
  1170. });
  1171. }
  1172. }
  1173. },
  1174.  
  1175. lazyPreload : function ($item, $lazyImg) {
  1176. var base = this,
  1177. iterations = 0,
  1178. isBackgroundImg;
  1179.  
  1180. if ($lazyImg.prop("tagName") === "DIV") {
  1181. $lazyImg.css("background-image", "url(" + $lazyImg.data("src") + ")");
  1182. isBackgroundImg = true;
  1183. } else {
  1184. $lazyImg[0].src = $lazyImg.data("src");
  1185. }
  1186.  
  1187. function showImage() {
  1188. $item.data("owl-loaded", "loaded").removeClass("loading");
  1189. $lazyImg.removeAttr("data-src");
  1190. if (base.options.lazyEffect === "fade") {
  1191. $lazyImg.fadeIn(400);
  1192. } else {
  1193. $lazyImg.show();
  1194. }
  1195. if (typeof base.options.afterLazyLoad === "function") {
  1196. base.options.afterLazyLoad.apply(this, [base.$elem]);
  1197. }
  1198. }
  1199.  
  1200. function checkLazyImage() {
  1201. iterations += 1;
  1202. if (base.completeImg($lazyImg.get(0)) || isBackgroundImg === true) {
  1203. showImage();
  1204. } else if (iterations <= 100) {//if image loads in less than 10 seconds
  1205. window.setTimeout(checkLazyImage, 100);
  1206. } else {
  1207. showImage();
  1208. }
  1209. }
  1210.  
  1211. checkLazyImage();
  1212. },
  1213.  
  1214. autoHeight : function () {
  1215. var base = this,
  1216. $currentimg = $(base.$owlItems[base.currentItem]).find("img"),
  1217. iterations;
  1218.  
  1219. function addHeight() {
  1220. var $currentItem = $(base.$owlItems[base.currentItem]).height();
  1221. base.wrapperOuter.css("height", $currentItem + "px");
  1222. if (!base.wrapperOuter.hasClass("autoHeight")) {
  1223. window.setTimeout(function () {
  1224. base.wrapperOuter.addClass("autoHeight");
  1225. }, 0);
  1226. }
  1227. }
  1228.  
  1229. function checkImage() {
  1230. iterations += 1;
  1231. if (base.completeImg($currentimg.get(0))) {
  1232. addHeight();
  1233. } else if (iterations <= 100) { //if image loads in less than 10 seconds
  1234. window.setTimeout(checkImage, 100);
  1235. } else {
  1236. base.wrapperOuter.css("height", ""); //Else remove height attribute
  1237. }
  1238. }
  1239.  
  1240. if ($currentimg.get(0) !== undefined) {
  1241. iterations = 0;
  1242. checkImage();
  1243. } else {
  1244. addHeight();
  1245. }
  1246. },
  1247.  
  1248. completeImg : function (img) {
  1249. var naturalWidthType;
  1250.  
  1251. if (!img.complete) {
  1252. return false;
  1253. }
  1254. naturalWidthType = typeof img.naturalWidth;
  1255. if (naturalWidthType !== "undefined" && img.naturalWidth === 0) {
  1256. return false;
  1257. }
  1258. return true;
  1259. },
  1260.  
  1261. onVisibleItems : function () {
  1262. var base = this,
  1263. i;
  1264.  
  1265. if (base.options.addClassActive === true) {
  1266. base.$owlItems.removeClass("active");
  1267. }
  1268. base.visibleItems = [];
  1269. for (i = base.currentItem; i < base.currentItem + base.options.items; i += 1) {
  1270. base.visibleItems.push(i);
  1271.  
  1272. if (base.options.addClassActive === true) {
  1273. $(base.$owlItems[i]).addClass("active");
  1274. }
  1275. }
  1276. base.owl.visibleItems = base.visibleItems;
  1277. },
  1278.  
  1279. transitionTypes : function (className) {
  1280. var base = this;
  1281. //Currently available: "fade", "backSlide", "goDown", "fadeUp"
  1282. base.outClass = "owl-" + className + "-out";
  1283. base.inClass = "owl-" + className + "-in";
  1284. },
  1285.  
  1286. singleItemTransition : function () {
  1287. var base = this,
  1288. outClass = base.outClass,
  1289. inClass = base.inClass,
  1290. $currentItem = base.$owlItems.eq(base.currentItem),
  1291. $prevItem = base.$owlItems.eq(base.prevItem),
  1292. prevPos = Math.abs(base.positionsInArray[base.currentItem]) + base.positionsInArray[base.prevItem],
  1293. origin = Math.abs(base.positionsInArray[base.currentItem]) + base.itemWidth / 2,
  1294. animEnd = 'webkitAnimationEnd oAnimationEnd MSAnimationEnd animationend';
  1295.  
  1296. base.isTransition = true;
  1297.  
  1298. base.$owlWrapper
  1299. .addClass('owl-origin')
  1300. .css({
  1301. "-webkit-transform-origin" : origin + "px",
  1302. "-moz-perspective-origin" : origin + "px",
  1303. "perspective-origin" : origin + "px"
  1304. });
  1305. function transStyles(prevPos) {
  1306. return {
  1307. "position" : "relative",
  1308. "left" : prevPos + "px"
  1309. };
  1310. }
  1311.  
  1312. $prevItem
  1313. .css(transStyles(prevPos, 10))
  1314. .addClass(outClass)
  1315. .on(animEnd, function () {
  1316. base.endPrev = true;
  1317. $prevItem.off(animEnd);
  1318. base.clearTransStyle($prevItem, outClass);
  1319. });
  1320.  
  1321. $currentItem
  1322. .addClass(inClass)
  1323. .on(animEnd, function () {
  1324. base.endCurrent = true;
  1325. $currentItem.off(animEnd);
  1326. base.clearTransStyle($currentItem, inClass);
  1327. });
  1328. },
  1329.  
  1330. clearTransStyle : function (item, classToRemove) {
  1331. var base = this;
  1332. item.css({
  1333. "position" : "",
  1334. "left" : ""
  1335. }).removeClass(classToRemove);
  1336.  
  1337. if (base.endPrev && base.endCurrent) {
  1338. base.$owlWrapper.removeClass('owl-origin');
  1339. base.endPrev = false;
  1340. base.endCurrent = false;
  1341. base.isTransition = false;
  1342. }
  1343. },
  1344.  
  1345. owlStatus : function () {
  1346. var base = this;
  1347. base.owl = {
  1348. "userOptions" : base.userOptions,
  1349. "baseElement" : base.$elem,
  1350. "userItems" : base.$userItems,
  1351. "owlItems" : base.$owlItems,
  1352. "currentItem" : base.currentItem,
  1353. "prevItem" : base.prevItem,
  1354. "visibleItems" : base.visibleItems,
  1355. "isTouch" : base.browser.isTouch,
  1356. "browser" : base.browser,
  1357. "dragDirection" : base.dragDirection
  1358. };
  1359. },
  1360.  
  1361. clearEvents : function () {
  1362. var base = this;
  1363. base.$elem.off(".owl owl mousedown.disableTextSelect");
  1364. $(document).off(".owl owl");
  1365. $(window).off("resize", base.resizer);
  1366. },
  1367.  
  1368. unWrap : function () {
  1369. var base = this;
  1370. if (base.$elem.children().length !== 0) {
  1371. base.$owlWrapper.unwrap();
  1372. base.$userItems.unwrap().unwrap();
  1373. if (base.owlControls) {
  1374. base.owlControls.remove();
  1375. }
  1376. }
  1377. base.clearEvents();
  1378. base.$elem.attr({
  1379. style: base.$elem.data("owl-originalStyles") || "",
  1380. class: base.$elem.data("owl-originalClasses")
  1381. });
  1382. },
  1383.  
  1384. destroy : function () {
  1385. var base = this;
  1386. base.stop();
  1387. window.clearInterval(base.checkVisible);
  1388. base.unWrap();
  1389. base.$elem.removeData();
  1390. },
  1391.  
  1392. reinit : function (newOptions) {
  1393. var base = this,
  1394. options = $.extend({}, base.userOptions, newOptions);
  1395. base.unWrap();
  1396. base.init(options, base.$elem);
  1397. },
  1398.  
  1399. addItem : function (htmlString, targetPosition) {
  1400. var base = this,
  1401. position;
  1402.  
  1403. if (!htmlString) {return false; }
  1404.  
  1405. if (base.$elem.children().length === 0) {
  1406. base.$elem.append(htmlString);
  1407. base.setVars();
  1408. return false;
  1409. }
  1410. base.unWrap();
  1411. if (targetPosition === undefined || targetPosition === -1) {
  1412. position = -1;
  1413. } else {
  1414. position = targetPosition;
  1415. }
  1416. if (position >= base.$userItems.length || position === -1) {
  1417. base.$userItems.eq(-1).after(htmlString);
  1418. } else {
  1419. base.$userItems.eq(position).before(htmlString);
  1420. }
  1421.  
  1422. base.setVars();
  1423. },
  1424.  
  1425. removeItem : function (targetPosition) {
  1426. var base = this,
  1427. position;
  1428.  
  1429. if (base.$elem.children().length === 0) {
  1430. return false;
  1431. }
  1432. if (targetPosition === undefined || targetPosition === -1) {
  1433. position = -1;
  1434. } else {
  1435. position = targetPosition;
  1436. }
  1437.  
  1438. base.unWrap();
  1439. base.$userItems.eq(position).remove();
  1440. base.setVars();
  1441. }
  1442.  
  1443. };
  1444.  
  1445. $.fn.owlCarousel = function (options) {
  1446. return this.each(function () {
  1447. if ($(this).data("owl-init") === true) {
  1448. return false;
  1449. }
  1450. $(this).data("owl-init", true);
  1451. var carousel = Object.create(Carousel);
  1452. carousel.init(options, this);
  1453. $.data(this, "owlCarousel", carousel);
  1454. });
  1455. };
  1456.  
  1457. $.fn.owlCarousel.options = {
  1458.  
  1459. items : 5,
  1460. itemsCustom : false,
  1461. itemsDesktop : [1199, 4],
  1462. itemsDesktopSmall : [979, 3],
  1463. itemsTablet : [768, 2],
  1464. itemsTabletSmall : false,
  1465. itemsMobile : [479, 1],
  1466. singleItem : false,
  1467. itemsScaleUp : false,
  1468.  
  1469. slideSpeed : 200,
  1470. paginationSpeed : 800,
  1471. rewindSpeed : 1000,
  1472.  
  1473. autoPlay : false,
  1474. stopOnHover : false,
  1475.  
  1476. navigation : false,
  1477. navigationText : ["prev", "next"],
  1478. rewindNav : true,
  1479. scrollPerPage : false,
  1480.  
  1481. pagination : true,
  1482. paginationNumbers : false,
  1483.  
  1484. responsive : true,
  1485. responsiveRefreshRate : 200,
  1486. responsiveBaseWidth : window,
  1487.  
  1488. baseClass : "owl-carousel",
  1489. theme : "owl-theme",
  1490.  
  1491. lazyLoad : false,
  1492. lazyFollow : true,
  1493. lazyEffect : "fade",
  1494.  
  1495. autoHeight : false,
  1496.  
  1497. jsonPath : false,
  1498. jsonSuccess : false,
  1499.  
  1500. dragBeforeAnimFinish : true,
  1501. mouseDrag : true,
  1502. touchDrag : true,
  1503.  
  1504. addClassActive : false,
  1505. transitionStyle : false,
  1506.  
  1507. beforeUpdate : false,
  1508. afterUpdate : false,
  1509. beforeInit : false,
  1510. afterInit : false,
  1511. beforeMove : false,
  1512. afterMove : false,
  1513. afterAction : false,
  1514. startDragging : false,
  1515. afterLazyLoad: false
  1516. };
  1517. }(jQuery, window, document));