﻿// Search Type constants
var SEARCH_TYPE_WORD = 1;
var SEARCH_TYPE_PATTERN = 2;

var SF_REPORT_TITLES = 1;
var SF_REPORT_NOTES = 2;
var SF_DATA_SOURCE_NAMES = 3;
var SF_DIMENSION_NAMES = 4;

var M_strAdvancedReportSearchOptions =
   "<table class='OptionTable' width='100%' cellPadding='3' cellSpacing='0'>"
   + "<tr><td><table cellPadding='3' cellSpacing='0'>"
   + "<tr><td>"
   + "<table cellPadding='3' cellSpacing='0'>"
   + "<tr>"
   + "<td class=OptionHeader nowrap align=left>" + resFindResults + "</td>"
   + "</tr>"
   + "<tr height='3'></tr>"
   + "</table>"
   + "</td></tr>"
   + "<tr><td>"
   + "<table cellPadding='3' cellSpacing='0'>"
   + "<tr><td>"
   + "<table cellPadding='3' cellSpacing='0'>"
   + "<tr><td class=OptionItem nowrap valign=top><LABEL for='SearchFields'"
   +  ">" 
   +  resSearchFields
   +  "</LABEL></td>"
   +  "<td><SELECT multiple class=Default name='SearchFields' id='SearchFields' size='4' STYLE='width:240px' "
   +  " onkeypress='javascript:SubmitAdvancedSearch(event);' >"
   +  "<option selected value=" + SF_REPORT_TITLES.toString() + ">"
   +  resReportTitles
   +  "</option>"
   +  "<option selected value=" + SF_REPORT_NOTES.toString() + ">"
   +  resReportNotes
   +  "</option>"
   +  "<option value=" + SF_DATA_SOURCE_NAMES.toString() + ">"
   +  resDataSourceNames
   +  "</option>"
   +  "<option value=" + SF_DIMENSION_NAMES.toString() + ">"
   +  resDimensionNames
   +  "</option>"
   +  "</SELECT></td></tr></table></td></tr>"
   + "<tr><td>"
   + "<table cellPadding='3' cellSpacing='0'>"
   + "<tr>"
   + "<td class=OptionItem nowrap>"
   + "<input type=radio title='" + resWordSearch
   + "' name=SearchType id=SearchTypeWord value='1'"
   + " onClick=\"javascript:SelectSearchType(SEARCH_TYPE_WORD);\""
   + " onkeypress=\"javascript:SubmitAdvancedSearch(event);\" checked>"
   + "</td>"
   + "<td class=OptionItem nowrap>"
   + "<LABEL FOR=SearchTypeWord ACCESSKEY=\"w\">" + resWordSearch + "</LABEL>"
   + "</td>"
   + "</tr>"
   + "</table>"
   + "</td></tr>"
   + "<tr>"
   + "<td nowrap><table>"
   + "<tr>"
   + "<td width=10>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>"
   + "<td id=RptAllWordsId class=OptionItem nowrap>"
   + "<LABEL FOR=AllWordsId ACCESSKEY='a'>" + resWithAllWords + "</LABEL>"
   + "</td>"
   + "<td>"
   + "<input class=Default title=\"" + resWithAllWords + "\" "
   + "onkeypress='javascript:SubmitAdvancedSearch(event);'"
   + " name='AllWords' id='AllWordsId' type=text size='50'>"
   + "</td>"
   + "</tr>"
   + "<tr>"
   + "<td width=10>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>"
   + "<td id=RptPhraseId class=OptionItem nowrap>"
   + "<LABEL FOR=PhraseId ACCESSKEY='p'>" + resWithPhrase + "</LABEL>"
   + "</td>"
   + "<td>"
   + "<input class=Default title=\"" + resWithPhrase + "\" "
   + "onkeypress='javascript:SubmitAdvancedSearch(event);'"
   + " name='Phrase' id='PhraseId' type=text size='50'>"
   + "</td>"
   + "</tr>"
   + "<tr>"
   + "<td width=10>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>"
   + "<td id=RptAnyWordsId class=OptionItem nowrap>"
   + "<LABEL FOR=AnyWordsId ACCESSKEY='o'>" + resWithAnyWords + "</LABEL>"
   + "</td>"
   + "<td>"
   + "<input class=Default title=\"" + resWithAnyWords + "\" "
   + "onkeypress='javascript:SubmitAdvancedSearch(event);'"
   + " name='AnyWords' id='AnyWordsId' type=text size='50'>"
   + "</td>"
   + "</tr>"
   + "<tr>"
   + "<td width=10>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>"
   + "<td id=RptNoWordsId class=OptionItem nowrap>"
   + "<LABEL FOR=NoWordsId ACCESSKEY='w'>" + resWithoutWords + "</LABEL>"
   + "</td>"
   + "<td>"
   + "<input class=Default title=\"" + resWithoutWords + "\" "
   + "onkeypress='javascript:SubmitAdvancedSearch(event);'"
   + " name='NoWords' id='NoWordsId' type=text size='50'>"
   + "</td>"
   + "</tr>"
   + "</table>"
   + "</td></tr>"
   + "<tr><td>"
   + "<table cellPadding='3' cellSpacing='0'>"
   + "<tr>"
   + "<td class=OptionItem nowrap>"
   + "<input type=radio title='" + resPatternSearch
   + "' name=SearchType id=SearchTypePattern value='2'"
   + " onClick=\"javascript:SelectSearchType(SEARCH_TYPE_PATTERN);\""
   + " onkeypress=\"javascript:SubmitAdvancedSearch(event);\">"
   + "</td>"
   + "<td class=OptionItem nowrap>"
   + "<LABEL FOR=SearchTypePattern ACCESSKEY=\"p\">" + resPatternSearch + "</LABEL>"
   + "</td>"
   + "</tr>"
   + "</table>"
   + "</td></tr>"
   + "<tr>"
   + "<td nowrap><table>"
   + "<tr>"
   + "<td width=10>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>"
   + "<td id=RptPattern class=OptionItem nowrap>"
   + "<LABEL FOR=PatternId ACCESSKEY='a'>" + resPattern + "</LABEL>"
   + "</td>"
   + "<td>"
   + "<input class=Default title=\"" + resPattern + "\" "
   + "onkeypress='javascript:SubmitAdvancedSearch(event);'"
   + " name='Pattern' id='PatternId' type=text size='50'>"
   + "</td>"
   + "</tr>"
   + "</table>"
   + "</td></tr>"
   + "<tr><td>"
   + "<table cellPadding='3' cellSpacing='0'>"  
   + "<tr><td nowrap>"
   + "<input name=OKButton type=button value=\"" + resOK 
   + "\" onclick=\"javascript:OnAdvancedSearchOptions();\">&nbsp;"
   + "<input name=CancelButton type=button value=\"" + resCancel 
   + "\" onclick=\"javascript:OnCancelOptions();\">"
   + "</td>"
   + "</tr></table></td>"
   + "</tr>"
   + "</table>"
   + "</td></tr>"
   + "<tr height='6'></tr>"
   + "</table>"
   + "</td>"
   + "<td width='100%'></td>"
   + "</tr>"
   + "</table>";

