// jQuery Plugin Boilerplate
// A boilerplate for jumpstarting jQuery plugins development
// version 2.0, July 8th, 2011
// by Stefan Gabos

;(function($) {
	
	$.socialembed = {
		constants : {
			templatesDir : 'js/socialembed/templates/'
		}
	}
	
	$.socialembed.youTubeChannel = function(el, options) {
        var defaults = {
            user: null,
            channel: "uploads", //options are favorites or uploads
			orderBy: "updated",
            maxResults: null,
			embed: false,
			embedWidth: 640,
			embedHeight: 480
        }
		
		defaults.socialembed = $.socialembed.constants;

        var plugin = this;

        plugin.settings = {};
		
        var init = function() {
            plugin.settings = $.extend({}, defaults, options);
			plugin.el = el;
			
			var urlMaxResults = '';
			
			if(plugin.settings.maxResults != null) {
				urlMaxResults = "&max-results=" + plugin.settings.maxResults
			}
			
			var url = "http://gdata.youtube.com/feeds/base/users/" + 
						plugin.settings.user + "/" +
						plugin.settings.channel + "?alt=json&orderby=" + plugin.settings.orderBy + urlMaxResults
						
			$.ajax({
				url: url,
				cache: true,
				dataType: 'jsonp',                    
				success: parseData
			});
        }

        var parseData = function(data) {
			$.each(data.feed.entry, function(i, e) {
				var parts = e.id.$t.split('/');
				var videoId = parts[parts.length-1];
				
				var embedObject = '<iframe width="480" height="360" src="http://www.youtube.com/embed/' + videoId + '" frameborder="0" allowfullscreen></iframe>';
				
				$("#socialembed_youTubeChannel_template").tmpl({
					'videoId'	: videoId,
					'href'		: e.link[0].href,
					'title'		: e.title.$t,
					'author'	: e.author[0].name.$t,
					'embed'		: plugin.settings.embed,
					'embedObject': embedObject
				}).appendTo(plugin.el);
			});
        }

        init();

    }
	
	$.socialembed.picasa = function(el, options) {
        var defaults = {
            user: null,
			album: null
        }
		
		defaults.socialembed = $.socialembed.constants;
		
		if(!defaults.album) {
			defaults.album = window.location.href.split("#")[1];
		}

        var plugin = this;

        plugin.settings = {};
		
        var init = function() {
            plugin.settings = $.extend({}, defaults, options);
			plugin.el = el;
					
			var url = "http://picasaweb.google.com/data/feed/api/user/" + 
						plugin.settings.user;
					
			if(plugin.settings.album) {
				url += "/album/" + plugin.settings.album;
				$('<button onclick="picasa.goHome()"><< back</button><br />').appendTo(plugin.el);
			}
			
			url +="?access=visible&alt=json-in-script&thumbsize=144c&imgmax=800&callback=?";
			
			$.getJSON(url, parseData);
        }

        var parseData = function(data) {
			$.each(data.feed.entry, function(i, e) {				
				var albumId = e.id["$t"].split("?")[0].split("albumid/")[1].split("/photoid")[0];
				var albumName = '';
				if(e.gphoto$name && e.gphoto$name.$t) albumName = e.gphoto$name.$t;
				
				var photoId = e.id["$t"].split("?")[0].split("photoid/")[1];
				
				var isAlbum = false;
				
				if(photoId == undefined) isAlbum = true;
				
				$("#socialembed_picasaAlbum_template").tmpl({
					'albumId'		: albumId,
					'photoId'		: photoId,
					'isAlbum'		: isAlbum,
					'albumName'		: albumName,
					'url'		: e["media$group"]["media$content"][0].url,
					'title'		: e.title.$t,
					'thumbnail'	: e["media$group"]["media$thumbnail"][0].url
				}).appendTo(plugin.el);
			});
			
			$("a[rel^='lightbox']").fancybox();
        }
		
		plugin.changeAlbum = function(albumName) {
			var url = "http://picasaweb.google.com/data/feed/api/user/" + 
						plugin.settings.user + "/album/" + albumName + 
						"?access=visible&alt=json-in-script&thumbsize=144c&imgmax=800&callback=?";
			plugin.el.html('');
			
			$('<button onclick="picasa.goHome()"><< back</button><br />').appendTo(plugin.el);
			
			$.getJSON(url, parseData);
			
			window.location = window.location + "#" + albumName;
		}
		
		plugin.goHome = function() {
			window.location = window.location.href.split("#")[0];
		}

        init();

    }

})(jQuery);
