jQuery.noConflict();
/*---------------------------------------------
 *				M A R Q U E E
 ----------------------------------------------*/

//MARQUEE
var moStop = true;//Stop ticker when mouse over

/* RADIO NAME */
var tSpeedRN = 1; // scroll speed (1 = slow, 5 = fast)
var cpsRN = tSpeedRN;
var awRN, mqRN;
var tickerRN = null;
var widthRN = 125;
var heightRN = 20;
function StartTickerRN() {
	var scrollText = jQuery('#RadioName').html();
	var fsz = parseInt(heightRN) - 4;
	var tick = '<div style="position:relative; width: ' + widthRN + ' px; height: ' + heightRN + 'px;overflow:hidden;"';
	if (moStop) tick += ' onmouseover="cpsRN=0" onmouseout="cpsRN=tSpeedRN"';
	tick += '><div id="mqRN" style="position:absolute;left:0px;top:0px;white-space:nowrap;"><\/div><\/div>';
	jQuery('#RadioName').html(tick);
	mqRN = document.getElementById("mqRN");
	mqRN.style.left = (parseInt(widthRN) + 10) + "px";
	jQuery("#mqRN").html('<span id="txRN" style="">' + scrollText + '<\/span>');
	awRN = document.getElementById("txRN").offsetWidth;
	tickerRN = setInterval("scrollTickerRN()", 50);
}
function scrollTickerRN() {
	mqRN.style.left = (parseInt(mqRN.style.left) > (-10 - awRN)) ? parseInt(mqRN.style.left) - cpsRN + "px" : parseInt(widthRN) + 10 + "px";
	if (mqRN.style.left == "0px") { clearInterval(tickerRN); setTimeout('tickerRN = setInterval("scrollTickerRN()", 50)', 20000); }
}
function StopTickerRN() { clearInterval(tickerRN); tickerRN = null; }
function RestartTickerRN() { StopTickerRN();StartTickerRN(); }

/* SONG TITLE */
var tSpeedST = 2; // scroll speed (1 = slow, 5 = fast)
var cpsST = tSpeedST;
var awST, mqST;
var tickerST = null;
var widthST = 125;
var heightST = 20;
function StartTickerST() {
	cpsST = tSpeedST;
	var scrollText = jQuery('#Song').html();
	var fsz = parseInt(heightST) - 4;
	var tick = '<div style="position:relative; width: ' + widthST + ' px; height: ' + heightST + 'px;overflow:hidden;"';
	if (moStop) tick += ' onmouseover="cpsST=0" onmouseout="cpsST=tSpeedST"';
	tick += '><div id="mqST" style="position:absolute;left:0px;top:0px;white-space:nowrap;"><\/div><\/div>';
	jQuery('#Song').html(tick);
	mqST = document.getElementById("mqST");
	mqST.style.left = (parseInt(widthST) + 10) + "px";
	jQuery("#mqST").html('<span id="txST" style="">' + scrollText + '<\/span>');
	awST = document.getElementById("txST").offsetWidth;
	tickerST = setInterval("scrollTickerST()", 50);
}
function scrollTickerST() {
	mqST.style.left = (parseInt(mqST.style.left) > (-10 - awST)) ? parseInt(mqST.style.left) - cpsST + "px" : parseInt(widthST) + 10 + "px";
	if (mqST.style.left == "0px") { clearInterval(tickerST); setTimeout('tickerST = setInterval("scrollTickerST()", 50)', 10000);}
}
function StopTickerST() { clearInterval(tickerST); tickerST = null; jQuery('#txST').html(jQuery('#Song').html());cpsST = tSpeedST; }
function RestartTickerST() { StopTickerST(); StartTickerST(); }

