var AreenaPlayerConfig = {
	fmsurl:"rtmp://flashk.yle.fi/AreenaServer",
	foreign_fmsurl: "rtmp://flashu.yle.fi/AreenaServer",
	playerHome:"http://areena.yle.fi/player/",	
	requiredFlashVersion:"9.0.115",
	build:1,
	standalonePlayerWindowWidth:917,
	standalonePlayerWindowHeight:444
}

var AreenaPlayer_domReadyEvent = {
	name: "AreenaPlayer_domReadyEvent",
	events: {},
	domReadyID: 1,
	bDone: false,
	DOMContentLoadedCustom: null,


	add: function(handler) {
		if (!handler.$$domReadyID) {
			handler.$$domReadyID = this.domReadyID++;
			if(this.bDone){
				handler();
			}
			this.events[handler.$$domReadyID] = handler;
		}
	},

	remove: function(handler) {
		if (handler.$$domReadyID) {
			delete this.events[handler.$$domReadyID];
		}
	},

	run: function() {
		if (this.bDone) {
			return;
		}
		this.bDone = true;
		for (var i in this.events) {
			this.events[i]();
		}
	},

	schedule: function() {
		if (this.bDone) {
			return;
		}

		if(/KHTML|WebKit/i.test(navigator.userAgent)) {
			if(/loaded|complete/.test(document.readyState)) {
				this.run();
			} else {
				setTimeout(this.name + ".schedule()", 50);
			}
		} else if(document.getElementById("__ie_onload")) {
			return true;
		}

		if(typeof this.DOMContentLoadedCustom === "function") {
			if(typeof document.getElementsByTagName !== 'undefined' && (document.getElementsByTagName('body')[0] !== null || document.body !== null)) {
				if(this.DOMContentLoadedCustom()) {
					this.run();
				} else {
					setTimeout(this.name + ".schedule()", 250);
				}
			}
		}

		return true;
	},

	init: function() {
		if(document.addEventListener) {
			document.addEventListener("DOMContentLoaded", function() { AreenaPlayer_domReadyEvent.run(); }, false);
		}
		setTimeout("AreenaPlayer_domReadyEvent.schedule()", 100);

		function run() {
			AreenaPlayer_domReadyEvent.run();
		}
		if(typeof addEvent !== "undefined") {
			addEvent(window, "load", run);
		} else if(document.addEventListener) {
			document.addEventListener("load", run, false);
		} else if(typeof window.onload === "function") {
			var oldonload = window.onload;
			window.onload = function() {
				AreenaPlayer_domReadyEvent.run();
				oldonload();
			};
		} else {
			window.onload = run;
		}
		
		/* for Internet Explorer */
		/*@cc_on
			@if (@_win32 || @_win64)
			document.write("<script id=__ie_onload defer src=\"//:\"><\/script>");
			var script = document.getElementById("__ie_onload");
			script.onreadystatechange = function() {
				if (this.readyState == "complete") {
					AreenaPlayer_domReadyEvent.run(); // call the onload handler
				}
			};
			@end
		@*/
	}
};

var domReady = function(handler) { AreenaPlayer_domReadyEvent.add(handler); };
AreenaPlayer_domReadyEvent.init();


/**
 * SWFObject v1.5: Flash Player detection and embed - http://blog.deconcept.com/swfobject/
 *
 * SWFObject is (c) 2007 Geoff Stearns and is released under the MIT License:
 * http://www.opensource.org/licenses/mit-license.php
 *
 */
