var repeat=0;
var shuffle=0;
var swapInterval=null;

var playSong = function(myAjax){
	if(myAjax.responseText=="login") {
		loadPopup('register',1);
		if (t) clearTimeout(t);
		return;
	}
	clip = $('track_'+current).getAttribute("location");
	playClip(clip);
	/*
if(myAjax.responseText !== undefined){
		var clip=null;
		if(myAjax.responseText!="not available") clip = myAjax.responseText;
		else clip = $('track_'+current).getAttribute("location");
		playClip(clip);
	}
	
else playClip($("track_"+current).getAttribute("location"));
*/
	if(!slider) {
		$$('div.slider.advanced').each(function(el, i){
			slider = new Slider(el, el.getElement('.knob'), {
				steps: 100,
				wheel: true,
				onChange: function(){
					changeVolume(this.step);
				}
			}).set(50);
		});
	}
}

function retrieveSong(id) {
	var clip = $('track_'+id).getAttribute("location");
	playClip(clip);
	if(!slider) {
		$$('div.slider.advanced').each(function(el, i){
			slider = new Slider(el, el.getElement('.knob'), {
				steps: 100,
				wheel: true,
				onChange: function(){
					changeVolume(this.step);
				}
			}).set(50);
		});
	}
	show_info(id);
	return;
	/*
if($('track_'+id).hasAttribute("mp3_url_id")) {
		mp3 = $('track_'+id).getAttribute("mp3_url_id")
		var params = "id="+mp3;
		AjaxIt(params,'','playSong');
	}
	else {
		playClip($('track_'+id).getAttribute("location"));
		if(!slider) {
			$$('div.slider.advanced').each(function(el, i){
				slider = new Slider(el, el.getElement('.knob'), {
					steps: 100,
					wheel: true,
					onChange: function(){
						changeVolume(this.step);
					}
				}).set(50);
			});
		}
	}
	show_info(id);
*/
};

function displayArtwork(myAjax) {
	if(myAjax.responseText!="") {
		html('curAlbum','<img src="'+myAjax.responseText+'" onclick="toggle_fullscreen()">');
		$('curAlbum').style.display="";
		$('song_info').style.left="275px";
	}
	else {
		html('curAlbum','<img src="images/musicnote.png" onclick="toggle_fullscreen()">');
		$('curAlbum').style.display="";
		$('song_info').style.left="275px";
	}
}

function next_track() {
	if(current==null) {
		previous = null;
		current = 0;
		next=1;
		select_track($('track_0'));
		return;
	}
	if(repeat==0 && current==array_length-1) {
		reset_display();
		return;
	}
	if(repeat!=2) {
		previous = current;
		current!=(array_length-1) ? current = current+1 : current = 0;
		current!=(array_length-1) ? next = current+1 : next = 0;
	}
	if((previous == array_length-1) && repeat!=2) {
		return;
	}
	if(!$('track_'+current)) {
		if(repeat==0) {
			reset_display();
			return;
		}
		else if(repeat==1) {
			previous=current;
			current=0;
			next=1;
			reset_tracks();
			$('track_0').scrollIntoView();
		}
	}
	style_tracks(current);
	retrieveSong(current);
}

function reset_display() {
	$('curTitle').innerHTML=$('searchFor').innerHTML;
	$('curArtist').innerHTML="Click a song or press play to listen!";
	$('curAlbum').style.display="none";
	$('progress').style.display="none";
	current=null;
	paused=1;
	$('song_info').style.left="200px";
	$('counter').style.display="none";
	reset_tracks();
}

function previous_track() {
	if(count>5) {
		player.sendEvent('SEEK',0);
		return;
	}
	if(current==null) return;
	current = previous;
	previous == 0 ? previous = (array_length-1) : previous = current -1;
	current != (array_length-1) ? next = current+1 : next = 0;
	style_tracks(current);
	retrieveSong(current);
};