/* COMMENTS */
var tSpeedCM = 2; // scroll speed (1 = slow, 5 = fast)
var cpsCM = tSpeedCM;
var awCM, mqCM;
var tickerCM = null;
var widthCM = 207;
var heightCM = 12;
function StartTickerCM() {
	var scrollText = jQuery('#Comments').html();
	var fsz = parseInt(heightCM) - 4;
	var tick = '<div style="position:relative; width: ' + widthCM + ' px; height: ' + heightCM + 'px;overflow:hidden;"';
	if (moStop) tick += ' onmouseover="cpsCM=0" onmouseout="cpsCM=tSpeedCM"';
	tick += '><div id="mqCM" style="position:absolute;left:0px;top:0px;white-space:nowrap;"><\/div><\/div>';
	jQuery('#Comments').html(tick);
	mqCM = document.getElementById("mqCM");
	mqCM.style.left = (parseInt(widthCM) + 10) + "px";
	jQuery("#mqCM").html('<span id="txCM" style="">' + scrollText + '<\/span>');
	awCM = document.getElementById("txCM").offsetWidth;
	tickerCM = setInterval("scrollTickerCM()", 50);
}
function scrollTickerCM() {
	mqCM.style.left = (parseInt(mqCM.style.left) > (-10 - awCM)) ? parseInt(mqCM.style.left) - cpsCM + "px" : parseInt(widthCM) + 10 + "px";
	//if (mqCM.style.left == "0px") { clearInterval(tickerCM); setTimeout('tickerCM = setInterval("scrollTickerCM()", 50)', 5000); }
}
function StopTickerCM() { clearInterval(tickerCM); tickerCM = null; }
function RestartTickerCM() { StopTickerCM(); StartTickerCM(); }



/*---------------------------------------------
*			I N I T I A L I Z A T I O N
----------------------------------------------*/
/* ON LOAD*/
var _D = true;
var _forceStop = false;
var _isMute = true;
var _playerStatus = 0;
var _prePlay = false; //The event change to status = play (3) just before buffering (6) and after buffer complete go back
var _volumeLevel = 2;
var _rootUrl = 'http://streaming.radionomy.com/swd.php?radioid=';
var _defaultUrl = 'http://streaming.radionomy.com/swd.php?radioid=' + _radUID;
var _mediaPlayerId = 'radioPlayer';
var _mediaPlayer = null;
var _IE = jQuery.browser['msie'];
var _FF = jQuery.browser['mozilla'];
var _WIN = navigator.userAgent.indexOf('Windows') != -1;
var _baseURL = 'http://www.radionomy.com'
var _pollDelay = 3000;
var commentTimer = null;
var _playerID = null;
var _coverUrl = null;

jQuery(document).ready(function() {

	GetPlayInfo();
	GetRadioInfo();

	var embedCode = GetEmbedCode();

	if (_WIN) {
		jQuery('#PlayerEmbed').html(embedCode);
		_mediaPlayer = $(_mediaPlayerId);
		if (_IE) {
			_mediaPlayer.attachEvent('playStateChange', StatusChanged);
		}
		else {
			_mediaPlayer.addEventListener('playStateChange', StatusChanged, false);
		}
	}
	else {
		$('PlayerEmbed').innerHTML = embedCode;
		_mediaPlayer = $(_mediaPlayerId);

		_mediaPlayer.addEventListener('qt_load', qt_load, false);
		_mediaPlayer.addEventListener('qt_begin', qt_begin, false);
		_mediaPlayer.addEventListener('qt_loadedmetadata', qt_loadedmetadata, false);
		_mediaPlayer.addEventListener('qt_loadedfirstframe', qt_loadedfirstframe, false);
		_mediaPlayer.addEventListener('qt_canplay', qt_canplay, false);
		_mediaPlayer.addEventListener('qt_canplaythrough', qt_canplaythrough, false);
		_mediaPlayer.addEventListener('qt_durationchange', qt_durationchange, false);
		_mediaPlayer.addEventListener('qt_ended', qt_ended, false);
		_mediaPlayer.addEventListener('qt_error', qt_error, false);
		_mediaPlayer.addEventListener('qt_pause', qt_pause, false);
		_mediaPlayer.addEventListener('qt_play', qt_play, false);
		_mediaPlayer.addEventListener('qt_progress', qt_progress, false);
		_mediaPlayer.addEventListener('qt_waiting', qt_waiting, false);
		_mediaPlayer.addEventListener('qt_stalled', qt_stalled, false);
		_mediaPlayer.addEventListener('qt_timechanged', qt_timechanged, false);
		_mediaPlayer.addEventListener('qt_volumechange', qt_volumechange, false);
	}

	/* VOLUME */
	jQuery('#Volume1').click(function() {
		ChangeVolume(1);
	});
	jQuery('#Volume2').click(function() {
		ChangeVolume(2);
	});
	jQuery('#Volume3').click(function() {
		ChangeVolume(3);
	});
	jQuery('#Volume4').click(function() {
		ChangeVolume(4);
	});
	jQuery('#Volume5').click(function() {
		ChangeVolume(5);
	});

	jQuery('#Volume1').hover(function() {
		HoverVolume('1');
	}, function() {
		HoverVolume(_volumeLevel);
	});
	jQuery('#Volume2').hover(function() {
		HoverVolume('2');
	}, function() {
		HoverVolume(_volumeLevel);
	});
	jQuery('#Volume3').hover(function() {
		HoverVolume('3');
	}, function() {
		HoverVolume(_volumeLevel);
	});
	jQuery('#Volume4').hover(function() {
		HoverVolume('4');
	}, function() {
		HoverVolume(_volumeLevel);
	});
	jQuery('#Volume5').hover(function() {
		HoverVolume('5');
	}, function() {
		HoverVolume(_volumeLevel);
	});

	/* INIT THE DEFAULT VOLUME*/
	HoverVolume('2');

	/* PLAY PAUSE*/
	jQuery('#Play').click(function() {
		jQuery('#Play').stop(true, true).hover(0);
		if (_WIN && _playerStatus != 9 && _playerStatus != 6 && _playerStatus != 3 && _playerStatus != 10) {
			ForcePlay();
		}
		else {
			Mute(false);
		}
	});
	jQuery('#Pause').click(function() {
		jQuery('#Pause').stop(true, true).hover(0);
		Mute(true);
	});

	jQuery('#Scroller1').hover(function() { clearTimeout(commentTimer) }, function() { scrollTSH() });
	
});

