PageSourceSearch

https://miyazawa-kazufumi.jp/js/mediaboxAdv-1.3.4b.js

js miyazawa-kazufumi.jp collected 2026-10-04 12:39:29 UTC 41,875 bytes, 959 lines download raw bytes

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>&laquo;</big>','<big>&raquo;</big>','<big>&times;</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+'&amp;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+'&amp;viewcount='+options.usViewers+'&amp;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+'&amp;server=www.vimeo.com&amp;fullscreen='+options.fullscreenNum+'&amp;autoplay='+options.autoplayNum+'&amp;show_title='+options.vmTitle+'&amp;show_byline='+options.vmByline+'&amp;show_portrait='+options.vmPortrait+'&amp;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.