currenttrack = 0;
firsttime = 0;
search=1;
searchtxt="";
settimer = 0;
hideshow=1;
playing=0;
volume=50;
focus=0;
autocdata="";
playlistnumber=0;
timer3="";
autocarray = new Array();
siteurl="http://www.rnaud.net/";
lastfmapikey="bba1f00c491649e160cdb68f8b23990f";
bitlylogin="cetras";
bitlykey="R_68a0d33588863373c2217c8413493ffe";
searchdone=1;
playlist=0;
lastartistsearch="blabla";
plisthide=0;
usagehide=0;
titlehide=0;
searchhide=1;
helphide=0;

var playlistJSON = new Object();
playlistJSON["songs"]=new Object();
playlistJSON["count"]=0;

if (getParameter("q")!=""){
	window.location.href=siteurl+"#"+getParameter("q").replace(/%20/g,"+");		
}

jQuery.fn.fadeToggle = function(speed, easing, callback) {
   return this.animate({opacity: 'toggle'}, speed, easing, callback);

};

function mousemo() {
	if (hideshow==0) {
		toggleInfo();;
	}
	$("body").css("cursor","none");
}

function slideSwitch() {
    var $active = $('#imgs img.active');

    if ( $active.length == 0 ) $active = $('#imgs img:last');

    var $next =  $active.next().length ? $active.next()
        : $('#imgs img:first');

    $active.addClass('last-active');

    $next.css({opacity: 0.0})
        .addClass('active')
        .animate({opacity: 1.0}, 700, function() {
            $active.removeClass('active last-active');
        });
}

function getParameter( name )
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";
  else
    return results[1];
}


function onYouTubePlayerReady(playerId) {
  ytplayer = document.getElementById("myytplayer");
	ytplayer.addEventListener("onStateChange", "onytplayerStateChange");
	setInterval(updateytplayerInfo, 250);
	updateytplayerInfo();
	// $("#percent2").progressbar({ value: 0 });
	// searchYt("bob dylan",search);
	
	if (self.document.location.hash.substring(1)!="") {
			anchor = self.document.location.hash.substring(1);
		if (isNaN(anchor)) {
			anchor = anchor.replace(/\+/g," ");
			searchYt(anchor,search);
			$("#searchbar").val(anchor);
		} else {
			$("#playlisttitle").append("playlist");
			$("#links").animate({ right: "-1000px" }, 1500 );
			$("#resultscom").animate({ right: "-1000px" }, 1500 );
			$("#playlist").animate({ right: "45px" }, 1500 );
			$("#playlisttitle").animate({ right: "45px" }, 1500 );
			playlist=1;
			playlistnumber=parseInt(anchor, 10);
			getBitly(siteurl+"?q="+playlistnumber,1);
			document.title = "playlist "+playlistnumber+" - "+"YouFM";
			$("#searchbar").val("");
			$.getJSON(siteurl+"playlist/lists/"+playlistnumber+".txt",
					        function(data){
									playlistJSON=data;
										for (var i = 0; i < playlistJSON["count"]; ++i) {
											var jsontitle = playlistJSON["songs"][i]["title"];
											var jsonartist = playlistJSON["songs"][i]["artist"];
											var jsonvid = playlistJSON["songs"][i]["videoid"];
											$("#playlist").append("<p><a href\"\" id=\""+i+"\""+"name=\""+jsonvid+"\""+"value=\""+jsontitle+"\""+"artist=\""+jsonartist+"\""+">"+jsontitle+"</a></p>");
											
									}
									});
		
									$('#playlist a').live("click", function () {
										$("#links").animate({ right: "-1000px" }, 1500 );
										$("#resultscom").animate({ right: "-1000px" }, 1500 );
										$("#playlist").animate({ right: "45px" }, 1500 );
										$("#playlisttitle").animate({ right: "45px" }, 1500 );
										$('#links a').removeClass("test23");
										$('#playlist a').removeClass("test23");
										this.setAttribute("class","test23");
										loadVid(this.name);
										if (lastartistsearch!=this.getAttribute("artist")) {
											imageSearch(this.getAttribute("artist"));
											artistInfo(this.getAttribute("artist"));
											artistSimilar(this.getAttribute("artist"));
										}
										$("#title").html(this.getAttribute("value"));
										currenttrack = parseFloat(this.getAttribute("id"));

										return false;
										   });
										
		}

	} else {
		$("#searchbar").val("enter artist name");
	}
}

