var decreasesound_soundstep	= 1;
var decreasesound_initial	= 0;
var decreasesound_volume	= 0;
var decreasesound_busy		= 0;
var increasesound_soundstep	= 1;
var increasesound_initial	= 0;
var increasesound_volume	= 0;
var increasesound_busy		= 0;
var playerPrevNextTimeoutHandle = null;

function decreasesound() {
	Player = top.document.getElementById('player').contentWindow.document.getElementById('playframe').contentWindow.document.Player;
	try {
		decreasesound_volume = decreasesound_volume - decreasesound_soundstep;
		Player.settings.volume = Math.round(decreasesound_volume);
		if (Player.settings.volume <= 0) {
			Player.controls.pause();
			Player.settings.volume = decreasesound_initial;
			decreasesound_busy = 0;
		} else {
			setTimeout("decreasesound();",100);
		}
	} catch (err) {
		Player.controls.pause();
		Player.settings.volume = decreasesound_initial;
		decreasesound_busy = 0;
	}
	if (decreasesound_soundstep > 1) decreasesound_soundstep = decreasesound_soundstep * 0.9;
}

function increasesound() {
	Player = top.document.getElementById('player').contentWindow.document.getElementById('playframe').contentWindow.document.Player;
	try {
		increasesound_volume = increasesound_volume + increasesound_soundstep;
		Player.settings.volume = Math.round(increasesound_volume);
		if (Player.settings.volume >= increasesound_initial) {
			Player.settings.volume = increasesound_initial;
			increasesound_busy = 0;
		} else {
			setTimeout("increasesound();",100);
		}
	} catch (err) {
		Player.settings.volume = increasesound_initial;
		increasesound_busy = 0;
	}
}


function gracefull_pause() {
	if (decreasesound_busy != 0 || increasesound_busy != 0)
		return;
	
	decreasesound_busy = 1;
	Player = top.document.getElementById('player').contentWindow.document.getElementById('playframe').contentWindow.document.Player;

	try {
		decreasesound_initial = Player.settings.volume;
		decreasesound_volume = decreasesound_initial;
		decreasesound_soundstep = Player.settings.volume / 4;
	} catch (err) {
		decreasesound_initial = 50;
		decreasesound_volume = 50;
		decreasesound_soundstep = 100;
	}
	decreasesound();
}

function gracefull_play() {
	if (decreasesound_busy != 0 || increasesound_busy != 0)
		return;
	
	increasesound_busy = 1;

	Player = top.document.getElementById('player').contentWindow.document.getElementById('playframe').contentWindow.document.Player;

	try {
		increasesound_initial = Player.settings.volume;
		increasesound_volume = 0;
		increasesound_soundstep = increasesound_initial / 10;
		Player.settings.volume = 0;
	} catch (err) {
		increasesound_initial = 50;
		increasesound_volume = 0;
		increasesound_soundstep = 50;
	}
	Player.controls.play();
	increasesound();
}

function play(productid, pos, userid, userloginuid) {
	top.document.trackid = productid;

	var Player = top.document.getElementById('player').contentWindow.document.getElementById('playframe').contentWindow.document.getElementById('Player');
	if (Player.playState == 2 && top.document.pausedproductid==productid) { //paused, and continuing the same track ?
	} else {
		Player.URL = "../../asx.asp?productid=" + productid + "&userid=" + userid +  "&userloginuid=" + userloginuid
	}

	if (top.document.prefs_player_fade == '0')
		Player.controls.play();
	else
		gracefull_play();
	playbuttonOn();
	top.ajaxCall('action:player_update_playlistmenu','');
}

function stop() {
	top.document.getElementById('player').contentWindow.document.getElementById('playframe').contentWindow.document.Player.controls.stop();
	playbuttonOff();
}

function pause() {
	var Player = top.document.getElementById('player').contentWindow.document.getElementById('playframe').contentWindow.document.Player;
	if (mediaplayer_is11beta() || (top.document.prefs_player_pausebutton == '0')) { //problems with pause in 11, only beta versions
		Player.controls.stop();
	} else {
		if (top.document.prefs_player_fade == '0')
			Player.controls.pause();
		else
			gracefull_pause();
	}
	playbuttonOff();
}

