(function () {

 NC.util.Facebook = function() {
	/* private variables and methods */
	var connectAction = -1;
 	var connected = false;
	var appConnected = false;
	var appId = -1;
	var appInfo = [
					{
						'name': 'ncscore',
						'label': 'NC Score',
						'canvas':  'http://apps.facebook.com/ncscore',
						'invite': 'This is an invitation from NC Score',
						'inviteaction': 'Please check out NC Score',
						'selectaction': 'Invite your friends to grade their Facebook or LinkedIn profiles.'
					},
					{
						'name': 'grader',
						'label': 'Profile Grader',
						'canvas':  'http://apps.facebook.com/ncgrader',
						'invite': 'Grade your Facebook or LinkedIn profile',
						'inviteaction': 'Try Profile Grader',
						'selectaction': 'Invite your friends to grade their Facebook or LinkedIn profiles.'
					},
					{
						'name': 'grader_staging',
						'label': 'Profile Grader Beta',
						'canvas':  'http://apps.facebook.com/ncgrader-staging',
						'invite': 'Grade your Facebook or LinkedIn profile',
						'inviteaction': 'Try Profile Grader Beta',
						'selectaction': 'Invite your friends to grade their Facebook or LinkedIn profiles.'
					},
					{
						'name': 'jobs',
						'label': 'Jobs',
						'canvas':  'http://apps.facebook.com/ncjobalerts',
						'invite': 'Get jobs matched to your profile daily',
						'inviteaction': 'Try NimbleCat Jobs',
						'selectaction': 'Invite your friends to get jobs matched to their Facebook or LinkedIn profiles.'
					},
					{
						'name': 'jobs_staging',
						'label': 'Jobs Beta',
						'canvas':  'http://apps.facebook.com/ncjobalerts-staging',
						'invite': 'Get jobs matched to your profile daily',
						'inviteaction': 'Try NimbleCat Jobs Beta',
						'selectaction': 'Invite your friends to get jobs matched to their Facebook or LinkedIn profiles.'
					}
				  ];
 	
 	 	return {
 	 		/* public methods */
			AppNcScore: 0,
			AppGrader: 1,
			AppGraderStaging: 2,
			AppJobs: 3,
			AppJobsStaging: 4,
			
			/* connect button actions */
			FbGradeProfile: 1,
			FbLogin: 2,
			
			setConnectButtonAction: function( actionValue) {
				connectAction = actionValue;
			},
			
			getConnectButtonAction: function() {
				return connectAction;
			},
			
			setConnected: function( connectedValue) {
				connected = connectedValue
			},
			
			isConnected: function() {
				return connected;
			},
 	 		
			setAppConnected: function( connectedValue) {
				appConnected = connectedValue
			},
			
			isAppConnected: function() {
				return appConnected;
			},
			
			setAppId: function( _appId) {
				appId = _appId;
			},
			
			getAppId: function( ) {
				return appId;
			},
			
			getAppName: function() {
				if (appId == -1) {
					return null;
				}
				else {
					return appInfo[appId].name;
				}
			},
 	 		
			getAppLabel: function() {
				if (appId == -1) {
					return null;
				}
				else {
					return appInfo[appId].label;
				}
			},
 	 		
 	 		insertFacebookGradeProfileButton: function( buttonDivName, appName) {
				var buttonDiv = document.getElementById(buttonDivName);
				if (buttonDiv != null) {
					if (connected) {
						buttonDiv.innerHTML = '<a href="#" onclick="NC.promo.PromoManager.startFacebookPromo(\'' + appName + '\')"><img src="../imagesv2/ext/fbGradeProfile.png" border=0></a>';
					}
					else {
						buttonDiv.innerHTML = '<a href="#" onclick="onFbScoreProfile()"><img src="../imagesv2/ext/fbGradeProfile.png" border=0></a>';
					}
				}
 	 		},
			
 	 		insertFacebookLoginButton: function( buttonDivName, appName) {
				var buttonDiv = document.getElementById(buttonDivName);
				if (buttonDiv != null) {
					var altText = 'Login with your Facebook account. Its fast, easy and keeps your account info secure.';
					if (connected) {
						buttonDiv.innerHTML = '<a href="#" title="' + altText + '" onclick="NC.promo.PromoManager.startFacebookLoginPromo(\'' + appName + '\')"><img src="../imagesv2/ext/fbLogin.png" border=0></a>';
					}
					else {
						buttonDiv.innerHTML = '<a href="#" title="' + altText + '" onclick="onFbLogin()"><img src="../imagesv2/ext/fbLogin.png" border=0></a>';
					}
				}
 	 		},
			
			makeStartFacebookPromoOnAuthorizationAction: function( appName) {
					return 'NC.promo.PromoManager.startFacebookAuthorizationPromo(\'' + appName + '\')';
			},
			
 	 		insertFacebookAppGetProfileButton: function( buttonDivName, appName, facebookStatus) {
				var action = '';
				if (facebookStatus == FB.ConnectState.connected) {
					action = 'NC.promo.PromoManager.startFacebookPromo(\'' + appName + '\')';
				}
				else {
					action = this.makeStartFacebookPromoOnAuthorizationAction( appName);
				}
				var buttonDiv = document.getElementById(buttonDivName);
				buttonDiv.innerHTML = '<a href="#" onclick="' + action + '"><img src="../imagesv2/ext/facebook_logo.gif" border=0></a>';
 	 		},
			
			showBookmarkDialog: function() {
				FB.Connect.showBookmarkDialog( 
					function() {
					}
				);
			},
			
			showInviteFriendsDialog: function( ) {
				// get dialog display and show the invite friends dialog in it
				var dialog = document.getElementById( 'FBFormWrapper');
				dialog.style.width = '760px';
				dialog.style.height = '800px';
				dialog.style.display = 'block';
				NC.util.Facebook.insertInviteFriendsDialog( 'FBFormWrapper');
			},
			
			insertInviteFriendsDialog: function( divName) {
				var info = appInfo[appId]; 
				var fbml = '';
				fbml += '<fb:serverFbml style="width: 760px;">';
				fbml += '<script type="text/fbml">';
				fbml += '<fb:fbml>';
				fbml += '<fb:request-form';
//				fbml += '    action="' + info.canvas + '"';
				fbml += '    action=""';
				fbml += '    target="_top"';
				fbml += '    method="POST"';
				fbml += '    invite="true"';
				fbml += '    type="' + info.label + '"';
				fbml += '    content="' + info.invite;
				fbml += ' 				<fb:req-choice url=\'' + info.canvas + '\'';
				fbml += '       			label=\'' + info.inviteaction + '\' />';
				fbml += '			 "';
				fbml += '>';
 
				fbml += '<fb:multi-friend-selector';
				fbml += '    target="_top"';
				fbml += '    cols="5"';
				fbml += '    rows="3"';
				fbml += '	showborder="false"';
				fbml += '	actiontext="' + info.selectaction + '">';
				fbml += '</fb:request-form>';
				fbml += '</fb:fbml>';
 
				fbml += '</script>';
				fbml += '</fb:serverFbml>';

				var div = document.getElementById( divName);
				div.innerHTML = fbml;				
				NC.util.Event.onContentReady(divName, function() {
					var fbDiv = document.getElementById( divName);
					if (FB.XFBML.Host.parseDomTree) {
						setTimeout(FB.XFBML.Host.parseDomTree, 250);
					}
				});
			},
			
			showJobAlertAction: function( divName) {
				var el = document.getElementById( divName);
				el.innerHTML = '<a href="#" onclick="onShowJobAlerts()">Show alerts</a>';
			},
			
			showJobMapAction: function( divName) {
				var el = document.getElementById( divName);
				el.innerHTML = '<a href="#" onclick="onShowJobMap()">Show map</a>';
			}	 		
 	 	}
  }	
();

})(); 	
 
