        var gBeginElementID = '';

        function myAddListener(obj, evt, handler, captures)
        {
            if ( document.addEventListener )
                obj.addEventListener(evt, handler, captures);
            else
                obj.attachEvent('on' + evt, handler); // IE requires this form
        }

        function getTargetId(event)
        {
            // an event has the target element as a property. the property has a 
            //  different name in IE so handle that here
            var target = event.target ? event.target : event.srcElement;
            return target.id;
        }

        function pluginBegin(evt)
        {
            // the plug-in has been loaded, so grab the ID of the element the browser used
            //  (some use the <object> and some use the <embed>))
            gBeginElementID = getTargetId(evt);

//            alert("'" + evt.type + "' from element id '" + gBeginElementID + "'");
            onEvent(evt);       
			
			var it = evt.target ? evt.target : evt.srcElement;
//			it.Play();
			
//			qtPlayerId = gBeginElementID;
//			alert (document.getElementById(qtPlayerId).GetURL());
			qtPlayer = it;
        }

        function onEvent(evt)
        {
           if ( '' == gBeginElementID )
               gBeginElementID = getTargetId(evt);
               
//           alert("ID = '" +gBeginElementID + "' onEvent: " + evt.type);
           $('debug_div').set('html', "ID = '" +gBeginElementID + "' onEvent: " + evt.type);

        }

        function setupQt()
        {
            // register for events on the <object> element, our handler will be triggered even if
            //  the browser uses the <embed> because events pass through the parent element
            var plug = document.getElementById('qtPlayerObj');

            if ( null == plug )
            {
                alert("QT plug-in not instantiated on <body> load event???");
                return;
            }

            myAddListener(plug,'qt_begin',       pluginBegin, false);
            myAddListener(plug,'qt_abort',           onEvent, false);
            myAddListener(plug,'qt_canplay',         onEvent, false);
            myAddListener(plug,'qt_canplaythrough',  onEvent, false);
            myAddListener(plug,'qt_durationchange',  onEvent, false);
            myAddListener(plug,'qt_ended',           onEvent, false);
            myAddListener(plug,'qt_error',           onEvent, false);
            myAddListener(plug,'qt_load',            onEvent, false);
            myAddListener(plug,'qt_loadedfirstframe',onEvent, false);
            myAddListener(plug,'qt_loadedmetadata',  onEvent, false);
            myAddListener(plug,'qt_pause',           onEvent, false);
            myAddListener(plug,'qt_play',            onEvent, false);
            myAddListener(plug,'qt_progress',        onEvent, false);
            myAddListener(plug,'qt_stalled',         onEvent, false);
            myAddListener(plug,'qt_timechanged',     onEvent, false);
            myAddListener(plug,'qt_volumechange',    onEvent, false);            
            myAddListener(plug,'qt_waiting',         onEvent, false);
			
			return plug;
        }

function tryQuicktime() {
	var playerVersion = swfobject.getFlashPlayerVersion();
	var output = "swfobject reports that you have Flash player " +
	playerVersion.major + "." + playerVersion.minor + "." +
	playerVersion.release + " installed";
//	alert (output);

	if (parseInt(playerVersion.major) >= 9) {      // Make sure Flash player is new enough
		useFlash = true;
	} else {
		if (navigator.plugins) {
		for (i=0; i < navigator.plugins.length; i++ ) {
			if (navigator.plugins[i].name.indexOf("QuickTime") >= 0) { useQt = true; }
			}
		}
 
		if ((navigator.appVersion.indexOf("Mac") > 0) && 
			(navigator.appName.substring(0,9) == "Microsoft") &&
			(parseInt(navigator.appVersion) < 5) ) { useQt = true; }

		if (useQt) {
			QT_WriteOBJECT_XHTML('media/collab/audio/AU/1/silence.mp3', '232','68',
//			QT_WriteOBJECT_XHTML('media/', '232','68',
						         '', 'obj#ID', 'qtPlayerObj', 'emb#ID', 'qtPlayerEmb',
								 'autoplay', 'false', 'postdomevents', 'true', 'kioskmode', 'true');
			setupQt();
		}
	}
}




function flashIsReady() {
//flashAudioPlayer = swfobject.getObjectById("flashAudioPlayer");
	flashAudioPlayerObj = document.getElementById("flashAudioPlayer");
//	alert ('flashAudioPlayer is ready and called ' + flashAudioPlayerObj.id);
//	alert ('available is ' + flashAudioPlayer.available);
//	callToActionscript(flashAudioPlayer, 'JS to Flash: Ready!');
}

/*function callToActionscript(flashObj, str) {
	flashObj.sendToActionscript(str);
}*/

function onYouTubePlayerReady(playerId) {
      flashYoutubePlayerObj = document.getElementById("flashYoutubePlayer");
//	  alert ('flashYoutubePlayer is ready');
    }
	
function sendToJavaScript(val)
{
	alert(val);
}

function size_flash() {
	var width = Math.round(windowSize[0]/2);
	var height = Math.round(windowSize[1]/2);
	
	flashAudioPlayer.width = width;
	flashAudioPlayer.height = height;
	
	document.getElementById("flash_div").style.width = (width) + "px";
	document.getElementById("flash_div").style.height = (height) + "px";
	document.getElementById("apDivStatus").innerHTML = "The AP Div's dimensions are " + width + " x " + height;
}

