// Vars definition
var current_titrage = 1; var current_html = ""; var slider_init = false; var cur_pos = 80, stop_pos = cur_pos; var cur_title = 1;
if (!cur_rad) var cur_rad = 0; var player_fl,last_pos,slider_vol,cur_state,cur_song="",cur_artist="Loading...",userAgentButton,cur_poch,cur_init;
var check_rad = parseInt(document.location.hash.substr(2,1)); if ((check_rad >= 0) && (check_rad < 5)) { cur_rad = check_rad;}
var rad = ['aft','acc','lat','bbm','hi'],players = ['itunes','wmp','real','winamp','xmms','vlc','foo','mpc','iphone','psp'];
var rad_nn = ['afternoon','accent','late','bbm','hi radio']; var playlist_ext = ['m3u','wpl','ram','pls','m3u','m3u','fpl','mpcpl'];
var players_nn = ['iTunes','Windows Media Player','Real One Player','Winamp','XMMS','VLC','Foobar 2000','Media Player Classic','your iPhone or iPod Touch','your PSP'];
var rad_sl = ['deephouse and soulful music live from Paris, France','electronic grooves live from Paris, France','music for night people live from Paris, France','beat, bass and melody live from Paris, France','selection by Kompakt'];
var rad_px = [164,199,235,273,307],rad_po = [8005,8000,8010,8025,8015],rad_serv = "live2.vmix.fr", growl = "no";
var selec_rad_px = rad_px[cur_rad],flux = rad[cur_rad], fluxhttp = "http://"+rad_serv+":"+rad_po[cur_rad]+"/;stream.nsv";
var err_connexion = '<p id="titre_cours">Reconnect and enjoy the<br />best electronic music selection<br />with vmix.fm...</p>';
var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;

