// -----------------------------------------
// Copyright 2009. www.veetter.com
// sergiu.toderascu@gmail.com
// -----------------------------------------

(function($) {

			userName   : null;
			tweets     : 5;
			veetterDiv : 'veetter';
			loaderText : "Loading tweets...";
			
			
			loader_div    = $("<div class=\"veetter-loader\"></div>");
			userinfo_div  = $("<div class=\"veetter-user-info\"></div>");
			tweets_div    = $("<ul class=\"veetter-tweets\"></ul>");
			
			var veetterDiv, loaderText, tweets;		

$.veetter = {
			
		vars: function(option){ // variables
			userName      = option.userName;
			tweets        = option.tweets?option.tweets:tweets;
			veetterDiv    = option.veetterDiv?option.veetterDiv:veetterDiv;
			vDiv          = $("#"+veetterDiv);
			loaderText      = option.loaderText?option.loaderText:loaderText;
			
		}, //variables
		
		go: function(option) { // go		
				this.vars(option);							
				if(vDiv.length > 0){
				this.loading();
				this.getTwitter();
			}   else { alert('veetter container not found!') }
		}, //go
		
		loading: function() { // loading
			loader_div.append(loaderText);
			vDiv.append(loader_div);
		}, // loading

        getTwitter : function() {// getTwitter
        	var url = "http://twitter.com/status/user_timeline/" + userName + ".json?count="+tweets+"&callback=?";
			
			$.ajax({
				url: url,
                dataType: 'json',
                success: function(data){

				loader_div.remove();
				vDiv.append(userinfo_div);
				vDiv.append(tweets_div);
		        userinfo_div.append("<a href='http://twitter.com/" + data[0].user.screen_name + "'  target='_blank'>" + 
				"<img border='0' class='veetter-avatar' src='"+data[0].user.profile_image_url+"'></a>"+
		        "<div class='veetter-stats'>" +
				"<div><p class='s'>" + data[0].user.followers_count + "</p><p><a href='http://twitter.com/" + data[0].user.screen_name + "/followers'>Followers</a></p></div>" +
				"<div><p class='s'>" + data[0].user.friends_count + "</p><p><a href='http://twitter.com/" + data[0].user.screen_name + "/following'>Following</a></p></div>" +
				"<div><p class='s'>" + data[0].user.statuses_count + "</p><p><a href='http://twitter.com/" + data[0].user.screen_name + "'>Updates</a></p></div>" +
				"</div>" + 		        
				"<h1><a href='http://twitter.com/" + data[0].user.screen_name + "'target='_blank'>" + data[0].user.screen_name + " </a></h1>" +  
		        "<p>" + data[0].user.name + "</p>" +
				"<div class='clear'></div>" +				
				"<span>" + data[0].user.description + "</span>");

                $.each(data,function(i,item) {
                	tweets_div.append('<li id="' + item.id + '">'+$.veetter.makeLinks(item.text)+
					"<p class='status'><a href='http://twitter.com/" + data[0].user.screen_name + "/status/" + item.id + "'>" + 
					$.veetter.cTime(item.created_at) + "</a> from " + item.source + "</p>"+
					'</li>');
					$("ul.veetter-tweets li:first").attr('class','veetter-status-last');
					})
                }
	            });
     	       
        }, // getTwitter
        
        makeLinks : function(text) { // makeLinks
        
        	var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
			text = text.replace(exp,"<a href='$1' class='veetter-link'>$1</a>"); 
			
			var exp = /[\@]+([A-Za-z0-9-_]+)/ig;
			text = text.replace(exp,"@<a href='http://twitter.com/$1' class='veetter-link-profile'>$1</a>"); 
			
			var exp = /[\#]+([A-Za-z0-9-_]+)/ig;
			text = text.replace(exp,"<a href='http://twitter.com/search?q=$1' class='veetter-link-hash'>#$1</a>"); 
            
			return text;
        }, // makeLinks
        
        cTime :  function (time_value) {
            var parsed_date = Date.parse(time_value);
            var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
            var delta = parseInt((relative_to.getTime() - parsed_date) / 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 (parseInt(delta / 60)).toString() + ' minutes ago';
            } else if(delta < (90*60)) {
            return 'about an hour ago';
            } else if(delta < (24*60*60)) {
            return 'about ' + (parseInt(delta / 3600)).toString() + ' hours ago';
            } else if(delta < (48*60*60)) {
            return '1 day ago';
            } else {
            return (parseInt(delta / 86400)).toString() + ' days ago';
            }
       }
    

	};
})(jQuery);