/*---------------------------------------------
*				F U N C T I O N S
----------------------------------------------*/

function ChangePicture(div, newPicture) {
	if (div != null) {
		var img = jQuery('#' + div).children("img");
		img.attr('src', newPicture);
	}
}
function FadeDivPicture(div, newPicture) {
	var img = jQuery('#' + div).children("img");
	img.fadeOut(function() {
		jQuery('#' + div).children('img').attr('src', newPicture);
	});
	img.fadeIn();
	jQuery('#' + div).stop(true, true).hover(0);
}

function HoverVolume(level) {
	jQuery('#Volume').css({ 'background-image': 'url(themes/Mxlive/images/volume' + level + '.png)' });
}
function ChangeVolume(level) {
	_volumeLevel = level;
	if (_WIN) {
		switch(level)
		{
			case 1:
				_mediaPlayer.settings.volume = 20;
				break;
			case 2:
				_mediaPlayer.settings.volume = 40;
				break;
			case 3:
				_mediaPlayer.settings.volume = 60;
				break;
			case 4:
				_mediaPlayer.settings.volume = 80;
				break;
			case 5:
				_mediaPlayer.settings.volume = 100;
				break;
			default:
				break;
		}
		_mediaPlayer.settings.mute = _isMute;
	}
	else {
		switch (level) {
			case 1:
				_mediaPlayer.SetVolume(51);
				break;
			case 2:
				_mediaPlayer.SetVolume(102);
				break;
			case 3:
				_mediaPlayer.SetVolume(153);
				break;
			case 4:
				_mediaPlayer.SetVolume(204);
				break;
			case 5:
				_mediaPlayer.SetVolume(255);
				break;
			default:
				break;
		}
		_mediaPlayer.SetMute(_isMute);
	}
}

/*function toggleMute() { //fonction Play/Pause: a utiliser pour un bouton unique
	if (_isMute) {
		Mute(false);
		FadeDivPicture('Play', 'images/pause.png');
	}
	else {
		Mute(true);
		FadeDivPicture('Play', 'images/play.png');
	}
}
*/
function Mute(isMute) {
	if (_WIN) {
		_mediaPlayer.settings.mute = isMute;
	}
	else {
		_mediaPlayer.SetMute(isMute);
	}
	_isMute = isMute;
}

function Play() {
	if (_WIN) {
		if (_isMute) {
			FadeDivPicture('Pause', 'themes/Mxlive/images/pause.png');
		}
		else {
			if(_prePlay)
				FadeDivPicture('Play', 'themes/Mxlive/images/play.png');
				FadeDivPicture('Pause', 'themes/Mxlive/images/pause.png');
		}
	}
	else {
		if (_isMute) {
			FadeDivPicture('Pause', 'themes/Mxlive/images/pause.png');
		}
		else {
			FadeDivPicture('Play', 'themes/Mxlive/images/play.png');
			FadeDivPicture('Pause', 'themes/Mxlive/images/pause.png');
		}
	}
}