var M_strAdvancedMemberSearchOptions =
   "<table class='OptionTable' width='100%' cellPadding='3' cellSpacing='0'>"
   + "<tr><td><table cellPadding='3' cellSpacing='0'>"
   + "<tr><td>"
   + "<table cellPadding='3' cellSpacing='0'>"
   + "<tr>"
   + "<td class=OptionHeader nowrap align=left>" + resFindResults + "</td>"
   + "</tr>"
   + "<tr height='3'></tr>"
   + "</table>"
   + "</td></tr>"
   + "<tr><td>"
   + "<table cellPadding='3' cellSpacing='0'>"
   + "<tr>"
   + "<td nowrap><table>"
   + "<tr>"
   + "<td class=OptionItem nowrap>"
   + "<LABEL FOR=AllWordsId ACCESSKEY='a'>" + resWithAllWords + "</LABEL>"
   + "</td>"
   + "<td>"
   + "<input class=Default title=\"" + resWithAllWords + "\" "
   + "onkeypress='javascript:SubmitAdvancedSearch(event);'"
   + " name='AllWords' id='AllWordsId' type=text size='50'>"
   + "</td>"
   + "</tr>"
   + "<tr>"
   + "<td class=OptionItem nowrap>"
   + "<LABEL FOR=PhraseId ACCESSKEY='p'>" + resWithPhrase + "</LABEL>"
   + "</td>"
   + "<td>"
   + "<input class=Default title=\"" + resWithPhrase + "\" "
   + "onkeypress='javascript:SubmitAdvancedSearch(event);'"
   + " name='Phrase' id='PhraseId' type=text size='50'>"
   + "</td>"
   + "</tr>"
   + "<tr>"
   + "<td class=OptionItem nowrap>"
   + "<LABEL FOR=AnyWordsId ACCESSKEY='o'>" + resWithAnyWords + "</LABEL>"
   + "</td>"
   + "<td>"
   + "<input class=Default title=\"" + resWithAnyWords + "\" "
   + "onkeypress='javascript:SubmitAdvancedSearch(event);'"
   + " name='AnyWords' id='AnyWordsId' type=text size='50'>"
   + "</td>"
   + "</tr>"
   + "<tr>"
   + "<td class=OptionItem nowrap>"
   + "<LABEL FOR=NoWordsId ACCESSKEY='w'>" + resWithoutWords + "</LABEL>"
   + "</td>"
   + "<td>"
   + "<input class=Default title=\"" + resWithoutWords + "\" "
   + "onkeypress='javascript:SubmitAdvancedSearch(event);'"
   + " name='NoWords' id='NoWordsId' type=text size='50'>"
   + "</td>"
   + "</tr>"
   + "<tr><td nowrap>"
   + "<input name=OKButton type=button value=\"" + resOK 
   + "\" onclick=\"javascript:OnAdvancedSearchOptions();\">&nbsp;"
   + "<input name=CancelButton type=button value=\"" + resCancel 
   + "\" onclick=\"javascript:OnCancelOptions();\">"
   + "</td>"
   + "</tr></table></td>"
   + "</tr>"
   + "</table>"
   + "</td></tr>"
   + "<tr height='6'></tr>"
   + "</table>"
   + "</td>"
   + "<td width='100%'></td>"
   + "</tr>"
   + "</table>";

