function MediaDock(elementId, span, tickster)
{
	this.ctrlDiv = document.getElementById( elementId );
	
	if( !this.ctrlDiv ) return;
	
	this.span = span;
	this.pause = 75;
	this.stop = false;
	this.ctrlDiv.scrollTop = 0;
	this.state = "out";
	this.opacity = 1.0;
	
	this.items = new Array();
	
	var allitems = this.ctrlDiv.getElementsByTagName( "DIV" );
	
	for( var j = 0; j < allitems.length; j ++ ) {
		this.items[ this.items.length ] = allitems[ j ];
	}
	
	this.leadItem = 1;
	
	MediaDock.instances[ elementId ] = this;
	
	var onTick = function() { MediaDock.instances[ elementId ].scrollTick(); };
	var onMouseOver = function() { MediaDock.instances[ elementId ].mouseOver(); };
	var onMouseOut = function() { MediaDock.instances[ elementId ].mouseOut(); };
	
	setInterval( onTick, tickster );
	setEventHandler( this.ctrlDiv, "mouseover", onMouseOver );
	setEventHandler( this.ctrlDiv, "mouseout", onMouseOut );
}

MediaDock.instances = new Array();

MediaDock.prototype.setAlpha = function(v)
{
    this.ctrlDiv.style.filter = "alpha(opacity=" + (v * 100) + ")";
    this.ctrlDiv.style.opacity = v;
    if( this.ctrlDiv.style.setAttribute )
        this.ctrlDiv.style.setAttribute( "-moz-opacity", v );
}

MediaDock.prototype.scrollTick = function()
{
	if( this.stop ) {
		return;
	}
	
	if( this.pause <= 0 ) {
		switch( this.state ) {
			case	"out"	:
				this.opacity -= 0.02;
				this.setAlpha( this.opacity );
				
				if( this.opacity <= 0.0 ) {
					this.opacity = 0.0;
					this.state = "in";
					
					while( this.ctrlDiv.childNodes[ 0 ] ) {
						this.ctrlDiv.removeChild( this.ctrlDiv.childNodes[ 0 ] );
					}
					
					var t = this.items.length;
					var next = this.leadItem;
					
					while( t-- ) {
						this.ctrlDiv.insertBefore( this.items[ next ], null );
						if( ++next >= this.items.length )
							next = 0;
					}
					
					if( ++ this.leadItem >= this.items.length )
						this.leadItem = 0;
					
					this.ctrlDiv.scrollTop = 0;	
				}
				break;
			case	"in"	:
				this.opacity += 0.035;
				this.setAlpha( this.opacity );
				
				if( this.opacity >= 1.0 ) {
					this.opacity = 1.0;
					this.state = "out";
					this.pause = 70;
				}
				break;
		}
	} else
		this.pause --;
}

MediaDock.prototype.mouseOver = function()
{
	if( !this.stop ) {
		this.stop = true;
		this.opacity = 1.0;
		this.setAlpha( this.opacity );
	}
}

MediaDock.prototype.mouseOut = function()
{
	if( this.stop ) {
		this.stop = false;
	}
}