$(function () {
    if ($('#fb-login-container').length > 0) {
        $('#fb-login-container').append('<fb:login-button id="fb-login-button" v="2" autologoutlink="true">Logg inn med Facebook</fb:login-button>');

        FB.init(fbApiKey, fbXdReceiver, {
            "ifUserConnected": fbOnLogin,
            "ifUserNotConnected": fbOnLogout,
            permsToRequestOnConnect: 'email'
        });
    } 
    
    if ($('#inviter').length > 0) {
    	if ($.readCookie('inviter')) {
    		$('#inviter form').remove();
    		$('#inviter .already-joined').show();
    	}
    	
    	$('#inviter form').submit(function(e) {
        	var form = this;
            if (fbIsLoggedIn) {
            	var currentUserId = FB.Connect.get_loggedInUser();
	            FB.Facebook.apiClient.users_getInfo(currentUserId, 'name, email', function(result) {
	                var userInfo = result[0];
	                $('#fb-login-container').closest('fieldset').append('<input type="hidden" name="facebookid" value="' + currentUserId + '" class="fb-remove"/>');
	        		$('#fb-login-container').closest('fieldset').append('<input type="hidden" name="name" value="' + userInfo.name + '" class="fb-remove"/>');
	        		$('#fb-login-container').closest('fieldset').append('<input type="hidden" name="mail" value="' + userInfo.email + '" class="fb-remove"/>');
	            
	            	var counter = 0;
	            	$('input[name=friend[]]:checked').each(function() {
		                var friendName = $(this).next('label').text();
		                var friendContainer = $(document.createElement('div'));
		                friendContainer.append($(document.createElement('input')).attr('type', 'hidden').attr('name', 'friend-name').attr('value', friendName));
		                friendContainer.append($(document.createElement('input')).attr('type', 'hidden').attr('name', 'group2_counter').attr('value', counter++));
						$(form).append(friendContainer);
	            	});
	            	
	            	var attachment = {'media':[{'type':'image','src':'http://www.etlettvalg.no/_public/fjordland-elv/images/facebook-icon.jpg','href':'http://www.etlettvalg.no/'}]};
	            	FB.Connect.streamPublish('har invitert venner til konkurranse om å vinne middag til hele gjengen. Bli med du også!', attachment, null, null, 'Følgende vil bli postet på din wall', function() {
                    	$.setCookie('inviter', 'true', 7);
                    	form.submit();
                    });
	            	
	            });	
            }
			e.preventDefault();
     	});
    }
});

function fbOnLogout() {
    $('#fb-login-button').replaceWith('<fb:login-button id="fb-login-button" v="2" autologoutlink="true">Logg inn med Facebook</fb:login-button>');
    $('.fb-logged-in').hide();
    $('.fb-logged-out').show();
    $('.fb-remove').remove();
    FB.ensureInit(FB.XFBML.Host.parseDomTree);
}

function fbOnLogin() {    
    $('#fb-login-container').append('<div class="fb-remove"><fb:profile-pic uid="loggedinuser"></fb:profile-pic><fb:name uid="loggedinuser" useyou="false"></fb:name></div>');
    $('#fb-login-button').replaceWith('<fb:login-button id="fb-login-button" v="2" autologoutlink="true">Logg ut</fb:login-button>');
    
    var currentUserId = FB.Connect.get_loggedInUser();
    
    if ($('#fb-login-container').parents('fieldset').length > 0) {        
        
        $('#fb-login-container').closest('fieldset').append('<input type="hidden" name="facebookid" value="' + currentUserId + '" class="fb-remove"/>');
        
        if ($('#step2').length > 0) {
        	FB.Facebook.apiClient.users_getInfo(currentUserId, 'name, sex, email', function(result) {
            var userInfo = result[0];
            $('#step2 :input[name=\'name\']').val(userInfo.name);
            $('#step2 :input[name=\'sex\'][value=\'' + userInfo.sex + '\']').check();        
            $('#step2 :input[name=\'mail\']').val(userInfo.email);
        });
        }
    }
    
    if ($('#fb-invite-list').length > 0) {
        
        $("#step1").animate({ 
            width: "200px"
        }, 1500);
      
        $("#step2").animate({ 
            width: "440px"
        }, 1500);
        
        $("#step3").fadeIn('slow');
    
        FB.Facebook.apiClient.fql_query('SELECT uid, first_name, last_name FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = ' + currentUserId + ') ORDER BY first_name', function (result) {
            
            //var markup = '';
            var num_friends = result.length;            
            
            if (num_friends > 0) {
                for (var i = num_friends-1; i >= 0; i--) {
                    markup = '<li class="fb-remove item' + (i < 15 ? ' current' : '') + (i == 0 ? ' first' : '') + (i == num_friends-1 ? ' last' : '') + '"><input type="checkbox" name="friend[]" value="' + result[i].uid + '"/><label><fb:name uid="' + result[i].uid + '" capitalize="true" linked="false"></fb:name></label></li>';
                    $('#fb-invite-list').prepend(markup);
                }
            }
            //alert(markup);
            
            //$('#inviteList').append(markup);
            FB.XFBML.Host.parseDomTree();
        });
    }
    
    FB.ensureInit(FB.XFBML.Host.parseDomTree);
    $('.fb-logged-out').hide();
    $('.fb-logged-in').show();
}

function fbIsLoggedIn() {
    FB.Connect.init(fbApiKey);
    FB.ensureInit(function () {
        FB.Connect.get_status().waitUntilReady(function (status) {
            switch (status) {
                case FB.ConnectState.connected:
                loggedIn = true;
                break;
                case FB.ConnectState.appNotAuthorized:
                case FB.ConnectState.userNotLoggedIn:
                FB.Connect.requireSession();
                loggedIn = false;
            }
        });
    });
    return loggedIn;
}
