var errors = new Array();

everplayed = 0;

function trace(message) {
	try {
		console.log(message);
	} catch (err) {
		errors.push(err+":"+message);
	}
}

function trackStat(type, a,t) {
	
		a = typeof(a) != 'undefined' ? a : 0;
		t = typeof(t) != 'undefined' ? t : 0;

	
	//$_GET['l'].':'.$play[0]['artist_id'].':'.$play[1]['track_id'].':0';
	
	
	var tracker = type+':'+org_playlistify.id+':'+a+':'+t+':'+org_playlistify.skinid;
	
	 $.jsonp({
			        	type:'GET',
			        	url: 'http://playlistify.org/stats/',
			        	data: 't='+tracker,
			        	callback: 'nada',			  
			        	success:function(json){
			        		this;
						},
			        	error:function (xhr, textStatus, err) {
		
						  this; // the options for this ajax request
						}
			        	
			        	
					});

	
}


 showFlashMessage = function(msg) {
    	$('body').prepend('<div id="flashmessage" onclick="hideFlashMessage()">'+msg+'</div>');	
    	$('#flashmessage').hide();
    	$('#flashmessage').fadeIn('fast', function () {
    		setTimeout("hideFlashMessage()",5000);	
			//window.location.href = '#top';
			$('html, body').animate({scrollTop:0}, 'slow'); 
    	});
    }
    
    hideFlashMessage = function() {
    	$('#flashmessage').fadeOut('slow', function() { $(this).remove(); });    		
    }


function zclip_init() {
			clip = new ZeroClipboard.Client();
			clip.setHandCursor( true );
			
			clip.addEventListener('load', my_load);
			clip.addEventListener('mouseOver', my_mouse_over);
			clip.addEventListener('complete', my_complete);
			
			clip.glue( 'openspotifylove' );
		}
		
		function my_load(client) {
			//trace("Zero CLient Flash movie loaded and ready.");
			my_mouse_over(client);
		}
		
		function my_mouse_over(client) {
			// we can cheat a little here -- update the text on mouse over
			xyz ='';
				for(i = 0; i < tr.length; i++) {
					xyz +='spotify:track:'+tr[i]+'\n';
				}
				//trace(tracks);
			clip.setText( xyz );
		}
		
		function my_complete(client, text) {
			//trace("Copied text to clipboard: " + xyz );
			//window.location.href='spotify://';
			showFlashMessage("<h1>Copied playlist for Spotify!</h1><ol style='text-align:left; font-weight:bold;'><li>Now <a href='spotify://'>open Spotify</a></li><li>Create a blank playlist</li><li>Paste the playlistdata in the empty tracklisting field</li></ol>");
			
			trackStat('ssp');
		}


function initClippy(copytext, locid) {
	var copytextje = $('#'+copytext).html();
	
	if(copytextje == '') {
		
		copytextje = $('#'+copytext).val();
			
	}
	var flashvars = {
			 id: copytext,
			 text: copytextje
		};
		var params = {
			menu: "false",
			wmode: "transparent",
			allowScriptAccess: "always",
			noscale: "scale"
			
		};
		var attributes = {
			id: "clippy_"+locid,
			name: "clippy_"+locid
		};

	
	swfobject.embedSWF("http://playlistify.org/utils/clippy.swf", locid, "95", "12", "9.0.0", "./utils/expressInstall.swf", flashvars, params, attributes);

}

function loadYoutube(urlembed, currid) {
	if ( $('#youtube').is(':hidden') ) { 
        // do something 
        $('#youtube').slideDown('fast').scrollFollow();
	} 
	$('#youtubetarget').html('').html('<div id="ytloady"></div>');
	var params = { allowScriptAccess: "always" };
				    var atts = { id: curryt };
				    
   					swfobject.embedSWF(urlembed, 
                       'ytloady', "315", "238", "8", null, null, params, atts);
                       
  
	
}

function onYouTubePlayerReady(playerId) {
//                       	//console.log('player is ready!');
						  ytplayer = document.getElementById(curryt);
						  ytplayer.addEventListener("onStateChange", "onytplayerStateChange");
	}
	

						
