function setCSSClass (obj, newClass) {
	if (typeof(window.opera) == 'undefined' && typeof(obj.getAttribute) != 'undefined' && obj.getAttribute('className') ) {
		obj.setAttribute('className', newClass, 0);
	}
	else {
		obj.className = newClass;
	}
}

function flashToDOMEventTranslator (eventType, eventInfo) {
	nameSource = MediaPlayer.HTMLNames;
	MediaPlayer.Events.fire(document.getElementById(nameSource.Objects.eventSource), eventType, eventInfo);
}

var MediaPlayer = {
	// Change these values to adjust version requirements
	qtVersionRequired:			'7',			// QuickTime
	wmpVersionRequired:			'10',			// Windows Media Player
	h264FlashVersionRequired:	'9,0,115,0',	// Flash w/ H264 support
	minFlashVersionRequired:	'8',			// Flash w/ IPv6 support

	autoPlay:		false,		// Set to true to enable autoPlay features.

	playerType:		null,
	playerWidth:	null,
	playerHeight:	null,
	trackWidth:		510,
	moviePlaying:	null,
	percentLoaded:	0,
	
	qtAvailable:	false,
	wmpAvailable:	false,
	h264Available:	false,
	ipv6Available:	false,
	playerShown:	false,
	
	displayTarget:	null,
	
	initialize: function () {
		if (typeof PluginDetect == 'undefined') {
			throw ('MediaPlayer requires PluginDetect to function.');
		}

		if (PluginDetect.isMinVersion('QuickTime', MediaPlayer.qtVersionRequired) == 1) {		// QuickTime
			MediaPlayer.qtAvailable = true;
		}
		if (MediaPlayer.Browser.IE && PluginDetect.isMinVersion('WindowsMediaPlayer', MediaPlayer.wmpVersionRequired) == 1) {	// WMP
			MediaPlayer.wmpAvailable = true;
		}
		if (PluginDetect.isMinVersion('Flash', MediaPlayer.h264FlashVersionRequired) == 1) {		// Flash + H264
			MediaPlayer.h264Available = true;
		}
		if (PluginDetect.isMinVersion('Flash', MediaPlayer.minFlashVersionRequired) == 1) {			// Flash + IPv6
			MediaPlayer.ipv6Available = true;
		}
		
		this.Browser.init();
	},
	setSize: function (width, height) {
		MediaPlayer.playerWidth = width;
		MediaPlayer.playerHeight = height;
	},
	playPause: function () {
		if (MediaPlayer.moviePlaying) {
			MediaPlayer.Player.pause();
		} else {
			if (MediaPlayer.Poster.visible) {
				MediaPlayer.Poster.hide();
			}
			MediaPlayer.Player.play();
		}
	},
	movieTime: function (time) {
		if (isNaN(time)) {
			return '0:00';
		}

		var seconds = parseInt(time);
		var minutes = 0;
		while (seconds >= 60) {
			minutes++;
			seconds -= 60;
		}

		str = minutes +':'+ (seconds < 10 ? '0' : '') + seconds;
		return str;
	},
	display: function (width, height) {
		if (width != null) {
			MediaPlayer.playerWidth = width;
		}
		if (height != null) {
			MediaPlayer.playerHeight = height;
		}
		if (MediaPlayer.playerWidth == null || MediaPlayer.playerHeight == null) {
			alert('You must specify the width and height for the player using MediaPlayer.setSize() or MediaPlayer.display().');
			return;
		}

		MediaPlayer.moviePlaying = MediaPlayer.autoPlay;
		MediaPlayer.Poster.enabled = MediaPlayer.Poster.source != null;
		
		initialMovieStyle = initialPosterStyle = '';
		if (MediaPlayer.Poster.enabled) {
			if (MediaPlayer.autoPlay) {
				initialPosterStyle = 'display:none;';
				initialMovieStyle = 'width: '+ MediaPlayer.playerWidth +'px; height: '+ MediaPlayer.playerHeight +'px;';
				if (MediaPlayer.Browser.IE8) {
					initialMovieStyle += ' margin-top: '+ MediaPlayer.Browser.IE8Adjust +'px;';
				}
				MediaPlayer.Poster.visible = false;
			} else {
				initialMovieStyle = 'width: 1px; height: 1px;';
				MediaPlayer.Poster.visible = true;
			}
		} else {
			initialMovieStyle = 'width: '+ MediaPlayer.playerWidth +'px; height: '+ MediaPlayer.playerHeight +'px;'+ (MediaPlayer.Browser.IE8 ? ' margin-top: '+ MediaPlayer.Browser.IE8Adjust +'px;' : '');
		}

		switch (true) {
			case MediaPlayer.qtAvailable && MediaPlayer.QuickTime.source != null:
				MediaPlayer.playerType = 'quicktime';
				break;
			case MediaPlayer.wmpAvailable && MediaPlayer.WMP.source != null:
				MediaPlayer.playerType = 'wmp';
				break;
			case MediaPlayer.h264Available && MediaPlayer.Flash.h264Source != null:
				MediaPlayer.playerType = 'h264flash';
				break;
			case MediaPlayer.ipv6Available && MediaPlayer.Flash.ipv6Source != null:
				MediaPlayer.playerType = 'ipv6flash';
				break;
		}
		
		nameSource = MediaPlayer.HTMLNames;
		
		switch (MediaPlayer.playerType) {
			case 'quicktime':
				playerHTML = '\n' +
				    '<div id="'+ nameSource.Containers.player +'">\n' +
					'<div id="'+ nameSource.Containers.video +'">\n' +
					(MediaPlayer.Poster.enabled ? '<div id="'+ nameSource.Objects.poster +'" style="'+ initialPosterStyle +'"><img src="'+ MediaPlayer.Poster.source +'"/></div>\n' : '') +
					'<!--[if IE]><object id="'+ nameSource.Objects.eventSource +'" classid="clsid:CB927D12-4FF7-4a9e-A169-56E4B8A75598"></object><![endif]-->\n' +
					'<object id="'+ nameSource.Objects.videoObj +'" classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" codebase="http://www.apple.com/qtactivex/qtplugin.cab" style="behavior:url(#'+ nameSource.Objects.eventSource +'); '+ initialMovieStyle +'" >\n' +
					'<param name="autoplay" value="'+ (MediaPlayer.autoPlay ? 'true' : 'false') +'">\n' +
					'<param name="controller" value="false">\n' +
					'<param name="postdomevents" value="true">\n' +
					'<param name="src" value="'+ MediaPlayer.QuickTime.source +'">\n' +
					'<embed id="'+ nameSource.Objects.videoEmbed +'" src="'+ MediaPlayer.QuickTime.source +'" autoplay="'+ (MediaPlayer.autoPlay ? 'true' : 'false') +'" controller="false" postdomevents="true" style="'+ initialMovieStyle +'">\n' +
					'</object>\n' +
					'</div>\n' +
					'<div id="'+ nameSource.Containers.controls +'">\n' +
					'<div id="'+ nameSource.Controls.playPause +'" class="play"></div>\n' +
					'<div id="'+ nameSource.Controls.controlTrack +'">\n' +
					'<div id="'+ nameSource.Controls.loadTrack +'"></div>\n' +
					'<div id="'+ nameSource.Controls.progressTrack +'"></div>\n' +
					'<div id="'+ nameSource.Controls.playhead +'"></div>\n' +
					'</div>\n' +
					'<div id="'+ nameSource.Controls.timeDisplay +'">\n' +
					'<span id="'+ nameSource.Controls.timePlayed +'">0:00</span>\n' +
					'&nbsp;/&nbsp;\n' +
					'<span id="'+ nameSource.Controls.timeTotal +'">0:00</span>\n' +
					'</div>\n</div>\n</div>\n';
				break;
			case 'wmp':
				playerHTML = '\n' +
				    '<div id="'+ nameSource.Containers.player +'">\n' +
					' <div id="'+ nameSource.Containers.video +'">\n' +
					(MediaPlayer.Poster.enabled ? '  <div id="'+ nameSource.Objects.poster +'" style="'+ initialPosterStyle +'"><img src="'+ MediaPlayer.Poster.source +'"/></div>\n' : '') +
					'  <object id="'+ nameSource.Objects.eventSource +'"></object>\n' +
					'  <OBJECT ID="'+ nameSource.Objects.videoObj +'" CLASSID="clsid:6BF52A52-394A-11D3-B153-00C04F79FAA6" STANDBY="Loading Windows Media Player components..." TYPE="application/x-ms-wmp" style="'+ initialMovieStyle +'">\n' +
					'   <param name="url" value="'+ MediaPlayer.WMP.source +'">\n' +
					'   <param name="autostart" VALUE="true">\n' +
					'   <param name="uiMode" value="none">\n' +
					'   <param name="ShowControls" VALUE="0">\n' +
					'   <param name="ShowStatusBar" value="0">\n' +
					'   <param name="ShowDisplay" value="0">\n' +
					'   <param NAME="SendPlayStateChangeEvents" value="true">\n' +
					'   <embed TYPE="application/x-ms-wmp" id="'+ nameSource.Objects.videoEmbed +'" url="'+ MediaPlayer.WMP.source +'" ShowControls="0" ShowStatusBar="0" ShowDisplay="0" autostart="1" uiMode="none" SendPlayStateChangeEvents="1" style="'+ initialMovieStyle +'">\n' +
					'  </OBJECT>\n' +
					'  <div id="'+ nameSource.Containers.controls +'">\n' +
					'   <div id="'+ nameSource.Controls.playPause +'" class="play"></div>\n' +
					'   <div id="'+ nameSource.Controls.controlTrack +'">\n' +
					'    <div id="'+ nameSource.Controls.loadTrack +'"></div>\n' +
					'    <div id="'+ nameSource.Controls.progressTrack +'"></div>\n' +
					'    <div id="'+ nameSource.Controls.playhead +'"></div>\n' +
					'   </div>\n' +
					'   <div id="'+ nameSource.Controls.timeDisplay +'">\n' +
					'    <span id="'+ nameSource.Controls.timePlayed +'">0:00</span>\n' +
					'    &nbsp;/&nbsp;\n' +
					'    <span id="'+ nameSource.Controls.timeTotal +'">0:00</span>\n' +
					'   </div>\n' +
					'  </div>\n'+
					' </div>' +
					'</div>' +
					'<script for="'+ nameSource.Objects.videoObj +'" event="PlayStateChange(newState)">MediaPlayer.Events.wmpTranslator(\'playStateChange\', newState);</script>\n' +
					'<script for="'+ nameSource.Objects.videoObj +'" event="OpenStateChange(newState)">MediaPlayer.Events.wmpTranslator(\'openStateChange\', newState);</script>\n' +
					'<script for="'+ nameSource.Objects.videoObj +'" event="PositionChange(oldPos, newPos)">MediaPlayer.Events.wmpTranslator(\'positionChange\');</script>\n';
				break;
			case 'h264flash':
			case 'ipv6flash':
				// Setup the variables to be passed to the SWF
				var flashVars = 'path='+ (MediaPlayer.playerType == 'h264flash' ? MediaPlayer.Flash.h264Source : MediaPlayer.Flash.ipv6Source) +'&';
				if (MediaPlayer.Poster.enabled) {
					flashVars += 'posterImage='+ MediaPlayer.Poster.source +'&';
				}
				if (MediaPlayer.autoPlay) {
					flashVars += 'autoPlay=true&';
				}
				
				// Make sure the poster never tries to come up since its handled by the SWF
				MediaPlayer.Poster.source = null;
				MediaPlayer.Poster.enabled = false;
				
				// Some browsers position the object weird
				initialStyle = '';
				if (MediaPlayer.Browser.WebKit) {
					initialStyle += 'margin-top: '+ MediaPlayer.Browser.WebKitAdjust +'px;';
				}
				if (MediaPlayer.Browser.IE8) {
					initialStyle += 'margin-top: '+ MediaPlayer.Browser.IE8Adjust +'px;';
				}
				playerHTML = '\n' +
				    '<div id="'+ nameSource.Containers.player +'">\n' +
					'<div id="'+ nameSource.Containers.video +'">\n' +
					'<object id="'+ nameSource.Objects.eventSource +'"></object>\n' +
					'<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab" width="'+ MediaPlayer.playerWidth +'" height="'+ MediaPlayer.playerHeight +'" id="'+ nameSource.Objects.videoObj +'" align="middle" style="'+ initialStyle +'">\n' +
					'<param name="allowScriptAccess" value="sameDomain" />\n' +
					'<param name="allowFullScreen" value="false" />\n' +
					'<param name="movie" value="mediaPlayer.swf" />\n' +
					'<param name="quality" value="high" />\n' +
					'<param name="bgcolor" value="#000000" />\n' +
					'<param name="flashvars" value="'+ flashVars +'" />\n' +
					'<embed src="mediaPlayer.swf" flashvars="'+ flashVars +'" quality="high" bgcolor="#000000" width="'+ MediaPlayer.playerWidth +'" height="'+ MediaPlayer.playerHeight +'" id="'+ nameSource.Objects.videoEmbed +'" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" />\n' +
					'</object>\n' +
					'</div>\n' +
					'<div id="'+ nameSource.Containers.controls +'">\n' +
					'<div id="'+ nameSource.Controls.playPause +'" class="play"></div>\n' +
					'<div id="'+ nameSource.Controls.controlTrack +'">\n' +
					'<div id="'+ nameSource.Controls.loadTrack +'"></div>\n' +
					'<div id="'+ nameSource.Controls.progressTrack +'"></div>\n' +
					'<div id="'+ nameSource.Controls.playhead +'"></div>\n' +
					'</div>\n' +
					'<div id="'+ nameSource.Controls.timeDisplay +'">\n' +
					'<span id="'+ nameSource.Controls.timePlayed +'">0:00</span>\n' +
					'&nbsp;/&nbsp;\n' +
					'<span id="'+ nameSource.Controls.timeTotal +'">0:00</span>\n' +
					'</div>\n</div>\n</div>';
				break;
			default:
				playerHTML = '<h4>Content on MediaPlayer page requires a newer version of Adobe Flash Player.</h4>\n' +
            		'<p><a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>\n'
				break;
		}
		
		if (MediaPlayer.displayTarget == null) {
			document.write(playerHTML);
		} else {
			writeTarget = document.getElementById(MediaPlayer.displayTarget);
			if (!writeTarget) {
				alert('Sorry, I could not find the requested display target.');
			} else {
				writeTarget.innerHTML = playerHTML;
			}
		}
		MediaPlayer.playerShown = true;
		MediaPlayer.Controls.init();
		MediaPlayer.Player.init();
	},
	
	Browser: {
		IE:		!!(window.attachEvent && navigator.userAgent.indexOf('Opera') === -1),
	    IEver:	((/MSIE\s*(\d\.?\d*)/i).exec(navigator.userAgent)) ? parseFloat(RegExp.$1,10) : -1,
   	    IE8:	this.IEver == 8,
	    Opera:	navigator.userAgent.indexOf('Opera') > -1,
	    WebKit:	navigator.userAgent.indexOf('AppleWebKit/') > -1,
	    Gecko:	navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('KHTML') === -1,
	    MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/),

	    IE8Adjust:		-4,
	    WebKitAdjust:	-16,
	    
	    pageLoaded:		false,
	    
	    init: function () {
		    this.IEver = this.IE && ((/MSIE\s*(\d\.?\d*)/i).exec(navigator.userAgent)) ? parseFloat(RegExp.$1,10) : -1;
		    this.IE8 = this.IEver == 8;

		    window.onload = function () {
		    	MediaPlayer.Browser.pageLoaded = true;
		    }
	    }
	},
	
	HTMLNames: {
		Objects: {
			poster:			'MediaPlayerPoster',
			videoObj:		'MediaPlayerVideoObject',
			videoEmbed:		'MediaPlayerVideoEmbed',
			eventSource:	'MediaPlayerEventSource'
		},

		Containers:	{
			player:		'MediaPlayerContainer',
			video:		'MediaPlayerVideo',
			controls:	'MediaPlayerControls'
		},
		
		Controls: {
			playPause:		'MediaPlayerPlayPauseButton',
			controlTrack:	'MediaPlayerControlTrack',
			loadTrack:		'MediaPlayerLoadTrack',
			progressTrack:	'MediaPlayerProgressTrack',
			playhead:		'MediaPlayerPlayhead',
			timeDisplay:	'MediaPlayerTimeDisplay',
			timePlayed:		'MediaPlayerTimePlayhead',
			timeTotal:		'MediaPlayerTimeTotal'
		}
	},
	
	Controls:  {
		movie:			null,
		movieObj:		null,
		movieEmbed:		null,
		eventSource:	null,
		
		playButton:		null,
		loadTrack:		null,
		playTrack:		null,
		playhead:		null,
		
		currentTime:	null,
		durationTime:	null,
		
		init: function () {
			nameSource = MediaPlayer.HTMLNames;
			
			MediaPlayer.Controls.movieObj = document.getElementById(nameSource.Objects.videoObj);
			MediaPlayer.Controls.movieEmbed = document.getElementById(nameSource.Objects.videoEmbed);
			MediaPlayer.Controls.playButton = document.getElementById(nameSource.Controls.playPause);
			MediaPlayer.Controls.loadTrack = document.getElementById(nameSource.Controls.loadTrack);
			MediaPlayer.Controls.playTrack = document.getElementById(nameSource.Controls.progressTrack);
			MediaPlayer.Controls.playhead = document.getElementById(nameSource.Controls.playhead);
			MediaPlayer.Controls.currentTime = document.getElementById(nameSource.Controls.timePlayed);
			MediaPlayer.Controls.durationTime = document.getElementById(nameSource.Controls.timeTotal);
			
			switch (MediaPlayer.playerType) {
				case 'quicktime':
					MediaPlayer.Controls.eventSource = MediaPlayer.Controls.movieObj;
					MediaPlayer.Controls.movie = MediaPlayer.Browser.IE ? MediaPlayer.Controls.movieObj : MediaPlayer.Controls.movieEmbed;
					break;
				case 'wmp':
					MediaPlayer.Controls.eventSource = document.getElementById(nameSource.Objects.eventSource);
					MediaPlayer.Controls.movie = MediaPlayer.Controls.movieObj;
					break;
				case 'h264flash':
				case 'ipv6flash':
					MediaPlayer.Controls.eventSource = document.getElementById(nameSource.Objects.eventSource);
					MediaPlayer.Controls.movie = MediaPlayer.Browser.IE ? MediaPlayer.Controls.movieObj : MediaPlayer.Controls.movieEmbed;
					break;
			}
		}		
	},
	
	Events: {
		log: function (event) {
			if (document.getElementById('events')) {
				message = event.type;
				if (event.detail && event.detail != '') {
					message += ' [' + event.detail +']';
				}
				document.getElementById('events').innerHTML += message +'<br />';
			}
		},
		convert: function (domEvent) {		// IE is the worst damned browser on the planet
			var newEvent = new Object();
			newEvent.type = domEvent.event_type;
			newEvent.detail = domEvent.detail;
			return newEvent;
		},
		fire: function (eventSource, eventType, eventInfo) {
			if (!eventSource) {
				alert('Event source object not found!');
				return;
			}
			if (document.dispatchEvent) {
				e = document.createEvent('Event');
				e.initEvent(eventType, true, true);
				e.detail = eventInfo;
				eventSource.dispatchEvent(e);
			} else {
				e = document.createEventObject();
				e.detail = eventInfo;
				e.event_type = eventType;
				eventSource.fireEvent('onclick', e);
			}
		},
		wmpTranslator: function (eventType, param) {
			MediaPlayer.Events.fire(MediaPlayer.Controls.eventSource, eventType, param);
		},
		listen: function (obj, event, handler) {
			if ( document.addEventListener ) {
				obj.addEventListener(event, handler, false);
			} else {	// IE
				obj.attachEvent('on' + event, handler);
			}
		}
	},
	
	Player: {
		init: function () {
			switch (MediaPlayer.playerType) {
				case 'quicktime':
					if (MediaPlayer.Browser.IE || !MediaPlayer.Browser.pageLoaded) {
						window.onload = MediaPlayer.QuickTime.registerEvents;
					} else {
						MediaPlayer.QuickTime.registerEvents();
					}
					break;
				case 'wmp':
					MediaPlayer.Controls.movie.enableContextMenu = false;
					MediaPlayer.Controls.movie.settings.volume = 100;

					if (MediaPlayer.Browser.IE || !MediaPlayer.Browser.pageLoaded) {
						window.onload = MediaPlayer.WMP.registerEvents;
					} else {
						MediaPlayer.WMP.registerEvents();
					}
					break;
				case 'h264flash':
				case 'ipv6flash':
					if (MediaPlayer.Browser.IE || !MediaPlayer.Browser.pageLoaded) {
						window.onload = MediaPlayer.Flash.registerEvents;
					} else {
						MediaPlayer.Flash.registerEvents();
					}
					break;
			}

			nameSource = MediaPlayer.HTMLNames;
			new Control.Slider(nameSource.Controls.playhead, nameSource.Controls.controlTrack, {
				disabled: MediaPlayer.playerType == 'wmp',
				onSlide: function (newVal) {
					if (newVal >= MediaPlayer.percentLoaded) {
						newVal = MediaPlayer.percentLoaded;
					}
					MediaPlayer.Player.setTime(newVal);
				},
				onChange: function (newVal) {
					if (newVal >= MediaPlayer.percentLoaded) {
						newVal = MediaPlayer.percentLoaded;
					}
					MediaPlayer.Player.setTime(newVal);
				}
			});
		},
		play: function () {
			switch (MediaPlayer.playerType) {
				case 'quicktime':
					MediaPlayer.Controls.movie.Play();
					break;
				case 'wmp':
					MediaPlayer.Controls.movie.controls.Play();
					break;
				case 'h264flash':
				case 'ipv6flash':
					MediaPlayer.Controls.movie.playMovie();
					break;
			}
		},
		pause: function () {
			switch (MediaPlayer.playerType) {
				case 'quicktime':
					MediaPlayer.Controls.movie.Stop();
					break;
				case 'wmp':
					MediaPlayer.Controls.movie.controls.Pause();
					break;
				case 'h264flash':
				case 'ipv6flash':
					MediaPlayer.Controls.movie.pauseMovie();
					break;
			}
		},
		hide: function () {
			nameSource = MediaPlayer.HTMLNames;
			switch (MediaPlayer.playerType) {
				case 'quicktime':
					MediaPlayer.Controls.movieObj.style.cssText = 'behavior:url(#'+ nameSource.Objects.eventSource +'); width:1px; height: 1px;';
					MediaPlayer.Controls.movieObj.setAttribute('width', 1);
					MediaPlayer.Controls.movieObj.setAttribute('height', 1);

					if (MediaPlayer.Controls.movieEmbed) {		// IE ignores the embed element
						MediaPlayer.Controls.movieEmbed.style.cssText = 'width: 1px; height: 1px;';
						MediaPlayer.Controls.movieEmbed.setAttribute('width', 1);
						MediaPlayer.Controls.movieEmbed.setAttribute('height', 1);
					}
					break;
				case 'wmp':
					MediaPlayer.Controls.movieObj.style.cssText = 'width:1px; height: 1px;';
					MediaPlayer.Controls.movieObj.setAttribute('width', 1);
					MediaPlayer.Controls.movieObj.setAttribute('height', 1);
					break;
				case 'h264flash':
				case 'ipv6flash':
					// nothing to do
					break;
			}
		},
		show: function () {
			nameSource = MediaPlayer.HTMLNames;
			switch (MediaPlayer.playerType) {
				case 'quicktime':
					MediaPlayer.Controls.movieObj.style.cssText = 'behavior:url(#'+ nameSource.Objects.eventSource +'); width:'+ MediaPlayer.playerWidth +'px; height: '+ MediaPlayer.playerHeight +'px; margin-top: '+ (MediaPlayer.Browser.IE8 ? MediaPlayer.Browser.IE8Adjust : '0') +'px;';
					MediaPlayer.Controls.movieObj.setAttribute('width', MediaPlayer.playerWidth);
					MediaPlayer.Controls.movieObj.setAttribute('height', MediaPlayer.playerHeight);

					if (MediaPlayer.Controls.movieEmbed) {		// IE ignores the embed element
						MediaPlayer.Controls.movieEmbed.style.cssText = 'width:'+ MediaPlayer.playerWidth +'px; height: '+ MediaPlayer.playerHeight +'px;';
						MediaPlayer.Controls.movieEmbed.setAttribute('width', MediaPlayer.playerWidth);
						MediaPlayer.Controls.movieEmbed.setAttribute('height', MediaPlayer.playerHeight);	
					}
					break;
				case 'wmp':
					MediaPlayer.Controls.movieObj.style.cssText = 'width:'+ MediaPlayer.playerWidth +'px; height: '+ MediaPlayer.playerHeight +'px; margin-top: '+ (MediaPlayer.Browser.IE8 ? MediaPlayer.Browser.IE8Adjust : '0') +'px;';
					MediaPlayer.Controls.movieObj.setAttribute('width', MediaPlayer.playerWidth);
					MediaPlayer.Controls.movieObj.setAttribute('height', MediaPlayer.playerHeight);
					break;
				case 'h264flash':
				case 'ipv6flash':
					// nothing to do
					break;
			}
		},
		initUI: function () {
			switch (MediaPlayer.playerType) {
				case 'quicktime':	playerObj = MediaPlayer.QuickTime;	break;
				case 'wmp':			playerObj = MediaPlayer.WMP;		break;
				case 'h264flash':
				case 'ipv6flash':
					playerObj = MediaPlayer.Flash;
					MediaPlayer.Player.updatePlayhead();
					break;
			}
			MediaPlayer.Controls.durationTime.innerHTML = MediaPlayer.movieTime(playerObj.getDuration());
		},
		startPlayback: function () {
			MediaPlayer.moviePlaying = true;
			setCSSClass(MediaPlayer.Controls.playButton, 'pause');
			MediaPlayer.Controls.playButton.style.backgroundPosition = '0px -19px';
			MediaPlayer.Player.playProgress();
		},
		pausePlayback: function () {
			MediaPlayer.moviePlaying = false;
			setCSSClass(MediaPlayer.Controls.playButton, 'play');
			MediaPlayer.Controls.playButton.style.backgroundPosition = '0px 0px';
			MediaPlayer.Player.updatePlayhead();
		},
		updatePlayhead: function () {
			switch (MediaPlayer.playerType) {
				case 'quicktime':	playerObj = MediaPlayer.QuickTime;	break;
				case 'wmp':			playerObj = MediaPlayer.WMP;		break;
				case 'h264flash':
				case 'ipv6flash':	playerObj = MediaPlayer.Flash;		break;
			}
			
			if (MediaPlayer.playerType == 'wmp') {
				MediaPlayer.Player.loadProgress();
			}
			MediaPlayer.percentPlayed = playerObj.getTime() / playerObj.getDuration();
			MediaPlayer.Controls.currentTime.innerHTML = MediaPlayer.movieTime(playerObj.getTime());
			if (MediaPlayer.percentPlayed == 0 || isNaN(MediaPlayer.percentPlayed)) {
				MediaPlayer.Controls.playhead.style.left = '0px';
				MediaPlayer.Controls.playTrack.style.width = '';
			} else {
				MediaPlayer.Controls.playhead.style.left = parseInt(MediaPlayer.trackWidth * MediaPlayer.percentPlayed) +'px';
				MediaPlayer.Controls.playTrack.style.width = parseInt(MediaPlayer.trackWidth * MediaPlayer.percentPlayed) +'px';
			}
		},
		loadProgress: function () {
			switch (MediaPlayer.playerType) {
				case 'quicktime':	playerObj = MediaPlayer.QuickTime;	break;
				case 'wmp':			playerObj = MediaPlayer.WMP;		break;
				case 'h264flash':
				case 'ipv6flash':	playerObj = MediaPlayer.Flash;		break;
			}

			MediaPlayer.percentLoaded = playerObj.getPercentLoaded();
			MediaPlayer.Controls.loadTrack.style.width = parseInt(MediaPlayer.trackWidth * MediaPlayer.percentLoaded) +'px';
		},
		playProgress: function () {
			if (MediaPlayer.moviePlaying) {
				MediaPlayer.Player.updatePlayhead();
				setTimeout('MediaPlayer.Player.playProgress()', 500);
			}
		},
		setTime: function (percentPlayed) {
			switch (MediaPlayer.playerType) {
				case 'quicktime':	playerObj = MediaPlayer.QuickTime;	break;
				case 'wmp':			playerObj = MediaPlayer.WMP;		break;
				case 'h264flash':
				case 'ipv6flash':	playerObj = MediaPlayer.Flash;		break;
			}
			playerObj.setTime(percentPlayed);
		}
	},
	
	Poster: {
		source:		null,
		enabled:	false,
		visible:	false,

		show: function () {
			if (MediaPlayer.playerType == 'h264flash' || MediaPlayer.playerType == 'ipv6flash') {
				return;
			}
			if (!MediaPlayer.Poster.enabled || MediaPlayer.Poster.visible) {
				MediaPlayer.Events.fire(MediaPlayer.Controls.eventSource, 'changeMedia');
				return;
			}

			nameSource = MediaPlayer.HTMLNames;
			new Effect.Appear(nameSource.Objects.poster, { 
				duration: .5,
				beforeStart: function () {
					MediaPlayer.Player.hide();
				},
				afterFinish: function () {
					MediaPlayer.Events.fire(MediaPlayer.Controls.eventSource, 'changeMedia');
					MediaPlayer.Events.fire(MediaPlayer.Controls.eventSource, 'posterTransitionComplete', true);
				}
			});
	
			MediaPlayer.Poster.visible = true;
		},
	
		hide: function () {
			if (MediaPlayer.playerType == 'h264flash' || MediaPlayer.playerType == 'ipv6flash') {
				return;
			}
			if (!MediaPlayer.Poster.enabled || !MediaPlayer.Poster.visible) {
				return;
			}

			nameSource = MediaPlayer.HTMLNames;
			new Effect.Fade(nameSource.Objects.poster, { 
				duration: .5,
				afterFinish: function () {
					MediaPlayer.Player.show();
					MediaPlayer.Events.fire(MediaPlayer.Controls.eventSource, 'posterTransitionComplete', false);
				}
			});

			MediaPlayer.Poster.visible = false;
		}
	},
	
	QuickTime: {
		source:				null,
		movieTimeScale:		0,
		
		registerEvents: function () {
			MediaPlayer.Events.listen (MediaPlayer.Controls.playButton,	'click',				MediaPlayer.playPause);
			
			MediaPlayer.Events.listen (MediaPlayer.Controls.eventSource, 'click',				MediaPlayer.QuickTime.eventHandler);  // For IE
			MediaPlayer.Events.listen (MediaPlayer.Controls.eventSource, 'qt_loadedmetadata',	MediaPlayer.QuickTime.eventHandler);
			MediaPlayer.Events.listen (MediaPlayer.Controls.eventSource, 'qt_progress',			MediaPlayer.QuickTime.eventHandler);
			MediaPlayer.Events.listen (MediaPlayer.Controls.eventSource, 'qt_load',				MediaPlayer.QuickTime.eventHandler);
			MediaPlayer.Events.listen (MediaPlayer.Controls.eventSource, 'qt_timechanged',		MediaPlayer.QuickTime.eventHandler);
			MediaPlayer.Events.listen (MediaPlayer.Controls.eventSource, 'qt_play',				MediaPlayer.QuickTime.eventHandler);
			MediaPlayer.Events.listen (MediaPlayer.Controls.eventSource, 'qt_pause',			MediaPlayer.QuickTime.eventHandler);	
			MediaPlayer.Events.listen (MediaPlayer.Controls.eventSource, 'qt_ended',			MediaPlayer.QuickTime.eventHandler);	

			MediaPlayer.Events.listen (MediaPlayer.Controls.eventSource, 'qt_begin',			MediaPlayer.QuickTime.eventHandler);	
			MediaPlayer.Events.listen (MediaPlayer.Controls.eventSource, 'qt_waiting',			MediaPlayer.QuickTime.eventHandler);	
			MediaPlayer.Events.listen (MediaPlayer.Controls.eventSource, 'qt_stalled',			MediaPlayer.QuickTime.eventHandler);	
		},
		eventHandler: function (qtEvent) {
			/**
			 * The QuickTime plugin for IE passes events correctly, so we don't
			 * need to worry about anything.  However, custom events (like
			 * changeMedia) require a conversion because IE handles them differently.
			 */
			if (MediaPlayer.Browser.IE && qtEvent.type == 'click' && qtEvent.srcElement == MediaPlayer.Controls.eventSource) {
				qtEvent = MediaPlayer.Events.convert(qtEvent);
			}
			MediaPlayer.Events.log(qtEvent)
			switch (qtEvent.type) {
				case 'qt_loadedmetadata':	MediaPlayer.Player.initUI();			break;
				case 'qt_progress':			MediaPlayer.Player.loadProgress();		break;
				case 'qt_timechanged':		MediaPlayer.Player.updatePlayhead();	break;
				case 'qt_pause':			MediaPlayer.Player.pausePlayback();		break;
				case 'qt_play':
					MediaPlayer.Player.initUI();
					MediaPlayer.Player.loadProgress();
					MediaPlayer.Player.startPlayback();
					break;
				case 'qt_load':
					MediaPlayer.QuickTime.movieTimeScale = 0;
					MediaPlayer.Player.initUI();
					MediaPlayer.Player.loadProgress();
					break;
				case 'qt_ended':
					MediaPlayer.QuickTime.setTime(0);
					MediaPlayer.Poster.show();
					break;
				case 'qt_begin':
					MediaPlayer.Controls.movie.SetControllerVisible(false);
					break;
			}
		},
		getPercentLoaded: function () {
			return MediaPlayer.Controls.movie.GetMaxTimeLoaded() / MediaPlayer.Controls.movie.GetDuration();
		},
		getDuration: function () {
			if (MediaPlayer.QuickTime.movieTimeScale == 0) {
				MediaPlayer.QuickTime.movieTimeScale = MediaPlayer.Controls.movie.GetTimeScale();
			}
			return MediaPlayer.Controls.movie.GetDuration() / MediaPlayer.QuickTime.movieTimeScale;
		},
		getTime: function () {
			if (MediaPlayer.QuickTime.movieTimeScale == 0) {
				MediaPlayer.QuickTime.movieTimeScale = MediaPlayer.Controls.movie.GetTimeScale();
			}
			return MediaPlayer.Controls.movie.GetTime() / MediaPlayer.QuickTime.movieTimeScale;
		},
		setTime: function (percentPlayed) {
			newTime = MediaPlayer.Controls.movie.GetDuration() * percentPlayed;
			MediaPlayer.Controls.movie.SetTime(newTime);
		}
	},

	WMP: {
		source:		null,
		
		registerEvents: function () {
			MediaPlayer.Events.listen (MediaPlayer.Controls.playButton, 'click',	MediaPlayer.playPause);
			
			MediaPlayer.Events.listen (MediaPlayer.Controls.eventSource, 'click',	MediaPlayer.WMP.eventHandler);
		},
		eventHandler: function (wmpEvent) {
			wmpEvent = MediaPlayer.Events.convert(wmpEvent);
			MediaPlayer.Events.log(wmpEvent);
			switch (wmpEvent.type) {
				case 'positionChange':
					MediaPlayer.Player.updatePlayhead();
					break;
				case 'playStateChange':	
					switch (wmpEvent.detail) {
						case 1:		// Stopped
							MediaPlayer.Player.updatePlayhead();
							MediaPlayer.Player.pausePlayback();
							MediaPlayer.Poster.show();
							break;
						case 2:		// Paused
							MediaPlayer.Player.pausePlayback();
							break;
						case 3:		// Playing
							MediaPlayer.Player.startPlayback();
							break;
						case 6:		// Buffering
							MediaPlayer.Player.loadProgress();
							break;
						case 7:		// Waiting
							MediaPlayer.Player.loadProgress();
							break;
						case 8:		// Media Ended
							break;
						case 0:		// Undefined
						case 4:		// Fast Forward
						case 5:		// Rewind
						case 9:		// Transitioning
						case 10:	// Ready
						case 11:	// Reconnecting
							break;
					}
					break;
				case 'openStateChange':
					switch (wmpEvent.detail) {
						case 13:	// Media Open
							if (!MediaPlayer.autoPlay) {
								MediaPlayer.Player.pause();
							}
							MediaPlayer.Player.initUI();
							MediaPlayer.Player.loadProgress();
							break;
						case 21:	// Opening URL
							MediaPlayer.Player.loadProgress();
							break;
					}
					break;
			}
		},
		getPercentLoaded: function () {
			return MediaPlayer.Controls.movie.network.downloadProgress / 100;
		},
		getDuration: function () {
			return MediaPlayer.Controls.movie.currentMedia.duration;
		},
		getTime: function () {
			return MediaPlayer.Controls.movie.controls.currentPosition;
		},
		setTime: function (percentPlayed) {
			newTime = MediaPlayer.WMP.getDuration() * percentPlayed;
			MediaPlayer.Controls.movie.controls.currentPosition = newTime;
		}
	},

	Flash: {
		h264source:	null,
		ipv6source:	null,
		
		registerEvents: function () {
			MediaPlayer.Events.listen (MediaPlayer.Controls.playButton,		'click',				MediaPlayer.playPause);

			MediaPlayer.Events.listen (MediaPlayer.Controls.eventSource,	'click',				MediaPlayer.Flash.eventHandler);	// For IE
			MediaPlayer.Events.listen (MediaPlayer.Controls.eventSource,	'flash_init',			MediaPlayer.Flash.eventHandler);
			MediaPlayer.Events.listen (MediaPlayer.Controls.eventSource,	'flash_loadmetadata',	MediaPlayer.Flash.eventHandler);
			MediaPlayer.Events.listen (MediaPlayer.Controls.eventSource,	'flash_loadprogress',	MediaPlayer.Flash.eventHandler);
			MediaPlayer.Events.listen (MediaPlayer.Controls.eventSource,	'flash_loadcomplete',	MediaPlayer.Flash.eventHandler);
			MediaPlayer.Events.listen (MediaPlayer.Controls.eventSource,	'flash_play',			MediaPlayer.Flash.eventHandler);
			MediaPlayer.Events.listen (MediaPlayer.Controls.eventSource,	'flash_pause',			MediaPlayer.Flash.eventHandler);
			MediaPlayer.Events.listen (MediaPlayer.Controls.eventSource,	'flash_stop',			MediaPlayer.Flash.eventHandler);
			MediaPlayer.Events.listen (MediaPlayer.Controls.eventSource,	'flash_timechanged',	MediaPlayer.Flash.eventHandler);
			MediaPlayer.Events.listen (MediaPlayer.Controls.eventSource,	'flash_error',			MediaPlayer.Flash.eventHandler);
			MediaPlayer.Events.listen (MediaPlayer.Controls.eventSource,	'flash_info',			MediaPlayer.Flash.eventHandler);

			MediaPlayer.Events.listen (MediaPlayer.Controls.eventSource,	'flash_tween',			MediaPlayer.Flash.eventHandler);
		},
		eventHandler: function (flashEvent) {
			if (MediaPlayer.Browser.IE) {
				flashEvent = MediaPlayer.Events.convert(flashEvent);
			}
			MediaPlayer.Events.log(flashEvent);
			switch (flashEvent.type) {
				case 'flash_loadmetadata':	MediaPlayer.Player.initUI();			break;
				case 'flash_loadprogress':	MediaPlayer.Player.loadProgress();		break;
				case 'flash_loadcomplete':	MediaPlayer.Player.loadProgress();		break;
				case 'flash_play':			MediaPlayer.Player.startPlayback();		break;
				case 'flash_pause':			MediaPlayer.Player.pausePlayback();		break;
				case 'flash_timechanged':	MediaPlayer.Player.updatePlayhead();	break;
				case 'flash_stop':			
					MediaPlayer.Player.pausePlayback();
					MediaPlayer.Player.updatePlayhead();
					setTimeout('MediaPlayer.Player.updatePlayhead()', 500);
					break;
				case 'flash_load':
					MediaPlayer.Player.initUI();
					MediaPlayer.Player.loadProgress();
					break;
				case 'flash_tween':
					if (flashEvent.detail == 'POSTER_VISIBLE') {
						MediaPlayer.Poster.visible = true;
					} else {
						MediaPlayer.Poster.visible = false;
					}
					break;
				case 'flash_error':
					alert('Flash encountered an error.'+ (flashEvent.detail != '' ? '\n'+flashEvent.detail : ''));
					break;
			}
		},
		getPercentLoaded: function () {
			return MediaPlayer.Controls.movie.getBytesLoaded() / MediaPlayer.Controls.movie.getBytesTotal();
		},
		getDuration: function () {
			return MediaPlayer.Controls.movie.getDuration();
		},
		getTime: function () {
			return MediaPlayer.Controls.movie.getTime();
		},
		setTime: function (percentPlayed) {
			newTime = MediaPlayer.Controls.movie.getDuration() * percentPlayed;
			MediaPlayer.Controls.movie.setTime(newTime);
		}
	}
};

