/**
	Alexandre Alapetite, http://alexandre.alapetite.fr
	2008-11-23 / 2009-09-01
	Unicode UTF-8 (ex: français, på dansk, ελληνικά, русский)
*/
var alxPlayer =
{
	getFlashVersion : function()
	{
		try
		{
			if (navigator.plugins && (navigator.plugins.length > 0))
				return navigator.plugins['Shockwave Flash'] ? navigator.plugins['Shockwave Flash'].description.split(' ')[2].split('.')[0] : -1;
			else //IE
			{
				var axo = new ActiveXObject('ShockwaveFlash.ShockwaveFlash.7');
				return axo.GetVariable('$version').split(' ')[1].split(',')[0];
			}
		}
		catch (e) {return 0;}
	},
	getContainers : function()
	{
		if (document.querySelectorAll) return document.querySelectorAll('p.video');
		else
		{
			var vs = [];
			var ps = document.getElementsByTagName('p');
			for (var i = ps.length - 1; i >= 0; i--)
				if (/\bvideo\b/.test(ps[i].className))
					vs.push(ps[i]);
			return vs;
		}
	},
	getVideoLink : function(videoContainer)
	{
		if (videoContainer.querySelector) return videoContainer.querySelector('a[type="video/mp4"]');
		else
		{
			var myAs = videoContainer.getElementsByTagName('a');
			for (var i = 0, j = myAs.length; i < j; i++)
			{
				var a = myAs[i];
				var aType = a.getAttribute('type');
				if (aType == "video/mp4")
					return a;
			}
			return null;
		}
	},
	getViewLink : function(videoContainer)
	{
		if (videoContainer.querySelector)
		{
			var a = videoContainer.querySelector('a[rel~="viewable"]');
			if (a) return a.getAttribute('href');
		}
		else
		{
			var myAs = videoContainer.getElementsByTagName('a');
			for (var i = 0, j = myAs.length; i < j; i++)
			{
				var a = myAs[i];
				var aRel = a.getAttribute('rel');
				if (aRel && aRel.match(/\bviewable\b/))
					return a.getAttribute('href');;
			}
		}
		return null;
	},
	getLanguage : function()
	{
		var lang = null;
		var root = document.documentElement;
		if (document.documentElement.getAttributeNS) lang = root.getAttributeNS('http://www.w3.org/XML/1998/namespace', 'lang');
		if (!lang) lang = root.getAttribute('xml:lang');
		if (!lang) lang = root.getAttribute('lang');
		return lang ? lang.substring(0, 2).toLowerCase() : 'en';
	},
	makeRelativePath : function(player)
	{
		var pplayer = player.split('../');
		var playerPathDown = pplayer.length - 1;
		var playerPathUp = pplayer[playerPathDown].split('/').length - 1;
		var path = '';
		for (var i = playerPathUp - 1; i >= 0; i--) path += '../';
		var ppath = location.pathname.split('/');
		for (var j = ppath.length - (playerPathDown + 1); j < ppath.length - 1; j++)
			path += ppath[j] + '/';
		return path;
	},
	playerPlay : function(e)
	{
		var me = this;
		if (e['srcElement']) me = e['srcElement'];	//IE
		me.sendEvent('PLAY', 'true');
	},
	playerPause : function(e)
	{
		var me = this;
		if (e['srcElement']) me = e['srcElement'];	//IE
		me.sendEvent('STOP');
	},
	embedFlashPlayer : function()
	{
		var player = document.getElementById('alxPlayer');
		player = player ? player.getAttribute('src').replace(/\/[a-z_0-9.-]+$/i, '/player.swf') : 'player.swf';
		var vs = alxPlayer.getContainers();
		for (var i = 0; i < vs.length; i++)
		{
			var v = vs[i];
			var video = '';
			var image = '';
			var width = 0;
			var height = 0;
			var isThumb = false;
			var autoplay = false;
			var a = alxPlayer.getVideoLink(v);
			if (a)
			{
				isThumb = (/\bthumb\b/.test(a.getAttribute('rel')));
				autoplay = (/\bautoplay\b/.test(a.getAttribute('rel')));
				video = a.getAttribute('href');
				var myImgs = a.getElementsByTagName('img');
				if (myImgs.length > 0)
				{
					var img = myImgs[0];
					image = img.getAttribute('src');
					width = img.getAttribute('width') * 1;
					height = img.getAttribute('height') * 1;
					if (isThumb)
					{
						a.parentNode.removeChild(a);
						a = v.firstChild;
					}
					else img.parentNode.removeChild(img);
				}
			}
			else continue;
			if (video.indexOf('//') < 0) video = alxPlayer.makeRelativePath(player) + video;
			var view = '';
			if (isThumb) view = alxPlayer.getViewLink(v);
			else height += 20;
			var flashvars = 'file=' + video + '&image=' + image + '&enablejs=true' + (v.id ? ('&javascriptid=e' + v.id) : '') +
				(isThumb ? '&controlbar=none&repeat=always&displayclick=link&linktarget=large&link=' + view : '') +
				(autoplay ? '&autostart=true' : '');
			var obj = document.createElement('object');
			if (window.ActiveXObject)	//Internet Explorer on Windows
			{
				v.insertBefore(obj, a);	//To be done first
				obj.outerHTML = '<object ' + (v.id ? ('id="e' + v.id + '" name="e' + v.id + '" ') : '') + 'classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="' + width + '" height="' + height + '"><param name="movie" value="' + player + '" /><param name="allowfullscreen" value="true" /><param name="flashvars" value="' + flashvars + '" /></object>';
				obj = v.getElementsByTagName('object')[0];
			}
			else
			{
				if (v.id)
				{
					obj.setAttribute('id', 'e' + v.id);
					obj.setAttribute('name', 'e' + v.id);
				}
				obj.setAttribute('data', player);
				obj.setAttribute('width', width);
				obj.setAttribute('height', height);
				obj.setAttribute('type', 'application/x-shockwave-flash');
				var param = document.createElement('param');
				param.setAttribute('name', 'allowfullscreen');
				param.setAttribute('value', 'true');
				obj.appendChild(param);
				param = document.createElement('param');
				param.setAttribute('name', 'allowscriptaccess');
				param.setAttribute('value', 'always');
				obj.appendChild(param);
				param = document.createElement('param');
				param.setAttribute('name', 'flashvars');
				param.setAttribute('value', flashvars);
				obj.appendChild(param);
				v.insertBefore(obj, a);	//To be done last
			}
			if (isThumb)
			{
				if (obj.addEventListener)
				{
					obj.addEventListener('mouseover', alxPlayer.playerPlay, false);
					obj.addEventListener('mouseout', alxPlayer.playerPause, false);
				}
				else if (obj.attachEvent)	//IE
				{
					obj.attachEvent('onmouseover', alxPlayer.playerPlay);
					obj.attachEvent('onmouseout', alxPlayer.playerPause);
				}
				else
				{
					obj.onmouseover = alxPlayer.playerPlay;
					obj.onmouseout = alxPlayer.playerPause;
				}
			}
		}
	},
	displayFlashUpdate : function()
	{
		var lang = alxPlayer.getLanguage();
		var vs = alxPlayer.getContainers();
		for (var i = 0; i < vs.length; i++)
		{
			var v = vs[i];
			var a = alxPlayer.getVideoLink(v);
			var isThumb = false;
			if (a) isThumb = (/\bthumb\b/.test(a.getAttribute('rel')));
			if (isThumb) continue;
			var small = document.createElement('small');
			small.appendChild(document.createTextNode(' ('));
			a = document.createElement('a');
			a.setAttribute('href', 'http://www.macromedia.com/go/getflashplayer');
			a.appendChild(document.createTextNode((lang == 'fr') ? 'Installez le lecteur Flash 10 ou plus récent' : 'Get Flash Player 10 or newer'));
			small.appendChild(a);
			small.appendChild(document.createTextNode((lang == 'fr') ? ' pour voir cette vidéo enfichée)' : ' to see this video embedded)'));
			vs[i].appendChild(small);
		}
	},
	loaded : function()
	{
		if (alxPlayer.getFlashVersion() >= 10) alxPlayer.embedFlashPlayer();
		else alxPlayer.displayFlashUpdate();
	}
}

if (window.addEventListener) window.addEventListener('load', alxPlayer.loaded, false);
else if (window.attachEvent) window.attachEvent('onload', alxPlayer.loaded);	//IE
else window.onload = alxPlayer.loaded;