function ForcePlay() {
	if (_WIN) {
		_prePlay = false;
		if (_mediaPlayer.controls) {
			_mediaPlayer.controls.Play();
		}
	}
	else {
		_mediaPlayer.Play();
	}
}
function AutoLaunchRadio(strRadUID) {
	if (_isMute) {
		ListenRadio(strRadUID);
	}
}
function ListenRadio(radioId) {

	//Save a cookie for auto-play
	var dteExpiration = new Date();
	dteExpiration.setDate(dteExpiration.getDate() + 1);

	document.cookie = "Radio=" + radioId + ";expires=" + dteExpiration.toUTCString();
	if (_playerID != null && !_playerID.closed) {
		document.cookie = "Detach=1;expires=" + dteExpiration.toUTCString();
		_playerID.ListenRadio(radioId);
		return;
	}
	else {
		document.cookie = "Detach=0;expires=" + dteExpiration.toUTCString();
	}

	if (_radUID == radioId) {
		if (_isMute) {
			toggleMute();
		}
		return;
	}
	_prePlay = false;
	_radUID = radioId;
	stopPoll();
	StopTickerST();
	StopTickerRN();
	GetRadioInfo();
	GetPlayInfo();
	if (_WIN) {
		_mediaPlayer.URL = _rootUrl + _radUID;
	}
	else
	{
		_mediaPlayer.SetURL(_rootUrl + _radUID);
	}
	
	if (_WIN && _playerStatus != 9 && _playerStatus != 6 && _playerStatus != 3 && _playerStatus != 10) {
		ForcePlay();
	}
	if (_isMute) toggleMute();
}
function DetachPlayer() {
	if (_radUID != null && _radUID != "") {
		Mute(true);
		_playerID = window.open("/FR/Cust/Player2.aspx?RadUID=" + _radUID, "Player", "menubar=no,status=no,scrollbars=no,toolbar=no,location=no,directories=no,resizable=no,height=70,width=365");
	}
}

function GetEmbedCode() {

	if (_WIN) {
		var embedCode = '<object id="' + _mediaPlayerId + '"';

		if (_IE) {
			embedCode = embedCode + ' classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6" ';
		}
		else {
			embedCode = embedCode + ' type="application/x-ms-wmp" ';
		}
		embedCode = embedCode + 'width="1" height="1">';
		embedCode = embedCode + '<param name="volume" value="40" />';
		embedCode = embedCode + '<param name="url" value="' + _defaultUrl + '" />';
		embedCode = embedCode + '<param name="fullScreen" value="0" />';
		embedCode = embedCode + '<param name="uiMode" value="mini" />';
		embedCode = embedCode + '<param name="showcontrols" value="1" />';
		embedCode = embedCode + '<param name="showstatusbar" value="1" />';
		embedCode = embedCode + '<param name="autostart" value="1" />';
		embedCode = embedCode + '<param name="mute" value="' + _isMute + '" />';
		embedCode = embedCode + '</object>';		
	}
	else {
		if (_FF) {
			embedCode = '<object id="' + _mediaPlayerId + '" name="' + _mediaPlayerId + '" data="' + _defaultUrl + '" width="1" height="1" type="video/quicktime" pluginspace="http://www.apple.com/quicktime/download/index.html">';
			embedCode += '<param name="autoplay" value="true"/>';
			embedCode += '<param name="enablejavascript" value="true"/>';
			embedCode += '<param name="qtsrc" value="' + _defaultUrl + '"/>';
			embedCode += '<param name="qtsrcdontusebroswer" value="false"/>';
			embedCode += '<param name="kioskmode" value="true"/>';
			embedCode += '<param name="mute" value="' + _isMute + '"/>'
			embedCode += '<param name="postdomevents" value="true"/>';
			embedCode += '</object>';
		}
		else {
			embedCode = '<object id="' + _mediaPlayerId + '" name="' + _mediaPlayerId + '" width="1" height="1" type="video/quicktime" pluginspace="http://www.apple.com/quicktime/download/index.html">';
			embedCode += '<param name="autoplay" value="true"/>';
			embedCode += '<param name="enablejavascript" value="true"/>';
			embedCode += '<param name="qtsrc" value="' + _defaultUrl + '"/>';
			embedCode += '<param name="qtsrcdontusebroswer" value="false"/>';
			embedCode += '<param name="kioskmode" value="true"/>';
			embedCode += '<param name="mute" value="' + _isMute + '"/>';
			embedCode += '<param name="postdomevents" value="true"/>';
			embedCode += '<param name="src" value="' + _defaultUrl + '"/>';
			embedCode += '</object>';
		}
	}
	
	return embedCode;
}

