﻿/*
 * jQuery Flickr - jQuery plug-in
 * Beta 1, Released 2008.02.26
 *
 * Copyright (c) 2008 Daniel MacDonald (www.projectatomic.com)
 * Dual licensed GPL http://www.gnu.org/licenses/gpl.html 
 * and MIT http://www.opensource.org/licenses/mit-license.php
 */
 
/*
 * Hacked by James Stewart - 2008.05.28 to add machine tag support
 */
(function($) {
$.fn.flickr = function(o) {
    var s = {
        api_url: null,
        callback: null,
        api_key: null,
        type: null,         // allowed values: 'photoset', 'search'
        photoset_id: null,
        user_id: null,
        group_id: null,
        tags: null,         // comma separated list
        tag_mode: null,     // allowed values: 'any' (OR), 'all' (AND)
        machine_tags: null,
        text: null,     // free text search       
        sort: null,         // date-posted-asc, date-posted-desc, date-taken-asc, date-taken-desc, interestingness-desc, interestingness-asc, relevance
        thumb_size: 's',    // allowed values: s (75x75), t (100x?), m (240x?)
        size: null,         // default: (500x?), allowed values: m (240x?),  o (original)
        per_page: null,     // default: 100, max: 500
        page: null,       // default: 1
        litebox: false      // boolean, if true requires jquery.litebox.js
        };
    if(o) $.extend(s, o);

    return this.each(function(){
        var list = $('<ul>').appendTo(this);
        var url = $.flickr.format(s);
        $.getJSON(url, function(r){
          if (r.stat != "ok"){
              for (i in r){
          $('<li>').text(i+': '+i[r]).appendTo(list);
                  list.append('<li>'+i+': '+i[r]+'</li>');
              }
          } else {
              if (s.type == 'photoset'){
                  r.photos = r.photoset;
              }
              for (var i=0; i<r.photos.photo.length; i++){
                  var photo = r.photos.photo[i];
                  var t = 'http://farm'+photo['farm']+'.static.flickr.com/'+photo['server']+'/'+photo['id']+'_'+photo['secret']+'_'+s.thumb_size+'.jpg';
                  var h = 'http://farm'+photo['farm']+'.static.flickr.com/'+photo['server']+'/'+photo['id']+'_';
                  if (!s.size) h += photo['secret']+'.jpg';
                  else if (s.size == 'o') h += photo['originalsecret']+'_o.'+photo['originalformat'];
                  else h += photo['secret']+'_'+s.size+'.jpg';
                  h = 'http://www.flickr.com/photos/' + photo['owner'] + '/' + photo['id'];
                  list.append('<li><a href="'+h+'"><img src="'+t+'" alt="'+photo['title']+'" /></a></li>');
              }
              if (s.litebox) list.litebox();
          }
    });
    });
};
$.flickr = {
    format: function(s) {
        if (s.url) return s.url;
        if (!s.callback) s.callback = '?';
        var url = 'http://api.flickr.com/services/rest/?format=json&jsoncallback='+s.callback+'&api_key='+s.api_key;
        switch (s.type){
            case 'photoset':
                url += '&method=flickr.photosets.getPhotos&photoset_id=' + s.photoset_id;
                break;
            case 'search':
                url += '&method=flickr.photos.search';
                if (s.user_id) url += '&user_id=' + s.user_id;
                if (s.group_id) url += '&group_id=' + s.group_id;
                if (s.tags) url += '&tags=' + s.tags;
                if (s.tag_mode) url += '&tag_mode=' + s.tag_mode;
                if (s.machine_tags) url += '&machine_tags=' + s.machine_tags;
                if (s.text) url += '&text=' + s.text;
                if (s.sort) url += '&sort=' + s.sort;
                break;
            default:
                url += '&method=flickr.photos.getRecent';
        }
        if (s.per_page) url += '&per_page=' + s.per_page;
        if (s.page) url += '&page=' + s.page;
        if (s.size == 'o') url += '&extras=original_format';
        return url;
    }
};
})(jQuery);