var M_strAdvancedPatternMemberSearchOptions =
   "<table class='OptionTable' width='100%' cellPadding='3' cellSpacing='0'>"
   + "<tr><td><table cellPadding='3' cellSpacing='0'>"
   + "<tr><td>"
   + "<table cellPadding='3' cellSpacing='0'>"
   + "<tr>"
   + "<td class=OptionHeader nowrap align=left>" + resFindResults + "</td>"
   + "</tr>"
   + "<tr height='3'></tr>"
   + "</table>"
   + "</td></tr>"
   + "<tr><td>"
   + "<table cellPadding='3' cellSpacing='0'>"
   + "<tr><td>"
   + "<table cellPadding='3' cellSpacing='0'>"
   + "<tr>"
   + "<td class=OptionItem nowrap>"
   + "<input type=radio title='" + resWordSearch
   + "' name=SearchType id=SearchTypeWord value='1'"
   + " onClick=\"javascript:SelectSearchType(SEARCH_TYPE_WORD);\""
   + " onkeypress=\"javascript:SubmitAdvancedSearch(event);\" checked>"
   + "</td>"
   + "<td class=OptionItem nowrap>"
   + "<LABEL FOR=SearchTypeWord ACCESSKEY=\"w\">" + resWordSearch + "</LABEL>"
   + "</td>"
   + "</tr>"
   + "</table>"
   + "</td></tr>"
   + "<tr>"
   + "<td nowrap><table>"
   + "<tr>"
   + "<td width=10>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>"
   + "<td id=RptAllWordsId class=OptionItem nowrap>"
   + "<LABEL FOR=AllWordsId ACCESSKEY='a'>" + resWithAllWords + "</LABEL>"
   + "</td>"
   + "<td>"
   + "<input class=Default title=\"" + resWithAllWords + "\" "
   + "onkeypress='javascript:SubmitAdvancedSearch(event);'"
   + " name='AllWords' id='AllWordsId' type=text size='50'>"
   + "</td>"
   + "</tr>"
   + "<tr>"
   + "<td width=10>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>"
   + "<td id=RptPhraseId class=OptionItem nowrap>"
   + "<LABEL FOR=PhraseId ACCESSKEY='p'>" + resWithPhrase + "</LABEL>"
   + "</td>"
   + "<td>"
   + "<input class=Default title=\"" + resWithPhrase + "\" "
   + "onkeypress='javascript:SubmitAdvancedSearch(event);'"
   + " name='Phrase' id='PhraseId' type=text size='50'>"
   + "</td>"
   + "</tr>"
   + "<tr>"
   + "<td width=10>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>"
   + "<td id=RptAnyWordsId class=OptionItem nowrap>"
   + "<LABEL FOR=AnyWordsId ACCESSKEY='o'>" + resWithAnyWords + "</LABEL>"
   + "</td>"
   + "<td>"
   + "<input class=Default title=\"" + resWithAnyWords + "\" "
   + "onkeypress='javascript:SubmitAdvancedSearch(event);'"
   + " name='AnyWords' id='AnyWordsId' type=text size='50'>"
   + "</td>"
   + "</tr>"
   + "<tr>"
   + "<td width=10>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>"
   + "<td id=RptNoWordsId class=OptionItem nowrap>"
   + "<LABEL FOR=NoWordsId ACCESSKEY='w'>" + resWithoutWords + "</LABEL>"
   + "</td>"
   + "<td>"
   + "<input class=Default title=\"" + resWithoutWords + "\" "
   + "onkeypress='javascript:SubmitAdvancedSearch(event);'"
   + " name='NoWords' id='NoWordsId' type=text size='50'>"
   + "</td>"
   + "</tr>"
   + "</table>"
   + "</td></tr>"
   + "<tr><td>"
   + "<table cellPadding='3' cellSpacing='0'>"
   + "<tr>"
   + "<td class=OptionItem nowrap>"
   + "<input type=radio title='" + resPatternSearch
   + "' name=SearchType id=SearchTypePattern value='2'"
   + " onClick=\"javascript:SelectSearchType(SEARCH_TYPE_PATTERN);\""
   + " onkeypress=\"javascript:SubmitAdvancedSearch(event);\">"
   + "</td>"
   + "<td class=OptionItem nowrap>"
   + "<LABEL FOR=SearchTypePattern ACCESSKEY=\"p\">" + resPatternSearch + "</LABEL>"
   + "</td>"
   + "</tr>"
   + "</table>"
   + "</td></tr>"
   + "<tr>"
   + "<td nowrap><table>"
   + "<tr>"
   + "<td width=10>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>"
   + "<td id=RptPattern class=OptionItem nowrap>"
   + "<LABEL FOR=PatternId ACCESSKEY='a'>" + resPattern + "</LABEL>"
   + "</td>"
   + "<td>"
   + "<input class=Default title=\"" + resPattern + "\" "
   + "onkeypress='javascript:SubmitAdvancedSearch(event);'"
   + " name='Pattern' id='PatternId' type=text size='50'>"
   + "</td>"
   + "</tr>"
   + "</table>"
   + "</td></tr>"
   + "<tr><td>"
   + "<table cellPadding='3' cellSpacing='0'>"  
   + "<tr><td nowrap>"
   + "<input name=OKButton type=button value=\"" + resOK 
   + "\" onclick=\"javascript:OnAdvancedSearchOptions();\">&nbsp;"
   + "<input name=CancelButton type=button value=\"" + resCancel 
   + "\" onclick=\"javascript:OnCancelOptions();\">"
   + "</td>"
   + "</tr></table></td>"
   + "</tr>"
   + "</table>"
   + "</td></tr>"
   + "<tr height='6'></tr>"
   + "</table>"
   + "</td>"
   + "<td width='100%'></td>"
   + "</tr>"
   + "</table>";

