1/* 2 mediaboxAdvanced v1.3.4b - The ultimate extension of Slimbox and Mediabox; an all-media script 3 updated 2010.09.21 4 (c) 2007-2010 John Einselen <http://iaian7.com> 5 based on Slimbox v1.64 - The ultimate lightweight Lightbox clone 6 (c) 2007-2008 Christophe Beyls <http://www.digitalia.be> 7 MIT-style license. 8*/ 9 10var Mediabox; 11 12(function() { 13 // Global variables, accessible to Mediabox only 14 var options, images, activeImage, prevImage, nextImage, top, mTop, left, mLeft, winWidth, winHeight, fx, preload, preloadPrev = new Image(), preloadNext = new Image(), foxfix = false, iefix = false, 15 // DOM elements 16 overlay, center, image, bottom, captionSplit, title, caption, prevLink, number, nextLink, 17 // Mediabox specific vars 18 URL, WH, WHL, elrel, mediaWidth, mediaHeight, mediaType = "none", mediaSplit, mediaId = "mediaBox", mediaFmt, margin; 19 20 /* Initialization */ 21 22 window.addEvent("domready", function() { 23 // Create and append the Mediabox HTML code at the bottom of the document 24 document.id(document.body).adopt( 25 $$([ 26 overlay = new Element("div", {id: "mbOverlay"}).addEvent("click", close), 27 center = new Element("div", {id: "mbCenter"}) 28 ]).setStyle("display", "none") 29 ); 30 31 image = new Element("div", {id: "mbImage"}).injectInside(center); 32 bottom = new Element("div", {id: "mbBottom"}).injectInside(center).adopt( 33 closeLink = new Element("a", {id: "mbCloseLink", href: "#"}).addEvent("click", close), 34 nextLink = new Element("a", {id: "mbNextLink", href: "#"}).addEvent("click", next), 35 prevLink = new Element("a", {id: "mbPrevLink", href: "#"}).addEvent("click", previous), 36 title = new Element("div", {id: "mbTitle"}), 37 number = new Element("div", {id: "mbNumber"}), 38 caption = new Element("div", {id: "mbCaption"}) 39 ); 40 41 fx = { 42 overlay: new Fx.Tween(overlay, {property: "opacity", duration: 360}).set(0), 43 image: new Fx.Tween(image, {property: "opacity", duration: 360, onComplete: captionAnimate}), 44 bottom: new Fx.Tween(bottom, {property: "opacity", duration: 240}).set(0) 45 }; 46 }); 47 48 /* API */ 49 50 Mediabox = { 51 close: function(){ 52 close(); // Thanks to Yosha on the google group for fixing the close function API! 53 }, 54 55 open: function(_images, startImage, _options) { 56 options = $extend({ 57 text: ['<big>«</big>','<big>»</big>','<big>×</big>'], // Set "previous", "next", and "close" button content (HTML code should be written as entity codes or properly escaped) 58// text: ['<big>ç«ï½ª</big>','<big>ç«ï½«</big>','<big>ï¾�</big>'], // Set "previous", "next", and "close" button content (HTML code should be written as entity codes or properly escaped) 59// example text: ['<b>P</b>rev','<b>N</b>ext','<b>C</b>lose'], 60 loop: false, // Allows to navigate between first and last images 61 keyboard: true, // Enables keyboard control; escape key, left arrow, and right arrow 62 alpha: true, // Adds 'x', 'c', 'p', and 'n' when keyboard control is also set to true 63 stopKey: false, // Stops all default keyboard actions while overlay is open (such as up/down arrows) 64 // Does not apply to iFrame content, does not affect mouse scrolling 65 overlayOpacity: 0.7, // 1 is opaque, 0 is completely transparent (change the color in the CSS file) 66 resizeOpening: true, // Determines if box opens small and grows (true) or starts at larger size (false) 67 resizeDuration: 240, // Duration of each of the box resize animations (in milliseconds) 68 resizeTransition: false, // Mootools transition effect (false leaves it at the default) 69 initialWidth: 320, // Initial width of the box (in pixels) 70 initialHeight: 180, // Initial height of the box (in pixels) 71 defaultWidth: 640, // Default width of the box (in pixels) for undefined media (MP4, FLV, etc.) 72 defaultHeight: 360, // Default height of the box (in pixels) for undefined media (MP4, FLV, etc.) 73 showCaption: true, // Display the title and caption, true / false 74 showCounter: true, // If true, a counter will only be shown if there is more than 1 image to display 75 counterText: '({x} of {y})', // Translate or change as you wish 76// Image options
77 imgBackground: false, // Embed images as CSS background (true) or <img> tag (false) 78 // CSS background is naturally non-clickable, preventing downloads 79 // IMG tag allows automatic scaling for smaller screens 80 // (all images have no-click code applied, albeit not Opera compatible. To remove, comment lines 212 and 822) 81 imgPadding: 100, // Clearance necessary for images larger than the window size (only used when imgBackground is false) 82 // Change this number only if the CSS style is significantly divergent from the original, and requires different sizes 83// Inline options 84// overflow: 'auto', // If set, overides CSS settings for inline content only 85// Global media options 86 html5: 'true', // HTML5 settings for YouTube and Vimeo, false = off, true = on 87 scriptaccess: 'true', // Allow script access to flash files 88 fullscreen: 'true', // Use fullscreen 89 fullscreenNum: '1', // 1 = true 90 autoplay: 'true', // Plays the video as soon as it's opened 91 autoplayNum: '1', // 1 = true 92 autoplayYes: 'yes', // yes = true 93 volume: '100', // 0-100, used for NonverBlaster and Quicktime players 94 medialoop: 'true', // Loop video playback, true / false, used for NonverBlaster and Quicktime players 95 bgcolor: '#000000', // Background color, used for flash and QT media 96 wmode: 'opaque', // Background setting for Adobe Flash ('opaque' and 'transparent' are most common) 97// NonverBlaster 98 useNB: true, // use NonverBlaster (true) or JW Media Player (false) for .flv and .mp4 files 99 playerpath: 'http://www.sigma7.co.jp/common/js/mediaboxadv/NonverBlaster.swf', // Path to NonverBlaster.swf 100 controlColor: '0xFFFFFF', // set the controlbar color 101 controlBackColor: '0x000000', // set the controlbar color 102 showTimecode: 'false', // turn timecode display off or on 103// JW Media Player settings and options 104 JWplayerpath: '/js/player.swf', // Path to the mediaplayer.swf or flvplayer.swf file 105 backcolor: '000000', // Base color for the controller, color name / hex value (0x000000) 106 frontcolor: '999999', // Text and button color for the controller, color name / hex value (0x000000) 107 lightcolor: '000000', // Rollover color for the controller, color name / hex value (0x000000) 108 screencolor: '000000', // Rollover color for the controller, color name / hex value (0x000000) 109 controlbar: 'over', // bottom, over, none (this setting is ignored when playing audio files) 110// Quicktime options 111 controller: 'true', // Show controller, true / false 112// Flickr options 113 flInfo: 'true', // Show title and info at video start 114// Revver options 115 revverID: '187866', // Revver affiliate ID, required for ad revinue sharing 116 revverFullscreen: 'true', // Fullscreen option 117 revverBack: '000000', // Background color 118 revverFront: 'ffffff', // Foreground color 119 revverGrad: '000000', // Gradation color 120// Ustream options 121 usViewers: 'true', // Show online viewer count (true/false) 122// Youtube options 123 ytBorder: '0', // Outline (1=true, 0=false) 124 ytColor1: '000000', // Outline color 125 ytColor2: '333333', // Base interface color (highlight colors stay consistent) 126 ytQuality: '&ap=%2526fmt%3D18', // Leave empty for standard quality, use '&ap=%2526fmt%3D18' for high quality, and '&ap=%2526fmt%3D22' for HD (note that not all videos are availible in high quality, and very few in HD) 127 ytRel: '0', // Show related videos (1=true, 0=false) 128 ytInfo: '1', // Show video info (1=true, 0=false) 129 ytSearch: '0', // Show search field (1=true, 0=false) 130// Viddyou options 131 vuPlayer: 'basic', // Use 'full' or 'basic' players 132// Vimeo options 133 vmTitle: '1', // Show video title 134 vmByline: '1', // Show byline 135 vmPortrait: '1', // Show author portrait 136 vmColor: 'ffffff' // Custom controller colors, hex value minus the # sign, defult is 5ca0b5 137 }, _options || {}); 138 139 prevLink.set('html', options.text[0]); 140 nextLink.set('html', options.text[1]); 141 closeLink.set('html', options.text[2]); 142 143// margin = center.getStyle('padding-left').toInt()+image.getStyle('margin-left').toInt()+image.getStyle('padding-left').toInt(); 144 // ie11 bugfix 145 var srs_imgMarginLeft = ( isNaN(image.getStyle('margin-left').toInt()) ) ? 0 : image.getStyle('margin-left').toInt(); 146 margin = center.getStyle('padding-left').toInt()+srs_imgMarginLeft+image.getStyle('padding-left').toInt(); 147 148 if ((Browser.Engine.gecko) && (Browser.Engine.version<19)) { // Fixes Firefox 2 and Camino 1.6 incompatibility with opacity + flash 149 foxfix = true; 150 options.overlayOpacity = 1; 151 overlay.className = 'mbOverlayFF'; 152 } 153 154 if ((Browser.Engine.trident) && (Browser.Engine.version<5)) { // Fixes IE 6 and earlier incompatibilities with CSS position: fixed; 155 iefix = true; 156 overlay.className = 'mbOverlayIE'; 157 overlay.setStyle("position", "absolute"); 158 position(); 159 } 160 161 if (typeof _images == "string") { // Used for single images only, with URL and Title as first two arguments 162 _images = [[_images,startImage,_options]]; 163 startImage = 0; 164 } 165 166 images = _images; 167 options.loop = options.loop && (images.length > 1); 168 169 size(); 170 setup(true); 171 top = window.getScrollTop() + (window.getHeight()/2); 172 left = window.getScrollLeft() + (window.getWidth()/2); 173 fx.resize = new Fx.Morph(center, $extend({duration: options.resizeDuration, onComplete: imageAnimate}, options.resizeTransition ? {transition: options.resizeTransition} : {})); 174 center.setStyles({top: top, left: left, width: options.initialWidth, height: options.initialHeight, marginTop: -(options.initialHeight/2)-margin, marginLeft: -(options.initialWidth/2)-margin, display: ""}); 175 fx.overlay.start(options.overlayOpacity); 176 return changeImage(startImage); 177 } 178 }; 179 180 Element.implement({ 181 mediabox: function(_options, linkMapper) { 182 $$(this).mediabox(_options, linkMapper); // The processing of a single element is similar to the processing of a collection with a single element 183 184 return this; 185 } 186 }); 187 188 Elements.implement({ 189 /* 190 options: Optional options object, see Mediabox.open() 191 linkMapper: Optional function taking a link DOM element and an index as arguments and returning an array containing 3 elements: 192 the image URL and the image caption (may contain HTML) 193 linksFilter:Optional function taking a link DOM element and an index as arguments and returning true if the element is part of 194 the image collection that will be shown on click, false if not. "this" refers to the element that was clicked.
195 This function must always return true when the DOM element argument is "this". 196 */ 197 mediabox: function(_options, linkMapper, linksFilter) { 198 linkMapper = linkMapper || function(el) { 199 elrel = el.rel.split(/[\[\]]/); 200 elrel = elrel[1]; 201 return [el.href, el.title, elrel]; 202 }; 203 204 linksFilter = linksFilter || function() { 205 return true; 206 }; 207 208 var links = this; 209 210 links.addEvent('contextmenu', function(e){ 211 if (this.toString().match(/\.gif|\.jpg|\.jpeg|\.png/i)) e.stop(); 212 }); 213 214 links.removeEvents("click").addEvent("click", function() { 215 // Build the list of images that will be displayed 216 var filteredArray = links.filter(linksFilter, this); 217 var filteredLinks = []; 218 var filteredHrefs = []; 219 220 filteredArray.each(function(item, index){ 221 if(filteredHrefs.indexOf(item.toString()) < 0) { 222 filteredLinks.include(filteredArray[index]); 223 filteredHrefs.include(filteredArray[index].toString()); 224 }; 225 }); 226 227 return Mediabox.open(filteredLinks.map(linkMapper), filteredHrefs.indexOf(this.toString()), _options); 228 }); 229 230 return links; 231 } 232 }); 233 234 /* Internal functions */ 235 236 function position() { 237 overlay.setStyles({top: window.getScrollTop(), left: window.getScrollLeft()}); 238 } 239 240 function size() { 241 winWidth = window.getWidth(); 242 winHeight = window.getHeight(); 243 overlay.setStyles({width: winWidth, height: winHeight}); 244 } 245 246 function setup(open) { 247 // Hides on-page objects and embeds while the overlay is open, nessesary to counteract Firefox stupidity 248 if (Browser.Engine.gecko) { 249 ["object", window.ie ? "select" : "embed"].forEach(function(tag) { 250 Array.forEach(document.getElementsByTagName(tag), function(el) { 251 if (open) el._mediabox = el.style.visibility; 252 el.style.visibility = open ? "hidden" : el._mediabox; 253 }); 254 }); 255 } 256 257 overlay.style.display = open ? "" : "none"; 258 259 var fn = open ? "addEvent" : "removeEvent"; 260 if (iefix) window[fn]("scroll", position); 261 window[fn]("resize", size); 262 if (options.keyboard) document[fn]("keydown", keyDown); 263 } 264 265 function keyDown(event) { 266 if (options.alpha) { 267 switch(event.code) { 268 case 27: // Esc 269 case 88: // 'x' 270 case 67: // 'c' 271 close(); 272 break; 273 case 37: // Left arrow 274 case 80: // 'p' 275 previous(); 276 break; 277 case 39: // Right arrow 278 case 78: // 'n' 279 next(); 280 } 281 } else { 282 switch(event.code) { 283 case 27: // Esc 284 close(); 285 break; 286 case 37: // Left arrow 287 previous(); 288 break; 289 case 39: // Right arrow 290 next(); 291 } 292 } 293 if (options.stopKey) { return false; }; 294 } 295 296 function previous() { 297 return changeImage(prevImage); 298 } 299 300 function next() { 301 return changeImage(nextImage); 302 } 303 304 function changeImage(imageIndex) { 305 if (imageIndex >= 0) { 306 image.set('html', ''); 307 activeImage = imageIndex; 308 prevImage = ((activeImage || !options.loop) ? activeImage : images.length) - 1; 309 nextImage = activeImage + 1; 310 if (nextImage == images.length) nextImage = options.loop ? 0 : -1; 311 stop(); 312 center.className = "mbLoading"; 313 314 /* mediaboxAdvanced link formatting and media support */ 315 316 if (!images[imageIndex][2]) images[imageIndex][2] = ''; // Thanks to Leo Feyer for offering this fix 317 WH = images[imageIndex][2].split(' '); 318 WHL = WH.length; 319 if (WHL>1) { 320 mediaWidth = (WH[WHL-2].match("%")) ? (window.getWidth()*((WH[WHL-2].replace("%", ""))*0.01))+"px" : WH[WHL-2]+"px"; 321 mediaHeight = (WH[WHL-1].match("%")) ? (window.getHeight()*((WH[WHL-1].replace("%", ""))*0.01))+"px" : WH[WHL-1]+"px"; 322 } else { 323 mediaWidth = ""; 324 mediaHeight = ""; 325 } 326 URL = images[imageIndex][0]; 327 URL = encodeURI(URL).replace("(","%28").replace(")","%29"); 328 captionSplit = images[activeImage][1].split('::'); 329
330// Quietube and yFrog support 331 if (URL.match(/quietube\.com/i)) { 332 mediaSplit = URL.split('v.php/'); 333 URL = mediaSplit[1]; 334 } else if (URL.match(/\/\/yfrog/i)) { 335 mediaType = (URL.substring(URL.length-1)); 336 if (mediaType.match(/b|g|j|p|t/i)) mediaType = 'image'; 337 if (mediaType == 's') mediaType = 'flash'; 338 if (mediaType.match(/f|z/i)) mediaType = 'video'; 339 URL = URL+":iphone"; 340 } 341 342 /* Specific Media Types */ 343 344// GIF, JPG, PNG 345 if (URL.match(/\.gif|\.jpg|\.jpeg|\.png|twitpic\.com/i) || mediaType == 'image') { 346 mediaType = 'img'; 347 URL = URL.replace(/twitpic\.com/i, "twitpic.com/show/full"); 348 preload = new Image(); 349 preload.onload = startEffect; 350 preload.src = URL; 351// FLV, MP4 352 } else if (URL.match(/\.flv|\.mp4/i) || mediaType == 'video') { 353 mediaType = 'obj'; 354 mediaWidth = mediaWidth || options.defaultWidth; 355 mediaHeight = mediaHeight || options.defaultHeight; 356 if (options.useNB) { 357 preload = new Swiff(''+options.playerpath+'?mediaURL='+URL+'&allowSmoothing=true&autoPlay='+options.autoplay+'&buffer=6&showTimecode='+options.showTimecode+'&loop='+options.medialoop+'&controlColor='+options.controlColor+'&controlBackColor='+options.controlBackColor+'&defaultVolume='+options.volume+'&scaleIfFullScreen=true&showScalingButton=true&crop=false', { 358 id: 'MediaboxSWF', 359 width: mediaWidth, 360 height: mediaHeight, 361 params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen} 362 }); 363 } else { 364 preload = new Swiff(''+options.JWplayerpath+'?file='+URL+'&backcolor='+options.backcolor+'&frontcolor='+options.frontcolor+'&lightcolor='+options.lightcolor+'&screencolor='+options.screencolor+'&autostart='+options.autoplay+'&controlbar='+options.controlbar, { 365 id: 'MediaboxSWF', 366 width: mediaWidth, 367 height: mediaHeight, 368 params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen} 369 }); 370 } 371 startEffect(); 372// MP3, AAC 373 } else if (URL.match(/\.mp3|\.aac|tweetmic\.com|tmic\.fm/i) || mediaType == 'audio') { 374 mediaType = 'obj'; 375 mediaWidth = mediaWidth || options.defaultWidth; 376 mediaHeight = mediaHeight || "20px"; 377 if (URL.match(/tweetmic\.com|tmic\.fm/i)) { 378 URL = URL.split('/'); 379 URL[4] = URL[4] || URL[3]; 380 URL = "http://media4.fjarnet.net/tweet/tweetmicapp-"+URL[4]+'.mp3'; 381 } 382 if (options.useNB) { 383 preload = new Swiff(''+options.playerpath+'?mediaURL='+URL+'&allowSmoothing=true&autoPlay='+options.autoplay+'&buffer=6&showTimecode='+options.showTimecode+'&loop='+options.medialoop+'&controlColor='+options.controlColor+'&controlBackColor='+options.controlBackColor+'&defaultVolume='+options.volume+'&scaleIfFullScreen=true&showScalingButton=true&crop=false', { 384 id: 'MediaboxSWF', 385 width: mediaWidth, 386 height: mediaHeight, 387 params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen} 388 }); 389 } else { 390 preload = new Swiff(''+options.JWplayerpath+'?file='+URL+'&backcolor='+options.backcolor+'&frontcolor='+options.frontcolor+'&lightcolor='+options.lightcolor+'&screencolor='+options.screencolor+'&autostart='+options.autoplay, { 391 id: 'MediaboxSWF', 392 width: mediaWidth, 393 height: mediaHeight, 394 params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen} 395 }); 396 } 397 startEffect(); 398// SWF 399 } else if (URL.match(/\.swf/i) || mediaType == 'flash') { 400 mediaType = 'obj'; 401 mediaWidth = mediaWidth || options.defaultWidth; 402 mediaHeight = mediaHeight || options.defaultHeight; 403 preload = new Swiff(URL, { 404 id: 'MediaboxSWF', 405 width: mediaWidth, 406 height: mediaHeight, 407 params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen} 408 }); 409 startEffect(); 410// MOV, M4V, M4A, MP4, AIFF, etc. 411 } else if (URL.match(/\.mov|\.m4v|\.m4a|\.aiff|\.avi|\.caf|\.dv|\.mid|\.m3u|\.mp3|\.mp2|\.mp4|\.qtz/i) || mediaType == 'qt') { 412 mediaType = 'qt'; 413 mediaWidth = mediaWidth || options.defaultWidth; 414 mediaHeight = (parseInt(mediaHeight)+16)+"px" || options.defaultHeight; 415 preload = new Quickie(URL, { 416 id: 'MediaboxQT', 417 width: mediaWidth, 418 height: mediaHeight, 419 container: 'mbImage', 420 attributes: {controller: options.controller, autoplay: options.autoplay, volume: options.volume, loop: options.medialoop, bgcolor: options.bgcolor} 421 }); 422 startEffect(); 423 424 /* Social Media Sites */ 425 426// Blip.tv 427 } else if (URL.match(/blip\.tv/i)) { 428 mediaType = 'obj'; 429 mediaWidth = mediaWidth || "640px"; 430 mediaHeight = mediaHeight || "390px"; 431 preload = new Swiff(URL, { 432 src: URL, 433 width: mediaWidth, 434 height: mediaHeight, 435 params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen} 436 }); 437 startEffect(); 438// Break.com 439 } else if (URL.match(/break\.com/i)) { 440 mediaType = 'obj'; 441 mediaWidth = mediaWidth || "464px"; 442 mediaHeight = mediaHeight || "376px"; 443 mediaId = URL.match(/\d{6}/g); 444 preload = new Swiff('http://embed.break.com/'+mediaId, { 445 width: mediaWidth, 446 height: mediaHeight, 447 params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen} 448 }); 449 startEffect(); 450// DailyMotion 451 } else if (URL.match(/dailymotion\.com/i)) { 452 mediaType = 'obj'; 453 mediaWidth = mediaWidth || "480px"; 454 mediaHeight = mediaHeight || "381px"; 455 preload = new Swiff(URL, { 456 id: mediaId, 457 width: mediaWidth, 458 height: mediaHeight, 459 params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen} 460 }); 461 startEffect(); 462// Facebook 463 } else if (URL.match(/facebook\.com/i)) { 464 mediaType = 'obj'; 465 mediaWidth = mediaWidth || "320px"; 466 mediaHeight = mediaHeight || "240px"; 467 mediaSplit = URL.split('v='); 468 mediaSplit = mediaSplit[1].split('&'); 469 mediaId = mediaSplit[0]; 470 preload = new Swiff('http://www.facebook.com/v/'+mediaId, { 471 movie: 'http://www.facebook.com/v/'+mediaId, 472 classid: 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000', 473 width: mediaWidth, 474 height: mediaHeight, 475 params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen} 476 }); 477 startEffect(); 478// Flickr 479 } else if (URL.match(/flickr\.com/i)) { 480 mediaType = 'obj'; 481 mediaWidth = mediaWidth || "500px"; 482 mediaHeight = mediaHeight || "375px"; 483 mediaSplit = URL.split('/'); 484 mediaId = mediaSplit[5]; 485 preload = new Swiff('http://www.flickr.com/apps/video/stewart.swf', { 486 id: mediaId, 487 classid: 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000', 488 width: mediaWidth, 489 height: mediaHeight,
490 params: {flashvars: 'photo_id='+mediaId+'&show_info_box='+options.flInfo, wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen} 491 }); 492 startEffect(); 493// GameTrailers Video 494 } else if (URL.match(/gametrailers\.com/i)) { 495 mediaType = 'obj'; 496 mediaWidth = mediaWidth || "480px"; 497 mediaHeight = mediaHeight || "392px"; 498 mediaId = URL.match(/\d{5}/g); 499 preload = new Swiff('http://www.gametrailers.com/remote_wrap.php?mid='+mediaId, { 500 id: mediaId, 501 width: mediaWidth, 502 height: mediaHeight, 503 params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen} 504 }); 505 startEffect(); 506// Google Video 507 } else if (URL.match(/google\.com\/videoplay/i)) { 508 mediaType = 'obj'; 509 mediaWidth = mediaWidth || "400px"; 510 mediaHeight = mediaHeight || "326px"; 511 mediaSplit = URL.split('='); 512 mediaId = mediaSplit[1]; 513 preload = new Swiff('http://video.google.com/googleplayer.swf?docId='+mediaId+'&autoplay='+options.autoplayNum, { 514 id: mediaId, 515 width: mediaWidth, 516 height: mediaHeight, 517 params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen} 518 }); 519 startEffect(); 520// Megavideo - Thanks to Robert Jandreu for suggesting this code! 521 } else if (URL.match(/megavideo\.com/i)) { 522 mediaType = 'obj'; 523 mediaWidth = mediaWidth || "640px"; 524 mediaHeight = mediaHeight || "360px"; 525 mediaSplit = URL.split('='); 526 mediaId = mediaSplit[1]; 527 preload = new Swiff('http://wwwstatic.megavideo.com/mv_player.swf?v='+mediaId, { 528 id: mediaId, 529 width: mediaWidth, 530 height: mediaHeight, 531 params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen} 532 }); 533 startEffect(); 534// Metacafe 535 } else if (URL.match(/metacafe\.com\/watch/i)) { 536 mediaType = 'obj'; 537 mediaWidth = mediaWidth || "400px"; 538 mediaHeight = mediaHeight || "345px"; 539 mediaSplit = URL.split('/'); 540 mediaId = mediaSplit[4]; 541 preload = new Swiff('http://www.metacafe.com/fplayer/'+mediaId+'/.swf?playerVars=autoPlay='+options.autoplayYes, { 542 id: mediaId, 543 width: mediaWidth, 544 height: mediaHeight, 545 params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen} 546 }); 547 startEffect(); 548// Myspace 549 } else if (URL.match(/vids\.myspace\.com/i)) { 550 mediaType = 'obj'; 551 mediaWidth = mediaWidth || "425px"; 552 mediaHeight = mediaHeight || "360px"; 553 preload = new Swiff(URL, { 554 id: mediaId, 555 width: mediaWidth, 556 height: mediaHeight, 557 params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen} 558 }); 559 startEffect(); 560// Revver 561 } else if (URL.match(/revver\.com/i)) { 562 mediaType = 'obj'; 563 mediaWidth = mediaWidth || "480px"; 564 mediaHeight = mediaHeight || "392px"; 565 mediaSplit = URL.split('/'); 566 mediaId = mediaSplit[4]; 567 preload = new Swiff('http://flash.revver.com/player/1.0/player.swf?mediaId='+mediaId+'&affiliateId='+options.revverID+'&allowFullScreen='+options.revverFullscreen+'&autoStart='+options.autoplay+'&backColor=#'+options.revverBack+'&frontColor=#'+options.revverFront+'&gradColor=#'+options.revverGrad+'&shareUrl=revver', { 568 id: mediaId, 569 width: mediaWidth, 570 height: mediaHeight, 571 params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen} 572 }); 573 startEffect(); 574// Rutube 575 } else if (URL.match(/rutube\.ru/i)) { 576 mediaType = 'obj'; 577 mediaWidth = mediaWidth || "470px"; 578 mediaHeight = mediaHeight || "353px"; 579 mediaSplit = URL.split('='); 580 mediaId = mediaSplit[1]; 581 preload = new Swiff('http://video.rutube.ru/'+mediaId, { 582 movie: 'http://video.rutube.ru/'+mediaId, 583 width: mediaWidth, 584 height: mediaHeight, 585 params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen} 586 }); 587 startEffect(); 588// Seesmic 589 } else if (URL.match(/seesmic\.com/i)) { 590 mediaType = 'obj'; 591 mediaWidth = mediaWidth || "435px"; 592 mediaHeight = mediaHeight || "355px"; 593 mediaSplit = URL.split('/'); 594 mediaId = mediaSplit[5]; 595 preload = new Swiff('http://seesmic.com/Standalone.swf?video='+mediaId, { 596 id: mediaId, 597 width: mediaWidth, 598 height: mediaHeight, 599 params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen} 600 }); 601 startEffect(); 602// Tudou 603 } else if (URL.match(/tudou\.com/i)) { 604 mediaType = 'obj'; 605 mediaWidth = mediaWidth || "400px"; 606 mediaHeight = mediaHeight || "340px"; 607 mediaSplit = URL.split('/'); 608 mediaId = mediaSplit[5]; 609 preload = new Swiff('http://www.tudou.com/v/'+mediaId, { 610 width: mediaWidth, 611 height: mediaHeight, 612 params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen} 613 }); 614 startEffect(); 615// Twitvcam 616 } else if (URL.match(/twitcam\.com/i)) { 617 mediaType = 'obj'; 618 mediaWidth = mediaWidth || "320px"; 619 mediaHeight = mediaHeight || "265px"; 620 mediaSplit = URL.split('/'); 621 mediaId = mediaSplit[3]; 622 preload = new Swiff('http://static.livestream.com/chromelessPlayer/wrappers/TwitcamPlayer.swf?hash='+mediaId, { 623 width: mediaWidth, 624 height: mediaHeight, 625 params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen} 626 }); 627 startEffect(); 628// Twiturm 629 } else if (URL.match(/twiturm\.com/i)) { 630 mediaType = 'obj'; 631 mediaWidth = mediaWidth || "402px"; 632 mediaHeight = mediaHeight || "48px"; 633 mediaSplit = URL.split('/'); 634 mediaId = mediaSplit[3]; 635 preload = new Swiff('http://twiturm.com/flash/twiturm_mp3.swf?playerID=0&sf='+mediaId, { 636 width: mediaWidth, 637 height: mediaHeight, 638 params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen} 639 }); 640 startEffect(); 641// Twitvid 642 } else if (URL.match(/twitvid\.com/i)) { 643 mediaType = 'obj'; 644 mediaWidth = mediaWidth || "600px"; 645 mediaHeight = mediaHeight || "338px"; 646 mediaSplit = URL.split('/'); 647 mediaId = mediaSplit[3]; 648 preload = new Swiff('http://www.twitvid.com/player/'+mediaId, { 649 width: mediaWidth, 650 height: mediaHeight, 651 params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen} 652 }); 653 startEffect(); 654// Ustream.tv 655 } else if (URL.match(/ustream\.tv/i)) { 656 mediaType = 'obj'; 657 mediaWidth = mediaWidth || "400px"; 658 mediaHeight = mediaHeight || "326px"; 659 preload = new Swiff(URL+'&viewcount='+options.usViewers+'&autoplay='+options.autoplay, { 660 width: mediaWidth, 661 height: mediaHeight, 662 params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen} 663 }); 664 startEffect(); 665// YouKu 666 } else if (URL.match(/youku\.com/i)) { 667 mediaType = 'obj'; 668 mediaWidth = mediaWidth || "480px"; 669 mediaHeight = mediaHeight || "400px"; 670 mediaSplit = URL.split('id_'); 671 mediaId = mediaSplit[1]; 672 preload = new Swiff('http://player.youku.com/player.php/sid/'+mediaId+'=/v.swf', { 673 width: mediaWidth, 674 height: mediaHeight, 675 params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen} 676 }); 677 startEffect(); 678// YouTube Video (now includes HTML5 option) 679 } else if (URL.match(/youtube\.com\/watch/i)) { 680 mediaSplit = URL.split('v='); 681 if (options.html5) { 682 mediaType = 'url'; 683 mediaWidth = mediaWidth || "640px"; 684 mediaHeight = mediaHeight || "385px"; 685 mediaId = "mediaId_"+new Date().getTime(); // Safari may not update iframe content with a static id. 686 preload = new Element('iframe', { 687 'src': 'http://www.youtube.com/embed/'+mediaSplit[1], 688 'id': mediaId, 689 'width': mediaWidth, 690 'height': mediaHeight, 691 'frameborder': 0 692 }); 693 startEffect(); 694 } else { 695 mediaType = 'obj'; 696 mediaId = mediaSplit[1]; 697 if (mediaId.match(/fmt=22/i)) { 698 mediaFmt = '&ap=%2526fmt%3D22'; 699 mediaWidth = mediaWidth || "640px"; 700 mediaHeight = mediaHeight || "385px"; 701 } else if (mediaId.match(/fmt=18/i)) { 702 mediaFmt = '&ap=%2526fmt%3D18'; 703 mediaWidth = mediaWidth || "560px"; 704 mediaHeight = mediaHeight || "345px"; 705 } else { 706 mediaFmt = options.ytQuality; 707 mediaWidth = mediaWidth || "480px"; 708 mediaHeight = mediaHeight || "295px"; 709 } 710 preload = new Swiff('http://www.youtube.com/v/'+mediaId+'&autoplay='+options.autoplayNum+'&fs='+options.fullscreenNum+mediaFmt+'&border='+options.ytBorder+'&color1=0x'+options.ytColor1+'&color2=0x'+options.ytColor2+'&rel='+options.ytRel+'&showinfo='+options.ytInfo+'&showsearch='+options.ytSearch, { 711 id: mediaId, 712 width: mediaWidth, 713 height: mediaHeight, 714 params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen} 715 }); 716 startEffect(); 717 } 718// YouTube Playlist 719 } else if (URL.match(/youtube\.com\/view/i)) { 720 mediaType = 'obj'; 721 mediaSplit = URL.split('p='); 722 mediaId = mediaSplit[1]; 723 mediaWidth = mediaWidth || "480px"; 724 mediaHeight = mediaHeight || "385px"; 725 preload = new Swiff('http://www.youtube.com/p/'+mediaId+'&autoplay='+options.autoplayNum+'&fs='+options.fullscreenNum+mediaFmt+'&border='+options.ytBorder+'&color1=0x'+options.ytColor1+'&color2=0x'+options.ytColor2+'&rel='+options.ytRel+'&showinfo='+options.ytInfo+'&showsearch='+options.ytSearch, { 726 id: mediaId, 727 width: mediaWidth, 728 height: mediaHeight, 729 params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen} 730 }); 731 startEffect(); 732// Veoh 733 } else if (URL.match(/veoh\.com/i)) { 734 mediaType = 'obj'; 735 mediaWidth = mediaWidth || "410px"; 736 mediaHeight = mediaHeight || "341px"; 737 URL = URL.replace('%3D','/'); 738 mediaSplit = URL.split('watch/'); 739 mediaId = mediaSplit[1]; 740 preload = new Swiff('http://www.veoh.com/static/swf/webplayer/WebPlayer.swf?version=AFrontend.5.5.2.1001&permalinkId='+mediaId+'&player=videodetail
740sembedded&videoAutoPlay='+options.AutoplayNum+'&id=anonymous', { 741 id: mediaId, 742 width: mediaWidth, 743 height: mediaHeight, 744 params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen} 745 }); 746 startEffect(); 747// Viddler 748 } else if (URL.match(/viddler\.com/i)) { 749 mediaType = 'obj'; 750 mediaWidth = mediaWidth || "437px"; 751 mediaHeight = mediaHeight || "370px"; 752 mediaSplit = URL.split('/'); 753 mediaId = mediaSplit[4]; 754 preload = new Swiff(URL, { 755 id: 'viddler_'+mediaId, 756 movie: URL, 757 classid: 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000', 758 width: mediaWidth, 759 height: mediaHeight, 760 params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen, id: 'viddler_'+mediaId, movie: URL} 761 }); 762 startEffect(); 763// Viddyou 764 } else if (URL.match(/viddyou\.com/i)) { 765 mediaType = 'obj'; 766 mediaWidth = mediaWidth || "416px"; 767 mediaHeight = mediaHeight || "312px"; 768 mediaSplit = URL.split('='); 769 mediaId = mediaSplit[1]; 770 preload = new Swiff('http://www.viddyou.com/get/v2_'+options.vuPlayer+'/'+mediaId+'.swf', { 771 id: mediaId, 772 movie: 'http://www.viddyou.com/get/v2_'+options.vuPlayer+'/'+mediaId+'.swf', 773 width: mediaWidth, 774 height: mediaHeight, 775 params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen} 776 }); 777 startEffect(); 778// Vimeo (now includes HTML5 option) 779 } else if (URL.match(/vimeo\.com/i)) { 780 mediaWidth = mediaWidth || "640px"; // site defualt: 400px 781 mediaHeight = mediaHeight || "360px"; // site defualt: 225px 782 mediaSplit = URL.split('/'); 783 mediaId = mediaSplit[3]; 784 785 if (options.html5) { 786 mediaType = 'url'; 787 mediaId = "mediaId_"+new Date().getTime(); // Safari may not update iframe content with a static id. 788 preload = new Element('iframe', { 789 'src': 'http://player.vimeo.com/video/'+mediaSplit[3]+'?portrait='+options.vmPortrait, 790 'id': mediaId, 791 'width': mediaWidth, 792 'height': mediaHeight, 793 'frameborder': 0 794 }); 795 startEffect(); 796 } else { 797 mediaType = 'obj'; 798 preload = new Swiff('http://www.vimeo.com/moogaloop.swf?clip_id='+mediaId+'&server=www.vimeo.com&fullscreen='+options.fullscreenNum+'&autoplay='+options.autoplayNum+'&show_title='+options.vmTitle+'&show_byline='+options.vmByline+'&show_portrait='+options.vmPortrait+'&color='+options.vmColor, { 799 id: mediaId, 800 width: mediaWidth, 801 height: mediaHeight, 802 params: {wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen} 803 }); 804 startEffect(); 805 } 806// 12seconds 807 } else if (URL.match(/12seconds\.tv/i)) { 808 mediaType = 'obj'; 809 mediaWidth = mediaWidth || "430px"; 810 mediaHeight = mediaHeight || "360px"; 811 mediaSplit = URL.split('/'); 812 mediaId = mediaSplit[5]; 813 preload = new Swiff('http://embed.12seconds.tv/players/remotePlayer.swf', { 814 id: mediaId, 815 width: mediaWidth, 816 height: mediaHeight, 817 params: {flashvars: 'vid='+mediaId+'', wmode: options.wmode, bgcolor: options.bgcolor, allowscriptaccess: options.scriptaccess, allowfullscreen: options.fullscreen} 818 }); 819 startEffect(); 820 821 /* Specific Content Types */ 822 823// INLINE 824 } else if (URL.match(/\#mb_/i)) { 825 mediaType = 'inline'; 826 mediaWidth = mediaWidth || options.defaultWidth; 827 mediaHeight = mediaHeight || options.defaultHeight; 828 URLsplit = URL.split('#'); 829 preload = document.id(URLsplit[1]).get('html'); 830 startEffect(); 831// HTML 832 } else { 833 mediaType = 'url'; 834 mediaWidth = mediaWidth || options.defaultWidth; 835 mediaHeight = mediaHeight || options.defaultHeight; 836 mediaId = "mediaId_"+new Date().getTime(); // Safari may not update iframe content with a static id. 837 preload = new Element('iframe', { 838 'src': URL, 839 'id': mediaId, 840 'width': mediaWidth, 841 'height': mediaHeight, 842 'frameborder': 0 843 }); 844 startEffect(); 845 } 846 } 847 return false;
848 } 849 850 function startEffect() { 851 if (mediaType == "img"){ 852 mediaWidth = preload.width; 853 mediaHeight = preload.height; 854 if (options.imgBackground) { 855 image.setStyles({backgroundImage: "url("+URL+")", display: ""}); 856 } else { // Thanks to Dusan Medlin for fixing large 16x9 image errors in a 4x3 browser 857 if (mediaHeight >= winHeight-options.imgPadding && (mediaHeight / winHeight) >= (mediaWidth / winWidth)) { 858 mediaHeight = winHeight-options.imgPadding; 859 mediaWidth = preload.width = parseInt((mediaHeight/preload.height)*mediaWidth); 860 preload.height = mediaHeight; 861 } else if (mediaWidth >= winWidth-options.imgPadding && (mediaHeight / winHeight) < (mediaWidth / winWidth)) { 862 mediaWidth = winWidth-options.imgPadding; 863 mediaHeight = preload.height = parseInt((mediaWidth/preload.width)*mediaHeight); 864 preload.width = mediaWidth; 865 } 866 if (Browser.Engine.trident) preload = document.id(preload); 867 preload.addEvent('mousedown', function(e){ e.stop(); }).addEvent('contextmenu', function(e){ e.stop(); }); 868 image.setStyles({backgroundImage: "none", display: ""}); 869 preload.inject(image); 870 } 871 } else if (mediaType == "obj") { 872 if (Browser.Plugins.Flash.version<8) { 873 image.setStyles({backgroundImage: "none", display: ""}); 874 image.set('html', '<div id="mbError"><b>Error</b><br/>Adobe Flash is either not installed or not up to date, please visit <a href="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" title="Get Flash" target="_new">Adobe.com</a> to download the free player.</div>'); 875 mediaWidth = options.DefaultWidth; 876 mediaHeight = options.DefaultHeight; 877 } else { 878 image.setStyles({backgroundImage: "none", display: ""}); 879 preload.inject(image); 880 } 881 } else if (mediaType == "qt") { 882 image.setStyles({backgroundImage: "none", display: ""}); 883 preload; 884 } else if (mediaType == "inline") { 885// if (options.overflow) image.setStyles({overflow: options.overflow}); 886 image.setStyles({backgroundImage: "none", display: ""}); 887 image.set('html', preload); 888 } else if (mediaType == "url") { 889 image.setStyles({backgroundImage: "none", display: ""}); 890 preload.inject(image); 891 } else { 892 image.setStyles({backgroundImage: "none", display: ""}); 893 image.set('html', '<div id="mbError"><b>Error</b><br/>A file type error has occoured, please visit <a href="iaian7.com/webcode/mediaboxAdvanced" title="mediaboxAdvanced" target="_new">iaian7.com</a> or contact the website author for more information.</div>'); 894 mediaWidth = options.defaultWidth; 895 mediaHeight = options.defaultHeight; 896 } 897 image.setStyles({width: mediaWidth, height: mediaHeight}); 898 caption.setStyles({width: mediaWidth}); 899 900 title.set('html', (options.showCaption) ? captionSplit[0] : ""); 901 caption.set('html', (options.showCaption && (captionSplit.length > 1)) ? captionSplit[1] : ""); 902 number.set('html', (options.showCounter && (images.length > 1)) ? options.counterText.replace(/{x}/, activeImage + 1).replace(/{y}/, images.length) : ""); 903 904 if ((prevImage >= 0) && (images[prevImage][0].match(/\.gif|\.jpg|\.jpeg|\.png|twitpic\.com/i))) preloadPrev.src = images[prevImage][0].replace(/twitpic\.com/i, "twitpic.com/show/full"); 905 if ((nextImage >= 0) && (images[nextImage][0].match(/\.gif|\.jpg|\.jpeg|\.png|twitpic\.com/i))) preloadNext.src = images[nextImage][0].replace(/twitpic\.com/i, "twitpic.com/show/full"); 906 907 mediaWidth = image.offsetWidth; 908 mediaHeight = image.offsetHeight+bottom.offsetHeight; 909 if (mediaHeight >= top+top) { mTop = -top } else { mTop = -(mediaHeight/2) }; 910 if (mediaWidth >= left+left) { mLeft = -left } else { mLeft = -(mediaWidth/2) }; 911 if (options.resizeOpening) { fx.resize.start({width: mediaWidth, height: mediaHeight, marginTop: mTop-margin, marginLeft: mLeft-margin}); 912 } else { center.setStyles({width: mediaWidth, height: mediaHeight, marginTop: mTop-margin, marginLeft: mLeft-margin}); imageAnimate(); } 913 } 914 915 function imageAnimate() { 916 fx.image.start(1); 917 } 918 919 function captionAnimate() { 920 center.className = ""; 921 if (prevImage >= 0) prevLink.style.display = ""; 922 if (nextImage >= 0) nextLink.style.display = ""; 923 fx.bottom.start(1); 924 } 925 926 function stop() { 927 if (preload) preload.onload = $empty; 928 fx.resize.cancel(); 929 fx.image.cancel().set(0); 930 fx.bottom.cancel().set(0); 931 $$(prevLink, nextLink).setStyle("display", "none"); 932 } 933 934 function close() { 935 if (activeImage >= 0) { 936 preload.onload = $empty; 937 image.set('html', ''); 938 for (var f in fx) fx[f].cancel(); 939 center.setStyle("display", "none"); 940 fx.overlay.chain(setup).start(0); 941 } 942 return false;
943 } 944})(); 945 946 /* Autoload code block */ 947 948Mediabox.scanPage = function() { 949// $$('#mb_').each(function(hide) { hide.set('display', 'none'); }); 950 var links = $$("a").filter(function(el) { 951 return el.rel && el.rel.test(/^lightbox/i); 952 }); 953 $$(links).mediabox({/* Put custom options here */}, null, function(el) { 954 var rel0 = this.rel.replace(/[[]|]/gi," "); 955 var relsize = rel0.split(" "); 956 return (this == el) || ((this.rel.length > 8) && el.rel.match(relsize[1])); 957 }); 958}; 959window.addEvent("domready", Mediabox.scanPage);
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.