var witpickLoop;
var witstreamTime;
var witstreamPoll;
var witstreamArrowClick = false;

jQuery(document).ready(function() {
	jQuery(window).bind("focus", function(event)
    {
		/*
        if (jQuery('#witpick').length > 0) {
			initWitPosts();		
		}
		*/
		initWitPosts();		
		

		WitStreamAni();
		WitStreamPoll();

    }).bind("blur", function(event) {
		clearInterval(witpickLoop);
		clearInterval(witstreamPoll);
    });
		
	jQuery('head').append('<link rel="stylesheet" type="text/css" href="http://direct.witstream.com/css/widget.css" />');
	jQuery('#WitStreamBox').append('<a target="_blank" href="http://wits.ms/widgettrack.php?c&h='+h+'"><div id="WitStreamLogo"></div></a><div class="WitControl" id="WitControlUp" title="up"></div><ul id="witpick"></ul><div class="WitControl" id="WitControlDown"></div>').hover(
		function() {
			clearTimeout(jQuery('.WitControl').data('witstreamControl'));
			//DB - Added condition to fix opacity issues in IE
			if (jQuery.browser.msie) {
				jQuery('.WitControl').fadeTo(666, 0.7);
			} else { 
				jQuery('.WitControl').fadeTo(666, 1);
			}
			clearInterval(witpickLoop);		
			clearInterval(witstreamPoll);
		}, 
		function() {
			var witstreamControl = setTimeout(function(){ 
				jQuery('.WitControl').fadeTo(303, 0);
			}, 303);
			jQuery('.WitControl').data('witstreamControl', witstreamControl);
			WitStreamAni();
			WitStreamPoll();							
		}
	);

	jQuery('.WitControl').click(function() {
		//DB - Added condition to fix opacity issues in IE		
		if (jQuery.browser.msie) {
			jQuery(this).fadeTo(123, 0.7);
		} else { 
			jQuery(this).css({'opacity': 0.6}).fadeTo(123, 1);
		}
		WitLoop(jQuery(this).attr('title'));
	});

	initWitPosts();
	WitStreamAni();
	WitStreamPoll();
//	launch();
});

function launch() {
	jQuery.getJSON("http://www.witstream.com/widgettrack.php?h="+h+"&t="+t+"&time="+Math.round(new Date().getTime())+"&callback=?", function(data) {
	});	
}