function select_track(node) {
	var songs = $('songs').getElementsByTagName('li');
	array_length=songs.length;
	if(searching || editing) return;
	var index = node.getAttribute("id").split("_");
	index=index[1];
	current = parseFloat(index);
	current == 0 ? previous = (array_length-1) : previous = current - 1;
	current != (array_length-1) ? next = current+1 : next = 0;
	style_tracks(current);
	retrieveSong(current);
};

function show_info(id){
	html('curTitle',$("track_"+id).getAttribute("title"));
	if($('curTitle').innerHTML.length>35) {
		st('curTitle','fontSize','20px');
		st('curTitle','lineHeight','30px');
	}
	else {
		st('curTitle','fontSize','');
		st('curTitle','lineHeight','');
	}
	if($('counter').style.display=="none") $('counter').style.display="";
	html('curArtist',$("track_"+current).getAttribute("artist"));
	html('curAlbumName',$('track_'+current).getAttribute("album"));
	html('curLocation',$("track_"+current).getAttribute("location"));
	html('curFile',$("track_"+current).getAttribute("mp3_url_id"));
	document.title = "FruiTunes | "+$('curTitle').innerHTML+" by "+$('curArtist').innerHTML;
	if($('progress').style.display=="none") $('progress').style.display="";
	$('curAlbum').style.display="";
	$('song_info').style.left="275px";
	html('curAlbum','<img src="images/musicnote.png" onclick="toggle_fullscreen()">');
	var n = $('track_'+current).getAttribute("num");
	var thelist = $('track_'+current).getAttribute("list");
	if(!thelist) thelist="0";
	AjaxGet("albumart.php?songID="+n+"&list="+thelist+"&artist="+$('track_'+current).getAttribute("artist")+"&song="+encodeURIComponent($('title_'+n).parentNode.getAttribute("title"))+"&album="+encodeURIComponent($('track_'+current).getAttribute("album")),'','displayArtwork');
	
	window.clearInterval(swapInterval);
	swapInterval = window.setInterval(function() {
		if($('curAlbumName').innerHTML!="" && $('curAlbumName').innerHTML!='null') {
			var temp = $('curAlbumName').innerHTML;
			var temp2 = $('curArtist').innerHTML;
			$('curArtist').innerHTML=temp;
			$('curAlbumName').innerHTML=temp2;
		}
	},10000);
	
}

function set_class(id){
   var element = $("track_"+id);
   element.className = "playing";
}

function remove_class(id){
   var element = $("track_"+id);
   if(!element) return;
   var id = $('track_'+id).getAttribute("num");
   if(element.className!="dead" && element.className!="title") element.className = element.getAttribute("alt");
   if($('state_'+id).innerHTML!="BROKEN") $("state_"+id).innerHTML="";
}

function remove_all(){
	for (i=0;i<array_length;i++){
		remove_class(i);
	}
}

function style_tracks(index){
	remove_all();
	set_class(index);
}

function relabel(nosave) {
	var songs = $('songs').getElementsByTagName('li');
	var list="";
	for(var i=0;i<songs.length;i++) {
		if(songs[i].className=="title" || songs[i].className=="dead") continue;
		if(songs[i].className=="playing" || songs[i].className=="not_playing") {
			current=i;
		}
		if(i%2==0) {
			songs[i].setAttribute("alt","alt");
			if(songs[i].className!="playing") songs[i].className="alt";
		}
		else {
			songs[i].setAttribute("alt","");
			if(songs[i].className!="playing") songs[i].className="";
		}
		songs[i].setAttribute("id","track_"+i);
		songs[i].childNodes[1].innerHTML=(i+1);
		list+=songs[i].getAttribute("num");
		if(i!=songs.length-1) list+=",";
	}
	if(!nosave) AjaxIt("serialize="+list);
}

// FLASH PLAYER //
			
var current      = null;
var next         = current + 1;
var previous     = current - 1;
var t;
var paused = 1;
var duration = 0;
var player;