//	function onytplayerStateChange(newState) {
//						   //console.log("Player's new state: " + newState);
//							if(newState == 0) {
//							// movie stopped at the end.
//								if(autoplay == true) {
//									
//									//$('#youtubeholder_'+currenttrack).html('Click to play '+$(+currenttrack).val());
//									if(currenttrack < (totaltracks)) {
//										currenttrack = currenttrack +1;	
//										
//										playNext();
//									} else {
//										currenttrack = 1;
//										playNext();	
//									}
//									
//								}
//							}
//	}

//function onYouTubePlayerReady(playerId) {
////                       	//trace('player is ready!');
//						
//						//$('#controls_play').css('background','url(http://playlistify.org/gadget/images/control_sound_play_gadget.gif) -16px 0px no-repeat');
//						
//						
//						
//						  ytplayer = document.getElementById("playlistifyytplayer");
//						  ytplayer.addEventListener("onStateChange", "onytplayerStateChange");
//	}
						
	function onytplayerStateChange(newState) {
						   //trace("Player's new state: " + newState);
							if(newState == 0) {
							// movie stopped at the end.
							$('#controls_play').css('background','url(http://playlistify.org/gadget/images/control_sound_play_gadget.gif) 0px 0px no-repeat');

								if(autoplay == true) {
									
									//$('#youtubeholder_'+currenttrack).html('Click to play '+$(+currenttrack).val());
									
									trackStat('sp', st[currenttrack][0],st[currenttrack][1]); 
									if(currenttrack < (totaltracks)) {
										currenttrack = currenttrack +1;	
										
										playNext();
									} else {
										currenttrack = 1;
										playNext();	
									}
									
								}
							}
							
							if(newState ==1) {
								
								playing=true;
								$('#controls_play').css('background','url(http://playlistify.org/gadget/images/control_sound_play_gadget.gif) -16px 0px no-repeat');
									
							}
							
							if(newState == 2) {
								$('#controls_play').css('background','url(http://playlistify.org/gadget/images/control_sound_play_gadget.gif) 0px 0px no-repeat');	
							}
	}
	
		
//function playAll() {
//	autoplay = true;	
//	playNext();
//	//alert('play all'+currenttrack);
//}
//
//function stopPlayAll() {
//	currenttrack = 1;
//	autoplay = false;	
//}

function playAll() {
	autoplay = true;	
	playNext();
	//alert('play all'+currenttrack);
	
	if(everplayed == 0) {
			trackStat('spa');	
			everplayed = 1;
	}
}

function pausePlay() {
	  ytplayer = document.getElementById(curryt);
	 ytplayer.stopVideo();
	autoplay = false;	
	playing = false;
		$('#controls_play').css('background','url(http://playlistify.org/gadget/images/control_sound_play_gadget.gif) 0px 0px no-repeat');
}

function stopPlayAll() {
	 ytplayer = document.getElementById(curryt);
	 ytplayer.stopVideo();
	$('#controls_play').css('background','url(http://playlistify.org/gadget/images/control_sound_play_gadget.gif) 0px 0px no-repeat');
	currenttrack = 1;
	autoplay = false;	
	playing= false;
}


function playPause() {
	
	if(playing) {
		pausePlay();		
	} else {
		playAll();	
	}	
	
}



function fwwd() {
	
	if(currenttrack < (totaltracks)) {
		currenttrack = currenttrack +1;	
		playNext();
	} else {
		currenttrack = 1;
		playNext();	
	}	
}

function playNext() {
	//$('#controls_trackinfo').html(currenttrack);
	$('#controls_trackinfo').html($('#clipname_'+currenttrack).val());
	//trace($('#trackinfo_'+currenttrack+ ' div.trackinfoicons h2'));
	$("div[id^='trackinfo_']").hide();
	curoffset =  $('#trackrow_'+currenttrack).offset();
	trace('curoffset ='+curoffset.top);
	trace($('#playlistify_tracks').offset().top);


//	$('.jScrollPaneContainer').animate({scrollTop:curoffset.top}, 'slow');
	$('.trackcounthover').removeClass('trackcounthover').addClass('trackcount');
	$('#trackinfo_'+currenttrack).fadeIn('fast', function() { $('#trackinfo_'+currenttrack).click();} );
	$('#trackcount_'+currenttrack).removeClass('trackcount').addClass('trackcounthover');
	
	try {
		$('#playlistify_tracks')[0].scrollTo(parseInt(curoffset.top - $('#playlistify_tracks').offset().top));
	} catch (err) {
		 $('html, body').animate({scrollTop: (curoffset.top -100) }, 'slow'); 
	}
	

	
			
}


