/***************** Twitter Search & Chat ****************************/

var TDATA_INTERVAL=20000;
var TWEETS_PER_PAGE = 100;

var tdata = new Array();

function updateLiveSearch(params, immediate)
{
	

    if(!tdata[params])
    {
        tdata[params] = new Object();
        tdata[params].tweets = new Array();
        tdata[params].lastDisplayed = 0;
        tdata[params].displayTimer = 0;
        tdata[params].dataSinceId = 0;
    }
    
    var list = $(params);
    
	if( ($('.active',list).html()=='yes') || ($('.active',list).html()=='archive' && $('.max_time',list).html()==""))
	{
	//show loading animation
	$(".loading_img", list).css('visibility', 'visible');
    var url='/search.php?match=' + $('.match', list).html() + '&team=' + $('.team_id', list).html() + '&max_time=' + $('.max_time', list).html() + "&init=" + (immediate? "true":"false");
    var tweetsDiv=$('.live_tweets', list);
	
	var sinceId = tdata[params].dataSinceId;
    clearInterval(tdata[params].displayTimer);

	$.get(url,null,function(data){
		//hide the animation
		$(".loading_img", list).css('visibility', 'hidden');
	    var cnt = 0;
		var tweets = data.results.reverse();
		if (tweets.length > 0)
		{
			for(var i in tweets)
			{
				var tweet = tweets[i];
				if (!tweet)
					continue;
				//tweetsDiv.prepend(tweet);
				if(filterTweets(tweet))
				{
					tdata[params].tweets.push(tweet);        
				}

				//console.log(tweet.text);    
				cnt++;
			} 
			$('.max_time', list).html(data.maxtime);
			if(!immediate)
			{
				//Set display polling rate            
				var rate = Math.floor(TDATA_INTERVAL/cnt);            
				tdata[params].displayTimer = setInterval("displayNextTweet('" + params + "')", rate);
			}
			else
			{
				tweetsDiv.html('');        
				var count = tdata[params].tweets.length;            
				for(var i = 0; i < count; i++)
				{
					displayNextTweet(params);
				}
			}
		}
        
        //Schedule next data pull        
        setTimeout("updateLiveSearch('" + params + "', false)", TDATA_INTERVAL);

    }, "json");
	}
}

function filterTweets(tweet)
{
   /* for(var i in abuse_list)
    {
        var word = abuse_list[i];
        var pat = new RegExp('\\b' + word, 'gi');
        if(pat.test(tweet.text))
        {
            return false;
        }
    
    }
    */
    return true;

}

function replyToTweet()
{
    var name = $(this).html();
    
    $('#chat_form .status').val($('#chat_form .status').val() + '@' + name);
    $('#chat_form .status').focus();

    updateCounter();
    
    return false;

}

