YAHOO.util.Event.onDOMReady( function () {

FT = function () {


  var Event = YAHOO.util.Event;
  var twitterId;
  var profile_image_url;
  var screen_name;
  var timer;
  var seq = 0;
  var x = 1;
  var last = 0;
  var pingcount = 0;
  var catchupcount = 200;
  var scrollSpeed = 3;
  var defaultTags = '';
  var currentTime = 0;
  var myTweetCount = 0;
  var currentTotal = 0;


  Event.addListener('clear','click', function() {
      clearTweet();
  });
  Event.addListener('logout','click', function() {
     if (confirm("Are you sure you want to logout?")) {
        document.location.href='http://twitter.atlantafalcons.com/game/logout/';
     }
  });
  Event.addListener('restart','click', function() {
      clearInterval(timer);
      startTimer();
  });
  Event.addListener('stop','click', function() {
      clearInterval(timer);
  });
  Event.addListener('save-settings','click', function() {
      scrollSpeed = document.getElementById('scroll-speed').value;
      defaultTags = document.getElementById('default-tags').value;
      if (defaultTags.length) { defaultTags += ' '; }
      document.getElementById('settings').style.display='none';
      document.getElementById('tweet-center').style.display='block';
      clearInterval(timer);
      startTimer();
      clearTweet();
  });
  Event.addListener('close-settings','click', function() {
      document.getElementById('settings').style.display='none';
      document.getElementById('tweet-center').style.display='block';
  });

  Event.addListener('update','click', function() {
    var message = document.getElementById('chat-body').value;
    if (message.length) {
    Metrics.TrackTwitter('tweet', screen_name);
    var li = makeTweet({image:profile_image_url,name:screen_name+' tweeted',title:document.getElementById('chat-body').value});
    var ul = document.getElementById('tweets');
    if (ul.childNodes.length) {
      ul.insertBefore(li,ul.firstChild);
    } else {
      ul.appendChild(li);
    }
    var callback = {
      success: function(o) {
          log(o.responseText);
      },
      failure: function() {
          log('failed update.<br />')
      },
      xdr: true,
      cache: false
    }

    var postData = 'tweet='+prependTag+'%20' + document.getElementById('chat-body').value;
    var url = 'http://twitter.atlantafalcons.com/game/update/';
    var conn = YAHOO.util.Connect.asyncRequest("POST", url, callback,postData);
    clearTweet();
    myTweetCount++;
    updateTweetStats();
    }


  });
  Event.addListener('fetch','click', function() {
      fetch();
  });

  function fetch() {
        var callback = {
            success: function(o) {
                log(o.responseText);
            },
            failure: function(o) {
                log('fetch failed<br />\n');
                return false;
            },
            xdr: true,
            cache: false
        };
        var url = 'fetch.php';
        var conn = YAHOO.util.Connect.asyncRequest("GET", url, callback);

  }
  function startTimer() {
      getTweets();
      //var delay = document.getElementById('delay').value * 1000;
      var delay = scrollSpeed * 1000;
      timer = setInterval( function() {
          getTweets();
          //fetch();
      } , delay );
  }
  function getTweets() {
      pingcount++;
      if ( pingcount == catchupcount ) {
        //console.log('catchup');
        catchup();
        pingcount = 0;
      }
      var callback = {
          success: function(o) {
            last++;
            if (o.responseText.length > 4) {
              var li;
              var ul = document.getElementById('tweets');
              tweetData=YAHOO.lang.JSON.parse(o.responseText);
              for ( var i=0; i< tweetData.data.length; i++ ) {
                li = makeTweet(tweetData.data[i]);
                if ( ul.firstChild ) {
                  ul.insertBefore(li,ul.firstChild);
                } else {
                  ul.appendChild(li);
                }
              }
              currentTime = parseInt(tweetData.currentTime);
              log(tweetData.data.length + ' new tweets(' + x++ +')<br />');
              currentTotal = tweetData.total;
              buildPlayerStats(tweetData);
              updateTweetStats()
            } else {
              log('no new tweets(' + x++ +')<br />');
            }
          },
          failure: function() {
              log('failed getTweets<br />');
          },
          xdr: true
      }
      if ( last > 0 ) {
        var nextseq = last + 1;
        var url = 'http://twitter.atlantafalcons.com/tweets/' + gamePath + '/' + nextseq + '.js';
        var conn = YAHOO.util.Connect.asyncRequest("GET", url, callback);
      }
      reformatTime();
  }
  function reformatTime() {
    var times = YAHOO.util.Selector.query('span.time'); 
    for ( var i=0;i<times.length;i++) {
        var t = times[i];
        var tweetTime = parseInt(t.getAttribute('time'));
        var delta = currentTime - tweetTime;
        var tp = timePassed(delta);
        t.innerHTML = timePassed(delta);
    }
  }
  function timePassed(difference) {
        var yearInSeconds  = 31104000;
        var monthInSeconds = 2592000;
        var dayInSeconds   = 86400;
        year = Math.floor(difference / yearInSeconds);
        if ( year ) {
            if ( year > 1 ) {
                return year + " years ago";
            } else {
                return "1 year ago";
            }
        } else {
            months = Math.floor (difference / monthInSeconds ) ;
            if ( months ) {
                if (months > 1 ) {
                    return months + " months months ago";
                } else {
                    return "1 month ago";
                }
            } else {
                days = Math.floor(difference / dayInSeconds);
                if ( days ) {
                    if ( days > 1 ) {
                        return days + " days ago";
                    } else {
                        return "1 day ago";
                    }
                } else {
                    hours = Math.floor(difference / 3600 );
                    if ( hours ) {
                        if ( hours > 1) {
                            return hours +" hours ago";
                        } else {
                            return "1 hour ago";
                        }
                    } else {
                        minutes = Math.floor (difference / 60 );
                        if ( minutes ) {
                            if (minutes > 1 ) {
                                return minutes + " minutes ago";
                            } else {
                                return "1 minute ago";
                            }
                        } else {
                            return $difference + " seconds ago";
                        }
                    }
                }
            }
        }
  }
  function catchup() {
      var callback = {
          success: function(o) {
            if (o.responseText.length > 4) {
              var li;
              var ul = document.getElementById('tweets');
              ul.innerHTML='';
              tweetData=YAHOO.lang.JSON.parse(o.responseText);
              last = Number(tweetData.last) + 0;
                var tweet;
              if ( tweetData.data.length > 20 ) {
                    var cc = 20;
              } else {
                    var cc = tweetData.data.length;
              }
              for ( var i=0; i< cc; i++ ) {
                tweet = tweetData.data[i];
                li = makeTweet(tweet);
                //if ( ul.firstChild ) {
                  //ul.insertBefore(li,ul.firstChild);
                //} else {
                  ul.appendChild(li);
                //}
              }
              currentTime = parseInt(tweetData.currentTime);
              currentTotal = tweetData.total;
              buildPlayerStats(tweetData);
              updateTweetStats();
            }
          },
          failure: function() {
              log('failed getTweets<br />');
          },
	        xdr: true,
          cache: false
      }
      var url = 'http://twitter.atlantafalcons.com/tweets/' + gamePath + '/catchup.js';
      var conn = YAHOO.util.Connect.asyncRequest("GET", url, callback);
  }

  function updateTweetStats() {
      var perc = 0;
      document.getElementById('total-tweets').innerHTML = currentTotal;
      document.getElementById('your-tweets').innerHTML = myTweetCount;
      perc = Math.ceil( ( myTweetCount / currentTotal) * 100 );
      document.getElementById('your-tweets-impact').innerHTML = perc + '%';

  }
  function buildPlayerStats(tweetData) {
		var ul = document.getElementById('player-trends');
		ul.innerHTML = '';
    if ( tweetData.stats ) {
    if ( tweetData.stats.length ) {
      var i = 0;
      while ( i < 15 ) {
        ul.innerHTML += makeStat(tweetData.stats[i].player, tweetData.stats[i].count, tweetData.total);
        i++;
      }
    }
    }
  }

	function makeStat(player,count,total) {
		var perc = Math.round( ( count / total) * 100 );
		var str = '<div class="bar" style="background: #737373 url(http://twitter.atlantafalcons.com/images/red_bar.png) no-repeat ' + ( -200 + (2 *perc) ) +'px;width:200px;height:12px;"></div>#' + player +': <span id="' + player +'" class="tweet-counts">' + count+' ('+perc+'%)</span>';
		return str;
	}

  function clearTweet() {
     document.getElementById('chat-body').value = defaultTags;
     document.getElementById('char-remain').innerHTML = '120';
  }
  function log(message) {
    //var mess = message + document.getElementById('footer').innerHTML;
    //document.getElementById('footer').innerHTML = mess;
  }

  function initTweetBox() {
    var tweetAuth = YAHOO.util.Cookie.get("tweetAuth");
    if ( tweetAuth === "1" ) {
       //document.getElementById('chat-div').innerHTML = screen_name + ':<br /><textarea id="chat-body" onkeyup="FT.limitText(this,120,\'char-remain\')" onkeydown="FT.limitText(this,120,\'char-remain\')"></textarea><span id="char-remain">120</span><button id="update">Update</button><button id="clear">Clear</button><button id="logout">Logout</button>';

    } else {
       //document.getElementById('message-box').innerHTML = '<a href="'+request_link+'"><img src="images/connect.gif" /></a>';
      document.getElementById('chat-input').innerHTML = 'You can join the Falcons conversation by signing in using your twitter account.<iframe src="http://twitter.atlantafalcons.com/game/getLink/'+gamePath+'"></iframe>';
    }
  }

  function makeTweet(data) {
      var li = document.createElement('LI');
      var p = document.createElement('P');
      var name = '';
      p.className = 'tweet-message';
      if (data.image) {
        var userImage = document.createElement('IMG');
        userImage.className='user-image';
        userImage.src = data.image;
        li.appendChild(userImage);
      }
      name = data.name.substr(0,data.name.indexOf(' '));
      p.innerHTML = '<a style="text-decoration:none;" href="http://www.twitter.com/'+name+'" target="_blank">'+data.name+':</a> '+data.title;
      if (data.published) {
        p.innerHTML += ' <span class="time" time="' + data.published + '">' + data.published + '</span>';
	p.innerHTML += '<script type="text/javascript">Metrics.TrackTwitter("impress","' +data.name+'");</script>';
      }
      //li.innerHTML = data.name + ':' + data.title;
      li.appendChild(p);
      seq = data.id;
      return li;
  }
  
  function buildTrendTags(section) {
    var ul = YAHOO.util.Selector.query('#' + section + '-tags .tag-ul')[0]; 
    var a = trendtagsobj[section];
    for ( var i = 0; i < a.length; i++) {
        var li  = document.createElement('li');
	li.innerHTML = '<a onclick="FT.add_tag(\'#'+ a[i]+ '\');">#' + a[i]+ '</a>';
	ul.appendChild(li);
    }
	

  }
  function init() {
      //Metrics.initialize();
      twitterId = YAHOO.util.Cookie.get("twitterId");
      profile_image_url = YAHOO.util.Cookie.get("profile_image_url");
      screen_name = YAHOO.util.Cookie.get("screen_name");
      document.getElementById('logged-in-as').innerHTML = screen_name;

      buildTrendTags('offense');
      buildTrendTags('defense');
      buildTrendTags('special');
      buildTrendTags('coaches');
      buildTrendTags('staff');
      catchup();
      startTimer();
      initTweetBox();
      clearTweet();
  }
  function limitText(textarea,charLimit,el) {
          // dave hack to disable button
          var update_button_state = document.getElementById('update').src;
          var update_button_orig = update_button_state.replace(/-off/,'');

          if ((charLimit - textarea.value.length) == charLimit) {
            document.getElementById('update').disabled = true;
            document.getElementById('update').src = update_button_orig.replace(/\.png/,'-off.png');
          } else {
            document.getElementById('update').disabled = false;
            document.getElementById('update').src = update_button_orig;
          }
          if ( textarea.value.length > charLimit ) {
              textarea.value = textarea.value.substring(0,charLimit);
          } else {
              document.getElementById(el).innerHTML = charLimit - textarea.value.length;
          }
  }

  YAHOO.util.Cookie.set("gamePath", document.location.href, {
        path: "/",           //all pages
        domain: "atlantafalcons.com"   
    });

  YAHOO.util.Connect.transport('/connection.swf');

  YAHOO.util.Connect.xdrReadyEvent.subscribe(function() {
    init();
  });


  return {
      limitText: function(textarea,charLimit,el) {
          limitText(textarea,charLimit,el);
      },
      add_tag: function(topic) {
          var body = document.getElementById('chat-body')
          body.value += ' ' + topic + ' ';
          body.focus();
          this.limitText(document.getElementById('chat-body'), 120,'char-remain');
      },
      showSettings: function() {
          document.getElementById('scroll-speed').value = scrollSpeed;
          document.getElementById('default-tags').value = defaultTags;
          document.getElementById('tweet-center').style.display='none';
          document.getElementById('faq').style.display='none';
          document.getElementById('settings').style.display='block';
          Metrics.TrackPage('life:forums:falcons pulse:settings');
          Metrics.TrackGooglePage('/settings/');
      },
      showFAQ: function() {
          document.getElementById('tweet-center').style.display='none';
          document.getElementById('settings').style.display='none';
          document.getElementById('faq').style.display='block';
          Metrics.TrackPage('life:forums:falcons pulse:faq');
          Metrics.TrackGooglePage('/faq/');
      },
      checkspeed: function(obj) {
        if (obj.value > 60 || obj.value < 3 ) {
          obj.value = scrollSpeed;
          alert('Value must be between 3 and 60');
        }
      }
  }

}();
});
function toggle_tags(tag) {
    var mynode = document.getElementById(tag);
    var ul = YAHOO.util.Selector.query('#' + tag + ' ul'); 
    if ( mynode.className == 'closed' ) {
      mynode.className = "opened";
      ul[0].style.display="block";
    } else {
      mynode.className = "closed";
      ul[0].style.display="none";
    }
    
}
