/*
* Copyright (C) 2009 Joel Sutherland
* Licenced under the MIT license
* http://www.newmediacampaigns.com/page/jquery-flickr-plugin
*
* Available tags for templates:
* title, link, date_taken, description, published, author, author_id, tags, image*
*/
(function($) {
	$.fn.jflickrfeed = function(settings, callback) {
		settings = $.extend(true, {
			//http://api.flickr.com/services/rest/?format=json&jsoncallback=jQuery.flickrGallery.opt.g1.albums.a0.buildImgList&api_key=9b6bab9c552c45be905cb4876ccca07d&method=flickr.photosets.getPhotos&photoset_id=72157625034253625&thisUID=1287515312866
			flickrbase: 'http://api.flickr.com/services/rest/',
			//flickrbase: 'http://api.flickr.com/services/feeds/',
			feedapi: '',//'photos_public.gne',
			limit: 20,
			qstrings: {
				//api_key=9b6bab9c552c45be905cb4876ccca07d&method=flickr.photosets.getPhotos&photoset_id=72157625034253625&thisUID=1287515312866
				api_key: '9b6bab9c552c45be905cb4876ccca07d',
				method: 'flickr.photosets.getPhotos',
				photoset_id: '72157625034253625',
				thisUID: '1287515312866',
				lang: 'en-us',
				format: 'json',
				jsoncallback: '?'
			},
			cleanDescription: true,
			useTemplate: true,
			itemTemplate: '',
			itemCallback: function(){}
		}, settings);

		var url = settings.flickrbase + settings.feedapi + '?';
		var first = true;

		for(var key in settings.qstrings){
			if(!first)
				url += '&';
			url += key + '=' + settings.qstrings[key];
			first = false;
		}

		return $(this).each(function(){
			var $container = $(this);
			var container = this;
			$.getJSON(url, function(data){
				//console.debug(data);
				//$.each(data.items, function(i,item){
				$.each(data.photoset.photo, function(i,item){
					if ((settings.limit === false) || (i < settings.limit)) {
					
						// Clean out the Flickr Description
						if(settings.cleanDescription){
							var regex = /<p>(.*?)<\/p>/g;
							var input = item.description;
							if(regex.test(input)) {
								item.description = input.match(regex)[2]
								if(item.description!=undefined)
									item.description = item.description.replace('<p>','').replace('</p>','');
							}
						}
						if (item.title != undefined) {
							item.description = item.title;
						}
						
						// Add Image Sizes
						// http://farm5.static.flickr.com/4033/5074530039_c612e9ab3c.jpg
						var sBaseURL = 'http:\/\/farm'+item.farm+'.static.flickr.com/' + item.server +'/'+item.id+'_'+item.secret;
						// http://www.flickr.com/services/api/misc.urls.html
						item['image_s'] = sBaseURL + '_s.jpg';
						item['image_t'] = sBaseURL + '_t.jpg';
						item['image_m'] = sBaseURL + '_m.jpg';
						item['image_b'] = sBaseURL + '_b.jpg';
						item['image'] = sBaseURL + '.jpg';
						//item['image_t'] = item.media.m.replace('_m', '_t');
						delete item.media;
						
						// Use Template
						if(settings.useTemplate){
							var template = settings.itemTemplate;
							for(var key in item){
								var rgx = new RegExp('{{' + key + '}}', 'g');
								template = template.replace(rgx, item[key]);
							}
							$container.append(template)
						}
						
						//itemCallback
						settings.itemCallback.call(container, item);
					}
				});
				if($.isFunction(callback)){
					callback.call(container, data);
				}
			});
		});
	}
})(jQuery);