/**
 * PluginDetect v0.6.3 [ onWindowLoaded isMinVersion getVersion QT Shockwave Flash WMP Silverlight VLC ] 
 *
 * by Eric Gerds 
 * 
 * http://www.pinlady.net/PluginDetect/
 *
 * Plugin Strings (case sensitive):
 *	QuickTime
 *	Shockwave
 *	Flash
 *	WindowsMediaPlayer
 *	Silverlight
 *	VLC
 */
if(!PluginDetect){var PluginDetect={getNum:function(b,c){if(!this.num(b)){return null}var a;if(typeof c=="undefined"){a=/[\d][\d\.\_,-]*/.exec(b)}else{a=(new RegExp(c)).exec(b)}return a?a[0].replace(/[\.\_-]/g,","):null},hasMimeType:function(c){if(PluginDetect.isIE){return null}var b,a,d,e=c.constructor==String?[c]:c;for(d=0;d<e.length;d++){b=navigator.mimeTypes[e[d]];if(b&&b.enabledPlugin){a=b.enabledPlugin;if(a.name||a.description){return b}}}return null},findNavPlugin:function(g,d){var a=g.constructor==String?g:g.join(".*"),e=d===false?"":"\\d",b,c=new RegExp(a+".*"+e+"|"+e+".*"+a,"i"),f=navigator.plugins;for(b=0;b<f.length;b++){if(c.test(f[b].description)||c.test(f[b].name)){return f[b]}}return null},AXO:window.ActiveXObject,getAXO:function(b,a){var f=null,d,c=false;try{f=new this.AXO(b);c=true}catch(d){}if(typeof a!="undefined"){delete f;return c}return f},num:function(a){return(typeof a!="string"?false:(/\d/).test(a))},compareNums:function(g,e){var d=this,c,b,a,f=window.parseInt;if(!d.num(g)||!d.num(e)){return 0}if(d.plugin&&d.plugin.compareNums){return d.plugin.compareNums(g,e)}c=g.split(",");b=e.split(",");for(a=0;a<Math.min(c.length,b.length);a++){if(f(c[a],10)>f(b[a],10)){return 1}if(f(c[a],10)<f(b[a],10)){return -1}}return 0},formatNum:function(b){if(!this.num(b)){return null}var a,c=b.replace(/\s/g,"").replace(/[\.\_]/g,",").split(",").concat(["0","0","0","0"]);for(a=0;a<4;a++){if(/^(0+)(.+)$/.test(c[a])){c[a]=RegExp.$2}}if(!(/\d/).test(c[0])){c[0]="0"}return c[0]+","+c[1]+","+c[2]+","+c[3]},initScript:function(){var $=this,userAgent=navigator.userAgent;$.isIE=/*@cc_on!@*/false;$.IEver=$.isIE&&((/MSIE\s*(\d\.?\d*)/i).exec(userAgent))?parseFloat(RegExp.$1,10):-1;$.ActiveXEnabled=false;if($.isIE){var x,progid=["Msxml2.XMLHTTP","Msxml2.DOMDocument","Microsoft.XMLDOM","ShockwaveFlash.ShockwaveFlash","TDCCtl.TDCCtl","Shell.UIHelper","Scripting.Dictionary","wmplayer.ocx"];for(x=0;x<progid.length;x++){if($.getAXO(progid[x],1)){$.ActiveXEnabled=true;break}}$.head=typeof document.getElementsByTagName!="undefined"?document.getElementsByTagName("head")[0]:null}$.isGecko=!$.isIE&&typeof navigator.product=="string"&&(/Gecko/i).test(navigator.product)&&(/Gecko\s*\/\s*\d/i).test(userAgent)?true:false;$.GeckoRV=$.isGecko?$.formatNum((/rv\s*\:\s*([\.\,\d]+)/i).test(userAgent)?RegExp.$1:"0.9"):null;$.isSafari=!$.isIE&&(/Safari\s*\/\s*\d/i).test(userAgent)?true:false;$.isChrome=(/Chrome\s*\/\s*\d/i).test(userAgent)?true:false;$.onWindowLoaded(0)},init:function(c,a){if(typeof c!="string"){return -3}c=c.toLowerCase().replace(/\s/g,"");var b=this,d;if(typeof b[c]=="undefined"){return -3}d=b[c];b.plugin=d;if(typeof d.installed=="undefined"||a==true){d.installed=null;d.version=null;d.version0=null;d.getVersionDone=null;d.$=b}b.garbage=false;if(b.isIE&&!b.ActiveXEnabled){if(b.plugin!=b.java){return -2}}return 1},isMinVersion:function(g,e,c,b){var f=PluginDetect,d=f.init(g);if(d<0){return d}if(typeof e=="number"){e=e.toString()}if(typeof e!="string"){e="0"}if(!f.num(e)){return -3}e=f.formatNum(e);var a=-1,h=f.plugin;if(h.getVersionDone!=1){h.getVersion(c,b);if(h.getVersionDone===null){h.getVersionDone=1}}if(h.version!==null||h.installed!==null){if(h.installed<=0.5){a=h.installed}else{a=(h.version===null?0:(f.compareNums(h.version,e)>=0?1:-1))}}f.cleanup();return a;return -3},getVersion:function(e,b,a){var d=PluginDetect,c=d.init(e),f;if(c<0){return null}f=d.plugin;if(f.getVersionDone!=1){f.getVersion(b,a);if(f.getVersionDone===null){f.getVersionDone=1}}d.cleanup();return(f.version||f.version0);return null},getInfo:function(f,c,b){var a={};return a},cleanup:function(){var a=this;if(a.garbage&&typeof window.CollectGarbage!="undefined"){window.CollectGarbage()}},isActiveXObject:function(b){var d=this,a,g,f="/",c='<object width="1" height="1" style="display:none" '+d.plugin.getCodeBaseVersion(b)+">"+d.plugin.HTML+"<"+f+"object>";if(d.head.firstChild){d.head.insertBefore(document.createElement("object"),d.head.firstChild)}else{d.head.appendChild(document.createElement("object"))}d.head.firstChild.outerHTML=c;try{d.head.firstChild.classid=d.plugin.classID}catch(g){}a=false;try{if(d.head.firstChild.object){a=true}}catch(g){}try{if(a&&d.head.firstChild.readyState<4){d.garbage=true}}catch(g){}d.head.removeChild(d.head.firstChild);return a},codebaseSearch:function(c){var e=this;if(!e.ActiveXEnabled){return null}if(typeof c!="undefined"){return e.isActiveXObject(c)};var j=[0,0,0,0],g,f,b=e.plugin.digits,i=function(k,m){var l=(k==0?m:j[0])+","+(k==1?m:j[1])+","+(k==2?m:j[2])+","+(k==3?m:j[3]);return e.isActiveXObject(l)};var h,d,a=false;for(g=0;g<b.length;g++){h=b[g]*2;j[g]=0;for(f=0;f<20;f++){if(h==1&&g>0&&a){break}if(h-j[g]>1){d=Math.round((h+j[g])/2);if(i(g,d)){j[g]=d;a=true}else{h=d}}else{if(h-j[g]==1){h--;if(!a&&i(g,h)){a=true}break}else{if(!a&&i(g,h)){a=true}break}}}if(!a){return null}}return j.join(",")},dummy1:0}}PluginDetect.onDetectionDone=function(g,e,d,a){return -1};PluginDetect.onWindowLoaded=function(c){var b=PluginDetect,a=window;if(b.EventWinLoad===true){}else{b.winLoaded=false;b.EventWinLoad=true;if(typeof a.addEventListener!="undefined"){a.addEventListener("load",b.runFuncs,false)}else{if(typeof a.attachEvent!="undefined"){a.attachEvent("onload",b.runFuncs)}else{if(typeof a.onload=="function"){b.funcs[b.funcs.length]=a.onload}a.onload=b.runFuncs}}}if(typeof c=="function"){b.funcs[b.funcs.length]=c}};PluginDetect.funcs=[0];PluginDetect.runFuncs=function(){var b=PluginDetect,a;b.winLoaded=true;for(a=0;a<b.funcs.length;a++){if(typeof b.funcs[a]=="function"){b.funcs[a](b);b.funcs[a]=null}}};PluginDetect.quicktime={mimeType:["video/quicktime","application/x-quicktimeplayer","image/x-macpaint","image/x-quicktime"],progID:"QuickTimeCheckObject.QuickTimeCheck.1",progID0:"QuickTime.QuickTime",classID:"clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B",minIEver:7,HTML:'<param name="src" value="A14999.mov" /><param name="controller" value="false" />',getCodeBaseVersion:function(a){return'codebase="#version='+a+'"'},digits:[8,64,16,0],clipTo3digits:function(f){if(f===null||typeof f=="undefined"){return null}var e,d,h,g=this.$;e=f.split(",");if(g.compareNums(f,"7,60,0,0")<0&&g.compareNums(f,"7,50,0,0")>=0){d=e[0]+","+e[1].charAt(0)+","+e[1].charAt(1)+","+e[2]}else{d=e[0]+","+e[1]+","+e[2]+","+e[3]}h=d.split(",");return h[0]+","+h[1]+","+h[2]+",0"},getVersion:function(){var a=null,d,b=this.$,e=true;if(!b.isIE){if(navigator.platform&&(/linux/i).test(navigator.platform)){e=false}if(e){d=b.findNavPlugin(["QuickTime","(Plug-in|Plugin)"]);if(d&&d.name&&b.hasMimeType(this.mimeType)){a=b.getNum(d.name)}}this.installed=a?1:-1}else{var c;if(b.IEver>=this.minIEver&&b.getAXO(this.progID0,1)){a=b.codebaseSearch()}else{c=b.getAXO(this.progID);if(c&&c.QuickTimeVersion){a=c.QuickTimeVersion.toString(16);a=a.charAt(0)+"."+a.charAt(1)+"."+a.charAt(2)}}this.installed=a?1:(b.getAXO(this.progID0,1)?0:-1)}this.version=this.clipTo3digits(b.formatNum(a))}};PluginDetect.flash={mimeType:["application/x-shockwave-flash","application/futuresplash"],progID:"ShockwaveFlash.ShockwaveFlash",classID:"clsid:D27CDB6E-AE6D-11CF-96B8-444553540000",getVersion:function(){var c=function(i){if(!i){return null}var e=/[\d][\d\,\.\s]*[rRdD]{0,1}[\d\,]*/.exec(i);return e?e[0].replace(/[rRdD\.]/g,",").replace(/\s/g,""):null};var j,g=this.$,h,f,b=null,a=null,d=null;if(!g.isIE){j=g.findNavPlugin("Flash");if(j&&j.description&&g.hasMimeType(this.mimeType)){b=c(j.description)}}else{for(f=15;f>2;f--){a=g.getAXO(this.progID+"."+f);if(a){d=f.toString();break}}if(d=="6"){try{a.AllowScriptAccess="always"}catch(h){return"6,0,21,0"}}try{b=c(a.GetVariable("$version"))}catch(h){}if(!b&&d){b=d}}this.installed=b?1:-1;this.version=g.formatNum(b);return true}};PluginDetect.shockwave={mimeType:"application/x-director",progID:"SWCtl.SWCtl",classID:"clsid:166B1BCA-3F9C-11CF-8075-444553540000",getVersion:function(){var a=null,b=null,f,d,c=this.$;if(!c.isIE){d=c.findNavPlugin("Shockwave for Director");if(d&&d.description&&c.hasMimeType(this.mimeType)){a=c.getNum(d.description)}}else{try{b=c.getAXO(this.progID).ShockwaveVersion("")}catch(f){}if(typeof b=="string"&&b.length>0){a=c.getNum(b)}else{if(c.getAXO(this.progID+".8",1)){a="8"}else{if(c.getAXO(this.progID+".7",1)){a="7"}else{if(c.getAXO(this.progID+".1",1)){a="6"}}}}}this.installed=a?1:-1;this.version=c.formatNum(a)}};PluginDetect.div=null;PluginDetect.pluginSize=1;PluginDetect.DOMbody=null;PluginDetect.uninstantiate=function(a){var c,b=this;if(!a){return}try{if(a[0]&&a[0].firstChild){a[0].removeChild(a[0].firstChild)}if(a[0]&&b.div){b.div.removeChild(a[0])}if(b.div&&b.div.childNodes.length==0){b.div.parentNode.removeChild(b.div);b.div=null;if(b.DOMbody&&b.DOMbody.parentNode){b.DOMbody.parentNode.removeChild(b.DOMbody)}b.DOMbody=null}a[0]=null}catch(c){}};PluginDetect.getObject=function(b,a){var f,c=this,d=null;try{if(b&&b[0]&&b[0].firstChild){d=b[0].firstChild}}catch(f){}try{if(a&&d&&typeof d.focus!="undefined"&&typeof document.hasFocus!="undefined"&&!document.hasFocus()){d.focus()}}catch(f){}return d};PluginDetect.getContainer=function(a){var c,b=null;if(a&&a[0]){b=a[0]}return b};PluginDetect.hideObject=function(a){var b=this.getObject(a);if(b&&b.style){b.style.height="0"}};PluginDetect.instantiate=function(h,b,c,a){var j=function(d){var e=d.style;if(!e){return}e.border="0px";e.padding="0px";e.margin="0px";e.fontSize=(g.pluginSize+3)+"px";e.height=(g.pluginSize+3)+"px";e.visibility="visible";if(d.tagName&&d.tagName.toLowerCase()=="div"){e.width="100%";e.display="block"}else{if(d.tagName&&d.tagName.toLowerCase()=="span"){e.width=g.pluginSize+"px";e.display="inline"}}};var k,l=document,g=this,p,i=(l.getElementsByTagName("body")[0]||l.body),o=l.createElement("span"),n,f,m="/";if(typeof a=="undefined"){a=""}p="<"+h+' width="'+g.pluginSize+'" height="'+g.pluginSize+'" ';for(n=0;n<b.length;n=n+2){p+=b[n]+'="'+b[n+1]+'" '}p+=">";for(n=0;n<c.length;n=n+2){p+='<param name="'+c[n]+'" value="'+c[n+1]+'" />'}p+=a+"<"+m+h+">";if(!g.div){g.div=l.createElement("div");f=l.getElementById("plugindetect");if(f){j(f);f.appendChild(g.div)}else{if(i){try{if(i.firstChild&&typeof i.insertBefore!="undefined"){i.insertBefore(g.div,i.firstChild)}else{i.appendChild(g.div)}}catch(k){}}else{try{l.write('<div id="pd33993399">o<'+m+"div>");i=(l.getElementsByTagName("body")[0]||l.body);i.appendChild(g.div);i.removeChild(l.getElementById("pd33993399"))}catch(k){try{g.DOMbody=l.createElement("body");l.getElementsByTagName("html")[0].appendChild(g.DOMbody);g.DOMbody.appendChild(g.div)}catch(k){}}}}j(g.div)}if(g.div&&g.div.parentNode&&g.div.parentNode.parentNode){g.div.appendChild(o);try{o.innerHTML=p}catch(k){}j(o);return[o]}return[null]};PluginDetect.windowsmediaplayer={mimeType:["application/x-mplayer2","application/asx"],progID:"wmplayer.ocx",classID:"clsid:6BF52A52-394A-11D3-B153-00C04F79FAA6",getVersion:function(){var a=null,e=this.$,b=null;this.installed=-1;if(!e.isIE){if(e.hasMimeType(this.mimeType)){if(e.findNavPlugin(["Windows","Media","(Plug-in|Plugin)"],false)||e.findNavPlugin(["Flip4Mac","Windows","Media"],false)){this.installed=0}var d=e.isGecko&&e.compareNums(e.GeckoRV,e.formatNum("1.8"))<0;if(!d&&e.findNavPlugin(["Windows","Media","Firefox Plugin"],false)){var c=e.instantiate("object",["type",this.mimeType[0]],[]),f=e.getObject(c);if(f){a=f.versionInfo}e.uninstantiate(c)}}}else{b=e.getAXO(this.progID);if(b){a=b.versionInfo}}if(a){this.installed=1}this.version=e.formatNum(a)}};PluginDetect.silverlight={mimeType:"application/x-silverlight",progID:"AgControl.AgControl",digits:[9,20,9,12,31],getVersion:function(){var c=this.$,j=document,g=null,b=null,f=false;if(!c.isIE){var a=[null,null],e=c.findNavPlugin("Silverlight Plug-in",false),h=c.isGecko&&c.compareNums(c.GeckoRV,c.formatNum("1.6"))<=0;if(e&&c.hasMimeType(this.mimeType)){g=c.formatNum(e.description);if(g){p=g.split(",");if(parseInt(p[2],10)>=30226&&parseInt(p[0],10)<2){p[0]="2"}g=p.join(",")}if(c.isGecko&&!h){f=true}if(!f&&!h&&g){a=c.instantiate("object",["type",this.mimeType],[]);b=c.getObject(a);if(b){if(typeof b.IsVersionSupported!="undefined"){f=true}if(!f){b.data="data:"+this.mimeType+",";if(typeof b.IsVersionSupported!="undefined"){f=true}}}c.uninstantiate(a)}}}else{b=c.getAXO(this.progID);var p=[1,0,1,1,1],l,k,o,i=function(d){return(d<10?"0":"")+d.toString()},m=function(q,d,s,t,r){return(q+"."+d+"."+s+i(t)+i(r)+".0")},n=function(d,s){var q,r=m((d==0?s:p[0]),(d==1?s:p[1]),(d==2?s:p[2]),(d==3?s:p[3]),(d==4?s:p[4]));try{return b.IsVersionSupported(r)}catch(q){}return false};if(b&&typeof b.IsVersionSupported!="undefined"){for(l=0;l<this.digits.length;l++){o=p[l];for(k=o+(l==0?0:1);k<=this.digits[l];k++){if(n(l,k)){f=true;p[l]=k}else{break}}if(!f){break}}if(f){g=m(p[0],p[1],p[2],p[3],p[4])}}}this.installed=f?1:-1;this.version=c.formatNum(g)}};PluginDetect.vlc={mimeType:"application/x-vlc-plugin",progID:"VideoLAN.VLCPlugin",compareNums:function(d,c){var j=d.split(","),h=c.split(","),g,b,a,f,e,i;for(g=0;g<Math.min(j.length,h.length);g++){i=/([\d]+)([a-z]?)/.test(j[g]);b=parseInt(RegExp.$1,10);f=(g==2&&RegExp.$2.length>0)?RegExp.$2.charCodeAt(0):-1;i=/([\d]+)([a-z]?)/.test(h[g]);a=parseInt(RegExp.$1,10);e=(g==2&&RegExp.$2.length>0)?RegExp.$2.charCodeAt(0):-1;if(b!=a){return(b>a?1:-1)}if(g==2&&f!=e){return(f>e?1:-1)}}return 0},getVersion:function(){var b=this.$,d,a=null,c;if(!b.isIE){if(b.hasMimeType(this.mimeType)){d=b.findNavPlugin(["VLC","(Plug-in|Plugin)"],false);if(d&&d.description){a=b.getNum(d.description,"[\\d][\\d\\.]*[a-z]*")}}this.installed=a?1:-1}else{d=b.getAXO(this.progID);if(d){try{a=b.getNum(d.VersionInfo,"[\\d][\\d\\.]*[a-z]*")}catch(c){}}this.installed=d?1:-1}this.version=b.formatNum(a)}};PluginDetect.initScript();

/**
 * Initialize the Media Player
 */
MediaPlayer.initialize();