//Starting the Embed
function qt_begin() { Log('qt_begin'); StatusChanged(6); _mediaPlayer.SetMute(true);ChangeVolume(2); }
function qt_loadedmetadata() { Log('qt_loadedmetadata'); }
function qt_durationchange() { Log('qt_durationchange'); }
function qt_loadedfirstframe() { Log('qt_loadedfirstframe'); }
function qt_canplay() { Log('qt_canplay'); }
function qt_canplaythrough() { Log('qt_canplaythrough'); }
function qt_load() { Log('qt_load'); }
function qt_play() { Log('qt_play'); }
function qt_timechanged() { Log('qt_timechanged'); StatusChanged(3); } // Flux is starting

function qt_volumechange() { Log('qt_volumechange');  }

//Extra stuff
function qt_pause() { Log('qt_pause'); StatusChanged(2); } // Occur when connection is lost
function qt_ended() { Log('qt_ended'); }
function qt_error() { Log('qt_error');  }
function qt_progress() { Log('qt_waiting'); }
function qt_waiting() { Log('qt_progress'); }
function qt_stalled() { Log('qt_stalled'); }



function StatusChanged(state) {
	switch (state) {
		case 0:    // Undefined
			jQuery('#Debugger').html("Undefined");
			break;
		case 1:    // Stopped
		case 2:    // Paused
			ChangePicture('Pause', 'themes/Mxlive/images/play.png');
			jQuery('#Debugger').html("Stopped");
			if (!_forceStop) {
				ForcePlay();
			}
			break;
		case 3:    // Playing
			//Test if the previous status was not 9 (because it will bufferize just after though skip the playing status change)
			if (_prePlay || !_WIN) {
				jQuery('#Debugger').html("Playing");
				Play();
			}
			else {
				_prePlay = true;
			}
			break;
		case 4:    // ScanForward
			jQuery('#Debugger').html("ScanForward");
			break;
		case 5:    // ScanReverse
			jQuery('#Debugger').html("ScanReverse");
			break;
		case 6:    // Buffering
			jQuery('#Debugger').html("Buffering");
			ChangePicture('Play', 'themes/Mxlive/images/play.png');
			break;
		case 7:    // Waiting
			jQuery('#Debugger').html("Waiting");
			break;
		case 8:    // MediaEnded
			jQuery('#Debugger').html("MediaEnded");
			break;
		case 9:    // Transitioning
			jQuery('#Debugger').html("Transitioning");
			ChangePicture('Play', 'themes/Mxlive/images/play.png');
			ChangePicture('Pause', 'themes/Mxlive/images/pause.png');
			break;
		case 10:   // Ready
			jQuery('#Debugger').html("Ready");
			//FadeDivPicture('PlayPause', '/Images/btnPlayEmbed.gif');
			break;
		case 11:   // Reconnecting
			jQuery('#Debugger').html("Reconnecting");
			break;
		case 12:   // Last
			jQuery('#Debugger').html("Last");
			break;
		default:
			jQuery('#Debugger').html("Unknown State: " + state);
			break;
	}
	_playerStatus = state;
}
/* VERY IMPORTANT FOR FIREFOX !!!*/
function OnDSPlayStateChangeEvt(state) { StatusChanged(state); }
function staticLoadScript(url) { document.write('<script src=/js/' + url, '" type="text/javascript"></script>'); }
function Log(msg) { if (_D && window.console) console.log(msg); }


/* REMOTE INFORMATION */
function jsonp(url, callback, name, query) {
	if (url.indexOf("?") > -1) { url += "&jsonp="; }
	else { url += "?jsonp="; }

	url += name + "&";

	if (query) { url += encodeURIComponent(query) + "&"; }
	url += new Date().getTime().toString(); // prevent caching

	var script = document.createElement("script");
	script.setAttribute("src", url);
	script.setAttribute("type", "text/javascript");
	var head = document.getElementsByTagName('head')[0];
	if (head) {
		head.appendChild(script);
	}
}