function onytplayerStateChange(newstate) {
	if (newstate==1) {
		$("#pause img").attr("src","/images/Knob Pause.png");
	}
	if (newstate==2) {
		$("#pause img").attr("src","/images/Knob Play.png");
	}
	
	if (newstate==-1) {
		$("#pause img").attr("src","/images/Knob Play.png");
	}
	
	if (newstate==0) {
		if (playlist==0) {
			if ($("#links a").eq(9).hasClass("test23")==true) {
				search=search+10;
				searchYt(searchtxt,search);
			} else{
				var newtrack = currenttrack+1;
				$("#links a").eq(newtrack).click();
			}
		} else {
			newtrack = currenttrack+1;
			$("#playlist a").eq(newtrack).click();
		}
	}
}

function loadVid(Id) {
  ytplayer.loadVideoById(Id);
	volume= ytplayer.getVolume();
	jQuery.get(siteurl+"counter/backend.php?msg=add");
}

function updateytplayerInfo() {
	if (ytplayer.getVideoBytesLoaded()==-1) {
	 	percent = 0;
	} else {
		percent = (ytplayer.getVideoBytesLoaded()/ytplayer.getVideoBytesTotal())*100;
	}
	$("#percent2").html(parseInt(percent, 10)+"% loaded");
	// $("#percent2").progressbar("value",parseInt(percent, 10) );
	
	if (ytplayer.getDuration()==-0.000025){
		$("#time").html("no song");
	} else {
		mintot = (parseInt(ytplayer.getDuration()/60, 10));
		sectot = (parseInt(ytplayer.getDuration()-mintot*60, 10));
		mincur = (parseInt(ytplayer.getCurrentTime()/60, 10));
		seccur = (parseInt(ytplayer.getCurrentTime()-mincur*60, 10));
		if (sectot<10) {sectot = "0"+sectot;};
		if (seccur<10) {seccur = "0"+seccur;};
		$("#time").html(mincur+":"+seccur+" / "+mintot+":"+sectot);
		$("#volume").html("volume : "+volume);
	}
}

