function cCrossFadeOverlayScroller( strContainerDiv, strCrossFader0Div, strCrossFader1Div, strOverlayImageUrl
	, strTextTransitionEffect
	, strFETextPosition
	, intItemDuration, intItemFadeSpeed, intOverlaySpeed
	, blnPauseCheck, strDefaultHtml
	, intWidth, intHeight
	, intImageWidth, intImageHeight
	, intOverlayImageWidth, intOverlayImageHeight
	, intOverlayHeight
	, strOverlayTextColor
	, strOverlayBGImage
	, strOverlayBGColor
	, strMoreInfoCaption
	, strBuyTicketsCaption
	, strBuyTicketsGraphic
	, strViewVideoCaption
	, strListenAudioCaption
	, strDisplayFormat
	, blnStandardShowAudioLinkIfVideoExists
	, FPVideo_buttonOverColor
	, FPVideo_backgroundColor
	, FPVideo_bufferColor
	, FPVideo_sliderColor
	, FPVideo_bufferGradient
	, FPVideo_borderRadius
	, FPVideo_backgroundGradient
	, FPVideo_sliderGradient
	, FPVideo_progressColor
	, FPVideo_buttonColor
	, FPVideo_durationColor
	, FPVideo_timeColor
	, FPVideo_progressGradient
	, FPVideo_opacity
	, FPVideoOverlay_BlankOutColor
	, strXmlData
	 )
{
	// Parameters
	this.m_strContainerDiv = strContainerDiv;
	this.m_strCrossFader0Div = strCrossFader0Div;
	this.m_strCrossFader1Div = strCrossFader1Div;
	this.m_strOverlayImageUrl = strOverlayImageUrl;
	this.m_strTextTransitionEffect = strTextTransitionEffect;
	this.m_strFETextPosition = strFETextPosition;
	this.m_intItemDuration = intItemDuration;
	this.m_intItemFadeSpeed = intItemFadeSpeed;
	this.m_intOverlaySpeed = intOverlaySpeed;
	this.m_blnPausecheck = blnPauseCheck;
	this.m_strDefaultHtml = strDefaultHtml;
	this.m_intWidth = intWidth;
	this.m_intHeight = intHeight;
	this.m_intImageWidth = intImageWidth;
	this.m_intImageHeight = intImageHeight;
	this.m_intOverlayImageWidth = intOverlayImageWidth;
	this.m_intOverlayImageHeight = intOverlayImageHeight;
	this.m_intOverlayHeight = intOverlayHeight;
	this.m_strOverlayTextColor = strOverlayTextColor;
	this.m_strOverlayBGImage = strOverlayBGImage;
	this.m_strOverlayBGColor = strOverlayBGColor;
	this.m_strMoreInfoCaption = strMoreInfoCaption;
	this.m_strBuyTicketsCaption = strBuyTicketsCaption;
	this.m_strBuyTicketsGraphic = strBuyTicketsGraphic;
	this.m_strViewVideoCaption = strViewVideoCaption;
	this.m_strListenAudioCaption = strListenAudioCaption;
	this.m_strDisplayFormat = strDisplayFormat;
	this.m_blnStandardShowAudioLinkIfVideoExists = ( blnStandardShowAudioLinkIfVideoExists == "true" );
	this.m_FPVideo_buttonOverColor  = FPVideo_buttonOverColor;
	this.m_FPVideo_backgroundColor = FPVideo_backgroundColor;
	this.m_FPVideo_bufferColor = FPVideo_bufferColor;
	this.m_FPVideo_sliderColor = FPVideo_sliderColor;
	this.m_FPVideo_bufferGradient = FPVideo_bufferGradient;
	this.m_FPVideo_borderRadius = FPVideo_borderRadius;
	this.m_FPVideo_backgroundGradient = FPVideo_backgroundGradient;
	this.m_FPVideo_sliderGradient = FPVideo_sliderGradient;
	this.m_FPVideo_progressColor = FPVideo_progressColor;
	this.m_FPVideo_buttonColor = FPVideo_buttonColor;
	this.m_FPVideo_durationColor = FPVideo_durationColor;
	this.m_FPVideo_timeColor = FPVideo_timeColor;
	this.m_FPVideo_progressGradient = FPVideo_progressGradient;
	this.m_FPVideo_opacity = FPVideo_opacity;
	this.m_FPVideoOverlay_BlankOutColor = FPVideoOverlay_BlankOutColor;

	this.m_strXmlData = strXmlData;

	// Member Variables
	this.m_aryItem = [];
	this.m_intCounter = 0;
	this.m_idxActiveDiv = 0;
	this.m_idxItemBeingCreated = 0;
	this.m_textScrollUpDownObjName = '';
	this.m_timeout1 = null;
	this.m_timeout2 = null;
	this.m_blnIsScrolling = false;

	this.m_blnUsingSSPlaceholder = false;

	this.m_flowplayerAudio = null;
	this.m_flowplayerVideo = null;

	// Functions
	
	// Function that runs when the page loads
	//
	this.onLoad = function()
	{
		var result = SharedUL.parseXML( this.m_strXmlData );
		var objThis = this;
		var objRoot = result.firstChild;
		if( objRoot != null )
		{
			var objNodes = objRoot.getElementsByTagName( "event" );
			if( objNodes.length > 0 )
			{
				var aryStyle1 = [];
				aryStyle1.push( 'position: absolute; top: 0; left: 0 width: ' );
				aryStyle1.push( this.getImageAreaWidth() );
				aryStyle1.push( 'px; height: ' );
				aryStyle1.push( this.getImageAreaHeight() );
				aryStyle1.push( 'px;' );
				var strStyle1 = aryStyle1.join('');

			    var idxItem = 0;
				for( var ii = 0; ii < objNodes.length; ii++ )
				{
					var evt = objNodes[ii];
					var picUrl = evt.getAttribute( 'imgurl' );
					var strEventName = evt.getAttribute( 'eventname' );
					var strEventDetailsUrl = evt.getAttribute( 'detailsurl' );

					var a_linkStart = '<a href="' + strEventDetailsUrl + '" title="' + strEventName + '">';
					var a_linkEnd = '</a>';

					var fullAreaHtml = [];

					// Create up to two divs (one with the photo, one with the overlay image)
					fullAreaHtml.push( '<div class="FEEventImage" style="' );
					fullAreaHtml.push( strStyle1 );
					fullAreaHtml.push( '" >' );
					{
						fullAreaHtml.push( '<img src="' );
						fullAreaHtml.push( picUrl );
						fullAreaHtml.push( '" width="' );
						fullAreaHtml.push( this.getImageAreaWidth() );
						fullAreaHtml.push( '" height="' );
						fullAreaHtml.push( this.getImageAreaHeight() );
						fullAreaHtml.push( '" border="0" alt="' );
						fullAreaHtml.push( strEventName );
						fullAreaHtml.push( '" />' );
					}
					fullAreaHtml.push( '</div>' );

					// OVERLAY IMAGE					
					fullAreaHtml.push( '<div class="FEOverlayImage" style="' );
					fullAreaHtml.push( 'position: absolute; top: 0; left: 0 width: ' );
					fullAreaHtml.push( this.getOverlayImageHeight() );
					fullAreaHtml.push( 'px; height: ' );
					fullAreaHtml.push( this.getOverlayImageHeight() );
					fullAreaHtml.push( 'px;' );
					fullAreaHtml.push( ' zoom: 1;' );			// MSIE 6-7 HACK
					fullAreaHtml.push( '" onclick="' );
					fullAreaHtml.push( strEventDetailsUrl );
					fullAreaHtml.push( '" title="' );
					fullAreaHtml.push( strEventName );
					fullAreaHtml.push( '" >' );
					{
						fullAreaHtml.push( '<img src="' );
						fullAreaHtml.push( this.m_strOverlayImageUrl );
						fullAreaHtml.push( '" width="' );
						fullAreaHtml.push(  this.getOverlayImageWidth() );
						fullAreaHtml.push( '" height="' );
						fullAreaHtml.push( this.getOverlayImageHeight() );
						fullAreaHtml.push( '" border="0" alt="' );
						fullAreaHtml.push( strEventName );

						// MSIE 6-7 HACK
						fullAreaHtml.push( '" style="filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' );
						fullAreaHtml.push(		this.m_strOverlayImageUrl );
						fullAreaHtml.push(		'\', sizingMethod=\'scale\');"' );

						fullAreaHtml.push( '" />' );
					
					}
					fullAreaHtml.push( '</div>' );

					var overlayHtml = this.getOverlayHtml( evt, picUrl, a_linkStart, a_linkEnd );

					// Now add the item
					this.addItem( fullAreaHtml.join(''), overlayHtml );
					
					this.m_idxItemBeingCreated++;
				}
			}
			else 
			{
				this.m_blnUsingSSPlaceholder = true;
				var strText = [];
				strText.push( '<div class="FEPlaceholderText">' );

				// Try to get the smartsite field (if there is one)
				var objSmartSiteField = objRoot.getElementsByTagName( "events" );
				if( objSmartSiteField.length > 0 )
				{
					strText.push( SharedUL.serializeNode( objSmartSiteField[0].firstChild ) );
				}
				// No featured events and no place holder smartsite field
				else
				{
					strText.push( 'There are no events to display' );
				}
				strText.push( '</div>' );
				this.addItem( strText.join(''), '' );
			}
			
			// Set the pause mouseover events (if pause on mouseover is desired)
			if( this.m_blnPausecheck > 0 )
			{
				var selectors = [];
				selectors.push( this.activeObjectName() );
				selectors.push( this.inactiveObjectName() );
				selectors.push( this.m_textScrollUpDownObjName );

				var _this = this;
				$(selectors.join(',')).hover(
					function() {_this.stopScrolling();},
					function() {_this.continueScrolling();}
				);
			}

			// Begin the scroller, now that everything has been loaded
			this.m_blnIsScrolling = true;
			this.scrollNext();
		}
	};

	this.getOverlayImageWidth = function()
	{
		if( this.m_intOverlayImageWidth > 0 )
			return this.m_intOverlayImageWidth;
		else
			return this.getImageAreaWidth();
	}

	this.getOverlayImageHeight = function()
	{
		if( this.m_intOverlayImageHeight > 0 )
			return this.m_intOverlayImageHeight;
		else
			return this.getImageAreaHeight();
	}

	this.getImageAreaWidth = function()
	{
		if( this.m_intImageWidth > 0 )
			return this.m_intImageWidth;
		else
			return this.m_intWidth;
	}

	this.getImageAreaHeight = function()
	{
		if( this.m_intImageHeight > 0 )
			return this.m_intImageHeight;
		else
			return this.m_intHeight;
	}

	
	// Continue the scrolling of events
    this.continueScrolling = function()
    {
		if( this.m_aryItem.length > 1 )
		{
			this.m_blnIsScrolling = true;
			this.setNextTimeout();
		}
    };
    
    
    this.setNextTimeout = function()
    {
		this.clearAllTimeouts();

		// Set the timer to Transition OUT the featured event text div
		this.m_timeout1 = setTimeout( this.selfName + ".feTextTransitionOut()", 
			( this.m_intItemDuration - this.m_intOverlaySpeed ) );

		this.m_timeout2 = setTimeout( this.selfName + ".scrollNext()", this.m_intItemDuration );
    
    };
    
	// Clear all of the timeouts
    this.clearAllTimeouts = function()
    {
		if( this.m_timeout1 != null )
			clearTimeout( this.m_timeout1 );

		if( this.m_timeout2 != null )
			clearTimeout( this.m_timeout2 );
    };
    
	// Stop the scrolling of events
    this.stopScrolling = function()
    {
		this.m_blnIsScrolling = false;
		if( this.m_aryItem.length > 1 )
		{
			this.clearAllTimeouts();
		}
    };


	this.initFlowPlayerOverlay = function(a,strType)
	{
		// If the anchor to the popup overlay has not been setup, do so now
		if( !a.overlay )
		{
			var strSelector = 'a.cfosFlvPlayer' + strType;

			// initialize the flowplayer for all of the anchors using it
			var currentFlowplayer;
			if( strType == 'video' )
				currentFlowplayer = this.m_flowplayerVideo;
			else
				currentFlowplayer = this.m_flowplayerAudio;

			if( currentFlowplayer == null )
			{
				currentFlowplayer = $f(strSelector,
					"shared/flowplayer/flowplayer-3.0.7.swf",
					{ 
						plugins: 
						{
							controls: 
							{
								buttonOverColor: this.m_FPVideo_buttonOverColor,
								backgroundColor: this.m_FPVideo_backgroundColor,
								bufferColor: this.m_FPVideo_bufferColor,
								sliderColor: this.m_FPVideo_sliderColor,
								bufferGradient: this.m_FPVideo_bufferGradient,
								borderRadius: this.m_FPVideo_borderRadius,
								backgroundGradient: this.m_FPVideo_backgroundGradient,
								sliderGradient: this.m_FPVideo_sliderGradient,
								progressColor: this.m_FPVideo_progressColor,
								buttonColor: this.m_FPVideo_buttonColor,
								durationColor: this.m_FPVideo_durationColor,
								timeColor: this.m_FPVideo_timeColor,
								progressGradient: this.m_FPVideo_progressGradient,
								opacity: this.m_FPVideo_opacity
							},
							audio:
							{
								url: 'shared/flowplayer/flowplayer.audio-3.0.4.swf'
							}
						}
					}
				);
			}


			// install flowplayer into flowplayer anchor container(s) with css class "cfosFlvPlayer"
			var _this = this;
			a.overlay = $(a).overlay({
			
				onBeforeLoad: function() 
				{
					// this line does the magic. it makes the background image sit on top of the mask 
					this.getBackgroundImage().expose({color: this.m_FPVideoOverlay_BlankOutColor });
				},
			
				// when popup overlay is opened, load the flowplayer for it
				onLoad: function() 
				{
					// Stop the scrolling
					_this.stopScrolling();
				
					// Load the flowplayer for the given anchor
					this.getContent().find(strSelector).flowplayer(0).load();
				},
				
				// when popup overlay is closed, unload the flowplayer
				onClose: function() 
				{
					$f().unload();
					$.expose.close(); 
					_this.continueScrolling();
				}
			});
			// Set the href attribute so the browser doesn't move to the top of the page
			$(a).attr('href','javascript:void(0);');
			
			// Simulate a click on the view video anchor, to make sure the popup overlay gets opened
			if( !$.browser.msie )
				$(a).click();

			// Simulate clicking the embedded video anchor tag of the desired event 
			// to make it start playing automatically
			var strSelector2 = "a.cfosFlvPlayer" + strType + $(a).attr( 'eventid' );
			$(strSelector2).click();
		}
		return true;
	};

	this.getOverlayHtml = function( evt, picUrl, a_linkStart, a_linkEnd )
	{
		switch( this.m_strDisplayFormat )
		{
			case 'watch_listen_buytickets':
				return this.getOverlayHtmlWatchListenBuyTickets( evt, picUrl, a_linkStart, a_linkEnd );
				break;
				
			case 'buyticket_moreinfo_buttons':
				return this.getOverlayHtmlMoreInfoBuyTicketsGraphics( evt, picUrl, a_linkStart, a_linkEnd );
				break;
				
			case 'standard':
			default:
				return this.getOverlayHtmlStandard( evt, picUrl, a_linkStart, a_linkEnd );
		}
	};
	
	// New for Ryan Center
	this.getOverlayHtmlMoreInfoBuyTicketsGraphics = function( evt, picUrl, a_linkStart, a_linkEnd )
	{
		var overlayHtml = [];
		var eventid = evt.getAttribute( 'eventid' );

		overlayHtml.push( '<div class="CFOWrapperOuter">' );
		{		
			overlayHtml.push( '<div class="EventNameDate">' );
			{
				overlayHtml.push( '<div class="EventName">' );
				overlayHtml.push( evt.getAttribute( 'eventname' ) );
				overlayHtml.push( '</div>' );	// EventName

				overlayHtml.push( '<div class="EventDates">' );
				overlayHtml.push( evt.getAttribute( 'whenstart' ) );
				overlayHtml.push( '</div>' );	// EventDates
			}
			overlayHtml.push( '</div>' );	// EventNameDateMI

			// Do any of the buttons exist?

			// buy tickets
			var ticketsUrl = evt.getAttribute( 'ticketsurl' );
			var blnBuyTickets = ( ticketsUrl.length > 6 );

			// More Info / Buy Tickets 
			overlayHtml.push( '<div class="MoreInfoBuyTickets">' );
			{
				overlayHtml.push( '<div class="MoreInfo" title="' );
				overlayHtml.push( this.m_strMoreInfoCaption );
				overlayHtml.push( '" >' );
				overlayHtml.push( a_linkStart );
				overlayHtml.push( '<img src="shared/images/b.gif" border="0" alt=""/>' );
				overlayHtml.push( a_linkEnd );
				overlayHtml.push( '</div>' ); // BuyTickets

				// buy tickets
				if( blnBuyTickets )
				{
					overlayHtml.push( '<div class="BuyTickets" title="' );
					overlayHtml.push( this.m_strBuyTicketsCaption );
					overlayHtml.push( '" >' );
					overlayHtml.push( '<a href="' + ticketsUrl + '" target="_blank" title="' + this.m_strBuyTicketsCaption + '" class="BuyTicketsAnchor">' );
					overlayHtml.push( '<img src="shared/images/b.gif" border="0" alt=""/>' );
					overlayHtml.push( '</a>' );
					overlayHtml.push( '</div>' ); // BuyTickets
				}
			}
			overlayHtml.push( '</div>' ); // WatchListenBuyTickets

					
		}
		overlayHtml.push( '</div>' ); // CFOWrapperOuter

		return overlayHtml.join('');
	};
	
	
	this.getOverlayHtmlWatchListenBuyTickets = function( evt, picUrl, a_linkStart, a_linkEnd )
	{
		var overlayHtml = [];
		var eventid = evt.getAttribute( 'eventid' );

		overlayHtml.push( '<div class="CFOWrapperOuter">' );
		{		
			overlayHtml.push( '<div class="EventName">' );
			overlayHtml.push( evt.getAttribute( 'eventname' ) );
			overlayHtml.push( '</div>' );	// EventName


			overlayHtml.push( '<div class="EventDatesMI">' );
			{
				overlayHtml.push( '<div class="EventDates">' );
				overlayHtml.push( evt.getAttribute( 'whenstart' ) );
				overlayHtml.push( '</div>' );	// EventDates

				// more info
				overlayHtml.push( '<div class="MoreInfo">' );
				var detailsUrl = evt.getAttribute( 'detailsurl' );
				if( detailsUrl && detailsUrl.length > 6 )
				{
					overlayHtml.push( a_linkStart );
					overlayHtml.push( this.m_strMoreInfoCaption );
					overlayHtml.push( a_linkEnd );
				}
				overlayHtml.push( '</div>' );	// MoreInfo
			}
			overlayHtml.push( '</div>' );	// EventDatesMI

			// Do any of the buttons exist?

			// view video 
			var videoUrl = evt.getAttribute( 'videourl' ).toLowerCase();
			var blnWatch = ( videoUrl.indexOf( '.flv' ) >= 0 ) || ( videoUrl.indexOf( '%2eflv' ) >= 0 );

			// listen to audio
			var audioUrl = evt.getAttribute( 'audiourl' ).toLowerCase();
			var blnListen = ( audioUrl.indexOf( '.mp3' ) >= 0 ) || ( audioUrl.indexOf( '%2emp3' ) >= 0 );

			// buy tickets
			var ticketsUrl = evt.getAttribute( 'ticketsurl' );
			var blnBuyTickets = ( ticketsUrl.length > 6 );

			// Watch / Listen / Buy Tickets 
			if( blnWatch || blnListen || blnBuyTickets )
			{
				overlayHtml.push( '<div class="WatchListenBuyTickets">' );
				{
					// Right end-cap graphic div
					overlayHtml.push( '<div class="WLB_RightEndCap">' );
					overlayHtml.push( '<img src="shared/images/b.gif" alt=""/>' );
					overlayHtml.push( '</div>' ); // WLB_RightEndCap

					overlayHtml.push( '<div class="WLB_ButtonsTransparentBG">' );
					{
						// view video 
						if( blnWatch )
						{
							overlayHtml.push( '<div class="ViewVideo" title="' );
							overlayHtml.push( this.m_strViewVideoCaption );
							overlayHtml.push( '" >' );
							overlayHtml.push( '<a id="ViewVideoAnchor' + eventid + '" href="#" rel="div.jq_overlay_video' + eventid + '" eventid="' + eventid + '" class="ViewVideoAnchor" >' );
							overlayHtml.push( '<img src="shared/images/b.gif" alt=""/>' );
							overlayHtml.push( '</a>' );
							overlayHtml.push( '</div>' ); // ViewVideo
						}
						
						// listen
						if( blnListen )
						{
							overlayHtml.push( '<div class="ListenAudio" title="' );
							overlayHtml.push( this.m_strListenAudioCaption );
							overlayHtml.push( '" >' );
							overlayHtml.push( '<a id="ListenAudioAnchor' + eventid + '" href="#" rel="div.jq_overlay_audio' + eventid + '" eventid="' + eventid + '" class="ListenAudioAnchor" >' );
							overlayHtml.push( '<img src="shared/images/b.gif" alt=""/>' );
							overlayHtml.push( '</a>' );
							overlayHtml.push( '</div>' ); // ListenAudio
						}

						// buy tickets
						if( blnBuyTickets )
						{
							overlayHtml.push( '<div class="BuyTickets" title="' );
							overlayHtml.push( this.m_strBuyTicketsCaption );
							overlayHtml.push( '" >' );
							overlayHtml.push( '<a href="' + ticketsUrl + '" target="_blank" title="' + this.m_strBuyTicketsCaption + '" class="BuyTicketsAnchor">' );
							overlayHtml.push( '<img src="shared/images/b.gif" alt=""/>' );
							overlayHtml.push( '</a>' );
							overlayHtml.push( '</div>' ); // BuyTickets
						}
					}
					overlayHtml.push( '</div>' );	// WLB_ButtonsTransparentBG

					// Left end-cap graphic div
					overlayHtml.push( '<div class="WLB_LeftEndCap' );
					if( blnWatch ) overlayHtml.push( ' watch' );
					if( blnListen ) overlayHtml.push( ' listen' );
					if( blnBuyTickets ) overlayHtml.push( ' buytickets' );
					overlayHtml.push( '">' );
					overlayHtml.push( '<img src="shared/images/b.gif" alt=""/>' );
					overlayHtml.push( '</div>' );
					
				}
				overlayHtml.push( '</div>' ); // WatchListenBuyTickets

					
			}
		}
		overlayHtml.push( '</div>' ); // CFOWrapperOuter

		return overlayHtml.join('');
	};

	this.getOverlayHtmlStandard = function( evt, picUrl, a_linkStart, a_linkEnd )
	{
		var overlayHtml = [];
		overlayHtml.push( '<div class="CFOWrapperOuter">' );
		{		
			overlayHtml.push( '<div class="CFOWrapperCol_1">' );
			{		
				overlayHtml.push( '<div class="EventName">' );
				overlayHtml.push( evt.getAttribute( 'eventname' ) );
				overlayHtml.push( '</div>' );

				overlayHtml.push( '<div class="EventDates">' );
				overlayHtml.push( evt.getAttribute( 'whenstart' ) );
				overlayHtml.push( '</div>' );

				// More Info / Tickets 
				overlayHtml.push( '<div class="MoreInfoBuyTickets">' );
				{
					// more info
					overlayHtml.push( '<div class="MoreInfo">' );
					var detailsUrl = evt.getAttribute( 'detailsurl' );
					if( detailsUrl && detailsUrl.length > 6 )
					{
						overlayHtml.push( a_linkStart );
						overlayHtml.push( this.m_strMoreInfoCaption );
						overlayHtml.push( a_linkEnd );
					}
					overlayHtml.push( '</div>' );

					// buy tickets 
					overlayHtml.push( '<div class="BuyTickets">' );
					var ticketsUrl = evt.getAttribute( 'ticketsurl' );
					if( ticketsUrl && ticketsUrl.length > 6 )
					{
						overlayHtml.push( '<a href="' + ticketsUrl + '" target="_blank" title="' + this.m_strBuyTicketsCaption + '" >' );
						overlayHtml.push( this.m_strBuyTicketsCaption );
						overlayHtml.push( '</a>' );
					}
					overlayHtml.push( '</div>' );
					
					// view video
					var blnHasVideo = false; 
					var videoUrl = evt.getAttribute( 'videourl' ).toLowerCase();
					if( ( videoUrl.indexOf( '.flv' ) >= 0 ) || ( videoUrl.indexOf( '%2eflv' ) >= 0 ) )
					{
						blnHasVideo = true;
						var eventid = evt.getAttribute( 'eventid' );
						overlayHtml.push( '<div class="ViewVideo">' );
						overlayHtml.push( '<p><a id="ViewVideoAnchor' + eventid + '" href="#" rel="div.jq_overlay_video' + eventid + '" eventid="' + eventid + '">' );
						overlayHtml.push( this.m_strViewVideoCaption );
						overlayHtml.push( '</a></p>' );
						overlayHtml.push( '</div>' );
					}

					// Only attempt to show audio if 
					//	1) there is no video or 
					//	2) we want to show audio event if video exists
					if( ( blnHasVideo == false) || ( this.m_blnStandardShowAudioLinkIfVideoExists == true ) )
					{
						var audioUrl = evt.getAttribute( 'audiourl' ).toLowerCase();
						if( ( audioUrl.indexOf( '.mp3' ) >= 0 ) || ( audioUrl.indexOf( '%2emp3' ) >= 0 ) )
						{
							var eventid = evt.getAttribute( 'eventid' );
							overlayHtml.push( '<div class="ListenAudio" title="' );
							overlayHtml.push( this.m_strListenAudioCaption );
							overlayHtml.push( '" >' );
							overlayHtml.push( '<p><a id="ListenAudioAnchor' + eventid + '" href="#" rel="div.jq_overlay_audio' + eventid + '" eventid="' + eventid + '" class="ListenAudioAnchor" >' );
							overlayHtml.push( this.m_strListenAudioCaption );
							overlayHtml.push( '</a></p>' );
							overlayHtml.push( '</div>' );	// ListenAudio
						}
					}
					
				}
				overlayHtml.push( '</div>' );
			}
			overlayHtml.push( '</div>' );		// Col_1

			if( strBuyTicketsGraphic.length > 0 )
			{
				overlayHtml.push( '<div class="CFOWrapperCol_2">' );
				{
					overlayHtml.push( '<a href="' + ticketsUrl + '" target="_blank" title="' + this.m_strBuyTicketsCaption + '">' );
					overlayHtml.push( '<img src="' + this.m_strBuyTicketsGraphic + '" border="0" alt="' + this.m_strBuyTicketsCaption + '"/>' );
					overlayHtml.push( '</a>' );
				}
				overlayHtml.push( '</div>' );		// Col_2
			}
		}
		overlayHtml.push( '</div>' );

		return overlayHtml.join('');
	};
	
	this.addItem = function( fullAreaHtml, overlayHtml )
	{
		var s = [];
		s.push( '<div class="FE">' );
		{
			s.push( '<div class="FEPhoto" style="position: relative; overflow: hidden; width:' );
			s.push( this.getOverlayImageWidth() );
			s.push( 'px; height:' );
			s.push( this.getOverlayImageHeight() );
			s.push( 'px;">' );
			{
				s.push( fullAreaHtml );
			}
			s.push( '</div>' );

			switch( this.m_strFETextPosition )
			{
				case 'OverlayAbsolute':
					s.push( '<div class="FEText"' );
					s.push( ' style="' );
					s.push( ' color: ' + this.m_strOverlayTextColor + ';' );
					s.push( ' position: absolute;' );
					s.push( ' width: ' + this.m_intWidth + 'px;' );
					s.push( ' height: ' + this.m_intOverlayHeight + 'px;' );
					s.push( '">' );
					{
						s.push( '<div class="FETextRelContainer" style="' );
						s.push( ' position: relative;' );
						s.push( ' width: ' + this.m_intWidth + 'px;' );
						s.push( ' height: ' + this.m_intOverlayHeight + 'px;' );
						s.push( '">' );
						{
							s.push( '<div class="FETextBG" style="' );
							s.push( ' position: absolute; top: 0; left: 0;' );
							s.push( ' width: ' + this.m_intWidth + 'px;' );
							s.push( ' height: ' + this.m_intOverlayHeight + 'px;' );
							s.push( ' background-image: url(shared/images/b.gif);' );
							s.push( ' zoom: 1;' );			// MSIE 6-7 HACK
							if( this.m_strOverlayBGImage.length > 0 )
							{
								// OVERLAY IMAGE for the "background" 
								s.push( '">' );
								{
									s.push( '<img src="' + this.m_strOverlayBGImage + '" ' );
									s.push( ' width="' + this.m_intWidth + '" ' );
									s.push( ' height="' + this.m_intOverlayHeight + '" ' );
									// MSIE 6-7 HACK
									s.push( ' style="filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' );
									s.push(		this.m_strOverlayBGImage );
									s.push(		'\', sizingMethod=\'scale\');"' );

									s.push( '/>' );
								}
							}
							else
							{
								// BACKGROUND COLOR / opacity
								s.push( ' background-color: ' + this.m_strOverlayBGColor + ';' );		
								s.push( ' opacity: 0.7;' );		
								s.push( ' filter: alpha(opacity=70);' );		
								s.push( '">' );
							}
							s.push( '</div>' );		// FETextBG


							s.push( '<div class="FETextInner"' );
							s.push( ' style="position: absolute; top: 0; left: 0;" >' );
							{
								s.push( overlayHtml );
							}
							s.push( '</div>' );		// FETextInner
						}
						s.push( '</div>' ); // FETextRelContainer
							
					}
					s.push( '</div>' );	// FEText
					break;
			
				case 'NoOverlayRelative':
					s.push( '<div class="FEText"' );
					s.push( ' style="' );
					s.push( ' color: ' + this.m_strOverlayTextColor + ';' );
					s.push( ' width: ' + this.m_intWidth + 'px;' );
					s.push( ' height: ' + this.m_intOverlayHeight + 'px;' );
					s.push( '">' );
					{
						s.push( '<div class="FETextInner">' );
						{
							s.push( overlayHtml );
						}
						s.push( '</div>' );		// FETextInner
					}
					s.push( '</div>' );	// FEText
					break;
			}
		}
		s.push( '</div>' );		// FE
		
		this.m_aryItem.push( s.join('') );
	};

	this.scrollText = function( newTop )
	{
		$(this.m_textScrollUpDownObjName).animate({ top: newTop }, {queue:false, duration: this.m_intOverlaySpeed} );
	};
	
	this.hideFETextDiv = function()
	{		
		// hide the scrolled text of the active object
		switch( this.m_strTextTransitionEffect )
		{
			case 'fadeInOut':
				$(this.m_textScrollUpDownObjName).hide();
				break;

			case 'scrollUpDown':
			default:
				$(this.m_textScrollUpDownObjName).css('top',this.m_intHeight);
				break;
		}
	};
	
	this.feTextTransitionIn = function()
	{
		if( this.m_blnIsScrolling == true )
		{
			var top = this.m_intHeight - this.m_intOverlayHeight;
			switch( this.m_strTextTransitionEffect )
			{
				case 'fadeInOut':
					// Only adjust position if necessary
					if( this.m_strFETextPosition == 'OverlayAbsolute' )
						$(this.m_textScrollUpDownObjName).css('top',this.m_intHeight - this.m_intOverlayHeight);
						
					$(this.m_textScrollUpDownObjName).fadeIn( this.m_intOverlaySpeed );
					break;

				case 'scrollUpDown':
				default:
					this.scrollText( this.m_intHeight - this.m_intOverlayHeight );
					break;
			}
		}
	};

	this.feTextTransitionOut = function()
	{
		if( this.m_blnIsScrolling == true )
		{
			switch( this.m_strTextTransitionEffect )
			{
				case 'fadeInOut':
					$(this.m_textScrollUpDownObjName).fadeOut( this.m_intOverlaySpeed );
					break;

				case 'scrollUpDown':
				default:
					this.scrollText( this.m_intHeight );
					break;
			}
		}
	};

	this.activeObjectName = function()
	{
		if( this.m_idxActiveDiv == 0 )
		{
			return "#" + this.m_strCrossFader0Div;
		}
		else
		{
			return "#" + this.m_strCrossFader1Div;
		}
	};

	this.inactiveObjectName = function()
	{
		if( this.m_idxActiveDiv == 1 )
		{
			return "#" + this.m_strCrossFader0Div;
		}
		else
		{
			return "#" + this.m_strCrossFader1Div;
		}
	};
	
    this.scrollNext = function()
    {
		if( this.m_blnIsScrolling == true )
		{
			// set the content of the object
			var activeObjName = this.activeObjectName();
			var idx = ((this.m_intCounter) % this.m_aryItem.length);
			$(activeObjName).html(this.m_aryItem[idx]);

			// overlay/popup - reassign click functionality to this link
			var _this = this;

			// all anchor tags that have the rel and eventid attributes on them
			$("div.ViewVideo a[rel][eventid]").click(function(){ return _this.initFlowPlayerOverlay(this,'video'); });
			$("div.ListenAudio a[rel][eventid]").click(function(){ return _this.initFlowPlayerOverlay(this,'audio'); });

			// object name of the text up/down div
			this.m_textScrollUpDownObjName = this.activeObjectName() + ' div.FE div.FEText';

			// hide the scrolled text of the active object
			this.hideFETextDiv();

			// Fade out the old object
			$(this.inactiveObjectName()).fadeOut(this.m_intItemFadeSpeed);

			// Fade in the new active object
			var objThis = this;
			$(activeObjName).fadeIn(this.m_intItemFadeSpeed, function () 
			{
				if( objThis.m_blnUsingSSPlaceholder == false )
				{
					// Transition IN the featured event text div
					objThis.feTextTransitionIn();
				}

				// Only scroll if there are multiple items
				if( objThis.m_aryItem.length > 1 )
				{
					objThis.setNextTimeout();

					objThis.m_intCounter = ((objThis.m_intCounter+1) % objThis.m_aryItem.length);
					objThis.m_idxActiveDiv = (objThis.m_idxActiveDiv+1) % 2;
				}
			});
		}
    };

	return this;
}

