var id = 0;
var counter = 0;
var searchedConversations = [];
var conversations = [];
var shouldGetTweet = 0;
var conversationCounter = 0;
function getId()
{
	return "conversation_" + id++;
}

$(function()
{
//	setInterval(getTweets , 1000);
getTweets();

	$("#aboutatstream").click(function()
	{
		$("#about").fadeIn(1500);
	
		return false;	
	});
	$("#return").click(function()
	{
		$("#about").fadeOut(1500);
		return false;
	});
	$('#tbsearch').focus(function()
	{
		if ($("#tbsearch").val() == 'search tweets')
			$("#tbsearch").val('');
	});
	$('#tbsearch').blur(function()
	{
		if ($("#tbsearch").val() != '')
			return false;

		$("#tbsearch").val('search tweets');
		return false;
	});
    $('#searchform').bind('submit', function() 
	{
		PostSearch();
        $("#tbsearch").val('');
		return false;
		
	});
});
function divMe()
{
	GenerateDivs(rand(1,23));	
}
function PostSearch()
{
	if ($("#tbsearch").val().length == 0)
		return false;
	
	if (searchedConversations.contains($("#tbsearch").val()))
		return false;
	
	searchedConversations.push($("#tbsearch").val());
	
	$.post("/add_conversation.php" , {query : $("#tbsearch").val() } ,
				function(data) 
				{
				
				}
				,"json"
				);
	
		getTweets();
		return false;
	

}
function LoadListeners(div , associatedWith)
{
	div.mouseover(function(e)
	{
		$("."+associatedWith).addClass("highlighted");

		if (! $(this).hasClass("selected"))
			$(this).addClass("selected");

	}
	).mouseout(function(e)
	{
		var associatedWith = this.className.split(" ");
		$("."+associatedWith).removeClass("highlighted");
		
		$(this).removeClass("selected");

	});

}
function GenerateDivs(numberOfDivs)
{
	var rawText = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nullam tincidunt justo lacinia erat. Curabitur faucibus lobortis lacus. Mauris consequat mi at sapien. Aliquam erat volutpat. Duis elementum, diam vel iaculis placerat, dolor massa mollis sem, non bibendum ligula pede non nulla. Nam volutpat, massa eu facilisis ultrices, leo sapien pretium ante, porta volutpat justo nibh eu urna. Nam vulputate mi ut lectus. Mauris vel enim ut tortor ornare facilisis. Sed magna mauris, dapibus in, suscipit nec, elementum ac, velit. Sed euismod imperdiet justo. Donec blandit, pede non euismod feugiat, velit sapien aliquam ante, vel placerat ipsum nunc eu lacus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Pellentesque lacinia, tellus eget porttitor congue, tortor turpis varius leo, et ullamcorper sem neque nec ipsum. Quisque erat velit, hendrerit ac, blandit a, iaculis at, nulla. Sed aliquet euismod est. Donec dolor velit, lacinia eu, egestas nec, sagittis eget, diam. Mauris metus massa, dapibus a, lacinia id, faucibus sed, arcu. Aenean condimentum auctor lorem. Sed eget mauris non elit dapibus ornare. Suspendisse dapibus volutpat lectus.".split(" ");

	
	for (i = 0; i < numberOfDivs; i++)
	{
		var text = rawText[rand(0 , (rawText.length - 1))];
		var associatedWith = rawText[rand((rawText.length - 10), (rawText.length - 1))];
	
		NewDiv(text , associatedWith);	
	}
	
}
function getTweets()
{
	$.getJSON("/get_conversations.php" , 
				function(data) 
				{
					for(var i = 0; i < data.length; i++)
					{
						conversations.push([data[i].user1 + data[i].user2, data[i].messages]);

					}
					conversationCounter++;
					DrawConversation(conversationCounter);
					DrawConversation(conversationCounter);
					DrawConversation(conversationCounter);
				
				});


}
function DrawConversation(conversationId)
{
	c = conversations.pop();
	var words = c[1].split(" ");
	var associatedWith = c[0];
	var wordIndex = 0;
	
	var wordInterval = setInterval ( function()
	{
		if (conversationId < conversationCounter)
			return;
	
		if ( (words.length - 1) ==  wordIndex)
		{
			clearInterval(wordInterval);
			
			ShouldIGetMoreTweets();
		}
		else
		{
		
			var w = words[wordIndex];
			if (w == "<span")
			{
				wordIndex++;
				w += " " + words[wordIndex];
			}
			wordIndex++;
			NewDiv(w, associatedWith);
		}
			

	} ,  700);
	


}
function ShouldIGetMoreTweets()
{
	if (shouldGetTweet > 2)
	{
		getTweets();
		shouldGetTweet = 0;
	}	
	else
		shouldGetTweet++;
}
function NewDiv(text , associatedWith)
{
	var fontSize = lowerWeightedRand(10 , 30);
	var id = getId();
	var newDiv = $(GenerateDivHtml( id ,text, associatedWith ,  fontSize ));

	
	
	newDiv.animate(
		 {left: "-300px" } 
		,{complete : function()
					{
						$(this).remove();
					}
		,duration: (300000 / fontSize)
		,easing : "linear" 
	});
	
	$("#scroller").prepend(newDiv);
	
	
	LoadListeners(newDiv , associatedWith);	
}


function GenerateDivHtml(id , text , associatedWith , fontSize)
{
	var top = rand(0, 500);
	return '<div id ="'+id+'" style="top:'+ top +'px;left: 1200px;font-size:'+fontSize+'px;" class="'+associatedWith+' word">'+text+'</div>';
	
}			
function lowerWeightedRand(l , u)
{
	var r =Math.random();
	return Math.floor(( (r*r) * (u-l+1))+l);
}
function rand(l,u)
{
	return Math.floor((Math.random() * (u-l+1))+l);
}
if (!Array.prototype.contains){
    Array.prototype.contains = function(obj){
    var len = this.length;
    for (var i = 0; i < len; i++){
      if(this[i]===obj){return true;}
    }
    return false;
  };
}

