// Tiwtter Javascript 

var LatestTweet = function(){
	
	var retrieveUrl		= '/admin/externalResource/retrieve';
	var containerJQ		= undefined;
	var reUrl			= /(http(?:s)?:\/\/[^\s]+)/i;
	
	var options = {
		url				: '',
		conainterSel	: '',
		failureCopy		: 'Could not load tweets.',
		limit			: 5,
		linkTarget		: '_blank',
		cacheTime		: undefined
	};
	
	var init = function( optionsIn ) {
		
		if ( typeof optionsIn == 'object' ) {
			if ( optionsIn.url )			options.url				= optionsIn.url;
			if ( optionsIn.conainterSel )	options.conainterSel	= optionsIn.conainterSel;
			if ( optionsIn.failureCopy )	options.failureCopy		= optionsIn.failureCopy;
			if ( optionsIn.limit )			options.limit			= optionsIn.limit;
			if ( optionsIn.linkTarget )		options.linkTarget		= optionsIn.linkTarget;
			if ( optionsIn.cacheTime )		options.cacheTime		= optionsIn.cacheTime;
			if ( optionsIn.retrieveUrl ) 	retrieveUrl				= optionsIn.retrieveUrl;
		}
		
		if ( options.url && options.conainterSel ) {
			
			var params = { url: encodeURIComponent( options.url ) };
			if ( options.cacheTime ) params.cacheTime = options.cacheTime;
			
			containerJQ = $( options.conainterSel );
			$.ajax({
				url: retrieveUrl,
				type: 'get',
				data: params,
				dataType: 'json',
				success: showTweets,
				error: showError
			});
		}
	};
	
	var showTweets = function( data, textStatus, jqXHR ) {
		var insertHtml = '';
		$.each( data, function( i, el ){
			if ( i < options.limit ) {
				insertHtml += '<div class="latest-tweets-tweet">' + el.text.replace( reUrl, '<a target="' + options.linkTarget + '" href="$1">$1</a>' ) + '</div>';
			}
		} );
		containerJQ.html( insertHtml );
	};
	
	var showError = function( jqXHR, textStatus, errorThrown ) {
		containerJQ.html('<p class="latest-tweets-error">' + options.failureCopy + '</p>');
	};
	
	return {
		init: init
	};
}(); 