var M_bReportSearch;

function SelectSearchType(i_nType)
{
   if (i_nType == SEARCH_TYPE_WORD) {
      document.aspnetForm.Pattern.disabled = true;
      document.aspnetForm.Pattern.value = "";
      document.getElementById("RptPattern").className = "DisabledOptionItem";
      document.aspnetForm.AllWords.disabled = false;
      document.getElementById("RptAllWordsId").className = "OptionItem";
      document.aspnetForm.Phrase.disabled = false;
      document.getElementById("RptPhraseId").className = "OptionItem";
      document.aspnetForm.AnyWords.disabled = false;
      document.getElementById("RptAnyWordsId").className = "OptionItem";
      document.aspnetForm.NoWords.disabled = false;
      document.getElementById("RptNoWordsId").className = "OptionItem";
   }
   else if (i_nType == SEARCH_TYPE_PATTERN) {
      document.aspnetForm.Pattern.disabled = false;
      document.getElementById("RptPattern").className = "OptionItem";
      document.aspnetForm.AllWords.disabled = true;
      document.aspnetForm.AllWords.value = "";
      document.getElementById("RptAllWordsId").className = "DisabledOptionItem";
      document.aspnetForm.Phrase.disabled = true;
      document.aspnetForm.Phrase.value = "";
      document.getElementById("RptPhraseId").className = "DisabledOptionItem";
      document.aspnetForm.AnyWords.disabled = true;
      document.aspnetForm.AnyWords.value = "";
      document.getElementById("RptAnyWordsId").className = "DisabledOptionItem";
      document.aspnetForm.NoWords.disabled = true;
      document.aspnetForm.NoWords.value = "";
      document.getElementById("RptNoWordsId").className = "DisabledOptionItem";
   }
}

