if(!MultiStream || !MultiStream.Toolbar) throw "bork";

MultiStream.StandardPlayer = function( el, media, logoURL )
{
	if(typeof el == "string")
	{
		el = document.getElementById( el );
	}
	
	var width = el.clientWidth;
	var height = el.clientHeight;
	
	while (el.firstChild) {
		el.removeChild(el.firstChild);
	}
	
	this.Player = new MultiStream.Player( width, height );
	this.Player.setMedia( media );

	this.Toolbar = new MultiStream.Toolbar( this.Player );
	el.parentNode.appendChild(this.Toolbar.Element);
	
	
	if(this.Player.controlSupported) 
	{
		var bPlayer = this.Player;	
		
		var b = MultiStream.ToolbarWidgets.Button;
		var s = MultiStream.ToolbarWidgets.Slider;
		
		this.Toolbar.add(
			new b("play").bind(
				function(){bPlayer.Play()}
			)
		);
		this.Toolbar.add(
			new b("pause").bind(
				function(){bPlayer.Pause()}
			)
		);
		this.Toolbar.add(
			new b("stop").bind(
				function(){bPlayer.Stop()}
			)
		);
		this.Toolbar.add(
			new b("fullscreen").bind(
				function(){bPlayer.Fullscreen()}
			)
		);
		
		if(typeof logoURL == "string")
		{
			var logo = document.createElement("a");
			logo.className = "logo";
			logo.href = logoURL;
			logo.target = "_blank";
			
			this.Toolbar.add(
				{ Element : logo }			
			);
			
		}
		
		var that = this;
		var states = this.Player.States;
		
		this.Player.addEventListener(states.StateChange, 
			function() {
				that.clearNotice();
			}
		);
		
		this.Player.addEventListener(states.Paused, 
			function() {
				that.displayNotice("paused", "Paused...");
			}
		);
		
		this.Player.addEventListener(states.Stopped,
			function() {
			that.displayNotice("stopped", "Stopped");
			}
		);
		
		this.Player.addEventListener(states.Buffering, 
			function() {
				that.displayNotice("loading", "Buffering...");
			}
		);
		
		var slider = new s();
		this.Toolbar.add(
			slider
		);
		
		slider.addEventListener(slider.States.Change, 
			function() {
				bPlayer.setSeek(slider.getGripPosition());
			}
		);
		
		bPlayer.addEventListener(bPlayer.States.Update, 
			function() {
				if(slider.State != slider.States.Busy)
					slider.setGripPosition(bPlayer.getSeek());
			}
		);
		
	}
	
	el.appendChild(this.Player.Element);
	
}
MultiStream.StandardPlayer.prototype = {

	notice : {
		Element : null,
		IconElement : null,
		ContentElement : null,
		TextElement : null
	},

	displayNotice : function ( className, content )
	{
		if(!this.notice.Element)
		{
			var notice = document.createElement("div");
			notice.className = "error";
			
			var icon = document.createElement("span");
			icon.className = "icon";
			
			var cont = document.createElement("span");
			cont.className = "content";
			
			var text = document.createElement("span");
			text.className = "text";
			
			cont.appendChild(icon);
			cont.appendChild(text);
			notice.appendChild(cont);
			this.Player.Element.parentNode.appendChild(notice);
			
			this.notice.Element = notice;
			this.notice.IconElement = icon;
			this.notice.ContentElement = cont;
			this.notice.TextElement = text;
			
		}
		
		this.notice.Element.className = "error "+className;
		this.notice.TextElement.innerHTML = content;
		this.notice.Element.style.display = "block";
		
	},
	
	clearNotice : function ()
	{
		if(this.notice.Element)
			this.notice.Element.style.display = "none";
	}
	
}