if(typeof AreenaPlayer_deconcept=="undefined"){var AreenaPlayer_deconcept=new Object();}if(typeof AreenaPlayer_deconcept.util=="undefined"){AreenaPlayer_deconcept.util=new Object();}if(typeof AreenaPlayer_deconcept.SWFObjectUtil=="undefined"){AreenaPlayer_deconcept.SWFObjectUtil=new Object();}AreenaPlayer_deconcept.SWFObject=function(_1,id,w,h,_5,c,_7,_8,_9,_a){if(!document.getElementById){return;}this.DETECT_KEY=_a?_a:"detectflash";this.skipDetect=AreenaPlayer_deconcept.util.getRequestParameter(this.DETECT_KEY);this.params=new Object();this.variables=new Object();this.attributes=new Array();if(_1){this.setAttribute("swf",_1);}if(id){this.setAttribute("id",id);}if(w){this.setAttribute("width",w);}if(h){this.setAttribute("height",h);}if(_5){this.setAttribute("version",new AreenaPlayer_deconcept.PlayerVersion(_5.toString().split(".")));}this.installedVer=AreenaPlayer_deconcept.SWFObjectUtil.getPlayerVersion();if(!window.opera&&document.all&&this.installedVer.major>7){AreenaPlayer_deconcept.SWFObject.doPrepUnload=true;}if(c){this.addParam("bgcolor",c);}var q=_7?_7:"high";this.addParam("quality",q);this.setAttribute("useExpressInstall",false);this.setAttribute("doExpressInstall",false);var _c=(_8)?_8:window.location;this.setAttribute("xiRedirectUrl",_c);this.setAttribute("redirectUrl","");if(_9){this.setAttribute("redirectUrl",_9);}};AreenaPlayer_deconcept.SWFObject.prototype={useExpressInstall:function(_d){this.xiSWFPath=!_d?"expressinstall.swf":_d;this.setAttribute("useExpressInstall",true);},setAttribute:function(_e,_f){this.attributes[_e]=_f;},getAttribute:function(_10){return this.attributes[_10];},addParam:function(_11,_12){this.params[_11]=_12;},getParams:function(){return this.params;},addVariable:function(_13,_14){this.variables[_13]=_14;},getVariable:function(_15){return this.variables[_15];},getVariables:function(){return this.variables;},getVariablePairs:function(){var _16=new Array();var key;var _18=this.getVariables();for(key in _18){_16[_16.length]=key+"="+_18[key];}return _16;},getSWFHTML:function(){var _19="";if(navigator.plugins&&navigator.mimeTypes&&navigator.mimeTypes.length){if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","PlugIn");this.setAttribute("swf",this.xiSWFPath);}_19="<embed type=\"application/x-shockwave-flash\" src=\""+this.getAttribute("swf")+"\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\" style=\""+this.getAttribute("style")+"\"";_19+=" id=\""+this.getAttribute("id")+"\" name=\""+this.getAttribute("id")+"\" ";var _1a=this.getParams();for(var key in _1a){_19+=[key]+"=\""+_1a[key]+"\" ";}var _1c=this.getVariablePairs().join("&");if(_1c.length>0){_19+="flashvars=\""+_1c+"\"";}_19+="/>";}else{if(this.getAttribute("doExpressInstall")){this.addVariable("MMplayerType","ActiveX");this.setAttribute("swf",this.xiSWFPath);}_19="<object id=\""+this.getAttribute("id")+"\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" width=\""+this.getAttribute("width")+"\" height=\""+this.getAttribute("height")+"\" style=\""+this.getAttribute("style")+"\">";_19+="<param name=\"movie\" value=\""+this.getAttribute("swf")+"\" />";var _1d=this.getParams();for(var key in _1d){_19+="<param name=\""+key+"\" value=\""+_1d[key]+"\" />";}var _1f=this.getVariablePairs().join("&");if(_1f.length>0){_19+="<param name=\"flashvars\" value=\""+_1f+"\" />";}_19+="</object>";}return _19;},write:function(_20){if(this.getAttribute("useExpressInstall")){var _21=new AreenaPlayer_deconcept.PlayerVersion([6,0,65]);if(this.installedVer.versionIsValid(_21)&&!this.installedVer.versionIsValid(this.getAttribute("version"))){this.setAttribute("doExpressInstall",true);this.addVariable("MMredirectURL",escape(this.getAttribute("xiRedirectUrl")));document.title=document.title.slice(0,47)+" - Flash Player Installation";this.addVariable("MMdoctitle",document.title);}}if(this.skipDetect||this.getAttribute("doExpressInstall")||this.installedVer.versionIsValid(this.getAttribute("version"))){var n=(typeof _20=="string")?document.getElementById(_20):_20;n.innerHTML=this.getSWFHTML();return true;}else{if(this.getAttribute("redirectUrl")!=""){document.location.replace(this.getAttribute("redirectUrl"));}}return false;}};AreenaPlayer_deconcept.SWFObjectUtil.getPlayerVersion=function(){var _23=new AreenaPlayer_deconcept.PlayerVersion([0,0,0]);if(navigator.plugins&&navigator.mimeTypes.length){var x=navigator.plugins["Shockwave Flash"];if(x&&x.description){_23=new AreenaPlayer_deconcept.PlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/,"").replace(/(\s+r|\s+b[0-9]+)/,".").split("."));}}else{if(navigator.userAgent&&navigator.userAgent.indexOf("Windows CE")>=0){var axo=1;var _26=3;while(axo){try{_26++;axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+_26);_23=new AreenaPlayer_deconcept.PlayerVersion([_26,0,0]);}catch(e){axo=null;}}}else{try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");}catch(e){try{var axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");_23=new AreenaPlayer_deconcept.PlayerVersion([6,0,21]);axo.AllowScriptAccess="always";}catch(e){if(_23.major==6){return _23;}}try{axo=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");}catch(e){}}if(axo!=null){_23=new AreenaPlayer_deconcept.PlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));}}}return _23;};AreenaPlayer_deconcept.PlayerVersion=function(_29){this.major=_29[0]!=null?parseInt(_29[0]):0;this.minor=_29[1]!=null?parseInt(_29[1]):0;this.rev=_29[2]!=null?parseInt(_29[2]):0;};AreenaPlayer_deconcept.PlayerVersion.prototype.versionIsValid=function(fv){if(this.major<fv.major){return false;}if(this.major>fv.major){return true;}if(this.minor<fv.minor){return false;}if(this.minor>fv.minor){return true;}if(this.rev<fv.rev){return false;}return true;};AreenaPlayer_deconcept.util={getRequestParameter:function(_2b){var q=document.location.search||document.location.hash;if(_2b==null){return q;}if(q){var _2d=q.substring(1).split("&");for(var i=0;i<_2d.length;i++){if(_2d[i].substring(0,_2d[i].indexOf("="))==_2b){return _2d[i].substring((_2d[i].indexOf("=")+1));}}}return "";}};AreenaPlayer_deconcept.SWFObjectUtil.cleanupSWFs=function(){var _2f=document.getElementsByTagName("OBJECT");for(var i=_2f.length-1;i>=0;i--){_2f[i].style.display="none";for(var x in _2f[i]){if(typeof _2f[i][x]=="function"){_2f[i][x]=function(){};}}}};if(AreenaPlayer_deconcept.SWFObject.doPrepUnload){if(!AreenaPlayer_deconcept.unloadSet){AreenaPlayer_deconcept.SWFObjectUtil.prepUnload=function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){};window.attachEvent("onunload",AreenaPlayer_deconcept.SWFObjectUtil.cleanupSWFs);};window.attachEvent("onbeforeunload",AreenaPlayer_deconcept.SWFObjectUtil.prepUnload);AreenaPlayer_deconcept.unloadSet=true;}}if(!document.getElementById&&document.all){document.getElementById=function(id){return document.all[id];};}var getQueryParamValue=AreenaPlayer_deconcept.util.getRequestParameter;var FlashObject=AreenaPlayer_deconcept.SWFObject;var AreenaPlayer_SWFObject=AreenaPlayer_deconcept.SWFObject;



var AreenaPlayerAPI = {
	embeddedPlayerCount:0,
	version: '1.0',
 	identifierToInstance: [],
	initialized:false,
 	
	initialize: function() {
		if(!AreenaPlayerAPI.initialized) {
			AreenaPlayerAPI.initialized = true;
			AreenaPlayerAPI.createPlayerInstances();
		}
	},
	
	createPlayerInstances: function(node){
		if(!node) {
			node = document.body;	
		}	
		
		var classReferenceName = "AreenaPlayer";
		var newInstances = [];
		
		var obj = document.getElementsByTagName('div');
		for(var i=0; i<obj.length;i++){
			if( areenaPlayer_hasClassName(obj[i], classReferenceName) ){
				newInstances.push(new AreenaPlayerAPI.classReference(obj[i]));
			}
		}
	
		var obj = document.getElementsByTagName('a');
		for(var i=0; i<obj.length;i++){
			if( areenaPlayer_hasClassName(obj[i], classReferenceName) ){
				newInstances.push(new AreenaPlayerAPI.classReference(obj[i]));
			}
		}
		
		for(var i=0; i<newInstances.length; i++){
			newInstances[i].onLoad();
		}
	},
	
	openStandalonePlayer: function(type, id, language){
		if(!language) {
			language="fi";
		}
		
		var params = "menubar=n	o,location=no,resizable=yes,scrollbars=no,status=no,width=917,height=444";
		var url = AreenaPlayerConfig.playerHome + "index.php?" + type + "=" + id + "&language=" + language; 
		var name = "areenaPlayer_standalone";
		var w = window.open(url, name, params);
		w.focus();
	},	
	
	boundClass: {
		references: [],
				
		create: function(identifier) {		
			var classReference = function() {
				
				
				this.element = arguments[0];
				this.element.v = this;
				this.attr = {};

				cel = this.element.nextSibling;
				if(cel){
					cel = cel.nodeName.toLowerCase() == "#text" ? cel.nextSibling : cel;
					cel = (cel && cel.nodeName.toLowerCase() == "div" && areenaPlayer_hasClassName(cel, "AreenaPlayerParams")) ? cel : false;
				}
				if(cel){
					this.attr = cel.innerHTML.areenaPlayer_toParameters();
				}
				if(this.defaults){
					for(attr in this.defaults){
						if(this.attr[attr]) {
							switch((typeof(this.defaults[attr]) + "").toLowerCase() ){
								case("boolean"): this.attr[attr] = this.attr[attr] == "false" ? false : true; break;
								case("number"): this.attr[attr] = Number(this.attr[attr]); break;
								case("object"): this.attr[attr] = eval(this.attr[attr]); break;
							}
							
						} else {
							this.attr[attr] = this.defaults[attr];
						}
					}
				}
				this.initialize.apply(this, arguments);
			}
		
			AreenaPlayerAPI.classReference = classReference;
			return classReference;
		}
	}

}


String.prototype.areenaPlayer_toParameters = function(s,vs){
	var sep = ";";
	var valsep = ":";
	
	if(s) {
		sep = s;
		valsep = vs;
	}
	//var a = "\\";
	
	var searchStr = this.replace(/:\/\//gi, "//");
	searchStr = searchStr.replace("\\" + sep, "*!!#1#!!*").replace("\\" + valsep, "*!!#2#!!*");
	
	var par = {}
	var prop = searchStr.split(sep);
	for(var i=0;i<prop.length;i++){
		var cprop = prop[i].split(valsep);
		if(cprop.length==2){
			par[cprop[0].replace("*!!#1#!!*", sep)] = cprop[1].replace("*!!#2#!!*", valsep).replace(/\/\//g, "://");
		}
	}	
	return par;
}

function areenaPlayer_hasClassName(objElement, strClass) {
	if ( objElement.className ) {
		var arrList = objElement.className.split(' ');
		for ( var i = 0; i < arrList.length; i++ ) {
			if ( arrList[i] == strClass ){
				return true;
			}
		}
	}
	return false;
}

AreenaPlayerAPI.boundClass.create("AreenaPlayer").prototype = {
	defaults: {
		clip:				"",
		channel:			"",
		stream:				"",
		fmsurl:				AreenaPlayerConfig.fmsurl,
		foreign_fmsurl:		AreenaPlayerConfig.foreign_fmsurl,
		
		sendStatistics:		true,
		
		width: 				"700",
		height: 			"394",
		
		videoWidth: 		"700",
		videoHeight: 		"394",
		
		backgroundColor: 	"000000",
		tvFeeURL: 			"https://login.yle.fi/login/index.php?language=1",
		tvFeeURL_sv:		"https://login.yle.fi/login/index.php?language=2",
		tvFeeInfoURL:		"https://login.yle.fi/register/index.php?language=1",
		tvFeeInfoURL_sv:	"https://login.yle.fi/register/index.php?language=2",
		autoembed:			true,
		autoembed_onclick:	true,
		autoplay:			false,
		
		language:			"fi",
		
		animateInTime:		500,
		animateOutTime:		500,
		layout: 			"embeded",
		skinURL:			AreenaPlayerConfig.playerHome + "skins/yle.png",
		playButton:			true,
		rewindButton:		false,
		forwardButton:		false,
		menuButton:			true,
		fullscreenButton:	true,
		volumeSlider:		true,
		playbackHead:		true,
		enableMouseWheel:	true,
		enableKeyboard:		true,
		hideControlsDelay:	1000,
		scrollMenuItems:	3,
		
		menu_info: 			false,
		menu_related:		false,
		menu_send: 			false,
		menu_featured:		false,
		menu_areena:		false
	},

	initialize: function(){
	},

	onLoad: function(){
		this.attr.nodeType = this.element.nodeName.toLowerCase()=="a" ? "a" : "div";	
		
		if(this.attr.nodeType == "a") {
			var href = this.element.href;
			var spliced = href.split("/");
			var clipName = spliced[spliced.length-1];
			this.attr.clip = clipName;
			
			this.attr.autoembed = true;
			var divNode = document.createElement("div");
			divNode.className = "AreenaPlayer";
			divNode.id = this.element.id;
			this.element.parentNode.replaceChild(divNode, this.element);
			this.element = divNode;
		}
		if(!this.attr.autoembed){
			this.attr.autoplay = true;	
			if(this.attr.autoembed_onclick) {
				this.element.onclick = this.embed.areenaPlayer_bind(this);
			}
		}
		
		AreenaPlayerAPI.embeddedPlayerCount++;
		this.attr.id = "AreenaPlayer_" + AreenaPlayerAPI.embeddedPlayerCount;
		// TODO: verify cookie name
		this.attr.areenacookie = this.readCookie("PHPSESSID");
		
		this.element.areenaPlayer = this;
		window[this.attr.id] = this;
		
		if(this.attr.autoembed) {
			this.embed();	
		}
	},
	
	embed: function(){
		var swfUrl = AreenaPlayerConfig.playerHome + "Application.swf?build=" + AreenaPlayerConfig.build;
		var expressInstallSwfURL = AreenaPlayerConfig.playerHome + "areenaPlayerExpressInstall.swf?build=" + AreenaPlayerConfig.build;
		
		var params = {menu:"false", allowFullScreen:"true", align:"TL"};

		var so = new AreenaPlayer_SWFObject(swfUrl, this.attr.id , this.attr.width, this.attr.height, AreenaPlayerConfig.requiredFlashVersion, this.attr.backgroundColor);
		so.addParam("menu", "false");
		so.addParam("allowFullScreen", "true");
		so.addParam("align", "TL");
		so.addParam("allowScriptAccess", "always");
		
		//this.attr.id = "window." + this.attr.id;
		
		
		for(var varName in this.attr) {
			so.addVariable(varName, escape(this.attr[varName]));
		}
		if(!so.write(this.element)) {
			so = new AreenaPlayer_SWFObject(expressInstallSwfURL, this.attr.id , this.attr.width, this.attr.height, "6.0.64", "#2A2A2A");
			so.addParam("scalemode", "noscale");
			if(!so.write(this.element)) {
				var eWidth = this.attr.width.indexOf("%")==-1 ? this.attr.width+"px" : this.attr.width;
				var eHeight = this.attr.height.indexOf("%")==-1 ? this.attr.height+"px" : this.attr.height;
				
				var errorMsg = "<style>#AreenaPlayer_noflash {background-color:#000;color:#fff; font-size:12px; text-align:center} #AreenaPlayer_noflash div {padding:16px} #AreenaPlayer_noflash a {color:#fff !important; font-size:12px !important; font-family:Arial !important}</style>";
				if(this.attr.language == "sv") {
					errorMsg += '<div id="AreenaPlayer_noflash" style="width:'+eWidth+';height:'+eHeight+'"><div>För att kunna spela upp videon måste installera  den nyaste Flash plug-in versionen installerad. Var god och ladda ner den <a href="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" target="_blank">här.</a></div></div>'
				} else {
					errorMsg += '<div id="AreenaPlayer_noflash" style="width:'+eWidth+';height:'+eHeight+'"><div>Videon toisto vaatii uusimman Flash-player laajennuksen. Ole hyvä ja lataa se <a href="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" target="_blank">tästä.</a></div></div>'
				}
				this.element.innerHTML = errorMsg;
			}
		}
	},
	
	setHeight: function(h) {
		document.getElementById(this.attr.id).style.height = h + "px";
		document.getElementById(this.attr.id).focus();
	},
	
	readCookie: function(name) {
		var ca = document.cookie.split(';');
		var nameEQ = name + "=";
		for(var i=0; i < ca.length; i++) {
			var c = ca[i];
			while (c.charAt(0)==' ') c = c.substring(1, c.length);
				if (c.indexOf(nameEQ) == 0) {
					return c.substring(nameEQ.length, c.length);
				}
			}
		return null;
	},
	openExternalLink: function(url){
		var o = opener? opener : self;
		o.window.open(url, "_blank", "");
	},
	addThisLink: function(url, title){
		var url = "http://www.addthis.com/bookmark.php?v=15&winname=addthis&pub=ylefi&s=undefined&logo=&logobg=&logocolor=&url=" + url + "&title=" + title;
		this.openExternalLink(url);
	},
	
	openStandalone: function(){
		var params = "menubar=n	o,location=no,resizable=yes,scrollbars=no,status=no,width=917,height=444";
		var url = AreenaPlayerConfig.playerHome + "index.php?clip=" + this.attr.clip + "&channel=" + this.attr.channel + "&stream=" + this.attr.stream + "&language=" + this.attr.language;
		var name = "areenaPlayer_standalone";
		var w = window.open(url, name, params);
		w.focus();
	},
	
	openAreenaHomepage: function(){
		var url = "http://areena.yle.fi";
		if(this.attr.language == "sv") {
			url = "http://arenan.yle.fi";
		}
		this.openExternalLink(url);
	},
	
	loadNewClip: function(clip){
		this.attr.clip = clip;
		this.embed();
	}
}

Function.prototype.areenaPlayer_bind = function(object) {
  var __method = this;
  return function(event) {
		return __method.call(object);
  }
}



var domReady = function(handler) { AreenaPlayer_domReadyEvent.add(handler); };
AreenaPlayer_domReadyEvent.init();
domReady(AreenaPlayerAPI.initialize);