// Functions
function titrage(){
	var el = $('titrage_'+current_titrage); if (current_titrage == 1) { var el_switch = $('titrage_2'); } else { var el_switch = $('titrage_1'); }
	var req = new Request({ url: "actuellement.php?flux=" + flux , method: 'get', evalScripts: true,
		onSuccess: function(content){ 
		if ((current_html == err_connexion) && (growl != "no")) pl_reconnect();
		if ((content != current_html) && (content != "<notnew/>")) { 
			el_switch.set('html', content); el.fade(0); (function(){el_switch.fade(1); shout_growl();}).delay(700);
			(function(){el.empty();}).delay(1100); current_html = content; if (current_titrage == 1) { current_titrage = 2; } else { current_titrage = 1; }}
		},onFailure: function(){ 
		var content = err_connexion;
		if (content != current_html) { el_switch.set('html', content); el.fade(0);	(function(){el_switch.fade(1);}).delay(700);
		    (function(){el.empty();}).delay(1100); current_html = content; if (current_titrage == 1) { current_titrage = 2; } else { current_titrage = 1; }}
		}
	});
	req.send();	
}
function init_flash() {
	if (cur_init != 'initiated') { $('bg_slider').fade('hide');$('slider').fade('hide');
	$('boutons').fade('hide');$('clock').fade('hide');$('streaming').fade('hide');}
	var so = new SWFObject('player.swf','player_fl','0','0','9');
	so.addParam('allowscriptaccess','always');
	so.addParam('allowfullscreen','true');
	so.addParam('flashvars','&file='+fluxhttp+'&type=sound&backcolor=656565&frontcolor=ffffff&lightcolor=ffffff&volume=0&autostart=true&displayclick=none&stretching=none&enablejs=true&javascriptid=player_fl');
	so.write('player'); growl="ok";
}
function heure(sectime){
	var auj = new Date(); var h = auj.getHours(); var m = auj.getMinutes(); var s = auj.getSeconds();
	if(h<10) { h = '0'+h; }	if(m<10) { m = '0'+m; }	if(s<10) { s = '0'+s; }
	if (sectime == 1) { var pts = ":"; var newsectime = 2;}	if (sectime == 2) { var pts = " "; var newsectime = 1;}
	var date = h+pts+m ; (function() {heure(newsectime);}).delay(1000);	$("clock").innerHTML = date;
}
function playerReady(obj) {
	player_fl = $(obj['id']); player_fl.sendEvent('VOLUME',"1");
	init_slider(); player_fl.addModelListener("STATE","stateTracker"); cur_init = 'initiated'; 
	cur_title = 4; change_title(); $('boutons').fade(1); $('clock').fade(1); 
};
function init_slider(){
  slider_vol = new Slider($('bg_slider'), $('slider'), {
	snap: false, wheel: true, range: [0,99],
	onChange: function(pos){ $try((function(){$('slider').innerHTML = pos; player_fl.sendEvent('VOLUME',''+(pos)+''); cur_pos=pos;}),$lambda(false));},
	onTick: function(pos){ this.knob.setStyle('left', pos);},
	onComplete:function(pos){ $try((function(){$('slider').innerHTML = pos; player_fl.sendEvent('VOLUME',''+(pos)+''); cur_pos=pos;}),$lambda(false));},
	steps: 100   }).set(80); 
  window.addEvent('keydown', function(event) { 
	if (event.key == "right") { slider_vol.set(parseInt(cur_pos)+5); return false;} 
	else if (event.key == "left") { slider_vol.set(parseInt(cur_pos)-5); return false;} 
	else if (event.key == "m") { 
		if (parseInt(cur_pos) == 0) { slider_vol.set(parseInt(last_pos)); return false;} 
		else { last_pos = parseInt(cur_pos); slider_vol.set(0); return false;}
		}
	});
  slider_init = true;
}
function stateTracker(obj) { 
  cur_state = obj.newstate; var new_pos=1;
  if (cur_state == "PLAYING") { $('img_stream').src = "playing.gif"; $('img_stream').alt = "Streaming..."; $('img_stream').title = "Streaming...";
  	  while (new_pos < 80){new_pos = new_pos + 5; if (new_pos>=80) new_pos = 80; slider_vol.set(new_pos); } 
	  $('streaming').fade(1); $('bg_slider').fade(1);$('slider').fade(1);
  } else { $('streaming').fade(0); $('bg_slider').fade(0);$('slider').fade(0); }
}
function pl_load(){	if (cur_state == "PLAYING") pl_stop(); $('player').empty(); init_flash(); }
function pl_play(){ if (cur_state == "PLAYING") pl_stop(); init_flash(); }
function pl_reconnect(){ if (cur_state != "PLAYING") {pl_play(); shout_growl();} }
function pl_reload() { pl_stop(); window.location.reload(); }
function pl_stop(){	 $('bg_slider').fade(0);$('slider').fade(0);
var new_pos = cur_pos; while (new_pos >= 1){new_pos = new_pos - 5; if (new_pos<=1) new_pos = 0; slider_vol.set(new_pos); }
player_fl.sendEvent('STOP','true'); $('player').empty(); growl="no";
}
function shout_growl() { try { if ((window.fluid) && (growl=="ok")) { window.fluid.showGrowlNotification({  title: "vmix.fm - "+rad_nn[cur_rad], description: cur_artist+"\n"+cur_song, priority: 1, sticky: false, identifier: "vmix_player", icon: cur_poch//, onclick: callbackFunc
});}}catch(err){return false;}}
function init_fluid(){ try{ window.fluid.addDockMenuItem("Play", pl_play); window.fluid.addDockMenuItem("Stop", pl_stop); window.fluid.addDockMenuItem("Reload", pl_reload);}catch(err){return false;}}
function change_title(){
	if (((cur_state == "PLAYING") || (cur_state == "BUFFERING")) && (cur_artist != "Loading...")) 
		{ if (cur_title<3) {cur_title++;} else {cur_title =1;} } else { cur_title = 4; }
	if (cur_title==4) { document.title = "Vmix.fm - "+rad_nn[cur_rad]; }
	else if ((cur_title==1) && (cur_artist != "") && (cur_artist != "HI Radio") && (cur_artist != "Vmix.fm"))
		{ document.title = "Vmix.fm - "+rad_nn[cur_rad]+" - "+cur_artist; }
	else if ((cur_title==2) && (cur_song != "") && (cur_artist != "Vmix.fm")) { document.title = "Vmix.fm - "+rad_nn[cur_rad]+" - "+cur_song; }
	else if ((cur_title==3) && (cur_song != "")) { document.title = "Vmix.fm - "+rad_nn[cur_rad]+" - "+rad_sl[cur_rad]; }
}
function check_the_hash(){
	var n_check_rad = parseInt(document.location.hash.substr(2,1)); 
	if ((n_check_rad >= 0) && (n_check_rad < 5) && (n_check_rad != check_rad)) { 
		check_rad = n_check_rad; cur_rad = check_rad; selec_rad_px = rad_px[cur_rad]; flux = rad[cur_rad];
		fluxhttp = "http://"+rad_serv+":"+rad_po[cur_rad]+"/;stream.nsv";
		pl_load(); titrage(); gen_links(); $('selec_lettres').tween('top',rad_px[cur_rad]+'px');return false; 
	}
}
function gen_links(){
	$each(players, function(lk_id, index){
		$('lk_'+lk_id).removeEvents('click');
		if ((index != 8) && (index != 9)) {
			$('lk_'+lk_id).addEvent('click', function() { open_player(index); return false; });
			$('lk_'+lk_id).title = "listen to "+rad_nn[cur_rad]+" with "+players_nn[index]+"...";
		} else {
			$('lk_'+lk_id).addEvent('click', function() { alert('Coming soon !...'); return false; });
			$('lk_'+lk_id).title = "see how to listen to "+rad_nn[cur_rad]+" with "+players_nn[index]+"...";
		}
	});
}
function open_player(player_id) {
	var newpl = window.open('/playlists/'+rad[cur_rad]+'/'+players[player_id]+'.'+playlist_ext[player_id],'down_pl','toolbar=no,location=no,directories=no,status=no,scrollbars=no,resizable=no,copyhistory=no,menubar=no,width=150,height=50,left='+((screen.availWidth)/2)+',top='+((screen.availHeight)/2));
	if (!newpl) {
	alert("Sorry, the file cannot be opened because of your popup blocker.\nIf you want to listen to "+rad_nn[cur_rad]+" in "+players_nn[player_id]+":\n - With Internet Explorer : \n Click again on \""+players_nn[player_id]+"\" pressing the CTRL key on your keyboard\n - With Mozilla Firefox : \n Find the yellow bar at the top of your window, then click \"Options\",\n then \"Display http://vmix.fm/playlists/"+rad[cur_rad]+"/"+players[player_id]+"."+playlist_ext[player_id]+"...\" ");
	} else { if(newpl.window.focus){newpl.window.focus();} }
}

