jQuery(function($){
	FB_RequireFeatures(["XFBML"], function(){
		FB.Facebook.init('ea9a30105d66ad56e9f10bf36a67c9cc', '/facebook/xd_receiver.htm', { 'reloadIfSessionStateChanged' : true });
		$('#facebook_logout').bind('click', function(evt) {
			evt.preventDefault();
			FB.Connect.logout();
		});
	});
	
	var facebookUids = [];
	
	$('.gravatar img').each(function() {
		var element = $(this);
		var gravatarId = element.attr('rel');
		var size = element.attr('height');
		// valid gravatar id
		if(typeof gravatarId != 'undefined' && gravatarId.toString() != '') {
			if(gravatarId.substr(0, 9) == 'facebook-') {
				var uid = gravatarId.replace('facebook-', '');
				facebookUids.push(uid);
			}
			
			// gravatar
			else
			{
				// build url
				var url = 'http://www.gravatar.com/avatar/'+ gravatarId + '?r=g&d=404';
				// add size if set before
				if(size != '') url += '&s=' + size;
				// create new image
				var gravatar = new Image();
				gravatar.src = url;
				// reset src
				gravatar.onload = function() { element.attr('src', url).addClass('gravatarLoaded'); }
			}
		}
	});

	// load facebook avatars
	if(facebookUids.length > 0) {
		// require the FB-shit
		FB_RequireFeatures(['Api', 'XFBML'], function() {
			// make the call
			FB.Facebook.apiClient.fql_query('SELECT uid, pic_square FROM user WHERE uid IN('+ facebookUids.join(', ') +')', function(data, error) {
				// loop results
				for(var i in data) {
					if(data[i].pic_square !== null) $('img[rel=facebook-'+ data[i].uid +']').attr('src', data[i].pic_square).addClass('gravatarLoaded');
				}
			});
		});
	}
		
	var setGravatar = function() {
		$.ajax({
			url: '/ajax.php?module=blog&action=set_gravatar',
			type: 'post',
			dataType: 'json',
			cache: false,
			data: "email=" + $('#blog_email').val(),
			success: function(json) { 
				switch (parseInt(json.status.code)) {
					case 200:
					case 400:
						if (json.content.success == true) $('#formGravatar').attr('src', json.content.gravatar);
						else $('#formGravatar').attr('src', $('#formGravatar').attr('rel'));
					break;
				}
			}
		});
	};
	$('#blog_email').change(setGravatar);
	$('#message').autogrow();

	/* jQuery UI tabs */
	$('#tabs').tabs();

	/*
		Expand <pre> when hovering over long code blocks
		@see http://www.viget.com/inspire/simple-jquery-solution-to-a-simple-problem
	*/
	$("pre:not([name='code'])").wrapInner("<span></span>");

	if(!($.browser.msie && $.browser.version=="6.0" || $.browser.version=="7.0")) {
		$("pre").hover(function() {
			var contentwidth = $(this).contents().width();
			var blockwidth = $(this).width();
			if(contentwidth > blockwidth) {
				$(this).animate({ width: "737px"}, 250);
				}
			}, function() {
				$(this).animate({ width: "401px" }, 250);
		});
	};
});