function showLists(id, name)
{
	alert(id+name);
}

function checkLoggedIn()
{
	  var token = document.getElementById('fb_token').value;
	  var errorBox = document.getElementById('errorBox');
	  if (token == '')
	  {
		  errorBox.innerHTML = "You must be logged in to use this feature!";
		  return null;
	  }
	  return token;
}

function clearError()
{
	  var errorBox = document.getElementById('errorBox');
	  errorBox.innerHTML = "";
}

function fixDateString (string) 
{
    var regexp = "([0-9]{4})(-([0-9]{2})(-([0-9]{2})" +
    "(T([0-9]{2}):([0-9]{2})(:([0-9]{2})(\.([0-9]+))?)?" +
    "(Z|(([-+])([0-9]{2}):([0-9]{2})))?)?)?)?";
    var d = string.match(new RegExp(regexp));

    var offset = 0;
    var date = new Date(d[1], 0, 1);

    if (d[3]) { date.setMonth(d[3] - 1); }
    if (d[5]) { date.setDate(d[5]); }
    if (d[7]) { date.setHours(d[7]); }
    if (d[8]) { date.setMinutes(d[8]); }
    if (d[10]) { date.setSeconds(d[10]); }
    if (d[12]) { date.setMilliseconds(Number("0." + d[12]) * 1000); }
    if (d[14]) {
      offset = (Number(d[16]) * 60) + Number(d[17]);
      offset *= ((d[15] == '-') ? 1 : -1);
    }

    offset -= date.getTimezoneOffset();
    var time = (Number(date) + (offset * 60 * 1000));
    var result = new Date();
    result.setTime(Number(time));
    return result;
};



function fixTime(timestamp) 
{
    var currTime = new Date();
    var postTime = new Date(fixDateString(timestamp));
    
    var diff = currTime.getTime() - postTime.getTime();
    var dY = Math.floor(diff / (365 * 30 * 24 * 60 * 60 * 1000));
    var dM = Math.floor(diff / (30 * 24 * 60 * 60 * 1000));
    var dD = Math.floor(diff / (24 * 60 * 60 * 1000));
    var dH = Math.floor(diff / (60 * 60 * 1000));
    var dN = Math.floor(diff / (60 * 1000));

    if (dY > 0)   { return dY === 1? "1 year ago"   : dY + " years ago"; }
    if (dM > 0)   { return dM === 1? "1 month ago"  : dM + " months ago"; }
    if (dD > 0)   { return dD === 1? "1 day ago"    : dD + " days ago"; }
    if (dH > 0)   { return dH === 1? "1 hour ago"   : dH + " hours ago"; }
    if (dN > 0)   { return dN === 1? "1 minute ago" : dN + " minutes ago"; }
    return "less than a minute ago";
};

function postHTML(post)
{
	var msg_text = '';
	if (post)
	{
		var UID = post.from.id;
		var NAME = post.from.name;
		var IMAGEURL = 'http://graph.facebook.com/' + UID + '/picture?type=large';
		var searchPhrase = document.getElementById('searchBox').value; 
		var msgPhrase = '';
		if (post.message)
		{
			var msgString = post.message;
			if (msgString.length > 200)
			{
				msgString = msgString.substring(0, 500) + '...';
			}	
			msgPhrase += msgString;
		}
		if (post.name && post.link)
		{
			msgPhrase += '<br><br><a  target="_blank" href="'+post.link+'">' + post.name + '</a><br>';
		}
		if (post.description)
		{
			msgPhrase += '<span class="postDescription">'+post.description+'</span>';
		}
		msg_text += '<div style = "border-bottom:1px dashed #CCCCCC; margin:0; overflow:hidden; padding:3px; font-family:Helvetica,sans-serif; font-size:13px;">';
		msg_text += '<div style = "overflow:hidden; padding: 7px; float:left; text-align: center;"><a target="_blank" href="http://www.facebook.com/profile.php?id=' + UID + '"><img width="100" height="100" src="' + IMAGEURL +'"></a>';
//		msg_text += '<p style="font-size:8pt;"><a href="#" onclick="showLists(\''+UID+'\',\''+NAME+'\');">List Me</a>';
		msg_text += '</div>';
//		msg_text += '<div style="padding 5px; width: 600px;"><a style= "font-size: 11pt;" href="http://www.facebook.com/profile.php?id=' + UID + '"></a><br>' + NAME;
	
		var txtmsg = msgPhrase;
		//.replace(new RegExp( '(' + searchPhrase + ')', 'gi' ), '<span style = "background-color: yellow; font-weight: bold;">' + searchPhrase + '</span>');	
		msg_text += '<div style="padding 2 7 0 0; overflow:hidden;"><a target="_blank" href="http://www.facebook.com/profile.php?id=' + UID + '">'+ NAME +'</a> - <span style = "font-size: 11pt;">'+ txtmsg+'</span>';
		msg_text += '<br><br><span class="timeClass">posted ' + fixTime(post.created_time)+'</span>';
		msg_text += '</div>';
		//msg_text += '</div><div style="clear:both;">';
		msg_text += '</div>';
	}
	return msg_text;
}

