﻿function showBackSearch() {
   $("#searchback").show();
   //document.getElementById("searchback").style.visibility = "visible";
}

var Search =
    {
       Filter: function() {
          $("#getCachedResults").attr("value", "false");
          Search.Search(false);
       },

       OrderBy: function() {
          $("#sortExpression").attr("value", $("#selSortExpression").val());
          $("#getCachedResults").attr("value", "false");
          Search.Search(false);
       },

       Search: function(isKeyword) {

          $("#searchResultsConainer").html("<img id='loaderRow' src='../images/largeloader.gif' alt='loading'/>");

          var filterArray = $(".UserFilters");
          var filters = '';
          $.each(filterArray, function(i, n) {
             if (n.checked) {
                if (filters.length > 0)
                   filters += ',';

                filters += n.value;
             }
          });

          var x = '<div class="landingsection"><table width="100%" class="landingsection" cellpadding="0" cellspacing="0">';
          $.ajax(
          {
             type: "POST",
             url: "Data/Search.ashx",
             dataType: "json",
             data: { user_id: $("#userID").val(), search_terms: $("#searchTerms").val(), page_number: $("#pageNumber").val(), sort_expression: $("#sortExpression").val(), is_keyword: "false", get_cached_results: $("#getCachedResults").val(), filters: filters, user_id: $("#userID").val(), search_terms: $("#searchTerms").val(), page_number: $("#pageNumber").val(), sort_expression: $("#sortExpression").val(), is_keyword: "false", get_cached_results: $("#getCachedResults").val(), filters: filters, adv_search_type: $('#advancedSearchType').val() },
             success: function(searchResult) {
                x += '<tr class="head"><th colspan="5" height="25">Search results for:' + searchResult.SearchTerms + '</th></tr>';
                x += '<tr class="recordpaging"><td colspan="3" class="recordpaging">&nbsp;&nbsp;';

                for (var p = 1; p <= parseInt(searchResult.NumberOfPages); p++) {
                   x += '<span class="link" onclick="GotoPage(' + p + ');">' + p + '</span> &nbsp;';
                }

                //add Next> link
                x += '<span class="link nextpage" onclick=\'GotoPage(parseInt($("#pageNumber").val()) + 1);\'>Next <img src="../images/next_arrow.png" alt="Next"/></span>';
                x += '</td>';

                x += '<td class="searchorder" colspan="2">Sort By: <select id="selSortExpression" name="selSortExpression" onChange="Search.OrderBy();">';
                x += '<option value="Rating" ' + (searchResult.SortExpression == 'Rating' ? 'selected' : '') + '>Rating</option>';
                x += '<option value="ContentType" ' + (searchResult.SortExpression == 'ContentType' ? 'selected' : '') + '>Type</option>';
                x += '<option value="Title" ' + (searchResult.SortExpression == 'Title' ? 'selected' : '') + '>Name</option>';
                x += '<option value="AuthorLastName" ' + (searchResult.SortExpression == 'AuthorLastName' ? 'selected' : '') + '>Author</option>';
                x += '<option value="Type" ' + (searchResult.SortExpression == 'DbType' ? 'selected' : '') + '>Source</option>';
                x += '</td></tr>';
                //x += '<tr class="GridViewHeader">';



                if (searchResult.SearchResultItemCollection == null || searchResult.SearchResultItemCollection.length == 0) {
                   x += '<tr><td colspan="4">No Results</td></tr>';
                   if ($('#advancedSearchType').val() != 'basic') {
                      x += '<tr><td colspan="5"><span class="link button" onclick="javascript:history.go(-1);">Back</span></td></tr>';
                   }
                }
                else {
                   var oddrow = true;

                   $.each(searchResult.SearchResultItemCollection, function(i, n) {
                      // Rank, PageName, EncryptedID, Name, Author, Date
                      var firstrowtext = n.Description;
                      if (firstrowtext == null) {
                         firstrowtext = n.Keywords;
                      }

                      if (firstrowtext != null) {
                         var blen = firstrowtext.length;
                         firstrowtext = firstrowtext.replace(/(<([^>]+)>)/ig, '');
                         var alen = firstrowtext.length;
                      }

                      if (firstrowtext != null && firstrowtext.length > 0) {
                         firstrowtext = firstrowtext.substr(0, 80) + ' ...';
                      }

                      var exticon = "";
                      if (n.DbType == "core") {
                         exticon = "<img src='../images/external.png' title='External content'/>";
                      }

                      x += '<tr class="result ' + (oddrow ? 'odd' : 'even') + (n.DbType == 'local' ? ' internalContent' : ' externalContent') + '">';

                      x += '<td class="' + (n.Rank > 0 ? "RatedClass" : "UnRatedClass") + '">' + (n.Rank > 0 ? n.Rank : "") + '</td>';
                      x += '<td class="TypeIconClass"><img align="absmiddle" height="21px" src="../images/' + n.ContentType + '.png" alt="Content Type"/></td>';
                      x += '<td class="record"><span class="resulttitle"><a href="' + n.PageName + '.aspx?id=' + n.ID + '&type=' + n.DbType + '">' + n.Name + '</a></span><br/><span class="resultclip">' + firstrowtext + '</span></td>'
                      x += '<td class="record authorcell">by ' + n.Author + ' on ' + $.datepicker.formatDate("mm/dd/yy", n.CreatedDate) + '</td>';
                      x += '<td style="width: 30px; text-align: center;">' + exticon + '</td>';
                      x += '</tr>';



                      oddrow = (oddrow ? false : true);

                   });
                   //Add bottom row for record paging

                   x += '<tr class="recordpaging"><td colspan="5" class="recordpaging">&nbsp;&nbsp;';
                   for (var p = 1; p <= parseInt(searchResult.NumberOfPages); p++) {
                      x += '<span class="link" onclick="GotoPage(' + p + ');">' + p + '</span> &nbsp;';
                   }

                   //add Next> link
                   x += ' <span class="link nextpage" onclick=\'GotoPage(parseInt($("#pageNumber").val()) + 1);\'>Next <img src="../images/next_arrow.png" /></span>';

                   x += '</td>';
                   x += '</tr>';

                   if ($('#advancedSearchType').val() != 'basic') {
                      x += '<tr><td colspan="5"><span class="link button" onclick="javascript:history.go(-1);">Back</span></td></tr>';
                   }
                }


                x += '</table>';
                x += '</div>';
               
                $("#searchResultsContainer").html(x);

                // now keywords
                var keywords = '';
                $.each(searchResult.Keywords, function(i, n) {
                   keywords += '<span class="link ' + Search.GetSearchTermClass(searchResult.TotalHits, n.KeywordCount) + '" onclick="GetNewSearchResult(\'' + n.KeywordText + '\');showBackSearch()\">' + n.KeywordText + '</span>  ';
                });


                $("#keywordContainer").html(keywords);
                $("#loaderRow").remove();
                $("#getCachedResults").attr("value", "True");

                //Reposition footer if needed
                AdjustFooterDiv();
             }
          });


       },

       DisplayResults: function(searchResult, searchType) {


       },

       GetSearchTermClass: function(totalCount, keywordCount) {
          var hits = parseFloat(totalCount);
          var count = parseFloat(keywordCount);
          var percent = ((count / hits) * 100);
          if (percent < 1)
             return "tag_0";

          if (percent < 3)
             return "tag_1";

          if (percent < 5)
             return "tag_2";

          if (percent < 10)
             return "tag_3";

          if (percent < 15)
             return "tag_4";

          if (percent < 30)
             return "tag_5";

          return "tag_6";

       }
    };
