 (function () {

 NC.widget.PeopleManager = function() {
	/* private variables and methods */
	var starimage = new Array( '',
		'<img src="../imagesv2/badges/one_star_2.png">',
		'<img src="../imagesv2/badges/two_stars_2.png">',
		'<img src="../imagesv2/badges/three_stars_2.png">',
		'<img src="../imagesv2/badges/four_stars_2.png">',
		'<img src="../imagesv2/badges/five_stars_2.png">');
	var searchTitle = "Connect with these professionals";
	var resultsDiv = 'centercontent';
	var progressDiv = 'SearchProgress';
	var containerDivName = 'MainFrame';
	var rewritePage = false;
	var refreshPage = false;
	var searchTemplate = 
	'							<div id="ContentContainer"> ' + 
	'								<div id="LeftColumnWide" class="leftcolumnwide">'+
	'									<div class="contentbody" id="centercontent">'+
	'									</div>  '+
	'									<div id="MessageDiv">'+
	'										<div id="ProfileScoreDiv">' +
	'										</div>' +	
	'									</div>'+
	'								</div>'+
	'									<div class="rightcolumnwide"> '+
	'									<div id="StreamDiv"> '+
	'									</div> '+
	'								</div> '
	'							</div>';
 	
 	 	return {
 	 		/* public methods */

			showProgress: function() {
				var elMessageDiv = document.getElementById(progressDiv);
				elMessageDiv.innerHTML = '<img src="../imagesv2/circle-ball-dark-antialiased.gif" border="0">';
			},
	
			hideProgress: function() {
				var elMessageDiv = document.getElementById(progressDiv);
				elMessageDiv.innerHTML = '';
			},

			getResultsDiv: function() {
				return resultsDiv;
			},
			
			getRefreshPage: function() {
				return refreshPage;
			},
			
			showResults: function( results, peopleSearchUrl) {
				if (rewritePage) {
					var containerDiv = document.getElementById( containerDivName);
					if (containerDiv != null) {
						containerDiv.innerHTML = searchTemplate;
						NC.util.Event.onContentReady( containerDivName, function() {
							NC.widget.PeopleManager._showResults(results, peopleSearchUrl);
						});
					}
				}
				else {
					NC.widget.PeopleManager._showResults(results, peopleSearchUrl);
				}
			},

 			_showResults: function( results, peopleSearchUrl) {
				if (results != null && results.length > 0) {
					var oDiv = document.getElementById(resultsDiv);
					var content = '<div class="peoplelistcontainer">';
					
					var inviteForm = 'inviteForm.php';
					var inviteFormName = 'JsInviteForm';
					var inviteFormHandler = 'do_invite.php';
					var inviteLabel = "Invite";
					var baseInviteAction = 'javascript:NC.widget.CandidateManager.showInvitePopup(  \'' +
					inviteForm +
					'\', \'' +
					inviteFormName +
					'\', \'' +
					inviteFormHandler +
					'\',' +
					'\'' +
					'' +
					'\', null,';//
					var updates = new Array();
					for (var i = 0; i < results.length; i++) {
						content += '<div>';
						/*
		 content += 'Confidential ';
		 content += results[i].categoryname + '&nbsp;';
		 content += results[i].ncscore + '&nbsp;';
		 content += results[i].mgrcategory + '&nbsp;';
		 content += results[i].mgrstars+ '&nbsp;';
		 content += results[i].location;
		 */
						var badge = results[i].badge;
						if (typeof(badge) != "undefined" && badge.length > 0) {
							badge = decode64(badge);
						}
						var candidateName = results[i].name;
						var names = candidateName.split(" ");
						var firstName = '';
						var lastName = '';
						switch (names.length) {
							case 1:
								candidateName = names[0];
								lastName = candidateName;
								break;
								
							case 2:
								candidateName = names[0] + ' ' + names[1];
								firstName = names[0];
								lastName = names[1];
								break;
								
							case 3:
							default:
								candidateName = names[0] + ' ' + names[2];
								firstName = names[0];
								lastName = names[2];
						}
						content += '<div class="detailed">';
						content += '<div class="badgeheader">';
						content += badge;
						content += '</div>';
						content += '<div class="detailheaderleft">';
						content += '<span class="namelarge">' + candidateName + '</span>';
						content += ', ' + results[i].categoryname;
						if (results[i].mgrcategory == 2) {
							content += ', Management ' + starimage[results[i].mgrstars];
						}
						content += '</div>';
						
						// add action icons
						if (NC.LoggedIn == 1) {
							content += '<div class="detailheaderright">';
							var Content_PeopleSearchResult = 17; // from class.content.php
							var Conversation_StrNotes = 'Notes'; // from class.conversation.php
							var conversationIcon = '../imagesv2/notepencil_14px.png';
							content += '&nbsp;<a href="#" onclick="NC.widget.ConversationManager.showConversationPopup( event, ' + Content_PeopleSearchResult + ',' + results[i].resumeid + ', \'' + Conversation_StrNotes + '\')">' + '<img border="0" alt="View and add notes" src="' + conversationIcon + '">' + '</a>';
							var argList = results[i].resumeid;
							argList += ', ' + Content_PeopleSearchResult;
							argList += ', \'' + candidateName + '\'';
							argList += ', true'
							content += '&nbsp;<a href="#" onclick="NC.widget.TagManager.showTagPopup(event,' + argList + ')">' + '<img border="0" alt="View and edit tags" src="../imagesv2/hashtag_14px.png">' + '</a>';
							content += '</div>';
							if (results[i].email != undefined && results[i].email.length > 0) {
								content += '<div class="detailheaderright">';
								content += '&nbsp;<a href="#" onclick="NC.widget.QueryManager.showEmailContactPopup(event, ' +  results[i].resumeid  + ',\'' + candidateName + '\')">' + '<img border="0" alt="Email contact" src="../imagesv2/secure_email_14px.png">' + '</a>';
								content += '</div>';
							}
						}
						
						
						
						content += '<div style="clear:both"></div>';
						content += '<div class="detailheaderleft">';
						content += results[i].location + ', since ' + results[i].date;
						content += '</div>';
						content += '<div style="clear:both"></div>';
						var d = 'Profile' + results[i].resumeid;
						var r = {};
						r.divname = d;
						r.resumeid = results[i].resumeid;
						updates[updates.length] = r;
						content += '<div class="profile" id="' + d + '"></div>';
						//					var inviteFaceBookAction = baseInviteAction  +  '3, ' + results[i].resumeid + ')"'; 
						var inviteTwitterAction = 'http://twitter.com/search/users?q=' + encodeURI(candidateName) + '&category=people&source=find_on_twitter';
						var inviteFaceBookActionName = 'http://www.facebook.com/search/?ref=ffs&q=' + encodeURI(candidateName) + '&o=2048&init=ffs';
						//					var inviteFaceBookActionEmail = 'http://www.facebook.com/search/?ref=ffs&q=' + encodeURI(candidateName) + '&o=2048&init=ffs';
						//					var inviteLinkedInAction = baseInviteAction  +  '4, ' + results[i].resumeid + ')"'; 
						var inviteLinkedInAction = 'http://www.linkedin.com/search/fpsearch?fname=' + encodeURI(firstName) + '&lname=' + encodeURI(lastName) +
						'&searchLocationType=Y&page_num=1&search=&pplSearchOrigin=MDYS&viewCriteria=1&sortCriteria=R&redir=redir';
						var findGoogleAction = 'http://www.google.com/search?hl=en&site=&q=' + encodeURI(candidateName + ' ' + results[i].location) + '&btnG=Search';
						content += '<div class="action">';
						content += 'Connect: <a target="_blank" href="' + inviteFaceBookActionName + '">Facebook</a> ';
						content += '<a  target="_blank" href="' + inviteLinkedInAction + '">LinkedIn</a> ';
						content += '| Follow: <a target="_blank" href="' + inviteTwitterAction + '">Twitter</a> ';
						content += '| Search:<a  target="_blank" href="' + findGoogleAction + '">Google</a> ';
						content += '</div>';
						content += '</div>';
						content += '</div>';
					}
					content += '</div>';
					if (searchTitle == null) {
						searchTitle = 'Connect with these professionals';
					}
					explanation = '<p>Click on the LinkedIn, Facebook, Twitter or Google link in the blue bar to find and connect with these people.</p>';
					content =  '<h2>' + searchTitle + '</h2>' + explanation + content;
					searchTitle = null; // reset - single use only
					oDiv.innerHTML = content;
					searchTitle = null;
					NC.util.Event.onContentReady(resultsDiv, function(){
						for (var u = 0; u < updates.length; u++) {
							var div = document.getElementById(updates[u].divname);
							var url = './getprofile.php?rid=' + updates[u].resumeid;
							var updater = new NC.util.AjaxUpdate('GET', url, updates[u].divname, updates[u].divname, null);
							updater.doUpdate(true);
						}
					});
				}
				else { // no results
					var i = peopleSearchUrl.indexOf( '?');
					var query = '';
					if (i != -1) {
						query = peopleSearchUrl.substring(i+1);
					}
					var helpUrl = './searchHelp.php?q=' + encodeURI(query);
					var updater = new NC.util.AjaxUpdate( 'GET', helpUrl, resultsDiv,  resultsDiv, null);
					updater.doUpdate( true);
				}
			},
			
			execPeopleSearch: function( peopleSearchUrl, onResultsAvailable) {
					var callback =
					{
		  				success:function( o) {
							this.hideProgress();
							var results = null;
							if (o.responseText.length > 2) {
								var results = NC.lang.JSON.parse(o.responseText);
							}
							NC.widget.PeopleManager.showResults(results, peopleSearchUrl);
							if (results != null && onResultsAvailable != null) {
								onResultsAvailable();
							}
		  				},
		  				failure:function( o) {
							this.hideProgress();
//							alert( "failed to get search results");
							return null;
		  				},
						scope: this    				
					};

					this.showProgress();
//					var updater = new NC.util.AjaxUpdate( 'GET', './searchProgress.php', resultsDiv,  resultsDiv, null);
//					updater.doUpdate( true);
					

					var connection = new NC.util.AjaxConnection( 'GET', peopleSearchUrl, null);
					connection.executeMethod( callback);
					
					NC.widget.QueryManager.setHintShown( false); // if the hint was used, make it a real query
			},
			
			setSearchTitle: function( title) {
				searchTitle = title;
			},
			
 	 		initPeopleSearch: function( formDiv, _resultsDiv, _rewritePage, _refreshPage, onResultsAvailable ) { 
				resultsDiv = _resultsDiv;
				rewritePage = _rewritePage;
				refreshPage = _refreshPage;
				var pars = '';
				var formSource = './peoplesearchform.php';
				this.peopleSearchDialog = new NC.widget.ValidatedModalDialog(
					formSource, 
					pars, 
					formDiv, 
					'PeopleSearchForm',
			 		function( updateUrl, updateParms, updateTarget) // submission function
			 		{
						if (NC.widget.PeopleManager.getRefreshPage()) {
							//	use this code to refresh the entire window and show google ads relevant to the search
							updateUrl = window.location.pathname;
							if (updateUrl.indexOf('?') == -1) {
								updateUrl += '?';
							}
							else (updateUrl += '&');
							updateUrl += updateParms;
							window.location.href = updateUrl;
						}
						else {
//							updateParms += 'pc=' + NC.widget.CategoryManager.getSelectedCategory();
							updateUrl += '?' + updateParms;
							NC.widget.PeopleManager.execPeopleSearch( updateUrl, onResultsAvailable);
						}


						
			 		}, 
			 		'./peoplesearch.php', // update url
			 		'', // update target
			 		function( form, errorDiv) // validation function
			 		{
			 			var rVal = true;
			 			var errorMessage = '';
						var controls = form.elements;
						for (var ci = 0; ci < controls.length; ci++) {
							if (controls[ci].name == 'q') {
								if (NC.util.Dom.getValue(controls[ci]).length <= 0) {
									rVal = false;
									/*
									if (errorMessage.length > 0) {
										errorMessage += '<br>';
									}
									errorMessage += 'Please enter a link';
									*/
								}
							}
						}
						if (!rVal) {
							var element = document.getElementById(errorDiv);
							element.innerHTML = errorMessage;
							element.style.display = 'block';
						}
						return rVal;	
			 		},
			 		'NCError',
			 		false // not a popup
				);	
//				this.peopleSearchDialog.show( 0, 0, 0);	// not a popup - size does not matter
 	 		},
			
			getPeopleSearchDialog: function() {
				return this.peopleSearchDialog;
			},
			
			BasicHelp: 0,
			DetailedHelp: 1,
			
			getHelpUrl: function ( type) {
				var helpUrl =  './peopleSearchHelp.php';
				if (type == this.DetailedHelp) {
					helpUrl = './peopleSearchDetailedHelp.php';
				}
				return helpUrl;
			},
			
			showHelpRewrite: function( type) {
				var helpUrl = this.getHelpUrl( type);
				var containerDiv = document.getElementById( containerDivName);
				if (containerDiv != null) {
					containerDiv.innerHTML = searchTemplate;
					NC.util.Event.onContentReady( containerDivName, function() {
						var updater = new NC.util.AjaxUpdate( 'GET', helpUrl, resultsDiv,  resultsDiv, null);
						updater.doUpdate( true);
					});
				}
			},
			
			showHelp: function( type) {
				var helpUrl = this.getHelpUrl( type);
				var updater = new NC.util.AjaxUpdate( 'GET', helpUrl, resultsDiv,  resultsDiv, null);
				updater.doUpdate( true);
			},
			
			showCategories: function() {
				var updater = new NC.util.AjaxUpdate( 'GET', './categoryHelp.php', resultsDiv,  resultsDiv, null);
				updater.doUpdate( true);
			}
 	 	}
  }	
();

})(); 	
 
