$(document).ready(function() {
	$.getScript("http://static.ak.connect.facebook.com/js/api_lib/v0.4/FeatureLoader.js.php");
});

var FBC_heading; 
var FBC_subHeading; 
var FBC_contentLinkText; 
var FBC_contentLinkURL; 
var FBC_contentBody; 
var FBC_contentImageURL; 
var FBC_publishButtonTitle; 
var FBC_cancelButtonTitle;
var FBC_loggedInClickCount = 0;
var FBC_uid = 0;


function FBCPostOnWall(APIKey, FBChannelFile, imageHeading, imageDescription, imageUrl, linkUrl) {
	$(document).ready(function() {
		FB.init(APIKey, FBChannelFile);
		FB.ensureInit(function () {
			var attachment = { 
				'name': '' + imageHeading + '', 
				'href': '' + linkUrl + '', 
				'description': '' + imageDescription + '', 
				'media': [{ 
					'type': 'image', 
					'src': '' + imageUrl + '', 
					'href': '' + linkUrl + ''
				}] 
			};
			FB.Connect.streamPublish('', attachment);
		});
	});
}

function FBCPostOnFriendsWalls(APIKey, FBChannelFile, heading, subHeading, contentLinkText, contentLinkURL, contentBody, contentImageURL, publishButtonTitle, cancelButtonTitle) {
	FBC_heading = heading; 
	FBC_subHeading = subHeading; 
	FBC_contentLinkText = contentLinkText; 
	FBC_contentLinkURL = contentLinkURL; 
	FBC_contentBody = contentBody; 
	FBC_contentImageURL = contentImageURL; 
	FBC_publishButtonTitle = publishButtonTitle; 
	FBC_cancelButtonTitle = cancelButtonTitle;
	Cancel();
	FB_RequireFeatures(['Api'], function() {
		FB_RequireFeatures(['Comments'], function() {
			FB.init(APIKey, FBChannelFile, { 'ifUserConnected': onLoggedIn, 'ifUserNotConnected': onLoggedOut });
			FB.XFBML.Host.autoParseDomTree = false;
			if(FBC_loggedInClickCount > 0){
				onLoggedIn(FBC_uid);
			}
		});
	});
}

function onLoggedIn(uid){
	FBC_uid = uid;
	FBC_loggedInClickCount = FBC_loggedInClickCount + 1;
	FB.Connect.showPermissionDialog("publish_stream", function(perms) {
		if (perms) {
			FB.Connect.forceSessionRefresh(function() {
				RenderPostToFriendForm(uid);			
			});
		}
	});
}

function onLoggedOut(){
	FBC_loggedInClickCount = 0;
	FB.Connect.requireSession();													
}

function LoadFriends(uid) {  
	FB.XFBML.Host.autoParseDomTree = false;  

	FB_RequireFeatures(["CanvasUtil"], function(){  FB.CanvasClient.startTimerToSizeToContent(); });  
	var api = FB.Facebook.apiClient;  
	api.fql_query("SELECT uid, first_name, last_name FROM user WHERE  uid IN (SELECT uid2 FROM friend WHERE uid1 = "+uid+") order by first_name", function(result, ex) {  
		data = "<ul>";  
		for (i=0;i<result.length;i++) {  
			data += "<li><input type='checkbox' value='"+result[i].uid+"' name='friends[]' id = 'friend"+result[i].uid+"' />"+ result[i].first_name + " " + result[i].last_name+"</li>";
		}  
		data +="</ul>";  
		$('#fb_friends').css({"overflow-y":"scroll","height":"200px","border":"1px solid #ccc"});  
		$('#fb_friends').html( data);  
	});  
}

