var alertTimerId;
var queue;
var users;
var stopped=false;
var identFinished=true;
var sort='network';
var limit=20;
var query="";
var page=1;
var whatPage=1;
var whatSaid=new Array();
var profile="";

function submitHashtag(){
	var tag=$("#hashtag").val();
	tag=tag.replace(/\s+/g, "+");

	if(tag=="type a hashtag and click search..."){
		alert("Please, enter a hashtag");
	}else{
		if(tag.charAt(0)=="#"){
			window.location="/hashtag/"+tag.replace("#", "");
		}else if(tag.charAt(0)=="\"" && tag.charAt(tag.length-1)=="\""){
			window.location="/exact/"+tag.replace(/\"/g, "");
		}else if(tag.charAt(0)=="@"){
			window.location="/"+tag;
		}else if(tag.charAt(2)=="\"" || tag.charAt(tag.length-1)==")" || tag.charAt(tag.length-1)=="("){
			
			window.location="index.php?hashtag="+tag;
			
		}else{
			tag=tag.replace("#", "");
			window.location="/"+tag;
		}
	}
}

function validateSubmitFeedback(){

	if($("#feedback").val()==""){
		alert("Please, enter your feedback.");
		return false;
	}
	return true;
	
}

function validateSubmit(){

	if($("#twitterId").val()=="" || $("#reason").val()==""){
		alert("Please, fill twitter id and reason.");
		return false;
	}
	return true;
	
}

function replaceLinks(textData) {
	var links
	links = textData.match(/(https:\/\/|http:\/\/|ftp:\/\/|www.)([^\s]*)/gi );
	for(x in links){
		textData=textData.replace(links[x],"<a href='"+links[x]+"' target='_blank'>"+links[x]+"</a>");
	}
	return textData;
}

function tweetOut(data){

	var word=data;
	//alert(data);
	data=data.replace(" ","%2B");
	//alert(data);
	if($("#type").val()=="hashtag"){
		word="#"+word;
	}

	var lnk="Check out the "+word+" party on http://hashparty.com/";
	var text="http://twitter.com/home/?status=";
	if($("#type").val()=="hashtag"){
		lnk=lnk+"hashtag/";
	}
	//lnk=lnk+data;
	text=text+urlencode(lnk)+data;
	window.open(text, '_blank');
}

function reTweet(data){
	var text="http://twitter.com/home/?status="+urlencode(data);
	window.open(text, '_blank');
}


function generateProfile(twitteruser){

	ident.useInwardEdges = true;
	$(document).bind('ident:update', renderProfileGenerated);
	ident.search('http://twitter.com/'+twitteruser);	

}

$(document).ready(function () {
	initButtons();

	ident.useInwardEdges = true;
	//ident.useInwardEdges = false;
	ident.iconPath = "/images/icons/";
	ident.addPrimaryURL = true;
	webAddress.elt = "#webaddress";
	webAddress.startAnimate();

	$("#submit").click(function () {
		submitHashtag();
	});
	
	$("#hashtag").keyup(function(e) {
		if(e.keyCode == 13) {
			submitHashtag();
		}
	}); 
	
	$("#stop").click(function () {
		stopped=true;
		
		$("#submitButtons").show();
				$("#stopButton").hide();
				//$("#ajax-loader").hide();
		
	});
	$("#hashtag").mousedown(function () {
		if($(this).val()=="type a hashtag and click search...")$(this).val("");
		$(this).focus();
	});
	
	$("#sort").hover(
	  function () {
		$("#sortSelect").show();
	  },
	  function () {
		$("#sortSelect").hide();
	  }
	);
	
	if($('.edit_area').size()>0){
		 
		  $('.edit_area').editable('/ajax/saveDescription.php', { 
			 type      : 'text',
			 cancel    : 'Cancel',
			 submit    : 'OK',
			 indicator : 'Saving...',
			 tooltip   : 'Describe this',
			 data: function(value, settings) {
				  //var retval = value.replace(/<br[\s\/]?>/gi, '\n');
				  var retval = value;
				  return retval;
				}

		 });
	
	 }
	
	
	
});

function searchProfile(p){
	profile=p;
	//initializeGmaps();
	$("<div class='profile' id='"+profile+"_profile'><div id='"+profile+"_twitter_profile'></div><div class='identList' id='"+profile+"'></div></div>").appendTo("#col"+getShortestColIndex()).fadeIn();
	
	/*
	
	$.get("/ajax/getTwitInfo.php?user="+profile, function(data){
		$("#"+profile+"_twitter_profile").html(data);
		//var location=$(".location","#"+profile+"_twitter_profile").html();
		//if(location!=""){
		//	addLocation(location);
		//}
	});	
	
	*/
	
	//getIdentity(profile);
	
	loadWhatPersonSaid(1);
	loadTrendyHashTags();
}

function incrementAPIcalls(){
	$.get("/ajax/trackAPIcalls.php");
}

function loadWhatSaid(newPage){
	
	$("#whatSaid").html("<img src='/images/ajax-loader.gif' />");
	whatPage=newPage;
	whatSaid=new Array();
	incrementAPIcalls();
	$.getJSON("http://search.twitter.com/search.json?q="+encoded+query+"&rpp="+limit+"&callback=?&page="+whatPage,
		function(data){
			$.each(data.results, function(i,item){
				whatSaid.push(item);
			});
			renderWhatSaid();
		}
	);	
}

function loadWhatPersonSaid(newPage){
	
	$("#whatSaid").html("<img src='/images/ajax-loader.gif' />");
	whatPage=newPage;
	whatSaid=new Array();
	incrementAPIcalls();
	$.getJSON("http://www.twitter.com/statuses/user_timeline/"+profile+".json?&count="+limit+"&callback=?&page="+whatPage,
		function(data){
			$.each(data, function(i,item){
				whatSaid.push(item);
			});
			renderWhatPersonSaid();
		}
	);	
}
 
function prepareNewSearch(){
	stopped=false;
	queue=new Array();
	users=new Array();
	//$("#submitButton").hide();
	//$("#stopButton").show();
	//initializeGmaps();
	identFinished=false;
}

function setNewSort(newSort,elem){

	$("#sortSelect").append("<a href='#' onclick=\"setNewSort('"+sort+"',this);return false;\">"+$("span>a","#sort").html()+"</a>");
	$("span","#sort").html("<a href='#'>"+$(elem).html()+"</a>");
	$(elem).remove();
	sort=newSort;
	if(identFinished){
		sortUsers();
	}
}

function sortUsers(){

	if(sort=="network")users.sort(sortByNetworks);
	else if(sort=="date")users.sort(sortByDate);
	else users.sort(sortByFollowers);
	
	$("#col2_back").html($("#col2").html());
	$("#col3_back").html($("#col3").html());
	$("#col2").html("&nbsp;");
	$("#col3").html("&nbsp;");
	
	for(x in users){		
		var user=users[x];
		$("#"+user.from_user+"_profile").appendTo("#col"+getShortestColIndex()).fadeIn();
	}
	
	
}



function sortByNetworks(a, b){
	var user1=a;
	var user2=b;
	if(a.verified>b.verified)return -1;
	else if(a.verified<b.verified)return 1;
	else{
		var height1=$("#"+user1.from_user).height();
		var height2=$("#"+user2.from_user).height();
		if(height1>height2)return -1;
		else if(height1<height2) return 1;
		else return 0;
	}
}

function sortByDate(a, b){
	var user1=a;
	var user2=b;
	
	if(a.verified>b.verified)return -1;
	else if(a.verified<b.verified)return 1;
	else{
	
		var time_value1=a.created_at;
		var values1 = time_value1.split(" ");
		var parsed_date1 = Date.parse(values1[1] + " " + values1[2] + ", " + values1[3] + " " + values1[4]);
		var date1 = new Date(parsed_date1);
		
		var time_value2=b.created_at;
		var values2 = time_value2.split(" ");
		var parsed_date2 = Date.parse(values2[1] + " " + values2[2] + ", " + values2[3] + " " + values2[4]);
		var date2 = new Date(parsed_date2);
		
		if(date1>date2)return -1;
		else if(date1<date2) return 1;
		else return 0;
	
	}
}

function sortByFollowers(a, b){
	var user1=a;
	var user2=b;
	
	if(a.verified>b.verified)return -1;
	else if(a.verified<b.verified)return 1;
	else{
	
		var followers1=parseInt($(".followers","#"+user1.from_user+"_twitter_profile").html());
		var followers2=parseInt($(".followers","#"+user2.from_user+"_twitter_profile").html());
		if(isNaN(followers1))followers1=0;
		if(isNaN(followers2))followers2=0;
		if(followers1>followers2)return -1;
		else if(followers1<followers2) return 1;
		else return 0;
	
	}
}

var exportData=new Array();



function renderWhatSaid(){
	//$("#sweetLinks").html("");
	$("#whatSaid").html("");
	
	for(x in whatSaid){
		var user=whatSaid[x];
		
		
		
		var links=extractLinks(user.text);
		user.links=new Array();
		if(links!=null){
			for(x in links){
				user.links.push(links[x]);
				$("<a target='_blank' href='"+links[x]+"'>"+links[x]+"</a><br />").appendTo("#sweetLinks");		
			}
		}
		addExportItem(user);
	
		
		var retweetData=user.text;
		if(retweetData.charAt(0)=="R" && retweetData.charAt(1)=="T")retweetData=retweetData.substr(2);
		retweetData="RT @"+user.from_user+" "+retweetData;
		retweetData+=" http://hashparty.com/";
		if($("#type").val()=="hashtag")retweetData+="hashtag/";
		retweetData+=query;
		retweetData=retweetData.replace(/'/g, "`")
		
		user.text=replaceLinks(user.text);

		if($("#type").val()=="exact")user.text=highlightSearchTerms(user.text,queryWord,true);
		else user.text=highlightSearchTerms(user.text,queryWord,false);
		
		
		
		$("<div class='liveWhatSaid'><img src='"+user.profile_image_url+"' width='47px' height='47px' align='left' style='margin-right:5px;'><a target='_blank' href='http://twitter.com/"+user.from_user+"'>"+user.from_user+"</a><br /><i>("+relative_time(user.created_at)+")</i><br /><span class='tweetText'>"+user.text+"</span><div class='retweet'><a href='#' onclick=\"reTweet('"+retweetData+"');return false;\">retweet</a></div></div>").appendTo("#whatSaid");	
		
	}
	
	if(whatSaid.length>0){
	
		
		var newer=whatPage-1;
		var older=whatPage+1;
		
		if(whatPage>1){
			
			if(whatSaid.length>limit-1){
				$("<div class='center'><a href='#' onclick='loadWhatSaid("+newer+");return false;'>Newer</a> &bull; Page "+whatPage+" &bull; <a href='#' onclick='loadWhatSaid("+older+");return false;'>Older</a></div>").prependTo("#whatSaid");
				$("<div class='center'><a href='#' onclick='loadWhatSaid("+newer+");return false;'>Newer</a> &bull; Page "+whatPage+" &bull; <a href='#' onclick='loadWhatSaid("+older+");return false;'>Older</a></div>").appendTo("#whatSaid");
			}else{
				$("<div class='center'><a href='#' onclick='loadWhatSaid("+newer+");return false;'>Newer</a> &bull; Page "+whatPage+"</div>").prependTo("#whatSaid");
				$("<div class='center'><a href='#' onclick='loadWhatSaid("+newer+");return false;'>Newer</a> &bull; Page "+whatPage+"</div>").appendTo("#whatSaid");
			}
			
		}else{
			
			if(whatSaid.length>limit-1){
			
				$("<div class='center'>Page "+whatPage+" &bull; <a href='#' onclick='loadWhatSaid("+older+");return false;'>Older</a></div>").prependTo("#whatSaid");
				$("<div class='center'>Page "+whatPage+" &bull; <a href='#' onclick='loadWhatSaid("+older+");return false;'>Older</a></div>").appendTo("#whatSaid");
				
			}
		
		}
	
	}else{
	
		$("<div class='center'>No results found!</div>").prependTo("#whatSaid");
		
		//identFinished=true;
		//		$("#submitButtons").show();
		//		$("#stopButton").hide();
		//		$("#hashtag").removeAttr("disabled");
				//$("#ajax-loader").hide();
		
	}
	renderWhoSaid();
}

function renderWhoSaid(){
	$("#col"+getShortestColIndex()).html("&nbsp;");
	var items=new Array();
	for(x in whatSaid){
		var user=whatSaid[x];
		
		if(user.from_user==undefined)user.from_user=profile;
		
		
		if($.inArray(user.from_user,items)==-1){
			$("<div class='profile' id='"+user.from_user+"_profile'><div id='"+user.from_user+"_twitter_profile'>"+user.from_user+"  <img src='/images/small-loader.gif'  class='tempLoader' /></div><div class='identList' id='"+user.from_user+"'><a href='#' onclick='loadProfile(\""+user.from_user+"\");return false;'>load profile</a> <img src='/images/small-loader.gif' class='tempLoader' /></div></div>").appendTo("#col"+getShortestColIndex()).fadeIn();
			items.push(user.from_user);
		/*
		$.get("/ajax/isVerified.php?twitterid="+user.from_user, function(data){
			
			
				var data =eval("(" + data + ")");
				user.verified=parseInt(data.isVerified);
				//users.push(user);
				if(user.verified==1){
					$("<div class='profile verified' id='"+user.from_user+"_profile'><div class='verifiedIcon'><img src='/images/star.png' />verified account</div><div id='"+user.from_user+"_twitter_profile'>"+user.from_user+"</div><div class='identList' id='"+user.from_user+"'></div></div>").appendTo("#col"+getShortestColIndex()).fadeIn();
				}else{
					$("<div class='profile' id='"+user.from_user+"_profile'><div id='"+user.from_user+"_twitter_profile'>"+user.from_user+"</div><div class='identList' id='"+user.from_user+"'></div></div>").appendTo("#col"+getShortestColIndex()).fadeIn();
				}

		});	
	*/
		}
	
	}
}

function loadProfile(user){

	$("#"+user+"_profile .tempLoader").show();

	$.get("/ajax/isVerified.php?twitterid="+user, function(data){
		
		var data =eval("(" + data + ")");
		
		verified=parseInt(data.isVerified);
		//users.push(user);
		
		if(verified==1){
			//$("<div class='profile verified' id='"+user+"_profile'><div class='verifiedIcon'><img src='/images/star.png' />verified account</div><div id='"+user+"_twitter_profile'></div><div class='identList' id='"+user+"'></div></div>").appendTo("#col"+getShortestColIndex()).fadeIn();
		}else{
			//$("<div class='profile' id='"+user+"_profile'><div id='"+user+"_twitter_profile'></div><div class='identList' id='"+user+"'></div></div>").appendTo("#col"+getShortestColIndex()).fadeIn();
		}
		
		var extra=""
		if(isHashtag)extra="&hashtag="+query;
		$.get("/ajax/getTwitInfo.php?user="+user+extra, function(data){
			$("#"+user+"_twitter_profile").html(data);
		});	
		if(verified==1){
			
			$("#"+user).parent().addClass("verified");
			$("#"+user).parent().prepend("<div class='verifiedIcon'><img src='/images/star.png' />verified account</div>");
			var ul = $('<ul class="profile-list"></ul>'); 
			
			$("#"+user).html(ul);
		
			for(x in data.networks){
				$('<li>'+data.networks[x].icon+' <span class="icon-label"><a target="_blank" onmouseup="updateClicks(\''+user+'\',\''+data.networks[x].name+'\')" href="' + data.networks[x].link  + '">' + data.networks[x].name + '</a></span> <span class="username">(' + data.networks[x].profile + ')</span></li>').appendTo(ul);
			}
		
		}else{
			getIdentity(user);
		}
	});	
	
	

}

var loadedOnce=false;

function renderWhatPersonSaid(){
	//$("#sweetLinks").html("");
	$("#whatSaid").html("");
	for(x in whatSaid){
		var item=whatSaid[x];
		var user=item.user;
		user.from_user=profile;
		user.text=item.text;
		user.created_at=item.created_at;

		user.text=replaceLinks(user.text);
		
		user.id=item.id;
		$("<div class='liveWhatSaid'><img src='"+user.profile_image_url+"' width='30px' height='30px' align='left' style='margin-right:5px;'><a target='_blank' href='http://twitter.com/"+user.from_user+"'>"+user.from_user+"</a><br /><i>("+relative_time2(user.created_at)+")</i><br />"+user.text+"</div>").appendTo("#whatSaid");
	
		var links=extractLinks(user.text);
		user.links=new Array();
		if(links!=null){
			for(x in links){
				user.links.push(links[x]);
				$("<a target='_blank' href='"+links[x]+"'>"+links[x]+"</a><br />").appendTo("#sweetLinks");		
			}
		}	

		addExportItem(user);		
	}
	if(whatSaid.length>0){
	
		
		var newer=whatPage-1;
		var older=whatPage+1;
		
		if(whatPage>1){
			
			if(whatSaid.length>limit-1){
				$("<div class='center'><a href='#' onclick='loadWhatPersonSaid("+newer+");return false;'>Newer</a> &bull; Page "+whatPage+" &bull; <a href='#' onclick='loadWhatPersonSaid("+older+");return false;'>Older</a></div>").prependTo("#whatSaid");
				$("<div class='center'><a href='#' onclick='loadWhatPersonSaid("+newer+");return false;'>Newer</a> &bull; Page "+whatPage+" &bull; <a href='#' onclick='loadWhatPersonSaid("+older+");return false;'>Older</a></div>").appendTo("#whatSaid");
			}else{
				$("<div class='center'><a href='#' onclick='loadWhatPersonSaid("+newer+");return false;'>Newer</a> &bull; Page "+whatPage+"</div>").prependTo("#whatSaid");
				$("<div class='center'><a href='#' onclick='loadWhatPersonSaid("+newer+");return false;'>Newer</a> &bull; Page "+whatPage+"</div>").appendTo("#whatSaid");
			}
			
		}else{
			
			if(whatSaid.length>limit-1){
			
				$("<div class='center'>Page "+whatPage+" &bull; <a href='#' onclick='loadWhatPersonSaid("+older+");return false;'>Older</a></div>").prependTo("#whatSaid");
				$("<div class='center'>Page "+whatPage+" &bull; <a href='#' onclick='loadWhatPersonSaid("+older+");return false;'>Older</a></div>").appendTo("#whatSaid");
				
			}
		
		}
	
	}else{
	
		$("<div class='center'>No results found!</div>").prependTo("#whatSaid");
		
		identFinished=true;
				$("#submitButtons").show();
				$("#stopButton").hide();
				$("#hashtag").removeAttr("disabled");
				//$("#ajax-loader").hide();
		
	}
	
	
	
	if(!loadedOnce)renderWhoSaid();
	loadedOnce=true;
	
}

var sweetLinks=new Array();

function extractLinks(textData){
	var links;
	var validLinks=new Array();
	links = textData.match(/(https:\/\/|http:\/\/|ftp:\/\/|www.)([^\s]*)/gi );
	for(x in links){
		var l=links[x].toString();
		//alert(l);
		//l=l;
		if(l.indexOf(" ")==-1 && l.indexOf("'")==-1 && l.indexOf("\"")==-1 && (l.indexOf("www.")!=-1 || l.indexOf("http://")!=-1)){
		//if(links[x].indexOf("'")==-1 && links[x].indexOf("\"")==-1 && (links[x].indexOf("www.")!=-1 || links[x].indexOf("http://")!=-1) ){
			if($.inArray(links[x],sweetLinks)==-1){
				validLinks.push(links[x]);
				sweetLinks.push(links[x]);
			}
		}
	}
	return validLinks;
}

var isHashtag=false;
var queryWord;
var encoded="";
function searchTwitter(){
	prepareNewSearch();
	//$("#ajax-loader").show();
	
	query=$("#hashtag").val();
	queryWord=query;
	queryWord=queryWord.replace(/\"/g, "");
	query=query.replace("#", "");
	
	
	
	if(query.indexOf("$")!=-1){
		isHashtag=false;
		encoded="%24";
		query=query.replace("$", "");
	/*}else if(query.indexOf("k-")!=-1){
		isHashtag=false;
		encoded="";
		query=query.replace("k-", "");*/
	}else if(query.indexOf(":)")!=-1 || query.indexOf(":(")!=-1){
		isHashtag=false;
	}

	if($("#type").val()=="hashtag"){
		isHashtag=true;
		encoded="%23";
	}
	
	
	incrementAPIcalls();
	//alert("http://search.twitter.com/search.json?q="+encoded+query+"&rpp="+limit+"&callback=?");
	
	//alert("http://search.twitter.com/search.json?q="+encoded+query+"&rpp="+limit+"&callback=?");
	
	$.getJSON("http://search.twitter.com/search.json?q="+encoded+query+"&rpp="+limit+"&callback=?",
		function(data){
			$.each(data.results, function(i,item){
				whatSaid.push(item);
				if(!alreadyInQueue(item)){
					queue.push(item);
				}
			});
			if(queue.length>0){
				//processNextUser();
				loadTrendyHashTags();

				if(isHashtag){
					$.post("/ajax/addRecent.php", { hashtag: query } );
				}

			}
			renderWhatSaid();
		}
	);
}


function searchMore(){
	
	$("#more").hide();

	page++;
	$("#hashtag").attr("disabled", "disabled");
	//$("#ajax-loader").show();
	
	$("#submitButton").hide();
	$("#stopButton").show();
	stopped=false;
	identFinished=false;
	incrementAPIcalls();
	//alert("http://search.twitter.com/search.json?q="+encoded+query+"&rpp="+limit+"&callback=?&page="+page);
	$.getJSON("http://search.twitter.com/search.json?q="+encoded+query+"&rpp="+limit+"&callback=?&page="+page,
		function(data){
			$.each(data.results, function(i,item){
				if(!alreadyInQueue(item) && !alreadyProcessed(item)){
					queue.push(item);
				}
			});
			if(queue.length>0){
				//processNextUser();				
			}else{
				$("#more").show();
			}
		}
	);

}	

function loadTrendyHashTags(){
	var trends=new Array();

	$.get("/ajax/getTrends.php?type=current", function(data){
		var items=data.split(","); 
		for(x in items){
			var trend=items[x];
			if($.inArray(trend,trends)==-1 && trend!=""){
				trends.push(trend);
				var hashtag=trend.substring(1,trend.length);
				$("#trendingHashtags_today").append("<a href='/hashtag/"+hashtag+"'>"+trend+"</a>&nbsp; ");
			}
		}	
	});
	$.get("/ajax/getTrends.php?type=daily", function(data){
		var items=data.split(","); 
		for(x in items){
			var trend=items[x];
			if($.inArray(trend,trends)==-1 && trend!=""){
				trends.push(trend);
				var hashtag=trend.substring(1,trend.length);
				$("#trendingHashtags_week").append("<a href='/hashtag/"+hashtag+"'>"+trend+"</a>&nbsp; ");
			}
		}	
	});
	$.get("/ajax/getTrends.php?type=weekly", function(data){
		var items=data.split(","); 
		for(x in items){
			var trend=items[x];
			if($.inArray(trend,trends)==-1 && trend!=""){
				trends.push(trend);
				var hashtag=trend.substring(1,trend.length);
				$("#trendingHashtags_month").append("<a href='/hashtag/"+hashtag+"'>"+trend+"</a>&nbsp; ");
			}
		}	
	});
}

function processNextUser(){
	var user=queue.shift();
	
	
	$.get("/ajax/isVerified.php?twitterid="+user.from_user, function(data){
		
		
		var data =eval("(" + data + ")");
		user.verified=parseInt(data.isVerified);
		users.push(user);
		if(user.verified==1){
			$("<div class='profile verified' id='"+user.from_user+"_profile'><div class='verifiedIcon'><img src='/images/star.png' />verified account</div><div id='"+user.from_user+"_twitter_profile'></div><div class='identList' id='"+user.from_user+"'></div></div>").appendTo("#col"+getShortestColIndex()).fadeIn();
		}else{
			$("<div class='profile' id='"+user.from_user+"_profile'><div id='"+user.from_user+"_twitter_profile'></div><div class='identList' id='"+user.from_user+"'></div></div>").appendTo("#col"+getShortestColIndex()).fadeIn();
		}
		
		var extra=""
		if(isHashtag)extra="&hashtag="+query;
		/*$.get("/ajax/getTwitInfo.php?user="+user.from_user+extra, function(data){
			$("#"+user.from_user+"_twitter_profile").html(data);
			//var location=$(".location","#"+user.from_user+"_twitter_profile").html();
			//if(location!=""){
			//	addLocation(location);
			//}
		});	
		if(user.verified==1){
			var ul = $('<ul class="profile-list"></ul>').appendTo("#"+user.from_user+""); 
		
			for(x in data.networks){
				$('<li>'+data.networks[x].icon+' <span class="icon-label"><a target="_blank" onmouseup="updateClicks(\''+user.from_user+'\',\''+data.networks[x].name+'\')" href="' + data.networks[x].link  + '">' + data.networks[x].name + '</a></span> <span class="username">(' + data.networks[x].profile + ')</span></li>').appendTo(ul);
			}
		
		}else{
			//getIdentity(user.from_user);
		}*/
	});	
}

function getIdentity(twitterid){
	ident.useInwardEdges = true;
	$(document).bind('ident:update', {twitterid: twitterid}, renderProfile);
	ident.search('http://twitter.com/'+twitterid);	
}



function updateClicks(twitterid,network){
		
	$.post("/ajax/addClick.php", { twitterid: twitterid,network: network } );
	
}

function renderProfile(e){
	var limit=25;
	var googleCount=0;
	$('#'+e.data.twitterid+'').html("");
	if(ident.identities.length > 0){
		var ul = $('<ul class="profile-list"></ul>').appendTo('#'+e.data.twitterid+''); 
		for (var x = 0; x < ident.identities.length; x++) {
			
			var hidden="";
			
			
			if(x>=limit)hidden="class=\"hiddenPart\"";
			
			var profileName;
			if(ident.identities[x].name != '')profileName=ident.identities[x].name;			
			else profileName=ident.identities[x].domain;
			
			if(profileName=="Google")googleCount++;
			
			if((googleCount<=1 && profileName=="Google") || profileName!="Google"){
			
			$('<li "'+hidden+'"><div class="icon ' + ident.identities[x].spriteClass +  '"></div> <span class="icon-label"><a target="_blank" onmouseup="updateClicks(\''+e.data.twitterid+'\',\''+profileName+'\')" href="' + ident.identities[x].profileUrl  + '">' + profileName + '</a></span> <span class="username">(' + ident.identities[x].username + ')</span></li>').appendTo(ul);
			
			}
			
		}
		if(x>=limit){
		
			$("<li><a href='#' onclick='$(\".hiddenPart\",\"#"+e.data.twitterid+"\").toggle();return false;'>see more...</a></li>").appendTo(ul); 
			
		}
	} 
	clearTimeout (alertTimerId);
	alertTimerId = setTimeout ("delayedStatusUpdate()", 500);
}
var users;
function renderProfileGenerated(e){
	$('#profile').html("");
	if(ident.identities.length > 0){
		var ul = $('<ul class="profile-list"></ul>').appendTo('#profile'); 
		for (var x = 0; x < ident.identities.length; x++) {
			
			var profileName;
			if(ident.identities[x].name != '')profileName=ident.identities[x].name;
			else profileName=ident.identities[x].domain;
			$('<li><div class="icon ' + ident.identities[x].spriteClass +  '"></div> <span class="icon-label"><a target="_blank"  href="' + ident.identities[x].profileUrl  + '">' + profileName + '</a></span> <span class="username">(' + ident.identities[x].username + ')</span></li>').appendTo(ul);
			
			var profile=ident.identities[x].profileUrl+"_--_"+profileName+"_--_"+ident.identities[x].username;
			
			$("<input type='hidden' name='profiles[]' value='"+profile+"' />").appendTo('#profile'); 
			
		}
	} 
	clearTimeout (alertTimerId);
	alertTimerId = setTimeout ("delayedStatusUpdateGenerated()", 500);
}

function getShortestColIndex(){
	//if($("#col3").height()<$("#col2").height())return 3;
	//else return 2;
	return 3;
}

function delayedStatusUpdateGenerated(){
	if(ident.isSearching()){
		
	}else{
		
		$("#autoForm").submit();
		
	}  
}

function delayedStatusUpdate(){
	if(ident.isSearching()){
		
	}else{
		
		if(profile==""){
		
			if(queue.length>0 && !stopped){
				//sortUsers();
				//processNextUser();
			}
			else {
				//sortUsers();
				identFinished=true;
				//$("#submitButtons").show();
				//$("#stopButton").hide();
				$("#hashtag").removeAttr("disabled");
				//$("#ajax-loader").hide();
				
				//if(!stopped)$("#more").show();
				
			}
		
		}
	}  
}




/*
 * This is the function that actually highlights a text string by
 * adding HTML tags before and after all occurrences of the search
 * term. You can pass your own tags if you'd like, or if the
 * highlightStartTag or highlightEndTag parameters are omitted or
 * are empty strings then the default <font> tags will be used.
 */
function doHighlight(bodyText, searchTerm, highlightStartTag, highlightEndTag) 
{
  // the highlightStartTag and highlightEndTag parameters are optional
  if ((!highlightStartTag) || (!highlightEndTag)) {
    highlightStartTag = "<font style='color:blue; background-color:yellow;'>";
    highlightEndTag = "</font>";
  }
  
  // find all occurences of the search term in the given text,
  // and add some "highlight" tags to them (we're not using a
  // regular expression search, because we want to filter out
  // matches that occur within HTML tags and script blocks, so
  // we have to do a little extra validation)
  var newText = "";
  var i = -1;
  var lcSearchTerm = searchTerm.toLowerCase();
  var lcBodyText = bodyText.toLowerCase();
    
  while (bodyText.length > 0) {
    i = lcBodyText.indexOf(lcSearchTerm, i+1);
    if (i < 0) {
      newText += bodyText;
      bodyText = "";
    } else {
      // skip anything inside an HTML tag
      if (bodyText.lastIndexOf(">", i) >= bodyText.lastIndexOf("<", i)) {
        // skip anything inside a <script> block
        if (lcBodyText.lastIndexOf("/script>", i) >= lcBodyText.lastIndexOf("<script", i)) {
          newText += bodyText.substring(0, i) + highlightStartTag + bodyText.substr(i, searchTerm.length) + highlightEndTag;
          bodyText = bodyText.substr(i + searchTerm.length);
          lcBodyText = bodyText.toLowerCase();
          i = -1;
        }
      }
    }
  }
  
  return newText;
}


/*
 * This is sort of a wrapper function to the doHighlight function.
 * It takes the searchText that you pass, optionally splits it into
 * separate words, and transforms the text on the current web page.
 * Only the "searchText" parameter is required; all other parameters
 * are optional and can be omitted.
 */
function highlightSearchTerms(text,searchText,treatAsPhrase)
{
  // if the treatAsPhrase parameter is true, then we should search for 
  // the entire phrase that was entered; otherwise, we will split the
  // search string so that each word is searched for and highlighted
  // individually
  //treatAsPhrase=false;
  if (treatAsPhrase) {
    searchArray = [searchText];
  } else {
    searchArray = searchText.split(" ");
  }
  
  
  var bodyText = text;
  for (var i = 0; i < searchArray.length; i++) {
    bodyText = doHighlight(bodyText, searchArray[i], "<b>", "</b>");
  }
  
  return bodyText;
 
}


/*
 * Date Format 1.2.3
 * (c) 2007-2009 Steven Levithan <stevenlevithan.com>
 * MIT license
 *
 * Includes enhancements by Scott Trenda <scott.trenda.net>
 * and Kris Kowal <cixar.com/~kris.kowal/>
 *
 * Accepts a date, a mask, or a date and a mask.
 * Returns a formatted version of the given date.
 * The date defaults to the current date/time.
 * The mask defaults to dateFormat.masks.default.
 */

var dateFormat = function () {
	var	token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,
		timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,
		timezoneClip = /[^-+\dA-Z]/g,
		pad = function (val, len) {
			val = String(val);
			len = len || 2;
			while (val.length < len) val = "0" + val;
			return val;
		};

	// Regexes and supporting functions are cached through closure
	return function (date, mask, utc) {
		var dF = dateFormat;

		// You can't provide utc if you skip other args (use the "UTC:" mask prefix)
		if (arguments.length == 1 && Object.prototype.toString.call(date) == "[object String]" && !/\d/.test(date)) {
			mask = date;
			date = undefined;
		}

		// Passing date through Date applies Date.parse, if necessary
		date = date ? new Date(date) : new Date;
		if (isNaN(date)) throw SyntaxError("invalid date");

		mask = String(dF.masks[mask] || mask || dF.masks["default"]);

		// Allow setting the utc argument via the mask
		if (mask.slice(0, 4) == "UTC:") {
			mask = mask.slice(4);
			utc = true;
		}

		var	_ = utc ? "getUTC" : "get",
			d = date[_ + "Date"](),
			D = date[_ + "Day"](),
			m = date[_ + "Month"](),
			y = date[_ + "FullYear"](),
			H = date[_ + "Hours"](),
			M = date[_ + "Minutes"](),
			s = date[_ + "Seconds"](),
			L = date[_ + "Milliseconds"](),
			o = utc ? 0 : date.getTimezoneOffset(),
			flags = {
				d:    d,
				dd:   pad(d),
				ddd:  dF.i18n.dayNames[D],
				dddd: dF.i18n.dayNames[D + 7],
				m:    m + 1,
				mm:   pad(m + 1),
				mmm:  dF.i18n.monthNames[m],
				mmmm: dF.i18n.monthNames[m + 12],
				yy:   String(y).slice(2),
				yyyy: y,
				h:    H % 12 || 12,
				hh:   pad(H % 12 || 12),
				H:    H,
				HH:   pad(H),
				M:    M,
				MM:   pad(M),
				s:    s,
				ss:   pad(s),
				l:    pad(L, 3),
				L:    pad(L > 99 ? Math.round(L / 10) : L),
				t:    H < 12 ? "a"  : "p",
				tt:   H < 12 ? "am" : "pm",
				T:    H < 12 ? "A"  : "P",
				TT:   H < 12 ? "AM" : "PM",
				Z:    utc ? "UTC" : (String(date).match(timezone) || [""]).pop().replace(timezoneClip, ""),
				o:    (o > 0 ? "-" : "+") + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4),
				S:    ["th", "st", "nd", "rd"][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10]
			};

		return mask.replace(token, function ($0) {
			return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1);
		});
	};
}();

// Some common format strings
dateFormat.masks = {
	"default":      "ddd mmm dd yyyy HH:MM:ss",
	shortDate:      "m/d/yy",
	mediumDate:     "mmm d, yyyy",
	longDate:       "mmmm d, yyyy",
	fullDate:       "dddd, mmmm d, yyyy",
	shortTime:      "h:MM TT",
	mediumTime:     "h:MM:ss TT",
	longTime:       "h:MM:ss TT Z",
	isoDate:        "yyyy-mm-dd",
	isoTime:        "HH:MM:ss",
	isoDateTime:    "yyyy-mm-dd'T'HH:MM:ss",
	isoUtcDateTime: "UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"
};

// Internationalization strings
dateFormat.i18n = {
	dayNames: [
		"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat",
		"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
	],
	monthNames: [
		"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec",
		"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
	]
};

// For convenience...
Date.prototype.format = function (mask, utc) {
	return dateFormat(this, mask, utc);
};


function exportCSV(){

	var exportingData="";
	var links="";
	for(x in exportData){
		var user=exportData[x];	
		
		for(y in user.links){
			links+=user.links[y]+",";
		}
		user.text=user.text.replace("<b>","");
		user.text=user.text.replace("</b>","");
		user.text=user.text.replace("\n","");
		user.text=user.text.replace("\r","");
		user.created_at=dateFormat(user.created_at,"shortDate");
		exportingData+="\""+user.created_at+"\","+"\""+user.text+"\","+"\"@"+user.from_user+"\","+"\""+links+"\""+"\n";
	}
	$.post("/export/export.php", { data: exportingData },
   function(data){
     window.location='/export/'+data;
   });
	
}

function addExportItem(item){


	var canAdd=true;
	for(x in exportData){
		var user=exportData[x];
		if(parseInt(user.id)==parseInt(item.id))canAdd=false;
	}
	if(canAdd){
		exportData.push(item);
	}

}

