
// remap jQuery to $
(function($){

})(this.jQuery);

(function($) {
  $.picasa = {
    albums: function(user, callback) {
      var url = "http://picasaweb.google.com/data/feed/base/user/:user_id?alt=json&kind=album&hl=en_US&access=visible&fields=entry(id,media:group(media:content,media:description,media:keywords,media:title))"
      url = url.replace(/:user_id/, user);
      $.getJSON(url, function(data) {
        var album = null;
        var albums = [];
        $.each(data.feed.entry, function(i, element) {
          album = {
            id: element.id["$t"].split("?")[0].split("albumid/")[1],
            title: element["media$group"]["media$title"]["$t"],
            description: element["media$group"]["media$description"]["$t"],
            thumb: element["media$group"]["media$content"][0]["url"],
          }
          album.images = function(callback) {
            $.picasa.images(user, album.id, callback);
          }
          albums.push(album);
        });
        callback(albums);
      });
    },

    images: function(user, album, num, callback) {
      var url = "http://picasaweb.google.com/data/feed/api/user/:user_id/albumid/:album_id?alt=json&kind=photo&thumbsize=104c&imgmax=800&max-results=:num&hl=en_US&fields=entry(title,gphoto:numphotos,media:group(media:content,media:thumbnail))";
      url = url.replace(/:user_id/, user).replace(/:album_id/, album).replace(/:num/, num);
      var image = null;
      var images = [];
      $.getJSON(url, function(data) {
        $.each(data.feed.entry, function(i, element) {
          image = element["media$group"]["media$content"][0];
          image.title = element.title["$t"];
          image.thumbs = [];
          $.each(element["media$group"]["media$thumbnail"], function(j, j_element) {
            image.thumbs.push(j_element);
          });
          images.push(image);
        });
        callback(images);
      });
    },

    recent: function(user, num, callback) {
      var url = "http://picasaweb.google.com/data/feed/api/user/:user_id/?alt=json&kind=photo&thumbsize=104c&imgmax=800&max-results=:num&hl=en_US&fields=entry(title,gphoto:numphotos,media:group(media:content,media:thumbnail))";
      url = url.replace(/:user_id/, user).replace(/:num/, num);
      var image = null;
      var images = [];
      $.getJSON(url, function(data) {
        $.each(data.feed.entry, function(i, element) {
          image = element["media$group"]["media$content"][0];
          image.title = element.title["$t"];
          image.thumbs = [];
          $.each(element["media$group"]["media$thumbnail"], function(j, j_element) {
            image.thumbs.push(j_element);
          });
          images.push(image);
        });
        callback(images);
      });
    }
  };

  $.fn.picasaAlbums = function(user, callback) {
    $.picasa.albums(user, function(images) {
      if (callback) {
        callback(images);
      }
    });
  };

  $.fn.picasaGallery = function(user, album, num, callback) {
    var scope = $(this);
    $.picasa.images(user, album, num, function(images) {
      //if (callback) {
        //callback.apply(scope, images);
      //} else {
        var picasaAlbum = "";
        $.each(images, function(i, element) {
          picasaAlbum += "    <a class='galleryThumbContainer' href='" + element.url + "'>\n";
          picasaAlbum += "      <img class='galleryThumb' src='" + element.thumbs[0].url + "'/>\n";
          picasaAlbum += "    </a>\n";
        });
        scope.append(picasaAlbum);
				callback(images);
     // }
    });
  }

  $.fn.picasaRecent = function(user, num, callback) {
    var scope = $(this);
    $.picasa.recent(user, num, function(images) {
      //if (callback) {
        //callback.apply(scope, images);
      //} else {
        var picasaAlbum = "";
        $.each(images, function(i, element) {
          picasaAlbum += "    <a class='galleryThumbContainer' href='" + element.url + "'>\n";
          picasaAlbum += "      <img class='galleryThumb' src='" + element.thumbs[0].url + "'/>\n";
          picasaAlbum += "    </a>\n";
        });
        scope.append(picasaAlbum);
				callback(images);
     // }
    });
  }
})(jQuery);


// catch all document.write() calls
(function(doc){
  var write = doc.write;
  doc.write = function(q){ 
    log('document.write(): ',arguments); 
    if (/docwriteregexwhitelist/.test(q)) write.apply(doc,arguments);  
  };
})(document);



