function checkForApplicationAdded()
{
	facebook.users_isAppAdded( function(added, exception){
	if ( !added )
	{
		handleUnaddedApplication();
	}
	else
	{
		checkForRegistration();
	}
} );
}

function handleUnaddedApplication()
{
	$('fb_add_container').style.display = 'block';
}

function addApplication()
{
	window.parent.location = 'http://www.facebook.com/add.php?api_key=' + facebook_api_key + '&ref=pd';
}

function checkForRegistration()
{
	new Ajax.Request("/facebook_homes/get_user_by_facebook_uid/" + facebookUserId, {onSuccess: respondToRegistrationCheck});
}

function respondToRegistrationCheck(response)
{
	result = eval( '(' + response.responseText + ')' );
	if (result == null)
	{
		showAccountLinkForm();
	}
	else
	{
		meownSessionUser = result['session'];
		meownOwner = result['owner'];
		meownOwnerId = meownOwner.id;
		meownOwnerFacebookId = meownOwner.facebook_uid;
//		window.location = "/users/" + meownSessionUser.id + "/widgets?in_website=true&theme=facebook.css&in_facebook=true";
		
		
		$('div_meown_widget_container').style.display = 'block';
		$('span_meown_facebook_title').innerHTML = meownOwner.identity + "'s collections";
//		new Ajax.Request("/users/" + meownOwnerId + "/collections.json", {method: 'get', 
//			onSuccess: function(response){
//				
//				lastRefreshedCollections = eval( '(' + response.responseText + ')' );
//				renderWidget(null, (meownOwner.id == meownSessionUser.id), true, lastRefreshedCollections);
//				
//			}});
		initializeWidget(true);
	}
}

function showAccountLinkForm()
{
	$('fb_link_accounts_container').style.display = 'block';
	toggleLinkAccountRadio();
}

function toggleLinkAccountRadio()
{
	if( $('radio_link_accounts_login').checked )
	{
		$('fb_login_content').setOpacity(1);
		$('fb_register_content').setOpacity(0.3);
		
		$('input_login_email').disabled = false;
		$('input_login_password').disabled = false;
		$('input_register_display_name').disabled = true;
		$('input_register_email').disabled = true;
		$('input_register_password').disabled = true;
		$('input_register_password_confirmation').disabled = true;
		$('register_error').style.display = 'none';
		$('input_login_email').focus();
	}
	else
	{
		$('fb_login_content').setOpacity(0.3);
		$('fb_register_content').setOpacity(1);
		
		$('input_login_email').disabled = true;
		$('input_login_password').disabled = true;
		$('input_register_display_name').disabled = false;
		$('input_register_email').disabled = false;
		$('input_register_password').disabled = false;
		$('input_register_password_confirmation').disabled = false;
		$('login_error').style.display = 'none';
		$('input_register_display_name').focus();
	}
}

function submitAccountLink()
{
	if( $('radio_link_accounts_login').checked )
	{
		loginAndLink();
	}
	else
	{
		registerAndLink();
	}
}

function loginAndLink()
{
	loginEmail = $('input_login_email').value;
	loginPassword = $('input_login_password').value;
	
	new Ajax.Request( "/logins.json", {parameters: {'login[email]': loginEmail, 'login[password]': loginPassword, 'facebook_uid': facebookUserId},
									   method: 'post',
									   onSuccess: respondToLoginAndLink } );
}

function respondToLoginAndLink(response)
{
	result = eval( '(' + response.responseText + ')' );
	if (result == null)
	{
		showLinkLoginError("Invalid Login !!")
	}
	else if (result == -1)
	{
		showLinkLoginError("Account suspended until you confirm your email (check your email)")
	}
	else
	{
		handleInvitations();
	}
}
function showLinkLoginError(error)
{
	errorHolder = $('login_error');
	errorHolder.innerHTML = error;
	errorHolder.style.display = 'block';
	new Effect.Highlight(errorHolder, {duration: 3});
}