function RenderPostToFriendForm(uid){
	var api = FB.Facebook.apiClient;  
	api.fql_query("SELECT  pic_small_with_logo  FROM user WHERE uid = "+uid, function(result, ex) {

		var userProfileImage;
		userProfileImage = result[0].pic_small_with_logo;
		
		var leftMargin = $(window).width();
		leftMargin = leftMargin/2;
		leftMargin = leftMargin - 310;
		
		var postToFriendForm = '<div id="postToFriendForm" class="fb_resetstyles fb_popupContainer"><div id="fbcStyles"></div><table id="RES_ID_fb_pop_dialog_table" class="fb_pop_dialog_table fb_popup" style="width: 622px; left: ' + leftMargin + 'px; top: 125px;"><tbody><tr><td class="fb_pop_topleft"/><td class="fb_pop_border"/><td class="fb_pop_topright"/></tr><tr><td class="fb_pop_border"/><td id="pop_content" class="fb_pop_content"><div class="fb_pop_content_container"><h2 class="fb_resetstyles"><div class="fb_dialog_icon"></div><span id="fb_dialog_header" class="fb_dialog_header">' + FBC_heading  + '</span><div id="fb_dialog_loading_spinner" class="fb_dialog_loading_spinner "> </div><a id="fb_dialog_cancel_button" class="fb_dialog_cancel_button" onclick="Cancel();return false;" href="#" title="close dialog"> </a></h2><div id="fb_dialog_content" class="fb_dialog_content"><input id="post_form_id" type="hidden" autocomplete="off" value="6e77d52f79eaac5aba546bfe5517fb33" name="post_form_id"/><table class="interaction_form" cellspacing="0" cellpadding="0" border="0"><tbody><tr><td class="pop_content"><div id="dialog_body" class="interaction_dialog_body interaction_form"><div class="interaction_form"><div id="feed_size_options" class="interaction_form_body"></div><div id="preview_container"><div class="story_preview_nile minifeedwall minifeed"><div id="preview_medium" class="preview selected"><div id="div_story_4b14e372206680f296202" class="UIStory UIIntentionalStory aid_682745947 aid_187065979862" data-ft="{"sty":"63","actrs":"682745947","app_id":"187065979862"}"><img style="position:absolute;left:0;" class="UIProfileImage UIProfileImage_LARGE" src="' + userProfileImage + '"/><div class="UIFeedFormStory_Prompt"><span class="UIFeedFormStory_Lead">' + FBC_subHeading + '</span><div id="userMessageTextArea"><textarea id="feedform_user_message" class="DOMControl_autogrow" name="feedform_user_message" style="overflow: hidden;"></textarea></div></div><div class="UIStoryAttachment" data-ft="{"type":"attach"}"><div class="UIStoryAttachment_Media UIStoryAttachment_MediaSingle" data-ft="{"type":"media"}"><div class="UIMediaItem"><a href="' + FBC_contentImageURL + '"><div class="UIMediaItem_Wrapper"><img alt="" src="' + FBC_contentImageURL + '"/></div></a></div></div><div class="UIStoryAttachment_Info"><div class="UIStoryAttachment_BlockQuote"><div class="UIStoryAttachment_Title"><a style="color:#3B5998;font-weight:bold;" href="' + FBC_contentLinkURL + '">' + FBC_contentLinkText + '</a></div><div class="UIStoryAttachment_Copy">' + FBC_contentBody + '</div></div></div></div></div></div></div></div><div class="feed_dialog_disclaimer">By publishing, you are agreeing to the <a target="_blank" href="http://www.facebook.com/terms.php">Facebook Terms of Use</a>.</div></div><div id="fb_friends"></div></div><div class="dialog_buttons"><input id="publish" class="inputbutton" type="button" value="' + FBC_publishButtonTitle + '" name="publish" onclick="Publish();return false;"/><input id="cancel" class="inputbutton inputaux" type="button" value="' + FBC_cancelButtonTitle + '" name="cancel" onclick="Cancel();return false;"/></div></td></tr></tbody></table><div id="FB_HiddenContainer" style="position: absolute; top: -10000px; width: 0px; height: 0px;"/></div><div class="DOMControl_shadow" style="font-size: 13px; font-family: "lucida grande",tahoma,verdana,arial,sans-serif; width: 492px;"/></div></td><td class="fb_pop_border"/></tr><tr><td class="fb_pop_bottomleft"/><td class="fb_pop_border"/><td class="fb_pop_bottomright"/></tr></tbody></table></div>';
		var FBC_Styles = '<style>#fb_friends{padding:5px;}#userMessageTextArea{width:503px;}.hiddenFBCBox{display:none;}#fb_friends ul{margin:0;}#fb_friends li{float:left;width:190px;list-style:none;}.inputbutton, .inputsubmit {background-color:#3B5998;border-color:#D9DFEA #0E1F5B #0E1F5B #D9DFEA;border-style:solid;border-width:1px;color:#FFFFFF;padding:2px 15px 3px;text-align:center;font-size:13px;}.inputaux {background:#F0F0F0 none repeat scroll 0 0;border-color:#E7E7E7 #666666 #666666 #E7E7E7;color:#000000;}.interaction_form .story_preview_nile {padding:10px 3px 6px 20px;}.UIFeedFormStory_Prompt textarea {border:1px solid #BDC7D8;font-family:"lucida grande",tahoma,verdana,arial,sans-serif;font-size:11px;padding:3px;height:32px;}a.fb_dialog_cancel_button{height:13px;}.UIStoryAttachment_Title a{color:#3B5998;font-weight:bold;}.interaction_form .feed_dialog_disclaimer {color:#808080;font-size:9px;padding:0 0 10px 10px;}.feed_dialog_disclaimer a{color:#3B5998 !important;cursor:pointer !important;font-size:9px !important;margin-right:5px;}.UIIntentionalStory {background-color:#FFFFFF;border-top:1px solid #EEEEEE;margin-bottom:7px;min-height:50px;padding:7px 0 0 60px;position:relative;}.story_preview_nile .UIIntentionalStory {border:medium none;}.UIStory:first-child {border-top:medium none;margin-top:0;}.UIFeedFormStory_Prompt .UIFeedFormStory_Lead {font-weight:bold;}.UIFeedFormStory_Prompt {color:#777777;font-size:13px;}.UIFeedFormStory_Prompt textarea {font-size:13px;font-weight:normal;margin-top:7px;overflow:hidden;width:100%;}.UIIntentionalStory .UIStoryAttachment_MediaSingle {padding-right:10px;}.UIStoryAttachment_Media {float:left;overflow:hidden;padding-right:10px;}.UIStoryAttachment {margin-bottom:5px;margin-top:6px;overflow:hidden;padding-right:10px;}.UIStoryAttachment_Copy {color:#808080;padding-top:3px;}.interaction_form .dialog_buttons {background:#F7F7F7 none repeat scroll 0 0;overflow:hidden;padding:10px;position:relative;text-align:right;}.pop_content .dialog_buttons input {margin-left:5px;}</style>';
		var FBC_LinkedStyles = '<link rel="stylesheet" type="text/css" href="http://static.ak.connect.facebook.com/connect.php/en_US/css/bookmark-button-css/connect-button-css/connect-widget-wizard-css/share-button-css/bookmark-app-css/FB.Connect-css/connect-css">';
		
		$('form').append(postToFriendForm);
		$('#fbcStyles').append(FBC_Styles);
		$('#fbcStyles').append(FBC_LinkedStyles);
		LoadFriends(uid);
	});
}

function Publish() {
	$("#postToFriendForm").addClass('hiddenFBCBox');

	var attachment ={'name':'' + FBC_contentLinkText  + '',
						'href':'' + FBC_contentLinkURL + '',
						'description':'' + FBC_contentBody + '',
						'media':[{'type':'image',
									'src':'' + FBC_contentImageURL + '',
									'href':'' + FBC_contentLinkURL + ''
						}]
					};
						
	$("#fb_friends li input:checked").each(function(){
		var targetId = $(this).attr('value');
		var userMessage = $('#feedform_user_message').val();
		FB.Connect.streamPublish(userMessage, attachment, null, targetId, '', dummy, true, null);
	});
}

function dummy() {}			

function Cancel() {
	$("#postToFriendForm").remove();
}