
/* Develop By Van Thien */

(function($) {
	$.fn.jflickr = function(settings, callback) {
		settings = $.extend(true, {
			flickrbase: 'http://api.flickr.com/services/rest/',
			limit: 20,
			qstrings: {
				lang: 'en-us',
				format: 'json',
				method: 'flickr.photosets.getPhotos',
				photoset_id: '',
				api_key: '',
				jsoncallback: '?'
			},
			cleanDescription: true,
			useTemplate: true,
			itemTemplate: '',
			itemCallback: function(){}
		}, settings);

		var url = settings.flickrbase + '?';
		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){
				var img = data.photoset.photo;
				$.each(img, function(i,item){	
					
					if(i < settings.limit){
						
						// Add Image Sizes
						item['image'] = 'http://farm' + img[i].farm + '.' + 'static.flickr.com/' + img[i].server + '/' + img[i].id + '_' + img[i].secret +'.jpg';
						item['image_s'] = 'http://farm' + img[i].farm + '.' + 'static.flickr.com/' + img[i].server + '/' + img[i].id + '_' + img[i].secret + '_s.jpg';
						item['title'] = img[i].title;
	
						// 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);
