Guest User

Untitled

a guest
Mar 25th, 2016
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.40 KB | None | 0 0
  1. var portalCarousel = {
  2. sliding : false,
  3. currentSlide : 0,
  4. autoPlay : false,
  5. slideData : [],
  6. loadSlide : function(slide) {
  7. if(jq18(slide).index() !== this.currentSlide && this.sliding === false) {
  8. portalCarousel.sliding = true;
  9. var carousel = jq18("<div class='carousel'>");
  10. // move to position
  11. jq18(slide).css({
  12. 'left' : '980px',
  13. 'z-index' : '2'
  14. }).animate({
  15. 'left' : '0',
  16. 'z-index' : '1'
  17. }, {
  18. duration : 500, complete : function() {
  19. portalCarousel.sliding = false;
  20. jq18('.carousel-slide').not(slide).css('z-index', '0');
  21. }
  22. });
  23. portalCarousel.currentSlide = jq18(slide).index();
  24. }
  25. },
  26. buildCarousel : function(data) {
  27. // create a container element for the slides
  28. var carouselContainer = jq18('<div>', {class: 'carousel-slides-container'});
  29. // build each slide for the carousel from JSON
  30. for (slide in data) {
  31. var slideHTML = this.buildSlide(data[slide]);
  32. jq18(carouselContainer).append(slideHTML[0]);
  33. };
  34. // create controls to navigate the slides
  35. var carouselControls = jq18('<ul>', {class: 'carousel-slides-controls'});
  36. for (var i = 0; i < 4; i++) {
  37. jq18(carouselControls).append('<li class="carousel-slide-control">');
  38. };
  39. jq18(carouselContainer).append(carouselControls);
  40. return carouselContainer;
  41. },
  42. buildSlide : function(data) {
  43. // slide template
  44. var slide = jq18('<div>', {
  45. class : 'carousel-slide',
  46. attr : {
  47. 'style': 'background-image:url(' + data.image + ')'
  48. }
  49. });
  50. var slideText = jq18('<div>', {
  51. class : 'carousel-slide-text'
  52. });
  53. var slideTitle = jq18('<div>', {
  54. class : 'carousel-slide-title',
  55. text : data.title
  56. });
  57. var slideCopy = jq18('<div>', {
  58. class : 'carousel-slide-copy',
  59. text : data.copy
  60. });
  61. var slideLink = jq18('<a>', {
  62. class : 'carousel-slide-link',
  63. href : data.link,
  64. text : 'more >>'
  65. });
  66. slideText.prepend(slideTitle, [slideCopy, slideLink])
  67. slide.prepend(slideText);
  68. return slide;
  69. },
  70. init : function(data) {
  71. return this.buildCarousel(data);
  72. }
  73. }
  74. // setup the carousel
  75. jq18(document).ready(function() {
  76. // create the carousel element and put the slides in
  77. var carousel = jq18("<div class='carousel'>");
  78. jq18.get("http://reasonn.de/thinking/elkus-manfredi/intranet-portal/Synthesis51_files/slides.json", function(response) {
  79. html = portalCarousel.init(response);
  80. carousel.html(html);
  81. })
  82. .done(function(){
  83. // plunk it at the top of the content box
  84. cb = jq18('#contentBox').prepend(carousel);
  85. cb.css('margin-top', '0');
  86. jq18('.carousel-slide-control:eq(0)').addClass('active');
  87. portalCarousel.autoPlay = true;
  88. jq18('.carousel-slide:eq(0)').css('z-index', 1);
  89. // handle clicks on carousel controls
  90. jq18('.carousel-slide-control').on('click', function(e) {
  91. jq18('.carousel-slide-control').not(this).removeClass('active');
  92. jq18(this).addClass('active');
  93. index = jq18('.carousel-slide-control').index(this);
  94. portalCarousel.loadSlide(jq18('.carousel-slide:eq('+index+')'));
  95. if (!e.isTrigger) {
  96. clearInterval(autoplay);
  97. autoplay = false;
  98. }
  99. });
  100. jq18('.carousel-slide-control').on('mouseout', function(){
  101. if(!autoplay) {
  102. autoplay = setInterval(function() {
  103. var $cur = jq18('.carousel-slide-control.active').removeClass('active');
  104. var $next = $cur.next().length?$cur.next():jq18('.carousel-slide-control:eq(0)');
  105. $next.click();
  106. }, 6500);
  107. }
  108. });
  109. autoplay = setInterval(function() {
  110. var $cur = jq18('.carousel-slide-control.active').removeClass('active');
  111. var $next = $cur.next().length?$cur.next():jq18('.carousel-slide-control:eq(0)');
  112. $next.click();
  113. }, 6500);
  114. });
  115. });
Advertisement
Add Comment
Please, Sign In to add comment