function create_thumbnail_link (farm_id, 
                                server_id, 
                                id, 
                                secret)
{
  return "http://farm"+farm_id+".static.flickr.com/"+server_id+"/"+id+"_"+secret+"_s.jpg";
}

function create_full_image_link (farm_id,
                                 server_id,
                                 id,
                                 secret)
{
  return "http://farm"+farm_id+".static.flickr.com/"+server_id+"/"+id+"_"+secret+".jpg";
}

function ajax_loading (id)
{
  return function () {
    $(id).update(
        new Element('div', {style:'text-align:center'}).update(
        new Element('p').
        update('Chargement')).insert(
        new Element('img', {src:'images/loading.gif'})));
  }
}

function ajax_failure (id)
{
  return function () {
   $(id).update('Erreur lors du chargement des miniatures');
  }
}

function load_thumbnails(tag, page)
{
  function _success (response) 
  {
    //empty thumbnails
    $('thumbnails').update();
    var jsonObject = response.responseText.evalJSON();
    var photos = jsonObject.photos.photo;
    for (var i=0; i<photos.length; i++) {
      var p = photos[i];
      $('thumbnails').insert(new Element('div',{'class': 'thumb'}).update(
          new Element('a',
            {'href': create_full_image_link(
                p['farm'], 
                p['server'],
                p['id'],
                p['secret']),
             'rel':"lightbox[all]"}).update(
            new Element('img',
              {'src': create_thumbnail_link(
                p['farm'],
                p['server'],
                p['id'],
                p['secret'])}))));
    }

    //insert prev/next link
    var numPages = parseInt(jsonObject.photos.pages);
    var currentPage = parseInt(jsonObject.photos.page);
    if (numPages > 1) {
      var innerLinks = $('thumb-nav').update();
      if (currentPage > 1) { //link to prev
        innerLinks.insert(new Element('a', {href:"javascript:load_thumbnails('"+tag+"',"+(currentPage-1)+");"}).
          update('pr&eacute;c&eacute;dentes'));
      }
      innerLinks.insert(new Element('span').update(currentPage+" / "+numPages));
      if (currentPage < numPages) { //link to next
        innerLinks.insert(new Element('a', {href:"javascript:load_thumbnails('"+tag+"',"+(currentPage+1)+");"}).
          update('suivantes'));
      }
    }

  }

  var paramHash = new Hash();
  paramHash.set('tag', tag);
  paramHash.set('page', page);

 
  new Ajax.Request('flickr.php', {
    method: 'get',
    parameters: paramHash,
    onLoading: ajax_loading('thumbnails'),
    onSuccess: _success,
    onFailure: ajax_failure('thumbnails'),
    evalJSON: true});
}

function load_tags ()
{
  function _success (response) 
  {
    //empty tags list
    $('tags').update();
    var jsonObject = response.responseText.evalJSON();
    var tags = jsonObject.who.tags.tag;
    for (var i=0; i<tags.length; i++) {
      var t=tags[i];
      $('tags').insert(new Element('span', {'class':'tag'}).update(
          new Element('a', {href:"javascript:load_thumbnails('"+t._content+"');"}).
          update(t._content)));
    }
  }


  new Ajax.Request('flickr.php', {
    method: 'get',
    onLoading: ajax_loading('tags'),
    onSuccess: _success,
    onFailure: ajax_failure('tags'),
    evalJSON: true});
}

function page_loaded () 
{
  load_tags();
  load_thumbnails("",1);
}