function playbuttonOff() {
	btn = top.document.getElementById('player').contentWindow.document.getElementById('playbtn');
	anchor = top.document.getElementById('player').contentWindow.document.getElementById('anchor_play');
	txt = top.document.getElementById('player').contentWindow.document.getElementById('txt_play');
	if (btn) {
		btn.src = 'btn_play.jpg';
		btn.alt = 'Afspelen';
	}
	if (anchor) {
		anchor.className = 'control play';
		anchor.title = 'Afspelen';
		if (txt) txt.innerHTML = anchor.title;
	}
	refreshmessagebar();
}

function playbuttonOn() {
	btn = top.document.getElementById('player').contentWindow.document.getElementById('playbtn');
	anchor = top.document.getElementById('player').contentWindow.document.getElementById('anchor_play');
	txt = top.document.getElementById('player').contentWindow.document.getElementById('txt_play');
	if (mediaplayer_is11beta() || (top.document.prefs_player_pausebutton == '0')) { //problems with pause in 11, only beta versions
		if (btn) {
			btn.src = 'btn_stop.jpg';
			btn.alt = 'Stop';
		}
		if (anchor) {
			anchor.className = 'control stop';
			anchor.title = 'Stop';
			if (txt) txt.innerHTML = anchor.title;
		}
	} else {
		if (btn) {
			btn.src = 'btn_pause.jpg';
			btn.alt = 'Pauze';
		}
		if (anchor) {
			anchor.className = 'control pause';
			anchor.title = 'Pause';
			if (txt) txt.innerHTML = anchor.title;
		}
	}
	refreshmessagebar();
}

//**** Function to handle pressing the playbutton in the player ****
function pressPlay() {
	if (top.document.isplaying) {
		pause();
	} else {
		refreshCurrentTrack(1);
	}
}

//**** Function to handle pressing the next button in the player ****
function playerNext(doplay) {

	if (playerPrevNextTimeoutHandle != null) clearTimeout(playerPrevNextTimeoutHandle);
	
	if (counttracks() == 3) {
		var productid = top.document.tracks[2]['id'];
	} else if (counttracks() == 2) {
		if (top.document.tracks[0]['current']) { //first is the current ? then the next is there. If the second is current, we are at the end...
			var productid = top.document.tracks[1]['id'];
		} else {
			var productid = 0;
		}
	} else {
		var productid = 0;
	}
	
//	ajaxCall('action:playerNext','productid:'+productid,'doplay:'+doplay);

	ajaxCall('action:playerNext','productid:'+productid,'doplay:0');
	if (doplay == 1) {
//		playerPrevNextTimeoutHandle = setTimeout("play(top.document.tracks[x]['id'],top.document.tracks[x]['trackpos'],top.document.userid,top.document.userloginuid);", 2000)		
		playerPrevNextTimeoutHandle = setTimeout("refreshCurrentTrack(1);", 1000)	
	}
}


//**** Function to handle pressing the prev button in the player ****
function playerPrev() {
	if (playerPrevNextTimeoutHandle != null) clearTimeout(playerPrevNextTimeoutHandle);

	if (counttracks() == 3) {
		var productid = top.document.tracks[0]['id'];
	} else if (counttracks() == 2) {
		if (top.document.tracks[1]['current']) { 
			var productid = top.document.tracks[0]['id'];
		} else {
			var productid = 0;
		}
	} else {
		var productid = 0;
	}
	ajaxCall('action:playerPrev','productid:'+productid,'doplay:0');

//	playerPrevNextTimeoutHandle = setTimeout("play(top.document.tracks[x]['id'],top.document.tracks[x]['trackpos'],top.document.userid,top.document.userloginuid);", 2000)	
	playerPrevNextTimeoutHandle = setTimeout("refreshCurrentTrack(1);", 1000)	

}

