(function ($) { // @todo convert to use Drupal.behaviors // @todo add configuration options // Register callback to save references to flexslider instances. Allows // Views Slideshow controls to affect the slider function flexslider_views_slideshow_register(fullId, slider) { Drupal.flexsliderViewsSlideshow.active = Drupal.flexsliderViewsSlideshow.active || {}; Drupal.flexsliderViewsSlideshow.active[fullId] = slider; } Drupal.behaviors.flexsliderViewsSlideshow = { attach: function (context) { $('.flexslider_views_slideshow_main:not(.flexslider_views_slideshow-processed)', context).addClass('flexslider_views_slideshow-processed').each(function() { // Get the ID of the slideshow var fullId = '#' + $(this).attr('id'); // Create settings container var settings = Drupal.settings.flexslider_views_slideshow[fullId]; //console.log(settings); // @todo map the settings from the form to their javascript equivalents settings.targetId = fullId; settings.loaded = false; // Assign default settings // @todo update the list of options to match the new set settings.opts = { // v2.x options namespace:settings.namespace, selector:settings.selector, easing:settings.easing, direction:settings.direction, reverse:settings.reverse, smoothHeight:settings.smoothHeight, startAt:settings.startAt, animationSpeed:settings.animationSpeed, initDelay:settings.initDelay, useCSS:settings.useCSS, touch:settings.touch, video:settings.video, keyboard:settings.keyboard, multipleKeyboard:settings.multipleKeyboard, mousewheel:settings.mousewheel, controlsContainer:settings.controlsContainer, sync:settings.sync, asNavFor:settings.asNavFor, itemWidth:settings.itemWidth, itemMargin:settings.itemMargin, minItems:settings.minItems, maxItems:settings.maxItems, move:settings.move, // v1.x options animation:settings.animation, slideshow:settings.slideshow, slideshowSpeed:settings.slideshowSpeed, directionNav:settings.directionNav, controlNav:settings.controlNav, prevText:settings.prevText, nextText:settings.nextText, pausePlay:settings.pausePlay, pauseText:settings.pauseText, playText:settings.playText, randomize:settings.randomize, animationLoop:settings.animationLoop, pauseOnAction:settings.pauseOnAction, pauseOnHover:settings.pauseOnHover, manualControls:settings.manualControls, start: function(slider) { flexslider_views_slideshow_register(fullId, slider); } // @todo register other callbacks }; Drupal.flexsliderViewsSlideshow.load(fullId); }); } }; // Initialize the flexslider object Drupal.flexsliderViewsSlideshow = Drupal.flexsliderViewsSlideshow || {}; // Load mapping from Views Slideshow to FlexSlider Drupal.flexsliderViewsSlideshow.load = function(fullId) { var settings = Drupal.settings.flexslider_views_slideshow[fullId]; // Ensure the slider isn't already loaded if (!settings.loaded) { $(settings.targetId + " .flexslider").flexslider(settings.opts); settings.loaded = true; } } // Pause mapping from Views Slideshow to FlexSlider Drupal.flexsliderViewsSlideshow.pause = function (options) { Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].pause(); Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].manualPause = true; } // Play mapping from Views Slideshow to FlexSlider Drupal.flexsliderViewsSlideshow.play = function (options) { console.log(Drupal.flexsliderViewsSlideshow); Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].resume(); Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].manualPause = false; } Drupal.flexsliderViewsSlideshow.nextSlide = function (options) { var target = Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].getTarget('next'); if (Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].canAdvance(target)) { Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].flexAnimate(target, Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].vars.pauseOnAction); } } Drupal.flexsliderViewsSlideshow.previousSlide = function (options) { var target = Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].getTarget('prev'); if (Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].canAdvance(target)) { Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].flexAnimate(target, Drupal.flexsliderViewsSlideshow.active['#flexslider_views_slideshow_main_' + options.slideshowID].vars.pauseOnAction); } } // @todo add support for jquery mobile page init })(jQuery);