////////////////////////////
// Flickr
/////////////////////////

var Flickr = {};
Flickr.e = [];
Flickr.lock = false; // lock to prevent strange stuff during animations

Flickr.next = function(){
  return (Flickr.current.eid > Flickr.e.length -2)?false:Flickr.e[Flickr.current.eid+1];
}

Flickr.prev = function(){
  return (Flickr.current.eid < 1)?false:Flickr.e[Flickr.current.eid-1];
}

var Pic = function(id, imgsrc, url, title) {
  this.eid = id;
  this.id = 'pic'+id;
  this.imgsrc = imgsrc;
  this.url = url;
  this.title = title;
};

Pic.prototype.show = function() {
  $('#'+this.id).show();
  return this;
}

Pic.prototype.switchTo = function() {
  var toId = this.id;
  if(Flickr.lock)
    return false; // animation in progress
  Flickr.lock = true;
  $('#'+Flickr.current.id).fadeOut('fast',function(){
    $('#'+toId).fadeIn(function(){
      Flickr.lock = false;  // release lock after animation
    });
  });
  Flickr.current = this;
  return this;
};

Pic.prototype.draw = function() {
  $('<p>').attr({'id':this.id, 'class':'picblock'}).appendTo('#picArea');
  $('<img/>').attr('src', this.imgsrc.replace('_m.jpg','.jpg')).appendTo('#'+this.id);
  $('<a>').html(this.title).attr('href',this.url).appendTo('#'+this.id);
};

///////////////////////
// Document onload
//////////////////////

$(document).ready(function(){

  $('<a></a>').attr('href','#').html('&laquo; previous').click(function(){
    var prev = Flickr.prev()
	if (prev)
		prev.switchTo();
		
    return false;
  }).appendTo('#navigation');

  $('<a></a>').attr('href','#').html('next &raquo;').click(function(){
    var next = Flickr.next()
	if (next)
		next.switchTo();
		
    return false;
  }).appendTo('#navigation');

  // get flickr pics from feed
  $.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?id=22128188@N06&format=json&jsoncallback=?", function(data){
    var i = 0;
    $.each(data.items, function(i, item){
      Flickr.e[i] = new Pic(i, item.media.m, item.link, item.title);
      Flickr.e[i].draw();
      i++;
    });
    Flickr.current = Flickr.e[0].show();
  });

  // get tweets
  $('#twitter').tweet({
    username: "winsonli",
    join_text: "auto",
    count: 10,
    auto_join_text_default: "", 
    auto_join_text_ed: "",
    auto_join_text_ing: "",
    auto_join_text_reply: "",
    auto_join_text_url: "",
    loading_text: "<p style=\"position: absolute\; top:0\; margin-left: 1em\">loading tweets...</p>"
  });
});
