/*! Copyright (c) 2010 Phil Cohen (http://phlippers.net)
 * Dual licensed under the MIT (MIT_LICENSE.txt)
 * and GPL Version 2 (GPL_LICENSE.txt) licenses.
 *
 * Version: 0.4.0
 * Requires jQuery 1.4.2+, Fancybox 1.3.1+
 * Docs: http://phlippers.net/code/fancy-photoset
 */
(function($) {
 $.fn.fancyPhotoset = function(options) {
   var opts    = $.extend($.fn.fancyPhotoset.defaults, options);
   var domId   = 'fancyPhotoset-' + opts.photosetId;
   var jsonUrl = 'http://api.flickr.com/services/rest/?&method=flickr.photosets.getPhotos&api_key={apiKey}&photoset_id={photosetId}&extras=url_sq,url_t,url_s,url_m,url_o&format=json&jsoncallback=?'.replace(/\{\w+\}/g, function(match) {
     return opts[match.replace(/\{|\}/g, '')];
   });

   // Create a fancyPhotoset for each selector
   return this.each(function() {
     var obj = $(this);
     $(obj).append(
       $('<ul/>').attr('id', domId).addClass('inlineList fancyPhotoset')
     );

     $.getJSON(jsonUrl, function(data) {
       $.each(data.photoset.photo, function(index, photo) {
         $(obj).find('ul').append(
           $('<li/>').html(
				$('<a/>').attr({'href': $.fn.fancyPhotoset.urlFor(photo, {size: opts.large}),'rel': 'flickr-' + opts.photosetId, 'title': photo.title})
				.html(
				$('<img/>').attr({'src': $.fn.fancyPhotoset.urlFor(photo, {size: opts.small}), 'title': photo.title, 'alt': photo.title}).after(
				(opts.captions ? $('<span/>').addClass('caption').text(photo.title) : '')
               )
             ).fancybox(opts.fancybox)
           )
         );
       });

       // Hide all except the first image
       if (opts.firstOnly){
         $(obj).find('li').not(':first').hide();
       }

       // Hide all except the first eight images
       if (opts.firstEight){
         $("ul.fancyPhotoset li:gt(7)").hide();
       }

     });
   });
 };

 // generate static image url
 $.fn.fancyPhotoset.urlFor = function(photo, options) {
   var opts = $.extend({size: 'square'}, options);
   var urls = {
     'square'    : photo.url_sq,
     'thumbnail' : photo.url_t,
     'small'     : photo.url_s,
     'medium'    : photo.url_m,
     'original'  : photo.url_o
   };

   return urls[opts.size];
 };

 // default options
 $.fn.fancyPhotoset.defaults = {
   apiKey     : 'd78ddd4a010c44e271f8a6fb08f12e43',
   photosetId : '72157623968601233',
   small      : 'square',
   large      : 'medium',
   captions   : false,
   firstOnly  : false,
   firstEight : true,
   fancybox   : {},
 };

})(jQuery);