function ShowAdvancedSearchOptions(i_bReportSearch, i_bFromSearch, i_bWithPattern)
{
   var strButtonSrc = "";

   M_bReportSearch = i_bReportSearch;
	zeroScrollPosition();	
   if (i_bFromSearch) {
      strButtonSrc = "selected";
   }
   if (i_bReportSearch) {
      DisplayOption(M_strAdvancedReportSearchOptions, "SearchButton", strButtonSrc);
         document.aspnetForm.Pattern.disabled = true;
         document.getElementById("RptPattern").className = "DisabledOptionItem";
   }
   else {
      if (i_bWithPattern) {
         DisplayOption(M_strAdvancedPatternMemberSearchOptions, "SearchButton", strButtonSrc);
         document.aspnetForm.Pattern.disabled = true;
         document.getElementById("RptPattern").className = "DisabledOptionItem";
      }
      else {
         DisplayOption(M_strAdvancedMemberSearchOptions, "SearchButton", strButtonSrc);
      }
   }
   InitializeSearchData();
   setTimeout("document.aspnetForm.AllWords.focus();", 100);
   
   // Resize scroll bars
   onLayoutResize();         
}

function InitializeSearchData()
{
   var nLen;
   var szTemp = "";
   
   if (document.aspnetForm.SearchString != null) {
      szTemp = document.aspnetForm.SearchString.value;
   }
   
   nLen = szTemp.length;
   if (nLen > 0) {
	   if (nLen > 1 && szTemp.indexOf("\"") == 0 && szTemp.lastIndexOf("\"") == nLen - 1) {
	      // quoted phrase
         szTemp = szTemp.substr(1, nLen - 2);
         document.aspnetForm.Phrase.value = szTemp;
		}
		else {
		   // words
		   szTemp = szTemp.replace(new RegExp("\,", "g")," ");
         document.aspnetForm.AllWords.value = szTemp;
		}
		if (document.aspnetForm.SearchString != null) {
		   document.aspnetForm.SearchString.value = "";
		}
   }
}