function youtubeVidSearch(searchtext,startsearch, prev, playlist) {
	$.getJSON("http://gdata.youtube.com/feeds/api/videos?q="+searchtext+"&orderby=relevance&format=5&start-index="+startsearch+"&safeSearch=none&time=all_time&category=Music&max-results=10&v=2&alt=json-in-script&callback=?",
	        function(youtubedata){
			$("#links").html("");
			if (youtubedata["feed"]["entry"]) {
				for (var i = 0; i < youtubedata["feed"]["entry"].length; ++i) {
					var videoid = youtubedata["feed"]["entry"][i]["id"].$t;
					var videotitle = youtubedata["feed"]["entry"][i]["title"].$t;
					videotitle = videotitle.replace(/\"/g, "\'");
					var parseid = videoid.substring(videoid.indexOf("video:")+6);
					$("#links").append("<p><span class=\"playlinks\"><a href=\"#\" id=\""+i+"\" artist=\""+searchtext+"\" name=\""+parseid+"\" value=\""+videotitle+"\">"+videotitle+"</a></span><span id=\""+i+"\" style=\"display: none;\" class=\"addtoplay\" name=\""+parseid+"\">add to playlist</span></p>");
					

			}
		    } else {
			$("#links").html("<p><a href=\"\">no results</a></p>");	
			}
			
			// $('#links span.addtoplay').live()
			
			$('#links p').hover(
		      function () {
		       $(this).children().eq(1).css("display","inline");
				$(this).css("background","gray");
		      }, 
		      function () {
		        $(this).children().eq(1).css("display","none");
				$(this).css("background","none");
		      }
		    );

		    
			
			
			$('#links a').live("click", function () {

				loadVid(this.name);
				$("#title").html(this.getAttribute("value"));
				$('#links a').removeClass("test23");
				this.setAttribute("class","test23");
				currenttrack = parseFloat(this.getAttribute("id"));
				return false;
				   });
				
				
				$('#links span').live("click", function () {

							spanid=this.getAttribute("id");
							playlist=1;
							pvid= $('#links a').eq(spanid).attr("name");
							part= $('#links a').eq(spanid).attr("artist");
							ptitle= $('#links a').eq(spanid).attr("value");
							pnom=$('#links a').eq(spanid).html();
							pid = $("#playlist a").size()+1;
							$("#playlist").append("<p><a href\"\" id=\""+pid+"\""+"name=\""+pvid+"\""+"value=\""+ptitle+"\""+"artist=\""+part+"\""+">"+pnom+"</a></p>");
							$("#playlisttitle").html("");
							$("#playlisttitle").append("playlist");
						
							var countplist = playlistJSON["count"];
							playlistJSON["songs"][countplist] = new Object();
							playlistJSON["songs"][countplist]["title"]=ptitle;
							playlistJSON["songs"][countplist]["artist"]=part;
							playlistJSON["songs"][countplist]["videoid"]=pvid;
							playlistJSON["count"]=countplist+1;
							playlistall= JSON.stringify(playlistJSON);
						
							
							if (playlistnumber==0) {
								$.get(siteurl+"counter/counter.txt", function(data){
						        	playlistnumber=data;
									window.location.href=siteurl+"#"+data;
									document.title = "playlist "+data+" - "+"YouFM";
									getBitly(siteurl+"?q="+playlistnumber.replace(/\+/g," "),1);
									$.get(siteurl+"playlist/backend.php?msg="+playlistall+"&plistname="+playlistnumber);
								});
							} else {
								$.get(siteurl+"playlist/backend.php?msg="+playlistall+"&plistname="+playlistnumber);
							}

											

							
							
							return false;
					   });

					$('#playlist a').live("click", function () {
						$("#links").animate({ right: "-1000px" }, 1500 );
						$("#resultscom").animate({ right: "-1000px" }, 1500 );
						$("#playlist").animate({ right: "45px" }, 1500 );
						$("#playlisttitle").animate({ right: "45px" }, 1500 );
						$('#links a').removeClass("test23");
						$('#playlist a').removeClass("test23");
						this.setAttribute("class","test23");
						loadVid(this.name);
						if (lastartistsearch!=this.getAttribute("artist")) {
							imageSearch(this.getAttribute("artist"));
							artistInfo(this.getAttribute("artist"));
							artistSimilar(this.getAttribute("artist"));
						}
						$("#title").html(this.getAttribute("value"));
						currenttrack = parseFloat(this.getAttribute("id"));

						return false;
						   });
						
					
			if (playlist==0){
				if (prev==1) {
					$("#links a").eq(9).click(); 
				} else {
					$("#links a").eq(0).click(); 
				}
			}		
		
	          });
}


function getBitly(url,playlistarg) {
	$.getJSON("http://api.bit.ly/shorten?version=2.0.1&longUrl="+url+"&login="+bitlylogin+"&apiKey="+bitlykey+"&callback=?",
			        function(data){
							bitlink=data;
							bitlyurl = data["results"][url]["shortUrl"];
							if (playlistarg==1) {
								$("#twitter").html("<a href=\"http://twitter.com/home/?status=Listening+to+playlist+number+"+playlistnumber+"+on+@YouFM_+-+"+bitlyurl+"\" target=\"_blank\"> tweet this playlist</a>");
							}else {
								$("#twitter").html("<a href=\"http://twitter.com/home/?status=Listening+to+"+searchtxt+"+on+@YouFM_+-+"+bitlyurl+"\" target=\"_blank\"> tweet this artist page</a>");
							}
							
			        });
}


//last fm images search
function imageSearch(searchtext) {
	$.getJSON("http://ws.audioscrobbler.com/2.0/?method=artist.getimages&artist="+searchtext+"&api_key="+lastfmapikey+"&format=json&callback=?",
			        function(data){
						xml=data;
						$("#imgs").html("");
						if (typeof xml["images"]!="undefined") {
							for (var i = 0; i < xml["images"]["image"].length; ++i) {
								
						$("#imgs").append("<img src=\""+xml["images"]["image"][i]["sizes"]["size"][5]["#text"]+"\">");
					}
					
					$("#imgs img").eq(0).addClass('active');
					}
			        });
}

function artistInfo(searchtext) {
	$.getJSON("http://ws.audioscrobbler.com/2.0/?method=artist.getinfo&artist="+searchtext+"&api_key="+lastfmapikey+"&format=json&callback=?",
							 function(data){
										artist=data;
										$("#bio").html("");
										if (artist["error"]==6) {
											return false;
										} else {
											$("#bio").append("<p>"+artist["artist"]["bio"]["summary"]+"</p>");
										}
										lastartistsearch=searchtext;
									return false;
									});
}

function artistSimilar(searchtext) {
$.getJSON("http://ws.audioscrobbler.com/2.0/?method=artist.getsimilar&artist="+searchtext+"&api_key="+lastfmapikey+"&format=json&callback=?",
			  function(data){
					if (typeof data["similarartists"]!="undefined") {
					var randomnumber=Math.floor(Math.random()*11);
					nextartist = data["similarartists"]["artist"][randomnumber]["name"];
					$("#nextartist").html("<a href=\"\">listen to a similar artist</a>");
					$("#nextartist").unbind().click(function () {
						$("#searchbar").val(nextartist);
						searchYt(nextartist,1);
						return false;
					 });
					}
				});
}



function artistSearch(artist) {
	$.getJSON("http://ws.audioscrobbler.com/2.0/?method=artist.search&artist="+artist+"&api_key="+lastfmapikey+"&format=json&callback=?",
			        function(data){
						artistsearch=data;
						if ((typeof artistsearch["results"]!="undefined") && (typeof artistsearch["results"]["artistmatches"]["artist"]!="undefined")) {
							for (var i = 0; i < artistsearch["results"]["artistmatches"]["artist"].length; ++i) {
										autocarray[i] = artistsearch["results"]["artistmatches"]["artist"][i]["name"];
							}

							$("#searchbar").setOptions({data :autocarray});

						}
			        });
}

function toggleInfo() {
	$("#bio").fadeToggle();
	$("#links").fadeToggle();
	$("#resultscom").fadeToggle();	
	$("#title").fadeToggle();
	$("#toolbar").fadeToggle();
	$("#usage").fadeToggle();
	$("#playlist").fadeToggle();
	$("#playlisttitle").fadeToggle();
	if (hideshow==1){
		$("#hide").html("hide all");
		hideshow=0;
	}else { 
		$("#hide").html("show all");
		hideshow=1;
		}
}


function searchYt(searchtext, startsearch, prev) {
	
	if (playlist==0) {
		$("#links").animate({ right: "45px" }, 1500 );
		$("#resultscom").animate({ right: "45px" }, 1500 );
		$("#playlist").animate({ right: "455px" }, 1500 );
		$("#playlisttitle").animate({ right: "455px" }, 1500 );
		youtubeVidSearch(searchtext,startsearch, prev, playlist);
		imageSearch(searchtext);
		artistInfo(searchtext);
		artistSimilar(searchtext);
		$("#nextres").html("next 10 results");
		searchtxt= searchtext;
		window.location.href=siteurl+"#"+searchtxt.replace(/(\s)/g,"+");
		document.title = searchtxt+" - "+"YouFM";
		getBitly(siteurl+"?q="+searchtxt.replace(/\+/g," "),0);	
	}else {
		$("#links").animate({ right: "45px" }, 1500 );
		$("#resultscom").animate({ right: "45px" }, 1500 );
		$("#playlist").animate({ right: "455px" }, 1500 );
		$("#playlisttitle").animate({ right: "455px" }, 1500 );
		searchtxt= searchtext;
		youtubeVidSearch(searchtext,startsearch, prev, playlist);
		artistSimilar(searchtext);
		
		
		$('#links a').unbind().live("click", function () {
			$('#links a').removeClass("test23");
			$('#playlist a').removeClass("test23");
			this.setAttribute("class","test23");
			loadVid(this.name);
			if (lastartistsearch!=this.getAttribute("artist")) {
				imageSearch(this.getAttribute("artist"));
				artistInfo(this.getAttribute("artist"));
				artistSimilar(this.getAttribute("artist"));
			}
			$("#title").html(this.getAttribute("value"));
			currenttrack = parseFloat(this.getAttribute("id"));

			return false;
			   });
	}
			  	
	$("#nextres").html("next 10 results");		      
	
	searchtxt = searchtext;
	
	if (hideshow==1) {
		toggleInfo();;
	}
	
	$('#nextres').click(function () {
		searchYt(searchtxt,search);
		return false;
	 });
	

}

function playPause() {
	if (ytplayer.getPlayerState()==1) {
	ytplayer.pauseVideo();	
	} else if (ytplayer.getPlayerState()==2) {
	ytplayer.playVideo();		
	} else {
		$("#links a").eq(0).click();
	}
}


  var params = { allowScriptAccess: "always" };
  var atts = { id: "myytplayer" };
  swfobject.embedSWF("http://www.youtube.com/apiplayer?enablejsapi=1&playerapiid=ytplayer", 
                     "ytapiplayer", "1", "1", "8", null, null, params, atts);


$(document).ready(function() {

				$("#searchbar").autocomplete(autocarray,{
					minChars: 0,
					width: 220,
					max: 10,
					scroll: false,
					multiple: false,
					selectFirst: false,
					// autoFill: true,
					mustMatch: false,
					matchContains: true,
					highlightItem: false
				});
				

		    $("#searchbar").click(function () {
					$("#searchbar").val("");
		        });
		
				$(document).keydown(function (event) {
					if (event.keyCode == 27){
						$("#searchbar").focus();
					}
					

					if (event.keyCode == 32) {
						if (focus==0){
								playPause();
						}
					}
					
					if (event.keyCode == 38){
						if (volume!=100) {
						volume = volume+10;	
						}
						ytplayer.setVolume(volume);
					}
					
					if (event.keyCode == 72){
						if (focus==0){
						if (helphide==0) {
							$("#usage").animate({ left: "-150px" }, 500 );
							helphide=1;
						}else {
							$("#usage").animate({ left: "60px" }, 300 );
							helphide=0;
						}
					}
					}
					
					if (event.keyCode == 84){
						if (focus==0){
						if (titlehide==0) {
							$("#titleandbio").animate({ top: "-200px" }, 500 );
							titlehide=1;
						}else {
							$("#titleandbio").animate({ top: "60px" }, 300 );
							titlehide=0;
						}
					}
					}
					
					if (event.keyCode == 83){
						if (focus==0){
						if (searchhide==0) {
							$("#links").animate({ right: "-500px" }, 1500 );
							$("#resultscom").animate({ right: "-500px" }, 1500 );
							$("#playlist").animate({ right: "45px" }, 1500 );
							$("#playlisttitle").animate({ right: "45px" }, 1500 );
							searchhide=1;
						}else {
							$("#playlist").animate({ right: "455px" }, 1500 );
							$("#playlisttitle").animate({ right: "455px" }, 1500 );
							$("#links").animate({ right: "45px" }, 1500 );
							$("#resultscom").animate({ right: "45px" }, 1500 );
							searchhide=0;
						}
					}
					}
					
					if (event.keyCode == 40){
						if (volume!=0) {
						volume = volume-10;
						}
							ytplayer.setVolume(volume);
					}
					
					
					if (event.keyCode == 82){
						if (focus==0) {
										$("#nextartist").click();
								}
								
						}
										
					
					if (event.keyCode == 39) {
							if (playlist==0) {
								if (currenttrack==9) {
									$('#nextres').click();
								} else{
									currenttrack++;
									$("#links a").eq(currenttrack).click();
								}
								}
								else {
									if (currenttrack==$("#playlist a").size()) {
										return false;
									} else{
										// currenttrack++;
										$("#playlist a").eq(currenttrack).click();
									}
							}

						}
			
					if (event.keyCode == 37) {
						if (playlist==0) {
							if (currenttrack==0) {
								if ($("#prevres").html()=="prev 10 results") {
									$('#prevres').click();
									currenttrack=9;
									$("#links a").eq(currenttrack).click();
								}
							} else {
								currenttrack--;
								$("#links a").eq(currenttrack).click();
							}
						} else {
							if (currenttrack==0) {
								return false;
							} else {
								currenttrack--;
								$("#playlist a").eq(currenttrack-1).click();
							}
							}
						}
					
					if (hideshow==1) {
						toggleInfo();;
					}
					$("body").css("cursor","auto");
					clearTimeout(mytimeout);
					mytimeout = setTimeout("mousemo()", 3000);
				// return false;	
				});
		
				$("#searchbar").keyup(function (event) {
					if ((event.keyCode == 37) || (event.keyCode == 38) || (event.keyCode == 39) || (event.keyCode == 40) || (event.keyCode == 8)) {
					return false;
					} else {
						artistSearch(this.value);
						
					}
					if (event.keyCode == 13) {
					        search=1;
							searchYt(this.value, search);
							$("#searchbar").blur();
					 }
				return false;
				});


				$('#nextres').click(function () {
					search=search+10;
					if ($("#prevres").html()=="") {
						$("#prevres").html("prev 10 results");
					}
					searchYt(searchtxt,search);
					return false;
				 });
				
				$('#prevres').click(function () {
					search=search-10;
					if (search==1){
						$('#prevres').html("");
					}
					searchYt(searchtxt,search, 1);
					return false;
				 });
		
				timer = setInterval( "slideSwitch()", 8000 );				
				mytimeout = setTimeout("mousemo()", 3000);
				
				$("body").mousemove(function(e){
					if (hideshow==1) {
						toggleInfo();;
					}
					$("body").css("cursor","auto");
					clearTimeout(mytimeout);
					mytimeout = setTimeout("mousemo()", 3000);
			    });
			
			    $("#searchbar").focus(function () {
					lastsearch=$("#searchbar").val();
					$("#searchbar").val("");
			         focus=1;
			    });
			
			    $("#searchbar").blur(function () {
					if ($(this).val()=="") {
					$("#searchbar").val(lastsearch);	
					}
			         focus=0;
			    });
			

			
											
	});