function peopleHTML(UID, NAME, detail)
{
	var msg_text = '';
	var IMAGEURL = 'http://graph.facebook.com/' + UID + '/picture?type=large';
	msg_text += '<div id="'+ UID + '" style = "overflow:hidden; float: left; margin: 1px; border: 1px inset #cccccc; padding: 6px; height:200px; text-align: center; width:200px; font-size:9pt;">';
	msg_text += '<a target="_blank" href="http://www.facebook.com/profile.php?id=' + UID + '"><img height="180" width="200"src="' + IMAGEURL +'"><br>' + NAME + '</a>';
	//if (!detail)
	//	msg_text += '<a href="#" onclick="userDetail('+UID+');">+'+ NAME + '</a>';
	//else
	//	msg_text += NAME;	
	msg_text += '</div>';
	return msg_text;
}


function showPeople(msg)
{
	var html = '';
	var count = 0;
	var results = document.getElementById("results");
	for (var res in msg.data)
	{
		html += peopleHTML(msg.data[res].id, msg.data[res].name, 0);
	//	html += '<p>' + msg.data[res].message;
	//	html += '<br>posted by ' + msg.data[res].from.name + ' ' + fixTime(msg.data[res].created_time);
		count++;
	}
	if (count == 0)
	{
		var fb_id = document.getElementById("fb_id").value;
		html += 'No results found, please try a new serch';
	}
	html += '<div style="clear:both"></div>';
	results.innerHTML = html;
}


function showResults(msg)
{
	var html = '';
	var count = 0;
	var results = document.getElementById("results");
	for (var res in msg.data)
	{
		html += postHTML(msg.data[res]);
	//	html += '<p>' + msg.data[res].message;
	//	html += '<br>posted by ' + msg.data[res].from.name + ' ' + fixTime(msg.data[res].created_time);
		count++;
	}
	if (count == 0)
	{
		html += 'No results found, please try a new serch';
	}
	results.innerHTML = html;
}

function showUserDetail(msg)
{
	var user = document.getElementById(msg.id);
	var UID = msg.id;
	var html = '';
	var IMAGEURL = 'http://graph.facebook.com/' + UID + '/picture?type=large';
	html += '<a href="http://www.facebook.com/profile.php?id=' + UID + '"><img src="' + IMAGEURL +'"></a><br>';
	html += msg.name;
	if (msg.gender)
		html += '<br>' + msg.gender;	
	if (msg.location)
		html += '<br>' + msg.location.name;
	user.innerHTML = html;
}

function userDetail(UID)
{
	var user = document.getElementById(UID);
	user.innerHTML = user.innerHTML + '<p align="center"><img src="images/pleasewait.gif" width="20">';
	var token = document.getElementById('fb_token').value;
    FB.api('/'+UID, {access_token: token }, showUserDetail);
}

function doMultiSearch(msg)
{
	var token = document.getElementById('fb_token').value;
	if (msg)
	  	FB.api('/search', {type: 'post', access_token: token, ids:msg }, showResults);	
}

