(function($){
	$.fn.unixCountdown = function(options) {
		
		var settings = $.extend({
			startTimestamp: Math.round(new Date().getTime() / 1000),
			endTimestamp: Math.round(new Date().getTime() / 1000),
			format: '<span class="days">%days%</span> <span class="hours">%hours%</span> <span class="minutes">%minutes%</span> <span class="seconds">%seconds%</span>'
		}, options);   	
		  
		this.each(function() {
			
			var $this = $(this);			
			var secsRemaining = settings.endTimestamp - settings.startTimestamp;
			var days, 
				hours, 
				minutes, 
				seconds,
				secs, 
				formattedString;
			
			var unixCountdownInterval = setInterval ( initUnixCountdown, 1000 );
			
			function initUnixCountdown(){
				if(secsRemaining < 1){
					secsRemaining = 0;
				}
				(secsRemaining >= 86400) ? days = Math.floor(secsRemaining / 86400) : days = 0; // Number of days until expires
				secs = secsRemaining % 86400; // Number of seconds left over, after calculating days
				(secsRemaining >= 3600) ? hours = Math.floor(secs / 3600) : hours = 0; // Number of hours from within those leftover seconds
				secs = secs % 3600; // Number of seconds left over, after calculating hours
				(secsRemaining >= 60) ? minutes = Math.floor(secs / 60) : minutes = 0; // Number of minutes from within those leftover seconds
				seconds = secs % 60; // Number of seconds left over, after calculating minutes
				formattedString = settings.format.replace('%days%', days).replace('%hours%', hours).replace('%minutes%', minutes).replace('%seconds%', seconds);
				
				
				$this.html( formattedString );
				
				if(secsRemaining > 0){
					secsRemaining--;
				} else {
					clearInterval(unixCountdownInterval);
				}
			}
			
		});

		// returns the jQuery object to allow for chainability.
		return this;
	}
})(jQuery);