function displayNextTweet(params)
{
    var list = $(params);
    var tweetsDiv=$('.live_tweets', list);

    var data=tdata[params];
    
    var next = false;
    
    var tweet = data.tweets.shift();
    
    var id = tweetsDiv.attr('id');

    //Out of data?
    if(tweet == undefined || tweet.created_at == undefined)
    {
        //console.log(params + ': out of tweets');
        clearInterval(tdata[params].displayTimer);
        return;
    }
    var time = new Date(tweet.created_at);

    var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
    var month = months[time.getMonth()];
    var ampm = 'am';
    var hours = time.getHours();
 
    if(hours > 12)
    {
        hours = hours - 12;
        ampm = 'pm';
    }
    if(hours == 0)
    {
        hours = 12;
    }

	
  /* Commenting the old design
    var elem = $('<div class="tweet"><a class="name" href="http://twitter.com/' + tweet.from_user + '" target="_blank">' + 
		tweet.from_user + ': </a><span class="data">' + 
		htmlizeTweet(tweet.text) + '</span><br /><span class="time">'  + month + ' ' + 
		time.getDate() + ', ' + time.getFullYear() + ' ' + hours + ':' + ((time.getMinutes()<10)? "0":"") + time.getMinutes()  + ampm + '</span></div>');
 */

 /* For new design */
    var elem = $('<tr class="tweet_container"> <td align="left" style="word-wrap: break-word"> <a class="name" href="http://twitter.com/' + tweet.from_user + '" target="_blank"><img align="left" src="' + tweet.image + '" width="48px" height="48px" /></a><span style="color:#03519f; font-size:14px"> <strong><a class="name" href="http://twitter.com/' + tweet.from_user + '" target="_blank">' + tweet.from_user + '</a></strong></span> ' +
					'<span style="color:#000000; font-size:11px" > ' + htmlizeTweet(tweet.text) + '</span> '+
					'<br /><span class="time">' + 
					
					(isAdmin? ('<a href="#" onclick="remove(this, \'' + tweet.Id + '\');return false;">Remove</a> | '):'') + 
					
					'<a href="http://twitter.com/' + tweet.from_user + '/statuses/' + tweet.Id + '">'  + hours + ':' + ((time.getMinutes()<10)? "0":"") + time.getMinutes()  + ampm + ' on ' + month + ' ' + 
					time.getDate() + ', ' + time.getFullYear() + 
					'</a></span></td></tr> <tr><td align="left" background="/img/crictwits_dotbg.gif"><img src="/img/crictwits_trans.gif" width="1" height="10" /></td></tr>');
 

	//var elem = $(tweet);
            
    tweetsDiv.prepend(elem);
    
	try
	{
		elem.effect('highlight');	
	}
	catch (e)
	{
	}
    
    //remove the last entry, 
	if ($(".tweet", tweetsDiv).length > TWEETS_PER_PAGE)
	{
		$("div:last-child", tweetsDiv).remove();
	}
    if(id)
    {
        //console.log( 'Scroll: ' + id);
        var div = document.getElementById(id);
//        div.scrollTop = div.scrollHeight;
        div.scrollTop = '0px';
        //document.getElementById(id).scrollTop=999999;//document.getElementById(id).scrollHeight;
        //document.getElementById(id).scrollIntoView();
    }
    else
    {
        //console.log( 'No ID' );
    }

}

function htmlizeTweet(text)
{
	if (text)
	{
		text = text.replace(/(http:\/\/[a-z0-9.-?_&%-]*)/ig,'<a href="$&" target="_blank">$&</a>');
		text = text.replace(/@([a-z0-9.?&%_-]*)/ig,'<a href="http://twitter.com/$1" target="_blank">$&</a>')
		text = text.replace(/#([a-z0-9.?&%_-]*)/ig,'<a href="http://search.twitter.com/search?q=%23$1" target="_blank">$&</a>')
	}
	else
		text = "";
    return text;
}


function postTweet()
{
    var status = $($('.tag', this)[0]).html() + ' ' + $($('.status', this)[0]).val();
    
    var form = this;
    
    var pageName = $('#game_post_name').val();
    
    $('#chat_submit_button').hide();
    
    $('#chat_loading_button').show();
    
    var data={
        status: status,
        text:status,
		match:$("#match_id").val(),
		team:$("input[@name='team']:checked").val()
    };

/*
    var params = $($('.column', form)[0]).val();

    tdata[params].tweets.unshift(data);
    
    displayNextTweet(params);
*/

    pageTracker._trackEvent("Livegames", "Post", pageName);

    
    $.post('/tweet.php', data, function (result, statusText) {

        switch(result.statusCode)
        {
            case 200:
				if (result.error)
					alert(result.error);
				else
				{
					//Successful tweet
					var params = $($('.column', form)[0]).val();
					result.response.from_user = result.response.user.screen_name;
					tdata[params].tweets.unshift(result.response);
					$($('.status', form)[0]).val('');
					$($('.status', form)[0]).focus();
									
					displayNextTweet(params);
				}
            break;
            case 401:
            
                alert( "Sorry, but Twitter wasn't able to authenticate you. Please log in again and retry your post." );
                removeCookie();
                window.location = "/login.php";
            break;
            default:
            break;
        }
        $('#chat_loading_button').hide();
        $('#chat_submit_button').show();
        
    }, 'json');
    
    return false;    

}

function remove(anchor, status_id){
	parent = $(anchor).parent();
	$(anchor).remove();
	parent.prepend('<span>Removing...</span>');
	$.post("/moderate.php",{id:status_id},function(data){
		$(parent).children(":first").remove();
		if (data.error)
		{
			parent.prepend(data.error);
		}
		else
		{
			parent.prepend('Removed');			
		}
	}, "json");
}