function SubmitAdvancedSearch(e)
{
   var key = GetKeyCode(e);
   if ( key == 13) {
      if (!OnAdvancedSearchOptions()) {
         ResetSubmit(e);
      }
   }
}

function AdjustSearchEntry(i_clSearchEntry)
{
   var szTemp;
   var szValue;
   
   szValue = i_clSearchEntry.value;
   if (szValue.length > 0) {
	   szTemp = szValue.replace(new RegExp(" ", "g"),"");
	   szTemp = szTemp.replace(new RegExp("\,", "g"),"");
	   szTemp = szTemp.replace(new RegExp("\\\\", "g"),""); 
	   if ( szTemp == ""){
		   i_clSearchEntry.value = "";
		   szValue = "";
	   }
   }
   return szValue;
}

function OnAdvancedSearchOptions()
{
   var bPatternSearch = false;
   var bValid = false;
   var clSearchFields;
   var clSearchTypePattern;
   var nIndex;
   var szAllWords = "";
   var szAnyWords = "";
   var szNoWords = "";
   var szPattern = "";
   var szPhrase = "";
   var szSearchString;
   var szSearchFields = "";
   
   clSearchTypePattern = document.getElementById("SearchTypePattern");
   if (clSearchTypePattern != null) {
      bPatternSearch = clSearchTypePattern.checked;
   }
   if (bPatternSearch) {
      szPattern = document.aspnetForm.Pattern.value;
      if (szPattern == "") {
         alert(resEnterPattern);
         document.aspnetForm.Pattern.focus();
      }
      else {
         bValid = true;
      }
   }
   else {
      szAllWords = AdjustSearchEntry(document.aspnetForm.AllWords);
      szAnyWords = AdjustSearchEntry(document.aspnetForm.AnyWords);
      szNoWords = AdjustSearchEntry(document.aspnetForm.NoWords);
      szPhrase = document.aspnetForm.Phrase.value;
      if (szAllWords == "" && szAnyWords == "" && szNoWords == "" && szPhrase == "") {
         alert(resEnterSearchPhraseOrWords);
         document.aspnetForm.AllWords.focus();
      }
      else {
         bValid = true;
      }
   }
   if (bValid && M_bReportSearch) {
      clSearchFields = document.aspnetForm.SearchFields;
      if (clSearchFields != null) {
         for (nIndex = 0; nIndex < clSearchFields.options.length; nIndex++) {
            if (clSearchFields.options[nIndex].selected) {
               if (szSearchFields.length > 0) {
                  szSearchFields = szSearchFields + ",";
               }
               szSearchFields = szSearchFields + clSearchFields.options[nIndex].value.toString();
            }
         }
         if (szSearchFields.length == 0) {
            bValid = false;
            alert(resSearchFieldsSelectOne);
            document.aspnetForm.SearchFields.focus();
         }
      }
   }
   if (bValid) {
      if (document.aspnetForm.FirstItem != null) {
         document.aspnetForm.FirstItem.value = "0";
      }
      szSearchString = szAllWords + GDelim20 + szPhrase + GDelim20 + szAnyWords + GDelim20
         + szNoWords + GDelim20 + szPattern;
		//replace quotes with a special character
      szSearchString = szSearchString.replace(new RegExp("\"", "g"), GDoubleQuoteRep);
      szSearchString = escapeHTML(szSearchString);
      if (M_bReportSearch) {
         document.aspnetForm.ReportSearchString.value = szSearchString;
         document.aspnetForm.ReportSearchFields.value = szSearchFields;
      }
      else {
         // Member Search
         document.aspnetForm.MembersSearchString.value = szSearchString;
      }
      executeWait(document.aspnetForm);
   }
}