//function playNext() {
//	
//	$("div[id^='trackinfo_']").hide();
//	
//	$('.trackcounthover').removeClass('trackcounthover').addClass('trackcount');
//	$('#trackinfo_'+currenttrack).fadeIn('fast', function() { $('#trackinfo_'+currenttrack).click();} );
//	$('#trackcount_'+currenttrack).removeClass('trackcount').addClass('trackcounthover');
//	
//			
//}


function showEmbed(p) {
	
	$.facebox('<iframe src="http://dir.playlistify.org/embed.php?p='+p+'" width="700" height="550"></iframe>');
	
}

$(document).ready(function() {
	

	
	var zIndexNumber = 9000;
	$('table#playlist tr td').each(function() {
		$(this).css('zIndex', zIndexNumber);
		zIndexNumber -= 10;
	});
	
	$('#playlistify_tracks').jScrollPane({animateTo:true});
	
	
	$(".trackrow").hover(function(){
		$("div[id^='trackinfo_']").hide();
		theid = $(this).attr("id").substr(9);
		$('#trackinfo_'+theid).fadeIn('fast');
			$('.trackcounthover').removeClass('trackcounthover').addClass('trackcount');
		$('#trackcount_'+theid).removeClass('trackcount').addClass('trackcounthover');
	}, function() {
		
		//$('#trackcount_'+theid).removeClass('trackcounthover').addClass('trackcount');
		
	}); 

		$("div[id^='trackinfo_']").click( function() {
			
			var theide = $(this).attr('id').substr(10);
			if(theide) {
				currenttrack = parseInt(theide);
			}
			
			var searchq = escape($('#clipname_'+theide).val());
			var currid = $(this).attr('id');
			curryt = currid+'_player';
			
			
			
			 $.jsonp({
			        	type:'GET',
			        	url: 'http://gdata.youtube.com/feeds/api/videos?orderby=relevance&max-results=10&v=2&category=Music&format=5&client=playlistify&q='+searchq+'&alt=json-in-script&callback=?',
			        	beforeSend:function (XMLHttpRequest2) {
							  this;  // the options for this ajax request
							  //alert('almost sending!');
							   
						},
						
						
						
			        	success:function(json){
		//					//console.log('gettin return from youtube!');		
		//					//console.log(json);
							if(!json.feed.entry) {
								$('#youtubeholder_'+currenttrack).html('No videos found :(');
								if(autoplay == true) {
											
											//$('#youtubeholder_'+currenttrack).html('Click to play '+$(+currenttrack).val());
											if(currenttrack < (totaltracks)) {
												currenttrack = currenttrack +1;	
												
												playNext();
											} else {
												currenttrack = 1;
												playNext();	
											}
											
										}
									
							} else {
								
						  var urlembed = json.feed.entry[0].content.src+"&ap=%2526fmt%3D18&autoplay=1&rel=0&fs=1&color1=0x589843&color2=0x79C143&border=0&loop=0&enablejsapi=1&playerapiid=ytplayer";
						   
						   loadYoutube(urlembed, currid);
		
													
							}
							
							
			        	},
			        	
			        	error:function (xhr, textStatus, err) {
						  // typically only one of textStatus or errorThrown 
						  // will have info
							alert(xhr.status);
			
						  this; // the options for this ajax request
						}
			        	
			        	
					});
					
					
			
			
		});
		
		
	zclip_init();
	
	//initClippy('shorturl', 'clippy1');
	initClippy('shorturl', 'clippy1');
	
	$('#option3').unbind('click.namespace').bind('click.namespace', function(){ $('#textboxje').slideToggle('normal'); });
	
	$('#playAll').click(function() { playAll(); });
	
	var urlReq = document.location.toString();
		
		if (urlReq.match('#/t')) { // the URL contains an anchor
 		 //click the navigation item corresponding to the anchor
  			
  			var trackje = urlReq.split('#/t:')[1];
  			currenttrack = trackje;
  			playNext();
  		
		}
		if(typeof(org_playlistify.id) != 'undefined') {
			trackStat('sb');
		}
});

String.prototype.trim = function(){return 
(this.replace(/^[\s\xA0]+/, "").replace(/[\s\xA0]+$/, ""))}

String.prototype.endsWith = function(str) 
{return (this.match(str+"$")==str)}