function ajaxUpdate(url)
{
	var xmlHttp;
	
	try
 	{
  		// Firefox, Opera 8.0+, Safari
  		xmlHttp=new XMLHttpRequest();
  	}
	catch (e)
  	{
  		// Internet Explorer
  		try
   	 	{
    		xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
    	}
  		catch (e)
    	{
    		try
      		{
      			xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
      		}
    		catch (e)
      		{
      			alert("Your browser does not support AJAX!");
      			return false;
      		}
    	}
  	}	
  
  	xmlHttp.onreadystatechange=function(type)
    {
    	if(xmlHttp.readyState==4)
      	{
      		//doMultiSearch(xmlHttp.responseText);
      	}
    }

    xmlHttp.open("GET",url,true);
  	xmlHttp.send(null);
  }
  
  
  function getResults(type, id, token)
  {
	  var results = document.getElementById('results');
	  results.innerHTML = 'Calculating friend data.  This might take a minute...<p><img src="images/pleasewait.gif"/>';
  	  url = 'ajax.php?type='+type+'&id='+id+'&token='+token;
  	  ajaxUpdate(url);
  }

  function doSearch()
  {	  		  if($("#searchPeople").attr("checked") == true)		  {			  if(checkLoggedIn() == null)			  {				  $.msgbox("please login with facebook before searching.");			  }		  }
	  clearError();
	  
	  var searchText = document.getElementById('searchBox').value;
	  var searchPeople = document.getElementById('searchPeople');

	  var searchPages = document.getElementById('searchPages');
	  var searchEvents = document.getElementById('searchEvents');
		 
	  var results = document.getElementById('results');
 	  var token = document.getElementById('fb_token').value;
 	  var fb_id = document.getElementById('fb_id').value;
 	  

	  if (searchText == '')
		  return;

	  if (searchPeople.checked == true)
	  {
		  FB.api('/search', {q: searchText, type: 'user', access_token: token }, showPeople);
	  }
	  else if (searchPages.checked == true)
	  {
		  FB.api('/search', {q: searchText, type: 'page', access_token: token }, showPeople);
	  }
	  else if (searchEvents.checked == true)
	  {
		  FB.api('/search', {q: searchText, type: 'event', access_token: token }, showPeople);
	  }
	  else
	  {
	  	FB.api('/search', {q: searchText, type: 'post', access_token: token }, showResults);
	  }
	  results.innerHTML = '<p align="center"><img src="images/pleasewait.gif">' + results.innerHTML;

	  var logUrl = 'ajax.php?logSearch=1&q='+searchText+'&fb_id='+fb_id;
	  ajaxUpdate(logUrl);
  }    

  var friendsArray = new Array();
  var friendsCount = 0;
  var currFunction = null;

  
  function storeFriends(msg)
  {
	  for (var friend in msg.data)
	  {
		friendsArray.push(msg.data[friend].id);
		friendsCount++;	
	  }	
	  if (currFunction)
	  {
	   	currFunction();
	   	currFunction = null;
	  }
  }
  
  function loadFriends()
  {
	  if (friendsCount > 0)
		  return 1;

	  var token = checkLoggedIn();
	  if (token == null)
		  return 1;
	  
	  FB.api('/me/friends', {access_token: token }, storeFriends);
	  return 0;
  }

function showLikes(msg)
{
	var html = '';
	  for (var friend in msg.data)
	  {
		  html += msg.data[friend].name;
			
	  }	
}
  
  function getRecentLikes()
  {
	  var token = document.getElementById('fb_token').value;
	  if (friendsCount == 0)
	  {
		  currFunction = getRecentLikes;
		  loadFriends();
	  }
	  else
	  {
		var friendIds = '';
		for (var friend in friendsArray)
		{
			if (friendIds != '')
				friendIds += ',';
			friendIds += friendsArray[friend];
		}
		 FB.api('/likes', {access_token: token,ids: friendIds}, showLikes);
			
	  }
  }
  
  function getListInfo(listId)
  {
	  var results = document.getElementById('results');
	  clearError();
	  var url = 'ajax.php?getListInfo=1&listId='+listId;
	  ajaxUpdate(url);
	  results.innerHTML = '<p align="center"><img src="images/pleasewait.gif">' + results.innerHTML;
  }    

 

  function hotSearch(hotSearchPhrase)
  {
	  if (hotSearchPhrase == '')
		  return 0;
	  var searchText = document.getElementById('searchBox');
	  searchText.value = hotSearchPhrase;
	  var searchNews = document.getElementById('searchNews');
	  searchNews.checked = true;
	  doSearch();
	  return 0;
  }// JavaScript Document
