/*
	Copyright stream5
	author: Christian Grohl
*/
//Singleton stream5 class

if(!stream5)
{

var stream5 = new function()
{
	this.requiredFlashPlayer = "9.0.0";
	this.requiredFlashPlayerForS5Player = "9.0.0";	
	this.s5PlayerBase = "http://player.stream5.tv/s5player/";
	this.s5PlayerSWF = "http://player.stream5.tv/s5player/s5player.swf";	
	this.embedPlayerList = new Array();
	this.swfObjectIsLoaded = false;
	
	//constructor
	this.constructor = function()
	{		
		//required includes
		if(typeof jQuery == "undefined")
			this.includeLibary("http://player.stream5.tv/javascript/jquery.js", "jquery");
			
		if(typeof swfobject == "undefined")
			this.includeLibary("http://player.stream5.tv/javascript/swfobject.js", "swfobject");
		else
			this.swfObjectIsLoaded = true;
			
		window.onresize = this.resizeMask;
		window.onscroll = this.resizeMask;
	};

	this.version = function()
	{
		return "1.0.1";
	};
	
	this.isAvailable = function()
	{
		return true;
	};
	
	this.includeLibary = function(src, name)
	{
		var script = document.createElement('script');
		
		//type
		var type = document.createAttribute('type');
		type.nodeValue = 'text/javascript';
		//source
		var source = document.createAttribute('src');
		source.nodeValue = src;
		
		//set attributes
		script.setAttributeNode(type);		
		script.setAttributeNode(source);
		
		//insert in head
		var head = document.getElementsByTagName('head')[0];
		head.appendChild(script);
		
		if(name == "swfobject")
		{
			script.onload = this.swfObjectLoadComplete;
			script.onreadystatechange = function () 
			{
				stream5.swfObjectLoadComplete();			
			}

		}
	};	
	
	this.swfObjectLoadComplete = function()
	{		
		stream5.swfObjectIsLoaded = true;
		var i=0;
		for (i = 0; i < stream5.embedPlayerList.length; i++)
		{
			var player = stream5.embedPlayerList[i];
			stream5.embedPlayer(player.elemID, player.token, player.width, player.height);
		}
	};

	this.embedPlayer = function(elemID, token, width, height)
	{
		if(this.swfObjectIsLoaded)
		{	
			if (swfobject.hasFlashPlayerVersion(this.requiredFlashPlayer)) 
			{			
				//SWF Parameter
				var flashvars = {};
				
				var params = {
					allowScriptAccess: "always",
					allowFullscreen: "true",
					quality: "high",
					wmode:"window",
					base:this.s5PlayerBase
				};
				
				var attributes = {
					id: elemID,
					name: elemID,
					align: "middle"
				};
				
				//Parameter checken
				if(token)
					flashvars.token = token;
				else if (swfobject.getQueryParamValue("token"))
						flashvars.token = swfobject.getQueryParamValue("token");	
				
				if(!width)
					width = "100%";
					
				if(!height)
					height = "100%";					
				
				//Player einbinden
				swfobject.embedSWF(this.s5PlayerSWF, elemID, width, height, this.requiredFlashPlayerForS5Player, "#ffffff", flashvars, params, attributes);
			}
			else
			{
				var att = { 
					data:"http://player.stream5.tv/javascript/playerProductInstall.swf", 
					width:"100%", 
					height:"100%" 
				};
				var par = {};
				swfobject.showExpressInstall(att, par, elemID);
			}
		}
		else
		{			
			var player = {
				elemID: elemID,
				token: token,
				width: width,
				height: height
			};
			
			this.embedPlayerList.push(player);
		}
	};
	
	this.embedSWF = function(swf, elemID, width, height)
	{
		if(swfobject)
		{	
			if (swfobject.hasFlashPlayerVersion(this.requiredFlashPlayer)) 
			{			
				// create SWF
				var flashvars = {};		
				 
				var params = {
					allowScriptAccess: "sameDomain",
					allowFullscreen: "true",
					quality: "high",
					wmode:"window"
				};
				
				var attributes = {
					id: elemID,
					name: elemID,
					align: "middle"
				};
				
				swfobject.embedSWF(swf, elemID, width, height, this.requiredFlashPlayer, "#ffffff", flashvars, params, attributes);
			}
			else
			{
				var att = { 
					data:"http://player.stream5.tv/javascript/playerProductInstall.swf", 
					width:"100%", 
					height:"100%" 
				};
				var par = {};
				swfobject.showExpressInstall(att, par, elemID);
			}
		}
	};

	this.showMaskForSWF = function()
	{
		var s5mask = document.getElementById("s5mask"); 
		
		if(!s5mask)
		{
			s5mask = document.createElement("div");
			s5mask.id = "s5mask";
			document.body.appendChild(s5mask);
		}
		
		var scroll = stream5.getScrollXY();
		
		$("#s5mask").css(
			{
			"background-color":"#000000",
			"display":"none",
			"left":"0",
			"top":"0",
			"position":"absolute",
			"z-index":"9000",
			"width": "100%",
			"height": "100%",
			"left": scroll[0],
			"top": scroll[1]
			}
		);
		
		//transition effect		
		$("#s5mask").fadeTo("normal", 0.9);
		$("#s5mask").fadeIn(1000);
	};

	this.hideMaskForSWF = function()
	{
		$("#s5mask").fadeOut(1000);
		$("#s5mask").fadeTo("normal", 0.0);	
	};	
	
	this.getScrollXY = function()
	{
		var x = 0;
		var y = 0;
		
		if( typeof( window.pageYOffset ) == 'number' ) 
		{
			//Netscape compliant
			y = window.pageYOffset;
			x = window.pageXOffset;
		} 
		else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) 
		{
			//DOM compliant
			y = document.body.scrollTop;
			x = document.body.scrollLeft;
		} 
		else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) 
		{
			//IE6 standards compliant mode
			y = document.documentElement.scrollTop;
			x = document.documentElement.scrollLeft;
		}
		return [ x, y ];
	};

	
	
	this.resizeMask = function() 
	{
		var s5mask = document.getElementById("s5mask");
		
		if(s5mask)
		{
			var scroll = stream5.getScrollXY();
			
			$("#s5mask").css(
				{
				"width": "100%",
				"height": "100%",
				"left": scroll[0],
				"top": scroll[1]
				}
			);
		}
	};
	
	this.constructor();
};

}