function registerAndLink()
{
	display_name = $('input_register_display_name').value;
	email = $('input_register_email').value;
	password = $('input_register_password').value;
	confirmation = $('input_register_password_confirmation').value;
	
	new Ajax.Request( "/registrations.json", {parameters: {'registration[display_name]': display_name,
														   'registration[email]': email,
														   'registration[password]': password,
														   'registration[password_confirmation]': confirmation,
														   'facebook_uid': facebookUserId},
									 		  method: 'post',
									   		  onSuccess: respondToRegisterAndLink } );
}

function respondToRegisterAndLink(response)
{
	result = eval( '(' + response.responseText + ')' );
	if ( result.errors == null )
	{
		handleInvitations();
	}
	else
	{
		errorsHTML = TrimPath.processDOMTemplate('jst_registration_errors', {errors: result.errors});
		showLinkRegisterError(errorsHTML);
	}
}

function showLinkRegisterError(error)
{
	errorHolder = $('register_error');
	errorHolder.innerHTML = error;
	errorHolder.style.display = 'block';
	new Effect.Highlight(errorHolder, {duration: 3});
}

function handleInvitations()
{
	params = [];
	params[0] = {name: 'action', value: "http://apps.facebook.com/" + facebook_app_url_suffix};
	params[1] = {name: 'actiontext', value: "Invite friends to meOwns"}
	params[2] = {name: 'api_key', value: facebook_api_key};
	params[3] = {name: 'content', value: "meOwns allows you to list all your collections and share them with friends. Let people know you more through your possessions! <fb:req-choice url='http://apps.facebook.com/" + facebook_app_url_suffix + "' label='Get your meOwns' />"};
	params[4] = {name: 'invite', value: 'true'};
	params[5] = {name: 'type', value: "meOwns"};
	
	
	signature = getSignature(params);
	
	params[6] = {name: 'sig', value: signature};
	
	url = urlEncode("http://www.facebook.com/multi_friend_selector.php", params);
	window.parent.location = url;
	
}

function getSignature(sortedParams)
{
	conc = ""
	for ( i=0; i<sortedParams.length; i++ )
	{
		conc = conc + sortedParams[i].name + "=" + sortedParams[i].value;
	}
	conc = conc + facebook_secret
	signature = FBIntern.Md5.computeHashToString(conc);
	return signature;
}

function urlEncode(prefix, params)
{
	result = prefix + "?";
	for ( i=0; i<params.length; i++ )
	{
		result = result + params[i].name + "=" + params[i].value;
		if (i != params.length-1)
		{
			result = result + "&";
		}
	}
	return result;
}

function getFacebookUserIdentity(idnentity)
{
	facebook.users_getInfo([facebookUserId], ["first_name"], function(result, exception){
		identity =result[0].first_name;
	});
}

function myFacebookWidget()
{
	window.parent.location = "http://apps.facebook.com/" + facebook_app_url_suffix;
}

function setProfileFBML(){
	
	var minimized_version_of_collections = [];
	var all_items = [];
	var all_sorted_items = [];
	var minimized_version_of_items = [];
	
	lastRefreshedCollections.each(function(collection){
		if(collection.items.size() > 0){
			collection.items.each(function(item){
				all_items.push(item);				
			})
			minimized_version_of_collections.push({name: collection.name, items_count: collection.items.size()});	
		}
	})
	
	all_sorted_items = all_items.sortBy(function(item) { return new Date(item.created_at); });
	all_sorted_items.reverse();
	
	max_length = all_sorted_items.length < 6? all_sorted_items.length : 6;
	for (var i = 0; i < max_length; ++i) {
		var item = all_sorted_items[i];
		
		if(item.thumb_image_relative_path == null){
			image_src = appDomain + "/images/graphics/defaultWidgetItem.gif";
		}else{
			image_src = thumbnailUrl("item", item.thumb_image_relative_path);
		}
		
		minimized_version_of_items[i] = {name: item.name, image: image_src};
	}
	
	profile_fbml = TrimPath.processDOMTemplate('jst_FB_profile_box_content', {fb_app_url_suffix: facebook_app_url_suffix,
																			  fb_user_id : facebookUserId,
																			  items : minimized_version_of_items,
																			  collections : minimized_version_of_collections});
	facebook.profile_setFBML(facebookUserId, profile_fbml,'','',function(){});
}