function showPlayer() {
	if (useFlash) {
		if (playerType == 'a') {
			$('flashAudioPlayer_div').morph( {'width'    : '232px',
												  'height'   : '68px',
												  'overflow' : 'hidden' });
			$('flashYoutubePlayer_div').morph({'width'   : '1px',
												  'height'   : '1px',
												  'overflow' : 'hidden' });
//			$('flashAudioPlayer_div'  ).setStyle('visibility', 'visible');
//			$('flashYoutubePlayer_div').setStyle('visibility', 'hidden');
			if (isSet(flashYoutubePlayerObj)) flashYoutubePlayerObj.pauseVideo();
			updateDiv ('player_div');
		} else if (playerType == 'v') {
			updateDiv ('player_div');
			flashAudioPlayerObj.asPause();
			$('flashAudioPlayer_div').morph({'width' : '1px',
												  'height' : '1px',
												  'overflow' : 'hidden' });
			$('flashYoutubePlayer_div').morph({'width'   : '232px',
												  'height'   : '188px',
												  'overflow' : 'hidden' });
//			$('flashAudioPlayer_div'  ).setStyle('visibility', 'hidden');
//			$('flashYoutubePlayer_div').setStyle('visibility', 'visible');
		} else {
			alert ('Invalid Player Type');
		}
	} else {
		$('playerContents_div').setStyle('visibility', 'visible');
	}
}

function hidePlayer() {
	if (useFlash) {
		if (isSet(flashYoutubePlayerObj)) flashYoutubePlayerObj.pauseVideo();
		if (isSet(flashAudioPlayerObj  )) flashAudioPlayerObj.asPause();
		$('flashAudioPlayer_div').setStyles({'width' : '1px',
											  'height' : '1px',
											  'overflow' : 'hidden' });
		$('flashYoutubePlayer_div').setStyles({'width'   : '1px',
											  'height'   : '1px',
											  'overflow' : 'hidden' });
	} else {
		$('playerContents_div').setStyle('visibility', 'hidden');
	}
}

function playSong() {	// alertObject(nowPlaying);
	var topdir = '';
	var bitrate = 0;
	if (playerType != nowPlaying.media) {
		playerType = nowPlaying.media;
		showPlayer();
	}

	$('playerCurrentSong'       ).set('html', truncateString(nowPlaying.songName , 32));
	$('playerCurrentDescription').set('html', truncateString(nowPlaying.mediaName, 32));
	$('playerCurrentArtist'     ).set('html', truncateString(nowPlaying.artist   , 24));
	
	if (nowPlaying.isStem == 1) {		// Don't want to share stems
		enableButton('facebook_btn', false);
		enableButton('myspace_btn' , false);
		enableButton('twitter_btn' , false);
		enableButton('link_btn'    , false);
		$('share_td').set('opacity', disabledButtonOpacity);
	} else {
		enableButton('facebook_btn', true);
		enableButton('myspace_btn' , true);
		enableButton('twitter_btn' , true);
		enableButton('link_btn'    , true);
		$('share_td').set('opacity', 1);
	}
	
	if (nowPlaying.vote == 1) {				// If they've voted for this version
		aButtonStates['playerVote_btn'] = true;
	} else {
		aButtonStates['playerVote_btn'] = false;
	}
	fnLightPlayerVoteButton();

	if (((nowPlaying.isCollab == 1) && (nowPlaying.media == 'a')) || (contestOver)) {// Can't vote for collaboration song audio
		enableButton('playerVote_btn', false);
	} else {
		enableButton('playerVote_btn', true);
	}

//	alertObject (nowPlaying);
	if (useFlash) {
		if (nowPlaying.media == 'a') {
			setTimeout( function() {
				flashAudioPlayerObj.asPlay(nowPlaying.songPath + nowPlaying.filename);
							 }, 100 );
		} else {
			setTimeout( function() { flashYoutubePlayerObj.loadVideoById (nowPlaying.origFilename); }, 100 );
//			flashYoutubePlayerObj.loadVideoById (nowPlaying.origFilename);
		}
//				callToActionscript (flashAudioPlayer, nowPlaying.songPath + nowPlaying.filename);
	} else if (useQt) {
//		var url = 'fed7e004-9fbe-4ba4-b41e-10011a544acf.mp3';
//		document.getElementById(qtPlayerId).SetURL (url);
//		qtPlayer.Stop();
		if (nowPlaying.media == 'a') {
			qtPlayer.SetURL ('../../../../../' + nowPlaying.songPath + nowPlaying.filename);
			qtPlayer.SetKioskMode (true);
		} else {
			alert ('YouTube Video Playback Requires Flash');
		}
//		qtPlayer.Play();
	}

}

function enableButton(id, bEnabled) {
	if (bEnabled) {
		$(id).removeClass('disabled');
		$(id).tween('opacity', 1);
	} else {
		$(id).addClass('disabled');
		$(id).tween('opacity', disabledButtonOpacity);
	}
}