function replaceLinks(text) {
	//Transform URLS

	var text = text.replace(/(\b(href[=]["]http|src[=]["]http|https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@\/%=~_|])/ig,"<a href='$1' class='link' target=_blank>$1</a>");

	//Transform Hashtags
	text = text.replace(/(^|\s)#(\w*[a-zA-Z_]+\w*)/ig,"&nbsp;<a class='hashtag' href='http://www.witstream.com/#$2'>$2</a>");
	return text; 			
}

function initWitStream() {
    var divTag = document.createElement("div");
    divTag.id = "WitStreamBox";
    document.body.appendChild(divTag);
}

function initWitPosts() {
	jQuery('#witpick li').remove();
	
	jQuery.getJSON("http://www.witstream.com/rss/daily/json.php?h="+h+"&t="+t+"&time="+Math.round(new Date().getTime())+"&callback=?", function(data) {
		jQuery.each(data, function(index, item) {
			jQuery('#witpick').append(createWit(item));			
		});
		jQuery('#witpick li').hide().fadeTo(666, 1);
		jQuery('#witpick').data('first', jQuery('ul#witpick li:first-child').find('abbr').attr('title'));
		jQuery('#witpick').data('last', jQuery('ul#witpick li:last-child').find('abbr').attr('title'));
		
		witstreamTime = setInterval(function() {
			jQuery.each(jQuery('#witpick abbr'), function(index, item) {
				jQuery(this).html(prettyDate(jQuery(this).attr('title') * 1000));
			});
		}, 1234);
	});	
}

function WitStreamAni() {
	clearInterval(witpickLoop);	
	witpickLoop = setInterval(function() {
		if (jQuery('ul#witpick li:first-child').html() != jQuery('ul#witpick li:last-child').html() && jQuery('ul#witpick li:first-child').html() != "") WitLoop();
	}, 10000);
	
}

function WitStreamPoll() {
	clearInterval(witstreamPoll);
	witstreamPoll = setInterval(function() {
		jQuery.getJSON("http://www.witstream.com/rss/daily/json.php?h="+h+"&t="+t+"&first="+jQuery('#witpick').data('first')+"&time="+Math.round(new Date().getTime())+"&callback=?", function(data) {
			if (data.length > 0) clearInterval(witpickLoop);
			jQuery.each(data, function(index, item) {
				jQuery('#witpick').prepend(createWit(item));
				jQuery('ul#witpick li:first-child').hide().css({'opacity': '0'}).slideDown('slow', function() {
					jQuery(this).fadeTo(2222, 1);					
				});
				if (item.created_at > jQuery('#witpick').data('first')) jQuery('#witpick').data('first', item.created_at);
			});
			if (data.length > 0) WitStreamAni();										
		});
	}, 20000);
} 

function WitLoop(direction) {
	if (direction == "up") {
			jQuery('ul#witpick li:last-child').slideDown(0, function() {
					jQuery(this).prependTo('ul#witpick').hide().slideDown('slow').fadeTo('slow', 1);
					jQuery(this).find('attr').html(prettyDate(jQuery(this).attr('title') * 1000));
			});		
	} else {
			jQuery('ul#witpick li:first-child').slideUp('slow', function() {
					jQuery(this).appendTo('ul#witpick').slideDown(0).fadeTo(0, 1);
					jQuery(this).find('attr').html(prettyDate(jQuery(this).attr('title') * 1000));
			});
	}

	//If user has reached the end of the list, grab more.
	if (jQuery('ul#witpick li:first-child').next().next().find('abbr').attr('title') == jQuery('#witpick').data('last')) {


		jQuery.getJSON("http://www.witstream.com/rss/daily/json.php?h="+h+"&t="+t+"&last="+jQuery('#witpick').data('last')+"&time="+Math.round(new Date().getTime())+"&callback=?", function(data) {
			jQuery.each(data, function(index, item) {				

				jQuery(createWit(item)).insertAfter(jQuery('ul#witpick li:first-child').next().next());
				if (item.created_at < jQuery('#witpick').data('last')) jQuery('#witpick').data('last', item.created_at);
			});
		});
	}
	
	if (witstreamArrowClick==false) {
		jQuery.getJSON("http://www.witstream.com/widgettrack.php?h="+h+"&t=click&time="+Math.round(new Date().getTime())+"&callback=?", function(data) {});	
		witstreamArrowClick=true;
	}
//	jQuery.getJSON("http://www.witstream.com/rss/daily/direction.php?direction="+direction+"&callback=?", function(data) {});	
}

function createWit(item) {
	return '<li><img src="'+item.user.twitterimg+'" /><a target="_blank"  href="http://www.witstream.com/#'+item.user.firstname.toLowerCase()+'_'+item.user.lastname.toLowerCase()+'"><strong>'+item.user.firstname+'&nbsp;'+item.user.lastname+'</strong></a><abbr title="'+item.created_at+'">'+prettyDate(item.created_at * 1000)+'</abbr><p>'+replaceLinks(item.text).replace(/[˝]/g, '"')+'</p></li>';
}

function prettyDate(time){
	if (Math.round(new Date(time).getTime()) > Math.round(new Date().getTime())) time = new Date().getTime();
	var date = new Date(time),

		diff = (((new Date()).getTime() - date.getTime()) / 1000),
		day_diff = Math.floor(diff / 86400);
		month_diff = Math.floor(diff / 2628000);

	if ( isNaN(day_diff) || day_diff < 0)
		return;
	var v = day_diff == 0 && (
			diff < 60 && "a moment ago" ||
			diff < 120 && "about a minute ago" ||
			diff < 3600 && Math.floor( diff / 60 ) + " minute"+(Math.floor( diff / 60 )==1?"":"s")+" ago" ||
			diff < 7200 && "1 hour ago" ||
			diff < 86400 && Math.floor( diff / 3600 ) + " hour"+(Math.floor( diff / 3600 )==1?"":"s")+" ago") ||
		day_diff == 1 && "Yesterday" ||
		day_diff < 7 && day_diff + " day"+(day_diff==1?"":"s")+" ago" ||
		day_diff < 31 && Math.ceil( day_diff / 7 ) + " week"+(Math.ceil( day_diff / 7 )==1?"":"s")+" ago" ||
		day_diff < 365 && Math.ceil( month_diff / 30.416 ) + " month"+(Math.ceil( month_diff / 30.416 )==1?"":"s")+" ago"

		;
	if (!v)
		window.console && console.log(time);
	return v ? v : '';
}