// Page Initialization
window.addEvent('domready', function() {
	(function(){ check_the_hash(); }).periodical(500); 
	(function(){ $try((function(){if(window.fluid) self.resizeTo(638,374);}),$lambda(false));}).periodical(150); 
	$('selec_lettres').fade('hide');$('fond_lettres').fade('hide'); $('oth_players_menu').fade('hide');	document.oncontextmenu = $lambda(false);
	$each(rad, function(menu_id, index){
		$(menu_id).addEvent('mouseenter', function() { $('selec_lettres').tween('top',rad_px[index]+'px'); });
		$(menu_id).addEvent('mouseleave', function() { $('selec_lettres').tween('top',selec_rad_px+'px'); });
		$(menu_id).addEvent('click', function() { selec_rad_px = rad_px[index]; flux = rad[index]; cur_rad = index;
		fluxhttp = "http://"+rad_serv+":"+rad_po[index]+"/;stream.nsv"; pl_load(); gen_links(); });
	});
	$each(['play','stop'], function(menu_id, index){ $('bt_'+menu_id).addEvent('click', function() { eval('pl_'+menu_id+'()'); return false; }); });
	heure(1); (function(){ titrage(); }).periodical(5000); (function(){ change_title(); }).periodical(3000);
	titrage(); change_title(); init_flash(); gen_links();
	if (cur_rad !=0) { $('selec_lettres').tween('top',rad_px[cur_rad]+'px'); }
	(function(){$('selec_lettres').fade(1); $('fond_lettres').fade(1);}).delay(10000);
	$('oth_players_wrapper').addEvent('mouseenter', function() { $('oth_players_menu').fade(1); });
	$('oth_players_wrapper').addEvent('mouseleave', function() { $('oth_players_menu').fade(0); });
});
window.addEvent('unload', function() { pl_stop();});
window.addEvent('load', function() { (function(){$('selec_lettres').fade(1);}).delay(500);$('fond_lettres').fade(1); init_fluid(); });
window.addEvent('resize', function() { window.innerWidth = 638; if(is_chrome){window.innerHeight = 369;}else{window.innerHeight = 349;}});
window.addEvent('keydown', function(event) {
	if ((event.key == "backspace")||(event.key == "[")||(event.key == "]")) { return false; }
	else if ((event.key == "p") || (event.key == "space")) { 
	if ((cur_state == "PLAYING") || (cur_state == "BUFFERING")) { pl_stop();} else { pl_play(); shout_growl(); } return false;}
	else if (event.key == "s") { pl_stop(fluxhttp); return false;}
	else if ((event.key == "w") || (event.key == "q")) { pl_stop(); }
	else if (event.key == "t") { titrage(); return false;}
	else if (event.key == "r") { pl_reload(); return false; }
	else if ((event.key == "up")||(event.key == "down")) {
		if (((cur_rad == 0) && (event.key == "up")) || ((cur_rad == 4) && (event.key == "down"))) { return false; }
		else {	if (event.key == "up") { cur_rad--; } else if (event.key == "down") { cur_rad++; }
		selec_rad_px = rad_px[cur_rad]; flux = rad[cur_rad];fluxhttp = "http://"+rad_serv+":"+rad_po[cur_rad]+"/;stream.nsv"; 
		pl_load(); gen_links();	document.location.hash = "/"+cur_rad; return false;
		}
	}
});