// Ajax threads
var stem_req = null;
var playlist_req = null;
var newaccount_req = null;
var currentsong_req = null;
var currentSongTitle = null;

// General streaming functions
function ajax_create_stream() {
	return window.XMLHttpRequest ? new XMLHttpRequest() : (window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : null);
}

function ajax_do_request(req, url, callback) {
	try {
		req.onreadystatechange = callback;
		req.open ("GET", url, true);
		req.send (null);
	} catch (e) {
	}
	return req;
}

// Vote request
function ajax_stem(mId,uId) {
	stem_req=ajax_create_stream();
	ajax_do_request(stem_req,'/ajax_stemmen.php?mId='+escape(mId)+'&uId='+escape(uId),ajax_stem_finished);
}
function ajax_stem_finished() { if(stem_req.readyState==4) { // All data received
	eval(stem_req.responseText);
} }

// Playlist request
function ajax_buildplaylist() {
	playlist_req=ajax_create_stream();
	ajax_do_request(playlist_req,'/ajax_playlist.php', ajax_buildplaylist_finished);
}
function ajax_buildplaylist_finished() { if(playlist_req.readyState==4) { // All data received
	document.getElementById('ajax_playlist').innerHTML=playlist_req.responseText;
	window.setTimeout("ajax_buildplaylist();",10000);
} }

// Currently Playing
function ajax_buildcurrentsong() {
	var now = new Date();
	currentsong_req=ajax_create_stream();
	ajax_do_request(currentsong_req,'/cacheproxy.php?f=songinfo.xml&amp;' + now.getTime(), ajax_buildcurrentsong_finished);
}
function ajax_buildcurrentsong_finished() { 
	if(currentsong_req.readyState==4)   // All data received
	{
		var elemProgram;
		var elemXML = currentsong_req.responseXML.documentElement;
		var elemCurrentSong = elemXML.childNodes[0];
		var elemNextSong = elemXML.childNodes[1];
		if (elemXML.getElementsByTagName('current_program').length > 0){
			var elemProgram = elemXML.childNodes[1];
		}
		else {
			var elemProgram = null;
		}

		if (currentSongTitle == elemCurrentSong.childNodes[1].childNodes[0].nodeValue)
		{
			window.setTimeout("ajax_buildcurrentsong();",10000);
			return;
		}
		var currentSongArtist = elemCurrentSong.childNodes[0].childNodes[0].nodeValue;
		currentSongTitle = elemCurrentSong.childNodes[1].childNodes[0].nodeValue;
		var currentSongImage = elemCurrentSong.childNodes[2].childNodes[0].nodeValue;
		var currentSongArtistURL = elemCurrentSong.childNodes[3].childNodes[0].nodeValue;
		
	//	document.getElementById('ajax_currentsong').innerHTML=currentsong_req.responseText;
		fillElement('currentSongImage','<a href="'+currentSongArtistURL+'"><img id=klein width="108px" height="108px;" src="'+currentSongImage+'" title="Nu Speelt: '+currentSongArtist+' - ' + currentSongTitle + '"></a>');
		fillElement('currentSongMore','<a href="'+currentSongArtistURL+'"><img id="ico" src="http://www.actionradio.nl/images/ico_vcard.gif" alt="Artiestinfo"  title="Meer info over '+currentSongArtist+'"></a>');
		fillElement('currentTitle',currentSongArtist + ' - ' + currentSongTitle);

		if (elemProgram == null)
		{
			var nextSongArtist = elemNextSong.childNodes[0].childNodes[0].nodeValue;
			var nextSongTitle = elemNextSong.childNodes[1].childNodes[0].nodeValue;
			var nextSongImage = elemNextSong.childNodes[2].childNodes[0].nodeValue;
			var nextSongArtistURL = elemNextSong.childNodes[3].childNodes[0].nodeValue;

			// Volgende nummer laten zien
			fillElement('nextHeader','Straks:');
			fillElement('nextHeader2', '<b>STRAKS:</b>');
			fillElement('nextSongImage', '<a href="'+nextSongArtistURL+'"><img id=klein width="108px" height="108px;" src="'+nextSongImage+'" title="Volgende nummer: '+nextSongArtist+' - ' + nextSongTitle + '"></a>');
			fillElement('nextSongMore', '<a href="'+nextSongArtistURL+'"><img id="ico" src="http://www.actionradio.nl/images/ico_vcard.gif" alt="Artiestinfo"  title="Meer info over '+nextSongArtist+'"></a>');
			fillElement('nextTitle', nextSongArtist + ' - ' + nextSongTitle);
		}
		else
		{
			var programName = elemProgram.childNodes[0].childNodes[0].nodeValue;
			var programImage = elemProgram.childNodes[1].childNodes[0].nodeValue;
			var programURL = elemProgram.childNodes[2].childNodes[0].nodeValue;

			// Programma laten zien dat draait
			fillElement('nextHeader', 'On Air:');
			fillElement('nextHeader2', '<b>ON AIR:</b>');
			fillElement('nextSongImage', '<a href="'+programURL+'"><img id=klein width="108px" height="108px;" src="'+programImage+'" title="'+ programName + '"></a>');
			fillElement('nextSongMore', '<a href="'+programURL+'"><img id="ico" src="http://www.actionradio.nl/images/ico_vcard.gif" alt="Artiestinfo"  title="Meer info over '+programName+'"></a>');
			fillElement('nextTitle', programName);		
		}

		window.setTimeout("ajax_buildcurrentsong();",10000);
	} 
}

// Nieuwaccount request
function ajax_newaccount(url) {
	newaccount_req=ajax_create_stream();
	ajax_do_request(newaccount_req, url, ajax_newaccount_finished);
}
function ajax_newaccount_finished() { if(newaccount_req.readyState==4) { // All data received
	eval(newaccount_req.responseText);
} }


// Autofill op een textfield
function ajax_autofill(what,query) {
	if(what.value=='') { return false; }
	if(what.value==what.lastValue) { return false; }
	autofill_ajax = ajax_create_stream();
	autofill_obj=what;
	what.lastValue=what.value;
	var req_url=query+escape(what.value);
	autofill_ajax = ajax_do_request (autofill_ajax, req_url, ajax_autofill_dataArrived);
}
function ajax_autofill_dataArrived() {
	if (autofill_ajax.readyState == 4 && autofill_ajax.status == 200) {
		var res = autofill_ajax.responseText;
		if(res!='0') {
			res=res.replace("\r","");
			var p=res.split("\n");
			if((autofill_obj.value == p[0]) && (p[0] != p[1])) {
				autofill_obj.value=p[1];
				if(autofill_obj.createTextRange) { // Internet Explorer-versie
					var range=autofill_obj.createTextRange();
					range.moveStart("character",p[0].length);
					range.select();
				} else { // Firefox
					autofill_obj.focus();
					autofill_obj.setSelectionRange(p[0].length,autofill_obj.value.length);
				}
			}
		}
		autofill_ajax=null;
	}
}
var autofill_ajax=null;
var autofill_obj=null;

function fillElement(id, tekst)
{
	var obj = document.getElementById(id);
	if (obj != undefined)
	{
		obj.innerHTML = tekst;
	}
}
