/**
 * TwitterTree Class
 *
 * This class leverages Twitter Search API to retrieve recent Twitter statuses
 * with specified keyword.
 *
 * @author  Jakub Karlec
 * @created 08/17/2009
 * @updated 08/17/2009
 */

var TwitterTree = new Class({

  Extends: TwitterReader,

  /**
   * Prepare tweet items and create a stack for displaying them
   */
  showItems: function(newItemsIndex){
    if(!this.container.getElement('ul')){
      this.container.adopt(new Element('ul'));
    }

    this.list = this.container.getElement('ul');
    this.tweetsStack = [];
    
    for(var i = newItemsIndex; i < this.tweets.length; i++){
      //var item = this.tweets[i];
      //var listItem = new Element("li",{'html':'<img src="'+item.profile_image_url+'" alt="" /><a href="http://twitter.com/'+item.from_user+'">'+item.from_user+'</a>:<p>'+this.chat_string_create_urls(item.text)+'</p>'});
      
      var item = new Element("li",{'class':'twitter-tree-right'}).store('tweet', new Element("div",{'class':'tweet-content','html':'<img src="'+this.tweets[i].profile_image_url+'" alt="" /><a href="http://twitter.com/'+this.tweets[i].from_user+'">'+this.tweets[i].from_user+'</a>:<p>'+this.chat_string_create_urls(this.tweets[i].text)+'</p>'}));
      if (i%2 == 0){
        item.set('class','twitter-tree-left');
      }
      this.tweetsStack.include(item);
    }
    this.publishTweet();
  },

  /**
   * Publish tweet to the page
   */
  publishTweet: function(){
    if(window.getSize().y < $('twitter-bird').getStyle('bottom').toInt() + 100){
      return false;
    }
    $('twitter-bird').tween('bottom', $('twitter-bird').getStyle('bottom').toInt() + 35);
    tweet = this.tweetsStack.shift();
    
    tweet.inject(this.list, 'top');
    tweet.fade('hide');
    tweet.fade('in');
    
    var tweetDetail = tweet.retrieve('tweet');
    tweetDetail.setStyle('bottom',$('twitter-bird').getStyle('bottom').toInt() - 25);
    if(tweet.hasClass('twitter-tree-right')){
      tweetDetail.addClass('tweet-content-right');
    }
    tweetDetail.inject(this.list.getParent(), 'top');
    tweetDetail.fade('hide');
    tweetDetail.fade('in');
    (function(){tweetDetail.fade('out')}).delay(2000);
    tweetDetail.addEvents({
      'mouseenter':function(){
        this.fade('in')
      },
      'mouseleave':function(){
        this.fade('out')
      }
    });


    tweet.addEvents({
      'mouseenter':function(){
        this.retrieve('tweet').fade('in')
      },
      'mouseleave':function(){
        this.retrieve('tweet').fade('out')
      }
    });
    
    if(this.tweetsStack.length > 0){
      this.publishTweet.delay(2000, this);
    }
    else{
      this.retrieveItems.delay(30000, this);
    }
  },

  /**
   * Move clouds
   */
  moveClouds: function(){
    $$('.twitter-cloud').each(function(item){
      if(!item.hasClass('move-left') && !item.hasClass('move-right')){
        if(Math.random() > 0.5){
          item.addClass('move-left');
        }
        else{
          item.addClass('move-right');
        }
      }
      if(item.hasClass('move-left')){
        if(item.getStyle('left').toInt() < - 150){
          item.removeClass('move-left');
          item.addClass('move-right');
        }
        item.setStyle('left', item.getStyle('left').toInt() - 1);
      }
      else{
        if(item.getStyle('left').toInt() > 250){
          item.removeClass('move-right');
          item.addClass('move-left');
        }
        item.setStyle('left', item.getStyle('left').toInt() + 1);
      }
    });
  }

});

window.addEvent('domready', function(){
  var twitterTree = new TwitterTree("feed","obama",{rpp:5});
  twitterTree.moveClouds.periodical(80);

  //this.addEvent('click', function(){twitterTree.retrieveItems()});
});
