﻿function load_photoset(uid, key, pid, pcnt, start) {
	$('#flickrThumbs').text('Loading pictures...');
	$('#flickrThumbs').flickr({user_id: uid, api_key: key, photoset_id: pid, type: 'photoset', per_page: pcnt, page: start, litebox: true});
}
(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)
        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
        load_photos: null,  // default: null if set will try to call photos from the first photoset
        photoset_hdr_img: 	'/assets/img/headers/hdr_turtle_flickr_playlist.gif',
        litebox: false      // boolean, if true requires jquery.litebox.js
        };
    if(o) $.extend(s, o);
	$(this).text('');
    var url = $.flickr.format(s);
	switch(s.type) {
		case 'setlist':
		    return this.each(function(){
				$(this).append('<img src="'+s.photoset_hdr_img+'" />');
				var list = $('<ul>').appendTo(this);
				$.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 {
			            for (var i=0; i<r.photosets.photoset.length; i++){
			                var photoset = r.photosets.photoset[i];
							setimg = '<img src="http://farm'+photoset.farm+'.static.flickr.com/'+photoset.server+'/'+photoset.primary+'_'+photoset.secret+'_s.jpg" />';
							setlink = 'javascript:load_photoset(\''+s.user_id+'\',\''+s.api_key+'\',\''+photoset.id+'\',\''+s.per_page+'\', \'1\')';
							list.append('<li><a href="'+setlink+'" class="set_title">'+photoset.title._content+'</a> <span class="pic_count">('+photoset.photos+' pictures)</span> <div class="photoset_description">'+photoset.description._content+'</div></li>');
							if(i == 0 && s.load_photos != null)
								$(s.load_photos).flickr({user_id: s.user_id, api_key: s.api_key, photoset_id: photoset.id, type: 'photoset', per_page: s.per_page, litebox: s.litebox});
			            }
			        }
				});
		    });
			break;
		default:
		    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';
							list.append('<li><a href="'+h+'"><img src="'+t+'" alt="'+photo['title']+'" /></a></li>');
			            }
			            if (s.litebox) list.litebox();
						/*
						if(s.page != null && s.page > 1) {
							if (list.find('> li').length >= s.per_page) 
								list.find('> li:last-child').remove();
							gotoprevpage = (s.page == null) ? 2 : parseInt(s.page) - 1;
							list.prepend('<li><a href="javascript:load_photoset(\''+s.user_id+'\',\''+s.api_key+'\',\''+s.photoset_id+'\',\''+s.per_page+'\', \''+gotoprevpage+'\');"><img src="/assets/img/buttons/btn_more_pics.gif" border="0" /></a></li>');
						}
						if (list.find('> li').length >= s.per_page) {
							list.find('> li:last-child').remove();
							gotonextpage = (s.page == null) ? 2 : parseInt(s.page) + 1;
							list.append('<li><a href="javascript:load_photoset(\''+s.user_id+'\',\''+s.api_key+'\',\''+s.photoset_id+'\',\''+s.per_page+'\', \''+gotonextpage+'\');"><img src="/assets/img/buttons/btn_more_pics.gif" border="0" /></a></li>');
						}
						*/
			        }
				});
		    });
			break;
	}
};
$.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 'setlist':
                if (s.user_id) url += '&user_id=' + s.user_id;
				url += '&method=flickr.photosets.getList';
				break;
			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.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);