jQuery.extend({
    request: null,
    actualCallback: null,
    accountId:null,
    flickrKey:null,
    initFlickr : function() {
        $.flickrKey = 'd74ad9b5397540ebac79a98068048926';
    },
    loadAccount : function(accountName, callback) {
      $.actualCallback = callback;
      if ($.request !=null) {
        $.request.abort();
      }
        
      $.request = $.getJSON("http://api.flickr.com/services/rest/?method=flickr.people.findByUsername&jsoncallback=?&api_key="+$.flickrKey+"&format=json&username="+accountName,function(json) {
        $.parseAccount(json);
      });
    },
    parseAccount : function(json) {
      if (json.stat != "ok"){
      	return;
  	  }
      $.accountId = json.user.id;
      $.actualCallback($.accountId);
    },
    loadSets : function (callback) {
      jsonFlickrApi = callback;
      if ($.request !=null) {
        $.request.abort();
      }
        
        $.request = $.getJSON("http://api.flickr.com/services/rest/?method=flickr.photosets.getList&api_key="+$.flickrKey+"&format=json&user_id="+$.accountId);
    },
    loadTags : function (callback) {
  	    jsonFlickrApi = callback;
      if ($.request !=null) {
        $.request.abort();
      }
        
        $.request = $.getJSON("http://api.flickr.com/services/rest/?method=flickr.tags.getListUser&api_key="+$.flickrKey+"&format=json&user_id="+$.accountId);
    },
    loadImages: function(account,s,t,count,callback){
      if ($.request !=null) {
        $.request.abort();
      }
      $.actualCallback = callback;
      
      if (s != "") {
        
        $.request = $.getJSON("http://api.flickr.com/services/rest/?method=flickr.photosets.getPhotos&api_key=d74ad9b5397540ebac79a98068048926&jsoncallback=?&format=json&photoset_id="+s+"&per_page="+count,function(json) {
          $.parsePhotoset(json);
        });
        
        return;
      }
      $.request = $.getJSON("http://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=d74ad9b5397540ebac79a98068048926&jsoncallback=?&format=json&user_id="+account+"&per_page="+count+"&tags="+t,function(json){
        $.actualCallback(json);
      });
    },
    
    parsePhotoset : function(json) {
      var newJson = new Object();;
      newJson.stat = json.stat;
      newJson.photos = new Object();
      newJson.photos.photo = [];
      jQuery.each(json.photoset.photo, function() {
      this.owner = json.photoset.owner;

        newJson.photos.photo[newJson.photos.photo.length] = this;
        return true; // will stop running to skip "five"
      });
      $.actualCallback(newJson);
    }
});

