1(function ($) { 2 Drupal.viewsSlideshow = Drupal.viewsSlideshow || {}; 3 4 /** 5 * Views Slideshow Controls 6 */ 7 Drupal.viewsSlideshowControls = Drupal.viewsSlideshowControls || {}; 8 9 /** 10 * Implement the play hook for controls. 11 */ 12 Drupal.viewsSlideshowControls.play = function (options) { 13 // Route the control call to the correct control type. 14 // Need to use try catch so we don't have to check to make sure every part 15 // of the object is defined. 16 try { 17 if (typeof Drupal.settings.viewsSlideshowControls[options.slideshowID].top.type != "undefined" && typeof Drupal[Drupal.settings.viewsSlideshowControls[options.slideshowID].top.type].play == 'function') { 18 Drupal[Drupal.settings.viewsSlideshowControls[options.slideshowID].top.type].play(options); 19 } 20 } 21 catch(err) { 22 // Don't need to do anything on error. 23 } 24 25 try { 26 if (typeof Drupal.settings.viewsSlideshowControls[options.slideshowID].bottom.type != "undefined" && typeof Drupal[Drupal.settings.viewsSlideshowControls[options.slideshowID].bottom.type].play == 'function') { 27 Drupal[Drupal.settings.viewsSlideshowControls[options.slideshowID].bottom.type].play(options); 28 } 29 } 30 catch(err) { 31 // Don't need to do anything on error. 32 } 33 }; 34 35 /** 36 * Implement the pause hook for controls. 37 */ 38 Drupal.viewsSlideshowControls.pause = function (options) { 39 // Route the control call to the correct control type. 40 // Need to use try catch so we don't have to check to make sure every part 41 // of the object is defined. 42 try { 43 if (typeof Drupal.settings.viewsSlideshowControls[options.slideshowID].top.type != "undefined" && typeof Drupal[Drupal.settings.viewsSlideshowControls[options.slideshowID].top.type].pause == 'function') { 44 Drupal[Drupal.settings.viewsSlideshowControls[options.slideshowID].top.type].pause(options); 45 } 46 } 47 catch(err) { 48 // Don't need to do anything on error. 49 } 50 51 try { 52 if (typeof Drupal.settings.viewsSlideshowControls[options.slideshowID].bottom.type != "undefined" && typeof Drupal[Drupal.settings.viewsSlideshowControls[options.slideshowID].bottom.type].pause == 'function') { 53 Drupal[Drupal.settings.viewsSlideshowControls[options.slideshowID].bottom.type].pause(options); 54 } 55 } 56 catch(err) { 57 // Don't need to do anything on error. 58 } 59 }; 60 61 62 /** 63 * Views Slideshow Text Controls 64 */ 65 66 // Add views slieshow api calls for views slideshow text controls. 67 Drupal.behaviors.viewsSlideshowControlsText = { 68 attach: function (context) { 69 70 // Process previous link 71 $('.views_slideshow_controls_text_previous:not(.views-slideshow-controls-text-previous-processed)', context).addClass('views-slideshow-controls-text-previous-processed').each(function() { 72 var uniqueID = $(this).attr('id').replace('views_slideshow_controls_text_previous_', ''); 73 $(this).click(function() { 74 Drupal.viewsSlideshow.action({ "action": 'previousSlide', "slideshowID": uniqueID }); 75 return false; 76 }); 77 }); 78 79 // Process next link 80 $('.views_slideshow_controls_text_next:not(.views-slideshow-controls-text-next-processed)', context).addClass('views-slideshow-controls-text-next-processed').each(function() { 81 var uniqueID = $(this).attr('id').replace('views_slideshow_controls_text_next_', ''); 82 $(this).click(function() { 83 Drupal.viewsSlideshow.action({ "action": 'nextSlide', "slideshowID": uniqueID }); 84 return false; 85 }); 86 }); 87 88 // Process pause link 89 $('.views_slideshow_controls_text_pause:not(.views-slideshow-controls-text-pause-processed)', context).addClass('views-slideshow-controls-text-pause-processed').each(function() { 90 var uniqueID = $(this).attr('id').replace('views_slideshow_controls_text_pause_', ''); 91 $(this).click(function() { 92 if (Drupal.settings.viewsSlideshow[uniqueID].paused) { 93 Drupal.viewsSlideshow.action({ "action": 'play', "slideshowID": uniqueID, "force": true }); 94 } 95 else { 96 Drupal.viewsSlideshow.action({ "action": 'pause', "slideshowID": uniqueID, "force": true }); 97 } 98 return false;
99 }); 100 }); 101 } 102 }; 103 104 Drupal.viewsSlideshowControlsText = Drupal.viewsSlideshowControlsText || {}; 105 106 /** 107 * Implement the pause hook for text controls. 108 */ 109 Drupal.viewsSlideshowControlsText.pause = function (options) { 110 var pauseText = Drupal.theme.prototype['viewsSlideshowControlsPause'] ? Drupal.theme('viewsSlideshowControlsPause') : ''; 111 $('#views_slideshow_controls_text_pause_' + options.slideshowID + ' a').text(pauseText); 112 }; 113 114 /** 115 * Implement the play hook for text controls. 116 */ 117 Drupal.viewsSlideshowControlsText.play = function (options) { 118 var playText = Drupal.theme.prototype['viewsSlideshowControlsPlay'] ? Drupal.theme('viewsSlideshowControlsPlay') : ''; 119 $('#views_slideshow_controls_text_pause_' + options.slideshowID + ' a').text(playText); 120 }; 121 122 // Theme the resume control. 123 Drupal.theme.prototype.viewsSlideshowControlsPause = function () { 124 return Drupal.t('Resume'); 125 }; 126 127 // Theme the pause control. 128 Drupal.theme.prototype.viewsSlideshowControlsPlay = function () { 129 return Drupal.t('Pause'); 130 }; 131 132 /** 133 * Views Slideshow Pager 134 */ 135 Drupal.viewsSlideshowPager = Drupal.viewsSlideshowPager || {}; 136 137 /** 138 * Implement the transitionBegin hook for pagers. 139 */ 140 Drupal.viewsSlideshowPager.transitionBegin = function (options) { 141 // Route the pager call to the correct pager type. 142 // Need to use try catch so we don't have to check to make sure every part 143 // of the object is defined. 144 try { 145 if (typeof Drupal.settings.viewsSlideshowPager[options.slideshowID].top.type != "undefined" && typeof Drupal[Drupal.settings.viewsSlideshowPager[options.slideshowID].top.type].transitionBegin == 'function') { 146 Drupal[Drupal.settings.viewsSlideshowPager[options.slideshowID].top.type].transitionBegin(options); 147 } 148 } 149 catch(err) { 150 // Don't need to do anything on error. 151 } 152 153 try { 154 if (typeof Drupal.settings.viewsSlideshowPager[options.slideshowID].bottom.type != "undefined" && typeof Drupal[Drupal.settings.viewsSlideshowPager[options.slideshowID].bottom.type].transitionBegin == 'function') { 155 Drupal[Drupal.settings.viewsSlideshowPager[options.slideshowID].bottom.type].transitionBegin(options); 156 } 157 } 158 catch(err) { 159 // Don't need to do anything on error. 160 } 161 }; 162 163 /** 164 * Implement the goToSlide hook for pagers. 165 */ 166 Drupal.viewsSlideshowPager.goToSlide = function (options) { 167 // Route the pager call to the correct pager type. 168 // Need to use try catch so we don't have to check to make sure every part 169 // of the object is defined. 170 try { 171 if (typeof Drupal.settings.viewsSlideshowPager[options.slideshowID].top.type != "undefined" && typeof Drupal[Drupal.settings.viewsSlideshowPager[options.slideshowID].top.type].goToSlide == 'function') { 172 Drupal[Drupal.settings.viewsSlideshowPager[options.slideshowID].top.type].goToSlide(options); 173 } 174 } 175 catch(err) { 176 // Don't need to do anything on error. 177 } 178 179 try { 180 if (typeof Drupal.settings.viewsSlideshowPager[options.slideshowID].bottom.type != "undefined" && typeof Drupal[Drupal.settings.viewsSlideshowPager[options.slideshowID].bottom.type].goToSlide == 'function') { 181 Drupal[Drupal.settings.viewsSlideshowPager[options.slideshowID].bottom.type].goToSlide(options); 182 } 183 } 184 catch(err) { 185 // Don't need to do anything on error. 186 } 187 }; 188 189 /** 190 * Implement the previousSlide hook for pagers. 191 */ 192 Drupal.viewsSlideshowPager.previousSlide = function (options) { 193 // Route the pager call to the correct pager type. 194 // Need to use try catch so we don't have to check to make sure every part 195 // of the object is defined. 196 try { 197 if (typeof Drupal.settings.viewsSlideshowPager[options.slideshowID].top.type != "undefined" && typeof Drupal[Drupal.settings.viewsSlideshowPager[options.slideshowID].top.type].previousSlide == 'function') { 198 Drupal[Drupal.settings.viewsSlideshowPager[options.slideshowID].top.type].previousSlide(options); 199 } 200 } 201 catch(err) { 202 // Don't need to do anything on error. 203 } 204 205 try { 206 if (typeof Drupal.settings.viewsSlideshowPager[options.slideshowID].bottom.type != "undefined" && typeof Drupal[Drupal.settings.viewsSlideshowPager[options.slideshowID].bottom.type].previousSlide == 'function') { 207 Drupal[Drupal.settings.viewsSlideshowPager[options.slideshowID].bottom.type].previousSlide(options); 208 } 209 } 210 catch(err) { 211 // Don't need to do anything on error. 212 } 213 }; 214 215 /** 216 * Implement the nextSlide hook for pagers. 217 */ 218 Drupal.viewsSlideshowPager.nextSlide = function (options) { 219 // Route the pager call to the correct pager type. 220 // Need to use try catch so we don't have to check to make sure every part 221 // of the object is defined. 222 try { 223 if (typeof Drupal.settings.viewsSlideshowPager[options.slideshowID].top.type != "undefined" && typeof Drupal[Drupal.settings.viewsSlideshowPager[options.slideshowID].top.type].nextSlide == 'function') { 224 Drupal[Drupal.settings.viewsSlideshowPager[options.slideshowID].top.type].nextSlide(options); 225 } 226 } 227 catch(err) { 228 // Don't need to do anything on error. 229 } 230 231 try { 232 if (typeof Drupal.settings.viewsSlideshowPager[options.slideshowID].bottom.type != "undefined" && typeof Drupal[Drupal.settings.viewsSlideshowPager[options.slideshowID].bottom.type].nextSlide == 'function') { 233 Drupal[Drupal.settings.viewsSlideshowPager[options.slideshowID].bottom.type].nextSlide(options); 234 } 235 } 236 catch(err) { 237 // Don't need to do anything on error. 238 } 239 }; 240 241 242 /** 243 * Views Slideshow Pager Fields 244 */ 245 246 // Add views slieshow api calls for views slideshow pager fields. 247 Drupal.behaviors.viewsSlideshowPagerFields = { 248 attach: function (context) { 249 // Process pause on hover.
250 $('.views_slideshow_pager_field:not(.views-slideshow-pager-field-processed)', context).addClass('views-slideshow-pager-field-processed').each(function() { 251 // Parse out the location and unique id from the full id. 252 var pagerInfo = $(this).attr('id').split('_'); 253 var location = pagerInfo[2]; 254 pagerInfo.splice(0, 3); 255 var uniqueID = pagerInfo.join('_'); 256 257 // Add the activate and pause on pager hover event to each pager item. 258 if (Drupal.settings.viewsSlideshowPagerFields[uniqueID][location].activatePauseOnHover) { 259 $(this).children().each(function(index, pagerItem) { 260 var mouseIn = function() { 261 Drupal.viewsSlideshow.action({ "action": 'goToSlide', "slideshowID": uniqueID, "slideNum": index }); 262 Drupal.viewsSlideshow.action({ "action": 'pause', "slideshowID": uniqueID }); 263 } 264 265 var mouseOut = function() { 266 Drupal.viewsSlideshow.action({ "action": 'play', "slideshowID": uniqueID }); 267 } 268 269 if (jQuery.fn.hoverIntent) { 270 $(pagerItem).hoverIntent(mouseIn, mouseOut); 271 } 272 else { 273 $(pagerItem).hover(mouseIn, mouseOut); 274 } 275 276 }); 277 } 278 else { 279 $(this).children().each(function(index, pagerItem) { 280 $(pagerItem).click(function() { 281 Drupal.viewsSlideshow.action({ "action": 'goToSlide', "slideshowID": uniqueID, "slideNum": index }); 282 }); 283 }); 284 } 285 }); 286 } 287 }; 288 289 Drupal.viewsSlideshowPagerFields = Drupal.viewsSlideshowPagerFields || {}; 290 291 /** 292 * Implement the transitionBegin hook for pager fields pager. 293 */ 294 Drupal.viewsSlideshowPagerFields.transitionBegin = function (options) {
295 for (pagerLocation in Drupal.settings.viewsSlideshowPager[options.slideshowID]) { 296 // Remove active class from pagers 297 $('[id^="views_slideshow_pager_field_item_' + pagerLocation + '_' + options.slideshowID + '"]').removeClass('active'); 298 299 // Add active class to active pager. 300 $('#views_slideshow_pager_field_item_'+ pagerLocation + '_' + options.slideshowID + '_' + options.slideNum).addClass('active'); 301 } 302 303 }; 304 305 /** 306 * Implement the goToSlide hook for pager fields pager. 307 */ 308 Drupal.viewsSlideshowPagerFields.goToSlide = function (options) { 309 for (pagerLocation in Drupal.settings.viewsSlideshowPager[options.slideshowID]) { 310 // Remove active class from pagers 311 $('[id^="views_slideshow_pager_field_item_' + pagerLocation + '_' + options.slideshowID + '"]').removeClass('active'); 312 313 // Add active class to active pager. 314 $('#views_slideshow_pager_field_item_' + pagerLocation + '_' + options.slideshowID + '_' + options.slideNum).addClass('active'); 315 } 316 }; 317 318 /** 319 * Implement the previousSlide hook for pager fields pager. 320 */ 321 Drupal.viewsSlideshowPagerFields.previousSlide = function (options) {
322 for (pagerLocation in Drupal.settings.viewsSlideshowPager[options.slideshowID]) { 323 // Get the current active pager. 324 var pagerNum = $('[id^="views_slideshow_pager_field_item_' + pagerLocation + '_' + options.slideshowID + '"].active').attr('id').replace('views_slideshow_pager_field_item_' + pagerLocation + '_' + options.slideshowID + '_', ''); 325 326 // If we are on the first pager then activate the last pager. 327 // Otherwise activate the previous pager. 328 if (pagerNum == 0) { 329 pagerNum = $('[id^="views_slideshow_pager_field_item_' + pagerLocation + '_' + options.slideshowID + '"]').length() - 1; 330 } 331 else { 332 pagerNum--; 333 } 334 335 // Remove active class from pagers 336 $('[id^="views_slideshow_pager_field_item_' + pagerLocation + '_' + options.slideshowID + '"]').removeClass('active'); 337 338 // Add active class to active pager. 339 $('#views_slideshow_pager_field_item_' + pagerLocation + '_' + options.slideshowID + '_' + pagerNum).addClass('active'); 340 } 341 }; 342 343 /** 344 * Implement the nextSlide hook for pager fields pager. 345 */ 346 Drupal.viewsSlideshowPagerFields.nextSlide = function (options) {
347 for (pagerLocation in Drupal.settings.viewsSlideshowPager[options.slideshowID]) { 348 // Get the current active pager. 349 var pagerNum = $('[id^="views_slideshow_pager_field_item_' + pagerLocation + '_' + options.slideshowID + '"].active').attr('id').replace('views_slideshow_pager_field_item_' + pagerLocation + '_' + options.slideshowID + '_', ''); 350 var totalPagers = $('[id^="views_slideshow_pager_field_item_' + pagerLocation + '_' + options.slideshowID + '"]').length(); 351 352 // If we are on the last pager then activate the first pager. 353 // Otherwise activate the next pager. 354 pagerNum++; 355 if (pagerNum == totalPagers) { 356 pagerNum = 0; 357 } 358 359 // Remove active class from pagers 360 $('[id^="views_slideshow_pager_field_item_' + pagerLocation + '_' + options.slideshowID + '"]').removeClass('active'); 361 362 // Add active class to active pager. 363 $('#views_slideshow_pager_field_item_' + pagerLocation + '_' + options.slideshowID + '_' + slideNum).addClass('active'); 364 } 365 }; 366 367 368 /** 369 * Views Slideshow Slide Counter 370 */ 371 372 Drupal.viewsSlideshowSlideCounter = Drupal.viewsSlideshowSlideCounter || {}; 373 374 /** 375 * Implement the transitionBegin for the slide counter. 376 */ 377 Drupal.viewsSlideshowSlideCounter.transitionBegin = function (options) { 378 $('#views_slideshow_slide_counter_' + options.slideshowID + ' .num').text(options.slideNum + 1); 379 }; 380 381 /** 382 * This is used as a router to process actions for the slideshow. 383 */ 384 Drupal.viewsSlideshow.action = function (options) { 385 // Set default values for our return status. 386 var status = { 387 'value': true, 388 'text': '' 389 } 390 391 // If an action isn't specified return false. 392 if (typeof options.action == 'undefined' || options.action == '') { 393 status.value = false; 394 status.text = Drupal.t('There was no action specified.'); 395 return error; 396 } 397 398 // If we are using pause or play switch paused state accordingly. 399 if (options.action == 'pause') { 400 Drupal.settings.viewsSlideshow[options.slideshowID].paused = 1; 401 // If the calling method is forcing a pause then mark it as such. 402 if (options.force) { 403 Drupal.settings.viewsSlideshow[options.slideshowID].pausedForce = 1; 404 } 405 } 406 else if (options.action == 'play') { 407 // If the slideshow isn't forced pause or we are forcing a play then play 408 // the slideshow. 409 // Otherwise return telling the calling method that it was forced paused. 410 if (!Drupal.settings.viewsSlideshow[options.slideshowID].pausedForce || options.force) { 411 Drupal.settings.viewsSlideshow[options.slideshowID].paused = 0; 412 Drupal.settings.viewsSlideshow[options.slideshowID].pausedForce = 0; 413 } 414 else { 415 status.value = false; 416 status.text += ' ' + Drupal.t('This slideshow is forced paused.'); 417 return status; 418 } 419 } 420 421 // We use a switch statement here mainly just to limit the type of actions 422 // that are available. 423 switch (options.action) { 424 case "goToSlide": 425 case "transitionBegin": 426 case "transitionEnd": 427 // The three methods above require a slide number. Checking if it is 428 // defined and it is a number that is an integer. 429 if (typeof options.slideNum == 'undefined' || typeof options.slideNum !== 'number' || parseInt(options.slideNum) != (options.slideNum - 0)) { 430 status.value = false; 431 status.text = Drupal.t('An invalid integer was specified for slideNum.'); 432 } 433 case "pause": 434 case "play": 435 case "nextSlide": 436 case "previousSlide": 437 // Grab our list of methods. 438 var methods = Drupal.settings.viewsSlideshow[options.slideshowID]['methods']; 439 440 // if the calling method specified methods that shouldn't be called then 441 // exclude calling them. 442 var excludeMethodsObj = {}; 443 if (typeof options.excludeMethods !== 'undefined') { 444 // We need to turn the excludeMethods array into an object so we can use the in 445 // function. 446 for (var i=0; i < excludeMethods.length; i++) { 447 excludeMethodsObj[excludeMethods[i]] = ''; 448 } 449 } 450 451 // Call every registered method and don't call excluded ones. 452 for (i = 0; i < methods[options.action].length; i++) { 453 if (Drupal[methods[options.action][i]] != undefined && typeof Drupal[methods[options.action][i]][options.action] == 'function' && !(methods[options.action][i] in excludeMethodsObj)) { 454 Drupal[methods[options.action][i]][options.action](options); 455 } 456 } 457 break; 458
459 // If it gets here it's because it's an invalid action. 460 default: 461 status.value = false; 462 status.text = Drupal.t('An invalid action "!action" was specified.', { "!action": options.action }); 463 } 464 return status; 465 }; 466})(jQuery);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.