function repeat(state, change) {
	btn = top.document.getElementById('player').contentWindow.document.getElementById('btn_repeat');
	anchor = top.document.getElementById('player').contentWindow.document.getElementById('anchor_repeat');
	txt = top.document.getElementById('player').contentWindow.document.getElementById('txt_repeat');
	if (state==1) { //new state will be 1 (repeat one)
		if (btn) {
			btn.src = 'btn_repeat_1.jpg';
			btn.alt = 'Herhaal 1 nummer';
		}
		if (anchor) {
			anchor.className = 'control repeat_1';
			anchor.title = 'Herhaal 1 nummer';
			if (txt) txt.innerHTML = anchor.title;
		}
		top.document.player_repeat = 1;
		top.document.player_repeat_productid = top.document.trackid;
		if (change) ajaxCall('action:setRepeatPlaylist', 'repeat:1');
	} else if (state==2) { // new state will be 2 (repeat all)
		if (btn) {
			btn.src = 'btn_repeat_all.jpg';
			btn.alt = 'Herhaal alles';
		}
		if (anchor) {
			anchor.className = 'control repeat_all';
			anchor.title = 'Herhaal alles';
			if (txt) txt.innerHTML = anchor.title;
		}
		top.document.player_repeat = 2;
		top.document.player_repeat_productid = "";
		if (change) ajaxCall('action:setRepeatPlaylist', 'repeat:2');
	} else { // new state will be 0 (no repeat)
		if (btn) {
			btn.src = 'btn_repeat.jpg';
			btn.alt = 'Herhalen';
		}
		if (anchor) {
			anchor.className = 'control repeat';
			anchor.title = 'Herhalen';
			if (txt) txt.innerHTML = anchor.title;
		}
		top.document.player_repeat = 0;
		top.document.player_repeat_productid = "";
		if (change) ajaxCall('action:setRepeatPlaylist', 'repeat:0');
	}
}

function counttracks() {
	var trackcount = top.document.tracks.length;
	return trackcount;
}

function cleanplayer() {
		var tmpdoc = top.document.getElementById('player').contentWindow.document;
		stop();
		
		tmpdoc.getElementById('playtrack1').innerHTML = '&nbsp;';
		tmpdoc.getElementById('playtrack2').innerHTML = '&nbsp;';
		tmpdoc.getElementById('playtrack3').innerHTML = '&nbsp;';
		tmpdoc.getElementById('time1').innerHTML = '&nbsp;';
		tmpdoc.getElementById('time2').innerHTML = '&nbsp;';
		tmpdoc.getElementById('curtime').innerHTML = '&nbsp;';
		tmpdoc.getElementById('time3').innerHTML = '&nbsp;';
		tmpdoc.getElementById('playercover').src = 'blank.gif';
		tmpdoc.getElementById('seektodo').innerHTML = '';
		clearTracks();
		
		highlightCurrentTrack();
}


function highlightCurrentTrack() {
	if (tmpdoc = top.document.getElementById('player').contentWindow.document) {
		if (row2 = tmpdoc.getElementById('row2')) {
			if (counttracks() > 0) {
				row2.backgroundColor = "#777";
				row2.className = "row row_current row_highlight";
			} else {
				row2.backgroundColor = "transparent";
				row2.className = "row row_current";
			}
		}
	}
}

function playCurrentTrack() {
	refreshCurrentTrack(1);
}

//**** function to clear the tracklist for the playlist player
function clearTracks() {
	top.document.tracks		= new Array();
}

//**** function to add a track to the tracklist for the playlist player
function addTrackElement(trackid,trackpos,trackname,artist,duration,current,playlisttracksid,albumproductid,allow_combined,artistid,display_name) {
	trackpos = 0;
	retvar =  new Array();
	retvar['id']				= trackid;
	retvar['trackpos']			= trackpos;
	retvar['trackname']			= trackname;
	retvar['artist']			= artist;
	retvar['duration']			= duration.substr(3);
	retvar['current']			= current;
	retvar['playlisttracksid']	= playlisttracksid;
	retvar['albumproductid']	= albumproductid;
	retvar['allow_combined']	= allow_combined;
	retvar['artistid']			= artistid;
	retvar['display_name']		= display_name;
	top.document.tracks.push(retvar);
}

//**** activates a tooltip layer and displays message
function commentOn(comment) {
	var temp = layer("comments");
	try {
		temp.move(top.document.getElementById('content').contentWindow.document.tempX+95,top.document.getElementById('content').contentWindow.document.tempY+125);
	} catch(e) {
	}
	temp.write(comment)
	document.getElementById("comments").style.display = 'block';
}

