var fixExternalLinks = function(e, actif) {
	$(e).select('a').each(function(link) {
		if((!link.hasClassName('radio')) && (!link.hasClassName('out')) && (!link.href.startsWith('mailto:')) && (!link.href.startsWith('javascript:')) && (!link.href.startsWith('#'))) {
			link.target = actif? '_blank': '';
		}
	});
}

var getItemData = function(idx) {
	new Ajax.Updater({ success: 'courant-ajax' }, radio[idx], { evalScripts: false });
	
	setTimeout(function() {
		if(isPlus) {
			$('courant').select('.moins').each(function(e) {
				e.removeClassName('moins').addClassName('plus');
			});
		}

		fixExternalLinks('courant-ajax', true);
	}, 200);
}

var afficheRadio = function(displayHeight, displayWidth, playerFile, xspfFile) {
	var radioInterval = setInterval(function() {
		if(isAllLoaded) {
			var playerHeight = displayHeight + 40;
			
			if(displayWidth == 0) {
				displayWidth = $('player').getDimensions().width;
			}
			
			var so = new SWFObject(playerFile, 'mpl', displayWidth, playerHeight, '7');
			so.addParam('allowfullscreen', 'false');
			so.addParam('allowscriptaccess', 'true');
			so.addParam('wmode', 'transparent');
			so.addVariable('displayheight', displayHeight);
			so.addVariable('file', xspfFile);
			so.addVariable('height', playerHeight);
			so.addVariable('width', displayWidth);
			so.addVariable('displaywidth', '0');
			so.addVariable('autostart', 'true');
			so.addVariable('shuffle', 'false');
			so.addVariable('repeat', 'list');
			so.addVariable('enablejs', 'true');
			so.addVariable('javascriptid', 'mpl');
			so.addVariable('linkfromdisplay', 'false');
			so.addVariable('thumbsinplaylist', 'true');
			so.addVariable('backcolor', '0xffffff');
			so.addVariable('frontcolor', '0x666666');
			so.addVariable('lightcolor', '0x333333');
			so.addVariable('screencolor', '0xffffff');
			so.addVariable('callback', 'analytics');
			so.addVariable('skin', baseURL + '/res/swf/mediaplayer/schoon/schoon.swf');
			so.write('player');
			clearInterval(radioInterval);
		}
	}, 300);
}

var itemTracker = function(obj) {
	var currentItem = obj.index;
	itemTimer = setTimeout(function() { getItemData(currentItem) }, 200);
	
	if($('courant').getStyle('display') == 'none') {
		Effect.BlindDown($('courant'), { duration: 0.2, queue: 'end' });
	}
}

var zero2 = function(n) {
	var s = n.toString();
	if(s.length == 0) return '00'
	else if(s.length == 1) return '0' + s
	else return s;
}

var timeTracker = function(obj) {
	if($('radio-position') == undefined) {
		$('controle').insert({ bottom: '<div id="radio-position"></div>' });
	}
	
	if(($('courant-ajax').innerHTML.strip() == '') && player.getConfig()) {
		var currentItem = player.getConfig().item;
		itemTimer = setTimeout(function() { getItemData(currentItem) }, 200);
	}
	
	var positionM = Math.floor(obj.position / 60);
	var positionS = zero2(Math.floor(obj.position % 60));
	var position = positionM + ':' + positionS;
	
	if(obj.duration > 0) {
		var durationM = Math.floor(obj.duration / 60);
		var durationS = zero2(Math.floor(obj.duration % 60));
		var duration = durationM + ':' + durationS;
		
		position += ' / ' + duration;
	}
	
//	position = player.getPlaylist().size() + ' ' + position;

	$('radio-position').update(position);
}

var playTracker = function(obj) {
	fixExternalLinks(document.body, obj.state);
}

var playerReady = function(obj) {
	player = $(obj['id']);
	player.addControllerListener("ITEM", "itemTracker");
	player.addControllerListener("PLAY", "playTracker");
	player.addModelListener("TIME", "timeTracker");

	if($('doc-audio')) doAutoStart = true;
	if(doAutoStart) $('courant').show();

	if($('radio-btn-fermer')) {
		var link = $('radio-btn-fermer').down('a');
		
		Event.observe(link, 'click', function(event) {
			var link = event.element();
			link.blur();
			player.sendEvent('STOP', 'true');
			Effect.BlindUp($('radio-poste'), { duration: 0.2, queue: 'end' });
			fixExternalLinks(document.body, false);
			event.stop();
		});
	}
	
	if(isPlus) {
		$('radio-btn-plus').hide();
		$('radio-btn-moins').show();
	}

	if($('radio-btn-plus')) {
		var link = $('radio-btn-plus').down('a');
		
		Event.observe(link, 'click', function(event) {
			isPlus = true;
			var link = event.element();
			link.blur();
			$('radio-btn-plus').hide();
			$('radio-btn-moins').show();
			$('radio-poste').addClassName('plus');
			
			$('courant').select('.moins').each(function(e) {
				e.removeClassName('moins').addClassName('plus');
			});
			
			event.stop();
		});
	}

	if($('radio-btn-moins')) {
		var link = $('radio-btn-moins').down('a');
		
		Event.observe(link, 'click', function(event) {
			isPlus = false;
			var link = event.element();
			link.blur();
			$('radio-btn-moins').hide();
			$('radio-btn-plus').show();
			$('radio-poste').removeClassName('plus');
			
			$('courant').select('.plus').each(function(e) { 
				e.removeClassName('plus').addClassName('moins');
			});
			
			event.stop();
		});
	}

	if(doAutoStart) {
		//player.sendEvent('PLAY', 'true');
		fixExternalLinks(document.body, true);

		if(initProg) {
			player.sendEvent('ITEM', prog[initProg]);
		}
	}
};

var updateRadio = function(poste, item) {
	var requestURL = baseURL + '/' + baseLngDir + '/radio/select/?poste=' + poste;
	new Ajax.Updater({ success: 'radio-poste' }, requestURL, { evalScripts: true });
	fixExternalLinks('radio-poste', true);

	if($('radio-poste').getStyle('display') == 'none') {
		Effect.BlindDown($('radio-poste'), { duration: 0.2, queue: 'end' });
	}
}

var initRadio = function() {
	if(initPoste) {
		updateRadio(initPoste);
	}

	if($$('a.radio')) {
		$$('a.radio').each(function(link) {
			Event.observe(link, 'click', function(event) {
				var link = event.element();
				if(link.tagName != 'A') link = link.up('a.radio');
				link.blur();
				var linkRel = link.rel;

				if(linkRel.match(/^radio\:.+$/)) {
					doAutoStart = true;
					var poste = linkRel.match(/^radio\:(.+)$/)[1];

					if(poste.match(/^.*?\#.+$/)) {
						initProg = poste.match(/^.*?\#(.+)$/)[1];
						poste = poste.match(/^(.*?)\#.+$/)[1];
					}
					
					updateRadio(poste);
					event.stop();

				} else if(link.href.match(/poste=.+$/)) {
					doAutoStart = true;
					var params = link.href.toQueryParams();
					var poste = params.poste;
					
					if(params.piste) {
						initProg = params.piste;
					}
					
					updateRadio(poste);
					event.stop();
				}
			});
		});
	}
}

var player;
var playerTimer;
var itemTimer;
var prog = new Array();
var radio = new Array();
var displayHeight = 0;
var displayWidth = 0;
var doAutoStart = false;
var initPoste;
var initProg;
var initItem;
var isPlus = false;