function playerReady(obj) {
	if(!obj) alert("You need to download Adobe Flash Player to use this site");
	player = document.getElementsByName(obj.id)[0];
	if(!player) {
		if(navigator.appName.indexOf("Microsoft") != -1) {
			player = window[swf];
		} 
		else {
			player = document[swf];
		}
	}
	player.addModelListener('STATE',  'jwStateListener');
	player.addModelListener('TIME',   'jwTimeListener');
	if(preSelect) {
		if($('track_'+preSelect)) select_track($('track_'+preSelect));
		else if($('title_'+preSelect)) select_track($('title_'+preSelect).parentNode);
	}
	if(!player) alert("You need to download Adobe Flash Player to use this site");
  };


function jwStateListener(obj) {
	if(current!=null) {
		var id = $('track_'+current).getAttribute("num");
		if (obj.newstate != "COMPLETED") {
			$("state_"+id).innerHTML=obj.newstate;
		}
	}
	if (obj.newstate == "COMPLETED") {
		if(search==1 || list==0) {
			var title = $('curTitle').innerHTML;
			var artist = $('curArtist').innerHTML;
			var location = $('curLocation').innerHTML;
			var mp3_url_id = $('curFile').innerHTML;
			if($('user_playcount')) {
				var cel = $('user_playcount');
				var ccc = parseFloat(cel.getAttribute("count"));
				cel.setAttribute("count",(ccc+1));
				cel.innerHTML=(ccc+1)+'<br/><span>PLAYS</span>';
			}
			AjaxIt('log=0&title='+title+'&artist='+artist+'&mp3_url_id='+mp3_url_id+'&location='+encodeURIComponent(location));
		}
		else if(current!=null) {
			var num=$('track_'+current).getAttribute("num");
			if(list!=logged_on) {
				incUserPlaycount();
				AjaxIt('log='+num+"&playlist="+list);
			}
		}
		next_track();
	}
	if (obj.newstate == "PAUSED") {
		paused=1;
		if(current!=null) $("track_"+current).className="not_playing";
		$("play_button").setAttribute("src","http://www.fruitunes.com/images/play_red.png");
	}
	else {
		paused=0;
		if(current!=null) $("track_"+current).className="playing";
		$("play_button").setAttribute("src","http://www.fruitunes.com/images/pause_red.png");
	}
};

function dead_track(){
	if (paused!=1 && current) {
		$('track_'+current).className="dead";
		var id = $('track_'+current).getAttribute("num");
		$('state_'+id).innerHTML="BROKEN";
		var x = next_track();
	}
}

function incUserPlaycount() {
	if(!$('user_playcount')) return;
	var upc = $('user_playcount').getAttribute("count");
	upc = parseFloat(upc);
	upc++;
	$('user_playcount').innerHTML=upc+'<br/><span>PLAYS</span>';
	$('user_playcount').setAttribute("count",upc);
}
  
function jwTimeListener(obj) {
	if (t) clearTimeout(t);
	t = setTimeout('dead_track()', 8000);
	duration=obj.duration;
	var inc = 420/duration;
	count=Math.floor(obj.position);
	var pos = -420+(obj.position*inc);
	$('progress').style.backgroundPosition=pos+"px 0px";
	var durmin = Math.floor(duration/60);
	var dursec = Math.floor(duration%60);
	if(durmin<10) durmin = "0"+durmin;
	if(dursec<10) dursec = "0"+dursec;
	curDur = durmin+":"+dursec;
	min = Math.floor(count/60);
	if(min<10) min = "0"+min;
	sec = count%60;
	if(sec<10) sec = "0"+sec;
	$('counter').innerHTML=min+":"+sec+"<br/><span>"+curDur+'</span>';
};

function playClip(url) {
	var obj = {file:url,type:'mp3'};
	player.sendEvent('LOAD',obj);
	player.sendEvent('PLAY',true);
}