//YouTube integration on site.
//Developed by Joe McAuliffe - Smurfit Business School
//Uses the YouTube Data API - version 2
//Uses the following feeds from YouTube: 
//Favourites, Playlist, All Playlists from user
//Has functionality to load particular playlist / video & playlist from main page using the querystring

var current_playlist = [];
var current_playlist_list;
var loaded = false;
var video_by_id = false;
var video_request_id;
var playlist_list_width;

$(document).ready(function(){
 $("#player").html("");
startViewer()
});

//Loads a particular video to the player, uses SWFObject hosted on Google
function loadVideo(playerUrl,id, autoplay) {
  loaded = true;
  swfobject.embedSWF(
      playerUrl + '&rel=0&border=0&fs=1&autoplay=' + 
      (autoplay?1:0), 'player', '500', '360', '9.0.0', false, 
      false, {allowfullscreen: 'true'});
	$("#infowindow_heading").html(current_playlist[id].title.$t);
//	$("#infowindow_body").html(""+current_playlist[id].media$group.media$description.$t);
	var item = "#video_list a#"+id;
	//controls the highlighting of the video being played on the playlist
	$(".video_link").each(function(i){
		$(this).removeClass("active");
	});
	
	$(item).addClass("active");
	  
}
	// converts seconds into minutes and seconds
	function convertSeconds(secs){
		var seconds = (secs%60);
		if(seconds<10){
			return ""+Math.floor(secs/60)+":0"+seconds;
		}else{
			return ""+Math.floor(secs/60)+":"+seconds;
		}
	}
	
	//Initial start function that will check the querystring to see if there are any playlist or video that needs to be played.
	function startViewer(){
		var querystring = window.location.search.substring(1);
		var items = querystring.split('&');
		if (items.length == 1){
			if(items[0] ==""){
				loadPlaylist('1484DC072E79E09E',0);
				getPlaylist();
			}
			else{
			var play = items[0].split('=');
			getPlaylist();
			loadPlaylist(play[1],0);
			
			
			}
		}
		else if (items.length == 2){
			var play = items[0].split('=');
			var play1 = items[1].split('=');
			getPlaylist();
			loadPlaylist(play[1],0);
			video_request_id = play1[1];			
		}
		else{
		  loadPlaylist('1484DC072E79E09E',0);
		  getPlaylist();
			
		}
	}
	// This will load the Favourites selected in the account and display the first one as the default video
	function getFavourites(){
		  var url = 'http://gdata.youtube.com/feeds/api/users/smurfitwebteam/favorites?v=2&format=5&alt=json-in-script&callback=?&max-results=10';
    	  $.getJSON(url, function(data) {	
    		  var feed = data.feed;
			  var count = 0;
              var entries = feed.entry || [];
			  entries = entries.reverse();
			  current_playlist = entries;
			  
              var html = ['<h2>Favourites</h2>'];
			  
                  for (var i = 0; i < entries.length; i++) {
                    var entry = entries[i];
                    var title = entry.title.$t;
    				count ++;
                    var thumbnailUrl = entries[i].media$group.media$thumbnail[0].url;
                    var playerUrl = entries[i].media$group.media$content[0].url;
    				
    				var duration = entry.media$group.yt$duration.seconds;
    				duration = convertSeconds(duration);
                    var description = entry.media$group.media$description.$t.substr(0, 20);
                    html.push('<a href=\"javascript:void(0);\" class=\"video_link\" id=\"',i,'\"  onclick="loadVideo(\'', playerUrl, '\',',i,', true)">',
                              '<img src="',thumbnailUrl, '"/><span class="header">', title, '</span><br /><span class="time">',duration,'</span><span class="clear" /></a>');
                  }
			   
              
			  
              document.getElementById('video_list').innerHTML = html.join('');
              if (entries.length > 0) {
                loadVideo(entries[0].media$group.media$content[0].url,0, false);
				
              }
		});
		getPlaylist();
	}
	
	function sortPlaylist(a,b){
		var datea = a.updated.$t;
		var date = new Date(datea.substring(0,4),datea.substring(5,7),datea.substring(8,10),datea.substring(11,13),datea.substring(14,16),datea.substring(17,19),0);
		
		var dateb = b.updated.$t;
		var date_b = new Date(dateb.substring(0,4),dateb.substring(5,7),dateb.substring(8,10),dateb.substring(11,13),dateb.substring(14,16),dateb.substring(17,19),0);
		
		return date_b.valueOf() - date.valueOf();
	}
	
	//This will retreive all the playlists associated with the user and display the titles and number of videos.
	function getPlaylist(){
		var url = "http://gdata.youtube.com/feeds/api/users/smurfitwebteam/playlists?v=2&alt=json-in-script&callback=?";
		$.getJSON(url, function(data){
			var feed = data.feed;
			
			var entries = feed.entry || [];
			entries.sort(sortPlaylist);
			current_playlist_list = entries;
			
			var html = "";
			for (var i=0; i < entries.length; i++ ){
			
				var entry = entries[i];
				var id = entry.yt$playlistId.$t;
				var title = entry.title.$t;
				var count = entry.summary.$t;
				html = html +"<a class=\"playlist_link\" href=\"javascript:void(0)\" id=\"" +id+ "\"  onClick=\"loadPlaylist(\'" + id + "\',"+ i+ ")\"><span class=\"header\">"+ title +"</span><br /> <span class=\"body\">"+count+"</span></a>";
				
			}
			
			$("#playlist_list").html(html);
			
			
		});
		
	
	
	}
	
	//This will load a particular playlist into the playlist viewer and highlight that particaular playlist.
	//This also checks that a video is in the player already and if not determines if there is a custom video to play
	function loadPlaylist(play_id, id){
	   //var querystring=location.search.substring(1,location.search.length);
	   var url = 'http://gdata.youtube.com/feeds/api/playlists/'+ play_id + '?v=2&alt=json-in-script&callback=?';
	   $.getJSON(url, function(data) { 
        	 var feed = data.feed;
			 
			  var count = 0;
              var entries = feed.entry || [];
			  current_playlist = entries;  
              var html = ['<h2>'+feed.title.$t+'</h2>'];
			
			  		for (var i = 0; i < entries.length; i++) {
                    var entry = entries[i];
    				count++;
                    var title = entry.title.$t;
					if(entries[i].media$group.media$thumbnail[0].url==undefined){
                    	var thumbnailUrl = entries[i].media$group.media$thumbnail[0].url;
					} else {
						var thumbnailUrl = "http://i3.ytimg.com/vi/"+entry.media$group.yt$videoid.$t +"/default.jpg";
					}
                    var playerUrl = entries[i].media$group.media$content[0].url;
    				
    				var duration = entry.media$group.yt$duration.seconds;
    				duration = convertSeconds(duration);
                    var description = entry.media$group.media$description.$t.substr(0, 20);
                   html.push('<a href=\"javascript:void(0);\" class=\"video_link\" id=\"',i,'\"  onclick="loadVideo(\'', playerUrl, '\',',i,', true)">',
                              '<img src="',thumbnailUrl, '"/><span class="header">', title, '</span><br /><span class="time">',duration,'</span><span class="clear" /></a>');
                  }
			  
			  
			  
          
  			  document.getElementById('video_list').innerHTML = html.join('');
			  
			  
			  var item = "#"+play_id;  
            	$(".playlist_link").each(function(i){
            		$(this).removeClass("active");
            	});
            	$(item).addClass("active");
			  if (loaded == false){
			  		
    					
			  	if(video_request_id){
					var id;
					var url;
					

					for(var i = 0; i < current_playlist.length; i++){
						if(current_playlist[i].media$group.yt$videoid.$t == video_request_id){
							id = i;
							url = current_playlist[i].media$group.media$content[0].url;
						}
					}	
					if(id){
						
						loadVideo(url,id,1);
					}else{
						loadVideo(current_playlist[0].media$group.media$content[0].url,0,1);
					}
				}else{
			  		loadVideo(current_playlist[0].media$group.media$content[0].url,0,1);
				 }
			   }
        });
  		
	  
};
