var BASE_URL = 'http://api.flickr.com/services/rest/?&method=';
var PHOTO_BASE_URL = 'http://www.flickr.com/photos/';

var API_KEY_PARAM = '&api_key=';
var COLLECTION_PARAM = '&collection_id=';
var USER_PARAM = '&user_id=';
var PHOTOSET_PARAM = '&photoset_id=';
var PHOTO_PARAM = '&photo_id=';
var PHOTOSET_EXTRA_PARAM = '&extras=';
var JSON_PARAM = '&format=json';
var CALLBACK_PARAM = '&nojsoncallback=1';
var AUTH_TOKEN_PARAM = '&auth_token=';
var API_SIG_PARAM = '&api_sig=';

var GET_COLLECTION_TREE = 'flickr.collections.getTree';
var GET_PHOTOS_IN_SET = 'flickr.photosets.getPhotos';

var PERMS_PARAM = '&perms=';
var API_SIG_PARAM = '&api_sig=';

var FLICKR_BASE_URL = 'http://www.flickr.com/photos/peterpaulrubens/';

var params = 
{
    api_key: '5d3e856c6b5cbc59dd467b941c97af57',
    private: false
};

$.fn.loadSet = function(options, callback)
{
    params = $.extend(params, options);
    
    var setData = {};
    $.getJSON(getSetURL(), 
        function(data)
        {
            setData.id = data.photoset.id;
            setData.photos = data.photoset.photo;
            callback(setData);
        });
}

function getCollectionURL()
{
    var url = BASE_URL;
    url += GET_COLLECTION_TREE;
    url += API_KEY_PARAM + params.api_key;
    url += COLLECTION_PARAM + params.collection_id;
    url += USER_PARAM + params.user_id;
    url += JSON_PARAM;
    url += CALLBACK_PARAM;
    
    if (params.private)
    {
        url += AUTH_TOKEN_PARAM + params.auth_token;
        var signature = params.shared_secret + 
                        'api_key' + params.api_key + 
                        'auth_token' + params.auth_token + 
                        'collection_id' + params.collection_id + 
                        'formatjson' +
                        'method' + GET_COLLECTION_TREE + 
                        'nojsoncallback1' + 
                        'user_id' + params.user_id;
        url += API_SIG_PARAM + $.md5(signature);
    }
    return url;
}

function getSetURL()
{
    var url = BASE_URL;
    url += GET_PHOTOS_IN_SET;
    url += API_KEY_PARAM + params.api_key;
    url += PHOTOSET_PARAM + params.set;
    url += PHOTOSET_EXTRA_PARAM + params.extras;
    url += JSON_PARAM;
    url += CALLBACK_PARAM;
    
    if (params.private)
    {
        url += AUTH_TOKEN_PARAM + params.auth_token;
        var signature = params.shared_secret + 
                        'api_key' + params.api_key + 
                        'auth_token' + params.auth_token + 
                        'extras' + params.extras
                        'formatjson' +
                        'method' + GET_PHOTOS_IN_SET + 
                        'nojsoncallback1' + 
                        'photoset_id' + params.set;
        url += API_SIG_PARAM + $.md5(signature);
    }
    return url;
}
