

jQuery(document).ready(function() {
	var d = new Date();
	//Contact info
	writeEm('.contact');
	//logo nav
	jQuery('#pageheader h1').css('cursor','pointer');
	jQuery('#pageheader h1').click(function(){
		document.location='http://www.joelpeterson.com';
		})
	var numOfUtterances = 5;
	var numOfLocations = 5;
	//LOAD UTTRANCES
	jQuery.getJSON('ajax/ajax.utterances.php?no='+numOfUtterances+'&y='+d.getTime(), function(data) {
	  var utteranceContent = processTwitter(data, numOfUtterances);
	  jQuery('#utternaces').fadeOut('fast',function(){
		  jQuery('#utternaces').empty();
		  jQuery('#utternaces').append(utteranceContent);
		  jQuery('#utternaces').fadeIn('slow');
	  });
	});	
	//LOAD LOCATIONS
	jQuery.getJSON('ajax/ajax.location.php?no='+numOfLocations+'&y='+d.getTime(), function(data) {
	  var locationsContent = processFourSquare(data, numOfLocations);
	  jQuery('#locations').fadeOut('fast',function(){
		jQuery('#locations').empty();
	  	jQuery('#locations').append(locationsContent);  
		jQuery('#locations').fadeIn('slow');
	  })
	});	
});


/***
* processFourSquare
* @author Joel Peterson
* @param data - JSON object response from FourSquare API
* @returns HTML String for Twitter container Div
**/
var processFourSquare = function(data){
	
	function processFourSquareData(data){
		var rtnstr="";
		var looper = 0;
		//LOOP EACH RESULT
		jQuery.each(data.response.checkins.items, function(i,result){
				var d = new Date(result.createdAt*1000);
				var n = new Date();
				var diff = time(n-d);
				rtnstr += '<div class="utterance"><span>'+diff+'</span>';
				rtnstr += '<img src="'+result.venue.categories[0].icon+'" />';
				rtnstr += '<div class="venue">';
				if (typeof result.venue.url != "undefined") {
					rtnstr += '<a href="'+result.venue.url+'">'+result.venue.name+'</a>';
				} else {
					rtnstr += result.venue.name;
				}
				rtnstr += '<div class="addr">';
				rtnstr +=  result.venue.location.address + ' ' + result.venue.location.city + ', ' + result.venue.location.state;
				rtnstr += '</div>';
				rtnstr += '</div>';
				if (typeof result.shout != "undefined") rtnstr += '<div class="shout">"' + result.shout + '"</div>';
				rtnstr += '</div>';
		});
		rtnstr += '<div class="clear"></div>';
		return rtnstr;
	}
	return processFourSquareData(data);
}



/***
* processTwitterData
* @author Joel Peterson
* @param data - JSON object response from Twitter API
* @returns HTML String for Twitter container Div
**/
	
var processTwitter = function(data){
	/***
	* Twitter Processing Variables
	**/
	var twitterHashUrl = "http://twitter.com/search?q=";
	var twitterUserUrl = "http://twitter.com/";
	
	/***
	* processTwitterData
	* @param data - JSON object response from Twitter API
	* @returns HTML String for Twitter container Div
	**/
	function processTwitterData(data){
		var rtnstr="";
		//LOOP EACH RESULT
		jQuery.each(data.results, function(i,result){
			var d = new Date(result.created_at);
			var n = new Date();
			var diff = time(n-d);
			//process hashtags, @users & hyperlinks
			rtnstr += '<div class="utterance"><span><a href="http://twitter.com/joelasonian/status/'+result.id_str+'">'+diff+'</a></span>';
			//rtnstr += '<img src="'+result.profile_image_url+'" />';
			rtnstr +=  parseTwitterElements(result.text);
			rtnstr += '</div>';
		});
		rtnstr += '<div class="clear"></div>';
		return rtnstr;
	}
	
	/***
	* parseTwitterElements
	* @param resultstr - string of individual tweet
	* @returns HTML String with anchor tags places for '@', "#", and http links in tweet
	**/
	function parseTwitterElements(resultstr){
		var match = resultstr.match(/(#|@|http:)[A-Za-z0-9_.\/]+/g);
		var fstring = "";
		if (match != null) {
			var nextstart = 0;
			for (var i = 0; i < match.length; i++) {
				 fstring += resultstr.substr(nextstart, parseInt(resultstr.indexOf(match[i])-nextstart));
				 nextstart = parseInt(resultstr.indexOf(match[i]) + match[i].length);
				 if(match[i].indexOf('#') != -1){
					 //HASH
					fstring += '<a rel="no follow" href="' + twitterHashUrl + encodeURIComponent(match[i])+'">'+match[i]+'</a>';
				 }
				 if(match[i].indexOf('@') != -1){
					 //@user
					 fstring += '<a rel="no follow" href="' + twitterUserUrl + encodeURIComponent(match[i].substr(1))+'">'+match[i]+'</a>';
				 }
				 if(match[i].indexOf('http')  != -1){
					 //http
					 fstring += '<a rel="no follow" href="' + match[i] + '">'+match[i]+'</a>';
				 }
			}
			fstring += resultstr.substr(nextstart);
		} else {
			fstring += resultstr;
		}
		return fstring;
	}
	
	
	
	return processTwitterData(data);
}

/***
* time
* @param ms miliseconds since occurance
* @returns string specifying how long it has been 
**/
function time(ms) {
	x = ms / 1000;
	seconds = Math.floor(x % 60);
	x /= 60;
	minutes = Math.floor(x % 60);
	x /= 60;
	hours = Math.floor(x % 24);
	x /= 24;
	days = Math.floor(x);
	var schar="";
	if (days > 0){
		if (days==1){schar="";}else{schar="s";}
		return days + " day"+schar+" ago";	
	}
	if (hours > 0){
		if (hours==1){schar="";}else{schar="s";}
		return hours + " hour"+schar+" ago";	
	}
	if (minutes > 0){
		if (minutes==1){schar="";}else{schar="s";}
		return minutes + " minute"+schar+" ago";	
	}
	if (seconds > 0){
		if (seconds==1){schar="";}else{schar="s";}
		return seconds + " second"+schar+" ago";	
	}
}

/***
* writeEm
* @description Just a quick function to remove my email address from the browser
* @param string of jQuery Selector of contact destination 
**/
function writeEm(cont){
	var contStr = 'hel';
	contStr += 'lo@joelpeters';
	contStr += 'on.co';
	contStr += 'm';
	jQuery(cont).empty();
	jQuery(cont).html('<a></a>');
	jQuery(cont + ' a').append(contStr);
	jQuery(cont + ' a').attr('href','mailto:' + contStr);
}
