/**
 * Module Group: SN
 * Controller
 */
 var C4GTI = C4GTI || {};

(function() {
	if ("jQuery" in window && 'C4GTI' in window) { 

		C4GTI.SN03 = function() {

			var twitterAccount = 't4witter';
			var tweetCount = 1;
			var initWithTwitterAccount = function(account,tCount) {
				twitterAccount = (account != undefined) ? account : twitterAccount;
				tweetCount = (tCount!==undefined)? tCount: tweetCount;
				initModule();
				getStatuses();
				
			};
			
			var initModule = function() {
				var html = '<ul id="tweet-list"></ul>';
				$('.moduleID-SN03 .component').append(html);
			};
			
			var getStatuses = function() {
				var queryUrl = 'http://search.twitter.com/search.json?q=from%3A'+twitterAccount+'&since_id=0&rpp='+tweetCount+'&callback=?';
				
				$.getJSON(queryUrl, function(data) {
					
					if(data.results.length > 0) {
						
						initProfileDetails(data.results[0].from_user, data.results[0].profile_image_url);
						
						$.each(data.results, function(index, item){
							
							var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
							var exp2 = /\B@([_a-z0-9]+)/ig;
							item.text = item.text.replace(exp,"<a target='_blank' href='$1'>$1</a>").replace(exp2,"<a target='_blank' href='http://twitter.com/$1'>@$1</a>"); 
			
							var tweet = '<li>';
							tweet += '<p class="tweet">' + item.text + '</p>';
							tweet += '<p class="date">' + parseTweetTime(item.created_at) + '</p>';
							tweet += '</li>';
							$('.moduleID-SN03 #tweet-list').prepend(tweet);
						});
						$('.moduleID-SN03 #tweet-list li:last').addClass("last")
						$('.moduleID-SN03 #tweet-list li').show();
						//initAnimation();
					}
				});	
			};
			
			var initProfileDetails = function(username, profileImageUrl){
				//$('.moduleID-SN03 #twitter-head .image').append('<img src="' + profileImageUrl + '" alt="' + username + ' profile image" width="36px" height="36px" />');
				$('.moduleID-SN03 #twitter-head .image').append('<img src="/static/'+C4GTI.sitename+'/images/logos/twitter_bird.png" alt="twitter" width="36px" height="36px" />');
				$('.moduleID-SN03 #twitter-head .details').append('<a href="http://www.twitter.com/' + username + '" target="_blank">Follow ' + username + ' on Twitter</a>');
				if(tweetCount==1) {
					$('.moduleID-SN03 #twitter-head .details h3').html("Latest Tweet");
				}
			};
			
			var initAnimation = function(){
				var tweets = $('.moduleID-SN03 #tweet-list li');
				var counter = tweets.length;
				var showTweet = function(){
					if(counter > 0) {
						$('.moduleID-SN03 #tweet-list li:eq(' + (counter) + ')').hide();
						$('.moduleID-SN03 #tweet-list li:eq(' + (counter-1) + ')').show();
						counter--;
					} else {
						$('.moduleID-SN03 #tweet-list li:eq(' + (counter) + ')').hide();
						$('.moduleID-SN03 #tweet-list li:eq('+ (tweets.length-1) +')').show();
						counter = tweets.length-1;
					}
				
				};
				
				showTweet();
				
				var timer = setInterval(showTweet, 5000);
			};
			
			var parseTweetTime = function(tweetTime){
				
				var parsedDate = Date.parse(tweetTime);

				var relativeTo = (arguments.length > 1) ? arguments[1] : new Date();
				
				var delta = parseInt((relativeTo.getTime() - parsedDate) / 1000);

				if(delta < 60) {
					return 'less than a minute ago ';
				} else if(delta < 120) {
					return 'about a minute ago ';
				} else if(delta < (45*60)) {
					return Math.ceil(delta / 60) + ' minutes ago ';
				} else if(delta < (90*60)) {
					return 'about an hour ago ';
				} else if(delta < (24*60*60)) {
					return 'about ' + Math.ceil(delta / 3600) + ' hours ago ';
				} else if(delta < (48*60*60)) {
					return '1 day ago ';
				} else {
					return Math.ceil(delta / 86400) + ' days ago ';
				}
			};

			
			return {
				initWithTwitterAccount: initWithTwitterAccount
			};
			
		}();
	}
})();
