(function($) {

    var flickr = {
        apiKey: ''
    };

    $.flickr = flickr;

    $.flickr.setApiKey = function(apiKey){
        $.flickr.apiKey = apiKey;
    };

    /**
     * flickrに対してAPIのリクエストを行う
     */
    $.flickr.request = function(param, callback){

        var defaults = {
            api_key: $.flickr.apiKey,
            format: 'json'
        };

        param = $.extend({}, defaults, param);

        $.ajax({
            url : 'http://www.flickr.com/services/rest/?',
            data : param,
            dataType : 'jsonp',
            jsonp : 'jsoncallback',
            success: callback
        });
    };

    /**
     * 写真の情報を取得します
     */
    $.flickr.getPhotoInfo = function(photo_id, callback){
        var param = {};
        param.method = 'flickr.photos.getInfo';
        param.photo_id = photo_id;
        $.flickr.request(param, callback);
    };


    /**
     * フォトセットから写真の一覧を取得します
     */
    $.flickr.getPhotosFromPhotoSet = function(photoset_id, callback){
        var param = {};
        param.method = 'flickr.photosets.getPhotos';
        param.photoset_id = photoset_id;
        $.flickr.request(param, callback);
    }

    /**
     * フォトセットの中からプライマリーのPhoto取得する。
     *
     * @param data
     */
    $.flickr.getPrimaryPhoto = function(data) {

        if(!data) return false;
        if(!data.photoset) return false;
        if(!data.photoset.photo) return false;

        var primary = data.photoset.primary;
        var set = data.photoset.photo;

        for(var i=0; i<set.length; i++) {
            if(set[i].id == primary) {
                return set[i];
            }
        }
    };

    /**
     * photoオブジェクトからその写真のURLを生成
     *
     * @param photo
     * @return
     */
    $.flickr.getPhotoUrl = function(photo){
        var url = 'http://farm' + photo.farm + '.static.flickr.com/' + photo.server + '/' + photo.id + '_' + photo.secret + '.jpg';
        return url;
    };

    /**
     * photoオブジェクトからサムネイル画像URIの作成
     *
     * @param photo
     * @return
     */
    $.flickr.getThumbnailPhotoUrl = function(photo){
        var url = 'http://farm' + photo.farm + '.static.flickr.com/' + photo.server + '/' + photo.id + '_' + photo.secret + '_t.jpg';
        return url;
    };

})(jQuery);