//**** deactivates and hides a tooltip layer
function commentOff() {
	document.getElementById("comments").style.display = 'none';
	var temp = layer("comments");
	temp.write('');
}

//**** read a cookie value
function readCookie(name) {
	var nameEQ = name + "=";
	var ca = top.document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

//** return function from media player
function fromMediaPlayer() {
	if (!top.document.IE) {
		ajaxCall('action:getFreshPlaylist','playlistid:' + top.document.playlistid);
	}
}

function add2playlist(id) {
	top.document.getElementById("playlists").style.display = 'none';
	top.document.getElementById("darkdiv").style.display = 'none';
	ajaxCall('action:add2playlist', 'id:' + id, 'tracksid:' + top.document.playlist_trackid, 'actiontype:' + top.document.actiontype);
}

function shuffle(state, change) {
	btn = top.document.getElementById('player').contentWindow.document.getElementById('btn_shuffle');
	anchor = top.document.getElementById('player').contentWindow.document.getElementById('anchor_shuffle');
	txt = top.document.getElementById('player').contentWindow.document.getElementById('txt_shuffle');
	if (state) {
		if (btn) {
			btn.src = 'btn_shuffle_on.jpg';
		}
		if (anchor) {
			anchor.className = 'control shuffle_on';
			anchor.title = 'Shuffle';
			if (txt) txt.innerHTML = anchor.title;
		}
		top.document.player_shuffle = 1;
		//////top.document.getElementById('player').contentWindow.document.getElementById('btn_shuffle').blur();
		if (change) ajaxCall('action:shufflePlaylist', 'playlistid:' + top.document.playlistid,'shuffle:1', 'isplaying:'+top.document.isplaying);
	} else {
		if (btn) {
			btn.src = 'btn_shuffle.jpg';
		}
		if (anchor) {
			anchor.className = 'control shuffle';
			anchor.title = 'Shuffle';
			if (txt) txt.innerHTML = anchor.title;
		}
		top.document.player_shuffle = 0;
		//////top.document.getElementById('player').contentWindow.document.getElementById('btn_shuffle').blur();
		if (change) ajaxCall('action:shufflePlaylist', 'playlistid:' + top.document.playlistid,'shuffle:0','isplaying:'+top.document.isplaying);
	}
}

function volumebar_update() {
	var Player;
	var volumebar;
	
	Player = top.document.getElementById('player').contentWindow.document.getElementById('playframe').contentWindow.document.Player;
	volumebar = top.document.getElementById('player').contentWindow.volumebar;
	
	try {
		volumebar.updateHandle((Player.settings.volume/100.0)*volumebar.width);
	} catch (err) {
	}
}

function player_set_volume(volume) {
	var Player;
	Player = top.document.getElementById('player').contentWindow.document.getElementById('playframe').contentWindow.document.Player;

	try {
		Player.settings.volume = Math.floor(volume);
	} catch (err) {
	}
}

function timestring2seconds(thetime) {
	if (thetime == "") return 0;
	
	var arr = thetime.split(":");
	return ((arr[0] * 60) + (arr[1] * 1));
}

function seconds2time(seconds) {
	var disp;
	var min;
	var sec;
	
	if (seconds < 0 || isNaN(seconds)) return "00:00";
	
	min = Math.floor(seconds/60.0);
	sec = Math.floor(seconds%60);
	
	if(min<=9) disp="0";
	else disp=" ";
	disp+=min+":";
	if(sec<=9) disp+="0"+sec;
	else disp+=sec;
	
	return disp;
}

function slider2seconds() {
	var curval;
	var seekbar;
	var duration;
	
	seekbar = top.document.getElementById('player').contentWindow.seekbar;
	Player = top.document.getElementById('player').contentWindow.document.getElementById('playframe').contentWindow.document.Player;
	try {
		duration = CurrentMediaDuration();//Player.currentMedia.duration;
	} catch (err) {
		duration = 0;
	}
	
	curval = seekbar.getSliderPos();	//0..1000
	curval = curval / 1000.0 * duration;
	return curval;
}

function player_set_seekpos(seekpos) {
	var Player;
	var seekbar;
	
	Player = top.document.getElementById('player').contentWindow.document.getElementById('playframe').contentWindow.document.Player;

	try {
		//if (Player.currentMedia.duration>0) { //is there media ? Else catch error
		if (CurrentMediaDuration()>0) { //is there media ? Else catch error
			try {
				Player.controls.currentPosition = seekpos;
			} catch(err) {
				//Player.controls.currentPosition = 0;
			}
		}
	} catch(err) {
		seekbar = top.document.getElementById('player').contentWindow.seekbar;
		seekbar.updateHandle(0);
	}
}

function player_set_seektime(seekpos) {
	var seekbar;
	
	var tmpdoc = top.document.getElementById('player').contentWindow.document;
	try {
		var tmpseekdone = top.seconds2time(seekpos);
		if (tmpseekdone != tmpdoc.getElementById('seekdone').innerHTML) tmpdoc.getElementById('seekdone').innerHTML = tmpseekdone;

		var tmpseektodo = "-" + top.seconds2time(CurrentMediaDuration()-seekpos)
		if (tmpseektodo!=tmpdoc.getElementById('seektodo').innerHTML)  tmpdoc.getElementById('seektodo').innerHTML = tmpseektodo;
	} catch(err) {
		seekbar = top.document.getElementById('player').contentWindow.seekbar;
		seekbar.updateHandle(0);
	}
}

function seekbar_update() {
	var curpos;
	var duration;
	var calculated;
	var seektodotext;
	
	var tmpdoc = top.document.getElementById('player').contentWindow.document;
	var seekbar = top.document.getElementById('player').contentWindow.seekbar;
	var Player = top.document.getElementById('player').contentWindow.document.getElementById('playframe').contentWindow.document.getElementById('Player');
	
	try {
		curpos = Player.controls.currentPosition;
		if (curpos == "") curpos = 0;
	} catch (err) {
		curpos = 0;
	}
	try {
		duration = CurrentMediaDuration();//Player.currentMedia.duration;
		if (duration == "" && mediaplayer_is11beta()) { // use the time from the database
			duration = timestring2seconds(tmpdoc.getElementById('time2').innerHTML)
		} else {
			if (duration == "")	duration = 0.0001;
		}
	} catch (err) {
		duration = 0.0001; //avoid devide by 0
	}
	
	if (duration<1) { //dont show progressbar for licensefile. Avoid flickering
		duration = 0.0001; 
		curpos = 0;
	}
	
	try {
//top.document.debugtext = "sourceurl="+Player.currentMedia.sourceURL+";<br>curpos=" + curpos + ";<br>duration="+duration+";<br>seekbar.width="+seekbar.width+";<br>calculated="+Math.floor((curpos / duration) * (seekbar.width-5))
		calculated = Math.floor((curpos / duration) * (seekbar.width-5));
		if (calculated > seekbar.width) calculated = seekbar.width;
		seekbar.updateHandle(calculated);
	} catch(err) {
		seekbar.updateHandle(0);
	}
	
	try {
		var seekdonetext = (Player.controls.currentPositionString=="")?"00:00":Player.controls.currentPositionString;
		if (seekdonetext != tmpdoc.getElementById('seekdone').innerHTML) tmpdoc.getElementById('seekdone').innerHTML = seekdonetext;
	} catch(err) {
		tmpdoc.getElementById('seekdone').innerHTML = "00:00";
	}
	
	try {
		seektodotext = "-" + seconds2time(Math.floor(duration-curpos));
		if (seektodotext != tmpdoc.getElementById('seektodo').innerHTML) tmpdoc.getElementById('seektodo').innerHTML = seektodotext;
	} catch(err) {
		for (x in top.document.tracks) {
			if (top.document.tracks[x]['current']) {
				seektodotext = "-" + (top.document.auth?top.document.tracks[x]['duration']:"00:30");
				if (seektodotext != tmpdoc.getElementById('seektodo').innerHTML) tmpdoc.getElementById('seektodo').innerHTML = seektodotext;
			}
		}
	}
}

function logtext(txt) {
	if (el = top.document.getElementById('debug_tracktitle')) el.innerHTML = txt;
}

function login_hide() {
	var tmpdoc = top.document.getElementById('player').contentWindow.document;
	try {
		if (el = tmpdoc.getElementById("loginfields")) el.style.visibility = 'hidden';
	} catch (err) {}
	try {
		if (el = tmpdoc.getElementById("loginbutton")) el.style.visibility = 'hidden';
	} catch (err) {}
	try {
		if (el = tmpdoc.getElementById("password")) el.blur();
	} catch (err) {}
	//tmpdoc.getElementById("logoutbutton").style.visibility = 'visible';
	
	try {
		if (el = tmpdoc.getElementById("LoggedInMessage")) {
			el.style.visibility = 'visible';
		}
	} catch (err) {}

}


function login_show() {
	var tmpdoc = top.document.getElementById('player').contentWindow.document;
	try {
		if (el = tmpdoc.getElementById("loginfields")) el.style.visibility = 'visible';
	} catch (err) {}
	try {
		if (el = tmpdoc.getElementById("loginbutton")) el.style.visibility = 'visible';
	} catch (err) {}
	//tmpdoc.getElementById("logoutbutton").style.visibility = 'visible';
	try {
		if (el = tmpdoc.getElementById("LoggedInMessage")) {
			el.style.visibility = 'hidden';
		}
	} catch (err) {}

}

function login_update_block() {
	if (top.document.auth) {
		login_hide();
	} else {
		login_show();
	}
}

function mediaplayerversion() {
	var fullversion = new String(top.document.getElementById('player').contentWindow.document.getElementById('playframe').contentWindow.document.getElementById('Player').versionInfo);
	var arr = fullversion.split(".");
	return arr;
}

function mediamainplayerversion() {
	var fullversion = new String(top.document.getElementById('player').contentWindow.document.getElementById('playframe').contentWindow.document.getElementById('Player').versionInfo);
	if (fullversion != "") {
		var arr = fullversion.split(".");
		return arr[0];
	} else {
		return 0;
	}
}

function mediaplayer_is11beta() {
	var fullversion = new String(top.document.getElementById('player').contentWindow.document.getElementById('playframe').contentWindow.document.getElementById('Player').versionInfo);
	var arr = fullversion.split(".");
	if (arr[0] == 11 && arr[1] == 0 && arr[2]<=5358) {
		return 1;
	} else {
		return 0;
	}
}

function CurrentMediaDuration() {
	var duration;
	
	try {
		var Player = top.document.getElementById('player').contentWindow.document.getElementById('playframe').contentWindow.document.Player;
	} catch(err) {
		return 0;
	}
	var tmpdoc = top.document.getElementById('player').contentWindow.document;
	try {
		duration = Player.currentMedia.duration;
		if (duration == "" && mediaplayer_is11beta()) { // use the time from the database
			duration = timestring2seconds(tmpdoc.getElementById('time2').innerHTML)
		} else {
			if (duration == "")	duration = 0;
		}
	} catch (err) {
		duration = 0;
	}
	
	return duration;
}


function force_logout() {
	ajaxCall('action:logout');
	alert("Er is een fout opgetreden met je inloggegevens. Je wordt uitgelogd.");
}

function getcurrentplayervalue(varname) {
	try {
		for (x in top.document.tracks) {
			if (top.document.tracks[x]['current']) {
				return top.document.tracks[x][varname];
			}
		}
	} catch (err) {
		return;
	}
}

function getplaystate() {
	var Player = top.document.getElementById('player').contentWindow.document.getElementById('playframe').contentWindow.document.getElementById('Player');
	try {
		return Player.playstate;
	} catch (err) {
		return 0;
	}
}

function playerGetVolume() {
	try {
		var player = top.document.getElementById('player').contentWindow.document.getElementById('playframe').contentWindow.document.getElementById('Player');
		return player.settings.volume;
	} catch (ex) {
	}
}

function playerSetVolume(value) {
	try {
		if (value == '') return;
		var player = top.document.getElementById('player').contentWindow.document.getElementById('playframe').contentWindow.document.getElementById('Player');
		if (!player) return;
		var volumebar = top.document.getElementById('player').contentWindow.volumebar;
		if (!volumebar) return;

		player.settings.volume = value;
		volumebar.updateHandle((value/100.0)*volumebar.width);
	} catch (ex) {
	}
}