﻿var PLUCKSearch = PLUCKSearch ? PLUCKSearch : function() {
    var private = {
        title: "PLUCK Search Implementation",
        //serverUrl: "http://sitelifestage.en.batanga.com/ver1.0/Direct/Process?sid=sitelifestage.en.batanga.com",	
        serverUrl: serverUrl,
	    UID: "uid",
	    currentPage: 1,	    
	    name: "",
	    genreInterests : "",
	    debug: function(str) {
		    if (enableConsoleLog)
		        console.log(str);	 
	    },
	    debugobj: function(obj) {
	    if (enableConsoleLog)
		    console.dir(obj);
	    },
	    searchUser: function(searchString,page) {
		    private.debug("searchUser: getting stuff from pluck");
		    private.currentPage = page;
	        var requestBatch = new RequestBatch();
		    var searchPage = new SearchAction("User",searchString,10,private.currentPage);		    
		    requestBatch.AddToRequest(searchPage);
	        requestBatch.BeginRequest(private.serverUrl, private.renderUserSearch);
	    },
	    renderUserSearch: function(responseBatch) {
		    private.debug("renderUserSearch");
		    private.debugobj(responseBatch);
		    if (responseBatch.Messages[0].Message === 'ok') {
			    // success from pluck, lets process the data
	            for (var i = 0; i < responseBatch.Responses.length; i++) {
				    var response = responseBatch.Responses[i];

				    if (response.SearchResult != null) {
					    if (private.searchResultPageHandler != null) {
						    private.searchResultPageHandler(response.SearchResult);
					    }
					    else {
						    private.debug("No SearchResultPageHandler defined and response " + i + " is a SearchResult");
					    }
				    }
			    }
		    }
	    },
	    searchResultPageHandler:function(searchPage){
		    private.debug('searchResult');
		    private.debugobj(searchPage);
		    public.showResults(searchPage.SearchResults,searchPage.NumberOfSearchResults);		    
	    },
        getPagination: function(totalItems){               
            private.debug('in getPagination: totalItems = ' + totalItems + ', private.currentPage = ' + private.currentPage);
            var pageIndex = 1;
            var firstPageCaption = "First";
            var lastPageCaption = "Last";
            
            var paginationHtml = "<div class=\"searchpagination\">";
            //paginationHtml += "&nbsp;<a href=\"#\" onclick=\"PLUCKSearch.searchOn('1'); return false;\">" + firstPageCaption + "</a>";
            for(i = 1; i <= totalItems ; i += 10)
            {
                paginationHtml += "&nbsp;";
                if(pageIndex == private.currentPage)
                {
                    paginationHtml += pageIndex;
                }
                else
                {
                    paginationHtml += "<a href=\"#\" onclick=\"PLUCKSearch.searchOn('" + pageIndex + "'); return false;\">" + pageIndex + "</a>";
                }
                pageIndex++;
            }                
            
            //pageIndex--;
            //paginationHtml += "&nbsp;<a href=\"#\" onclick=\"PLUCKSearch.searchOn('" + (pageIndex - 1) +"'); return false;\">" + lastPageCaption + "</a>";
            
            paginationHtml += "</div>";
            
            return paginationHtml;
        }
    };

    var public = {
        getTitle: function() {
          return private.title;
        },
        searchOn: function (page)
        {
            private.debug('in searchOn: searchType=' + private.searchType + ', searchValue = ' + private.searchValue + ', page = ' + page);
            public.search(private.name, private.genreInterests, page);
        },
	    search: function(name, genreInterests, page) {	   
	        page = page || 1;
	        private.debug('in search: name=' + name + ', genreInterests = ' + genreInterests + ', page = ' + page);
	        
	        private.name = name;
	        private.genreInterests = genreInterests;
		    
		    var searchString = "";
		    //var searchString = "(DisplayName: " + name + " OR name: " + name + ") AND (interests: " + genreInterests + " OR musicgenres: " + genreInterests + ")";		  		    
		    
		    if(name.length > 0)
		    {
		        searchString = "(DisplayName: " + name + " OR name: " + name + ")";
		    }
		    
		    if(genreInterests.length > 0)
		    {
		        if(searchString.length > 0) searchString += " AND ";
		        searchString += "(interests: " + genreInterests + " OR musicgenres: " + genreInterests + ")";		  		    		        
		    }
		    
		    private.debug('searchString : '+ searchString);
		    private.searchUser(searchString, page);		    
	    },
	    showResults:function(userArray,totalItems){
		    private.debug("showResults");
		    private.debugobj(userArray);
		    var friendHtml = "";
		    var toolTip = "";
		    for (var i = 0; i < userArray.length; i++){
			    var user=userArray[i];	
			    var userFound = true;			   
			    if(userFound){
			        if(user.ExtendedProfile != null)
			        {
			            if(user.ExtendedProfile.interests != null)
			            {
			                //toolTip += "<div id='friendExtendedProfile'>Interests: "+ user.ExtendedProfile.interests + "</div>";
			                toolTip += "Interests: "+ user.ExtendedProfile.interests;
			            }
			            if(user.ExtendedProfile.musicgenres != null)
			            {
			                //toolTip += "<div id='friendExtendedProfile'>Music Genres: " + user.ExtendedProfile.musicgenres + "</div>";
			                toolTip += "\r\nMusic Genres: " + user.ExtendedProfile.musicgenres;
			            }			            
			        }			   
			        
			        friendHtml += "<div class='friendRow'>";
			        friendHtml += " <a><img class='friendPhoto' alt='" + toolTip + "' title='" + toolTip + "' src='"+user.AvatarPhotoUrl+"' /></a>";			        
			        friendHtml += " <span id='friendPersona'><a class='friendLink' href='"+user.PersonaUrl+"?"+private.UID+"="+user.UserKey.Key+"'>"+user.DisplayName+"</a></span>";
			        friendHtml += "  <br/>";
			        var aboutMe = user.AboutMe;
			        if (aboutMe.length > 100) {
				        aboutMe = aboutMe.substr(0, 100)+ "...";
			        }
			        friendHtml += "   <div id='friendAboutText'>" + aboutMe + "</div>";			            			        
			        friendHtml += "</div>";			        
			    }
		    }
		    		    
		    if(totalItems > 10)
		        friendHtml += private.getPagination(totalItems);
		    
		    var elSearchCount = document.getElementById("SearchCount");
		    elSearchCount.innerHTML = "<h2> Returned :" +totalItems + "</h2>";		
		    
		    var elUser = document.getElementById("Results");
		    elUser.innerHTML = friendHtml;
		    
		    document.getElementById("div_Searchbox").style.display = "";
		    
	    }
    }
    return public;
}();