function GetPlayInfo() {
	var reqUrl = _baseURL + "/JSon.aspx?radUID=" + _radUID;
	jsonp(reqUrl, "GetRemotePlayInfo", "GetRemotePlayInfo", ""); //This method will asynchronously call GetRemoteUrl to specify the URL
}
function GetRadioInfo() {
	var reqUrl = _baseURL + "/JSon.aspx?radUID=" + _radUID;
	jsonp(reqUrl, "", "GetRemoteRadioInfo", ""); //This method will asynchronously call GetRemoteUrl to specify the URL
}
function GetDedications() {
	var reqUrl = _baseURL + "/JSon.aspx?radUID=" + _radUID;
	jsonp(reqUrl, "", "GetRemoteDedications", ""); //This method will asynchronously call GetRemoteUrl to specify the URL
}
function GetRemoteRadioInfo(result) {
	var radInfo = new Array();

	if (result) {
		radInfo[0] = result.name;
		radInfo[1] = result.url;
		radInfo[2] = result.image;
		radInfo[3] = result.promote;

		InitRadioInfo(radInfo);
	}
}

function InitRadioInfo(radInfo) {
	if (radInfo) {

		StopTickerRN();
		jQuery('#RadioName').html(radInfo[0]);
		jQuery('#RadioName').attr("title", radInfo[0]);
		jQuery('#RadioName').attr("alt", radInfo[0]);
		//setTimeout("StartTickerRN()", 15000);

		var logoLink = $('player-logo-link');
		if (logoLink) {
			logoLink.href = radInfo[1];
		}

		var logoImg = $('player-logo-img');
		if (logoImg) {
			logoImg.src = _baseURL + "/Thumbnail.aspx?t=logo&p=" + _baseURL + radInfo[2];
		}

		var exportLink = $('player-export');
		if (exportLink) {
			exportLink.href = radInfo[3];
		}
		
		GetDedications();
	}
}

function GetRemotePlayInfo(result) {
	var radInfo = new Array();
	radInfo[0] = result.title;
	radInfo[1] = result.artists;
	radInfo[2] = result.image;
	radInfo[3] = result.url;
	radInfo[4] = result.type;
	radInfo[5] = result.recall;
	radInfo[6] = result.link;

	_coverUrl = result.link;
	
	if (result.recall <= 0)
		_pollDelay = 5000;
	else 
		_pollDelay = (result.recall * 1); //Change with the next song + 1 second of security;
	
	restartPoll();
	StopTickerST();
	jQuery('#Song').html(result.title);
	jQuery('#Song').attr("title", result.title);
	jQuery('#Song').attr("alt", result.title);

	var coverPic = $('CoverPicture')
	if (coverPic) {
		coverPic.src = _baseURL + "/Thumbnail.aspx?t=cover&p=" + radInfo[2];
	}
	//setTimeout("StartTickerST()", 10000);
}

function JumpCover() {
	if (_coverUrl != null && _coverUrl.length > 0) {
		window.open(_coverUrl, 'Cover', 'left=20,top=20,width=500,height=500,status=yes,toolbar=yes,menubar=yes,location=yes,resizable=yes ');
	}
}

function GetRemoteDedications(result) {
	jQuery('#Scroller1').html(result.dedications);	
	setTimeout("scrollTSH()", 1000);
}

function scrollTSH() {
	clearTimeout(commentTimer);

	var scroll1Pos = parseInt(jQuery('#Scroller1').css('left'));

	scroll1Pos -= 1;

	jQuery('#Scroller1').css('left', scroll1Pos);

	var scroll1OffW = $('Scroller1').offsetWidth;
	if (scroll1Pos < - scroll1OffW) {
		jQuery('#Scroller1').css('left', scroll1OffW);
	}

	commentTimer = setTimeout("scrollTSH()", 25)
}


//POLLING
var pollId;
function startPoll() { pollId = setInterval(GetPlayInfo, _pollDelay); }
function stopPoll() { if(pollId) clearInterval(pollId); }
function restartPoll() {stopPoll();  startPoll(); }