function loadFacebookJS(a, cbxml, loadfunction)
{
	var head = document.getElementsByTagName("head")[0];
	script = document.createElement("script");
	done = false;

	script.src = 'http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php/en_US';
	script.onload = script.onreadystatechange = function(){
		if ( !done && (!this.readyState || this.readyState == "loaded" || this.readyState == "complete") ) {
			done = true;
			if (loadfunction != null)
			{
				FB.init(a, cbxml, {ifUserConnected: loadfunction, ifUserNotConnected: loadfunction});
			}
			else
			{
				FB.init(a, cbxml);
			}
			
		}
	};
	head.appendChild(script);
}

function facebookLogin() 
{
	new Ajax.Request(fbloginurl,
	{   method: 'get',
	    onSuccess: function(transport) {
		    var result = transport.responseText;
		    
		    switch (result)
		    {
			    case "1":
			    case "2":
				    window.location = window.location; break;
			    case "-1":
				    window.location = loginUrl; break;
			    default:
				    loadlightboxFB(); break;
		    }
	    }
	});
}
	
function facebookLoginMinimal()
{
	new Ajax.Request(fbloginurl,
	{   method: 'get',
	    onSuccess: function(transport) {
		    var result = transport.responseText;
		    
		    switch (result)
		    {
			    case "1":
				    window.location = homepage; break;
			    case "-1":
				    window.location = loginUrl; break;
			    default:
				    loadlightboxFB(); break;
		    }
	    }
	});
}

function facebookLoginSubmit(formName)
{
	new Ajax.Request(fbloginurl,
	{   method: 'get',
	    onSuccess: function(transport) {
		    var result = transport.responseText;
		    
		    switch (result)
		    {
			    case "1":
				    document.forms[formName].submit(); break;
			    case "-1":
				    window.location = loginUrl; break;
			    default:
				    loadlightboxFBSubmit(); break;
		    }
	    }
	});
}

function facebookLoginPublish()
{
	new Ajax.Request(fbloginurl,
	{   method: 'get',
	    onSuccess: function(transport) {
		    var result = transport.responseText;
		    
		    switch (result)
		    {
			    case "1":
				    facebookPublish(); break;
			    case "2":
				    window.location.reload(false); break;
			    case "-1":
				    window.location = loginUrl; break;
			    default:
				    loadlightboxFB(); break;
		    }
	    }
	});
}


function facebookLoginProfile()
{
	new Ajax.Request(fbloginurl,
	{   method: 'get',
	    onSuccess: function(transport) {
		    var result = transport.responseText;
		    
		    switch (result)
		    {
			    case "1":
			    case "2":
				    window.location = inviteurl; break;
			    case "-1":
				    window.location = loginUrl; break;
			    default:
				    loadlightboxFB(); break;
		    }
	    }
	});
}

function logout()
{
	window.location = logoutUrl;
	//window.location = logoutUrl;
	/*if (FB.Connect.get_loggedInUser() > 0)
	{
		FB.Connect.logoutAndRedirect(logoutUrl);
	}
	else
	{
		window.location = logoutUrl;
	}*/
}

function publishQuiz(name, link, image, id)
{
	var data = {"quiz_name":name,
                      "quiz_link":link,
                      "images":[{'src':image,
                                 'href':link}]};
        FB.Connect.showFeedDialog(id, data, null, null, null, FB.RequireConnect.doNotRequire);
}

function publishEntry(entryLink, compTitle, image, id)
{
	var data = {"comp_name":compTitle,
                      "entry_link":entryLink,
		      "comp_link":entryLink,
                      "images":[{'src':image,
                                 'href':entryLink}]};
        FB.Connect.showFeedDialog(id, data, null, null, null, FB.RequireConnect.doNotRequire);
}

function publishFave(entryLink, entryTitle, entryThumb, id)
{
	var data = {"entry_link":entryLink, 
		    "entry_name":entryTitle,
	            "images":[{'src':entryThumb,
                                 'href':entryLink}]};
        FB.Connect.showFeedDialog(id, data, null, null, null, FB.RequireConnect.doNotRequire);
}

function publishShareEntry(entryLink, entryTitle, entryThumb, id)
{
	var data = {"entry_link":entryLink, 
		    "entry_name":entryTitle,
	            "images":[{'src':entryThumb,
                                 'href':entryLink}]};
        FB.Connect.showFeedDialog(id, data, null, null, null, FB.RequireConnect.promptConnect);
}

function publishBrag(compLink, compTitle, entryThumb, entryLink, place, id)
{
	var data = {"comp_link":compLink, 
		    "comp_name":compTitle,
		    "place":place,
		    "entry_link":entryLink,
	            "images":[{'src':entryThumb,
                                 'href':entryLink}]};
        FB.Connect.showFeedDialog(id, data, null, null, null, FB.RequireConnect.doNotRequire);
}

function publishCreateQuiz(name, link, image, id)
{
	var data = {"quiz_name":name,
                      "quiz_link":link,
                      "images":[{'src':image,
                                 'href':link}]};
        FB.Connect.showFeedDialog(id, data, null, null, null, FB.RequireConnect.doNotRequire);
}

function fbs_share(url, title) {
	window.open('http://www.facebook.com/sharer.php?u='+encodeURIComponent(url)+'&t='+encodeURIComponent(title),'sharer','toolbar=0,status=0,width=626,height=436');
	return false;
}

function checkFBPublishPermissions(hasPermissionsFunc, noPermissionsFunc, baseUpdateUrl, emailPermissions, emailOnly)
{
	var permissionsText = 'publish_stream,user_photos,email,user_birthday,user_location';

	FB.Facebook.apiClient.users_hasAppPermission(permissionsText, function (haspermissions) { 
		if(!haspermissions){
			FB.Connect.showPermissionDialog(permissionsText, function(perms) {
				   if (!perms) {
					   if (noPermissionsFunc)
					   {
						   noPermissionsFunc();
					   }
				   }
				   else
				   {
					   if (hasPermissionsFunc)
					   {
						   new Ajax.Request(baseUpdateUrl+'?value='+perms, 
							   {
							   	asynchronous:true, 
							   	evalScripts:false,
								onSuccess: function(transport) {
									hasPermissionsFunc();
								}
							   });
					   }
				   }
			 });
		}
		else
		{
			if (hasPermissionsFunc)
			{
				hasPermissionsFunc();
			}
		}
	});
}
