<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN" "html.dtd">
<HTML>
<HEAD>
<%
' ********** INSTRUCTIONS FOR QUICK CUSTOMIZATION **********
'
' This form is set up for easy customization. It allows you to modify the
' page logo, the page background, the page title and simple query
' parameters by modifying a few files and form variables. The procedures
' to do this are explained below.
'
'
' *** Modifying the Form Logo:

' The logo for the form is named is2logo.gif. To change the page logo, simply
' name your logo is2logo.gif and place in the same directory as this form. If
' your logo is not a GIF file, or you don't want to copy it, change the following
' line so that the logo variable contains the URL to your logo.

        FormLogo = "is2logo.gif"

'
' *** Modifying the Form's background pattern.

' You can use either a background pattern or a background color for your
' form. If you want to use a background pattern, store the file with the name
' is2bkgnd.gif in the same directory as this file and remove the remark character
' the single quote character) from the line below. Then put the remark character on
' the second line below.
'
' If you want to use a different background color than white, simply edit the
' bgcolor line below, replacing white with your color choice.

'       FormBG = "background = " & chr(34) & "is2bkgnd.gif" & chr(34)
        FormBG = "bgcolor = " & chr(34) & "#FFFFFF" & chr(34)


' *** Modifying the Form's Title Text.

' The Form's title text is set on the following line.

%>
    <TITLE>Sample ASP Search Form</TITLE>
<%
'
' *** Modifying the Form's Search Scope.
'
' The form will search from the root of your web server's namespace and below
' (deep from "/" ). To search a subset of your server, for example, maybe just
' a PressReleases directory, modify the scope variable below to list the
' virtual path to search. The search will start at the directory you specify
' and include all sub-directories.

        FormScope = "/"

'
' *** Modifying the Number of Returned Query Results.
'
' You can set the number of query results returned on a single page
' using the variable below.

        PageSize = 10
'
' You can set the total number of query results returned using the
' variable below.

        MaxResults = 300

'
' *** Setting the Locale.
'
' The following line sets the locale used for queries. In most cases, this
' should match the locale of the server. You can set the locale below.

        SiteLocale = "EN-US"

'
' *** Enable saving active searches in session variables
'
' The following line enables using session state to save multi-page queries
' and avoid re-executing them when the user presses the Next Page button.
' This should be set FALSE if sessions are disabled using AspAllowSessionState.

        UseSessions = TRUE

' ********** END QUICK CUSTOMIZATION SECTIONS ***********
%>

    <LINK REL=STYLESHEET HREF="is2style.css" TYPE="text/css">

    <META NAME="DESCRIPTION" CONTENT="Sample ASP query form for Indexing Service">
    <META NAME="AUTHOR"      CONTENT="Indexing Service Team">
    <META NAME="KEYWORDS"    CONTENT="query, content, hit">
    <META NAME="SUBJECT"     CONTENT="sample form">
    <META NAME="MS.CATEGORY" CONTENT="Internet">
    <META NAME="MS.LOCALE"   CONTENT="EN-US">
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=Windows-1252">
<%
' Set Initial Conditions
    NewQuery = FALSE
    UseSavedQuery = FALSE
    SearchString = ""

    QueryForm = Request.ServerVariables("PATH_INFO")

' Did the user press a SUBMIT button to execute the form? If so get the form variables.
    if Request.ServerVariables("REQUEST_METHOD") = "POST" then
        SearchString = Request.Form("SearchString")
        Advanced = Request.Form("Advanced")
        ' NOTE: this will be true only if the button is actually pushed.
        if Request.Form("Action") = "Go" then
            NewQuery = TRUE
            RankBase=1000
            NextPageNumber = -1
        end if
    end if
    if Request.ServerVariables("REQUEST_METHOD") = "GET" then
        SearchString = Request.QueryString("qu")
        Advanced = Request.QueryString("Advanced")
        FormScope = Request.QueryString("sc")
        RankBase = Request.QueryString("RankBase")
        if Request.QueryString("pg") <> "" then
            NextPageNumber = Request.QueryString("pg")
            UseSavedQuery = UseSessions
            NewQuery = not UseSessions
        else
            NewQuery = SearchString <> ""
            NextPageNumber = -1
        end if
    end if
%>
</HEAD>

<BODY OnLoad="Init()" LANGUAGE="JSCRIPT" <%=FormBG%>>

<TABLE>
    <TR><TD><A HREF="http://www.microsoft.com/ntserver/search" target="_top"><IMG SRC ="<%=FormLogo%>" border=0 VALIGN=MIDDLE ALIGN=LEFT></a></TD></TR>
    <TR><TD ALIGN="RIGHT"><H3>Sample ASP Search Form</H3></TD></TR>
</TABLE>

<p>

<FORM NAME=QueryForm ACTION="<%=QueryForm%>" METHOD=POST>
    <TABLE WIDTH=500>
        <TR>
            <TD>Enter your query below:</TD>
        </TR>
        <TR>
            <TD><INPUT TYPE="TEXT" NAME="SearchString" SIZE="65" MAXLENGTH="100" VALUE="<%=SearchString%>" TABINDEX=1></TD>
            <TD><BUTTON TYPE=SUBMIT NAME="Action">Go</BUTTON></TD>
        </TR>
        <TR>
            <TD ALIGN="RIGHT"><A HREF="ixtiphlp.htm">Tips for searching</A></TD>
        </TR>
        <TR>
        </TR>
        <TR>
            <TD><INPUT NAME="Advanced" TYPE=CHECKBOX<% if Advanced = "on" then Response.Write(" CHECKED") end if %>>
                Use <a href="ixtiphlp.htm">Advanced Query</a>.
            </TD>
        </TR>
    </TABLE>
</FORM>

<BR>

<%
  if NewQuery then
    if UseSessions then
       set Session("Query") = nothing
       set Session("Recordset") = nothing
    end if
    NextRecordNumber = 1

    ' Remove any leading and ending quotes from SearchString

    SrchStrLen = len(SearchString)

    if left(SearchString, 1) = chr(34) then
            SrchStrLen = SrchStrLen-1
            SearchString = right(SearchString, SrchStrLen)
    end if

    if right(SearchString, 1) = chr(34) then
            SrchStrLen = SrchStrLen-1
            SearchString = left(SearchString, SrchStrLen)
    end if

    if Advanced<> "on" then
      CompSearch = "{freetext} " &  SearchString & "{/freetext}"
    else
      CompSearch = SearchString
    end if

    set Q = Server.CreateObject("ixsso.Query")
    set Util = Server.CreateObject("ixsso.Util")

    Q.Catalog = "web"
    Q.Query = CompSearch
    Q.SortBy = "rank[d]"
    Q.Columns = "DocTitle, vpath, filename, size, write, characterization, rank"

    if MaxResults <> -1 then
        Q.MaxRecords = MaxResults
    end if

    if FormScope <> "\" then
        Util.AddScopeToQuery Q, FormScope, "deep"
    end if

    if SiteLocale<>"" then
        Q.LocaleID = Util.ISOToLocaleID(SiteLocale)
    end if
    set Util = nothing

    set RS = Q.CreateRecordSet("nonsequential")

    RS.PageSize = PageSize
    ActiveQuery = TRUE

  elseif UseSavedQuery then
    if IsObject( Session("Query") ) And IsObject( Session("RecordSet") ) then
      set Q = Session("Query")
      set RS = Session("RecordSet")

      ActiveQuery = TRUE
    else
      Response.Write "ERROR - No saved query"
    end if
  end if

  if ActiveQuery then
    if RS.RecordCount <> -1 and NextPageNumber <> -1 then
      RS.AbsolutePage = NextPageNumber
      NextRecordNumber = RS.AbsolutePosition
    end if

    if not RS.EOF then
 %>

<p>
<HR WIDTH=80% ALIGN=center SIZE=3>
<p>

<%
        LastRecordOnPage = NextRecordNumber + RS.PageSize - 1
        CurrentPage = RS.AbsolutePage
        if RS.RecordCount <> -1 AND RS.RecordCount < LastRecordOnPage then
            LastRecordOnPage = RS.RecordCount
        end if

        Response.Write "Documents " & NextRecordNumber & " to " & LastRecordOnPage
        if RS.RecordCount <> -1 then
            Response.Write " of " & RS.RecordCount
        end if
        Response.Write " matching the query " & chr(34) & "<I>"
        Response.Write SearchString & "</I>" & chr(34) & ".<P>"
 %>

<% if Not RS.EOF and NextRecordNumber <= LastRecordOnPage then%>
<table border=0>
<colgroup width=105>
<% end if %>

<% Do While Not RS.EOF and NextRecordNumber <= LastRecordOnPage

    ' This is the detail portion for Title, Abstract, URL, Size, and
    ' Modification Date.

    ' If there is a title, display it, otherwise display the filename.
%>
    <p>
<%
    ' Graphically indicate rank of document with list of stars (*'s).

        if NextRecordNumber = 1 then
            RankBase=RS("rank")
        end if

        if RankBase>1000 then
            RankBase=1000
        elseif RankBase<1 then
            RankBase=1
        end if

        NormRank = RS("rank")/RankBase

        if NormRank > 0.80 then
            stars = "rankbtn5.gif"
        elseif NormRank > 0.60 then
            stars = "rankbtn4.gif"
        elseif NormRank > 0.40 then
            stars = "rankbtn3.gif"
        elseif NormRank >.20 then
            stars = "rankbtn2.gif"
        else
            stars = "rankbtn1.gif"
        end if
%>
        <tr class="RecordTitle">
            <td align="right" valign=top class="RecordTitle">
                <%= NextRecordNumber%>.
            </td>
            <td><b class="RecordTitle">
                <%if VarType(RS("DocTitle")) = 1 or RS("DocTitle") = "" then%>
                    <a href="javascript:NAF('http://<%=Request.ServerVariables("SERVER_NAME")%><%=RS("vpath")%>','<%=SearchString%>')" class="RecordTitle"><%= Server.HTMLEncode( RS("filename") )%></a>
                <%else%>
                    <a href="javascript:NAF('http://<%=Request.ServerVariables("SERVER_NAME")%><%=RS("vpath")%>','<%=SearchString%>')" class="RecordTitle"><%= Server.HTMLEncode(RS("DocTitle"))%></a>
                <%end if%>
            </b></td>
        </tr>

        <tr>
            <td valign=top align=left>
                <IMG SRC="<%=stars%>">
                <br>
<%
    ' Construct the URL for hit highlighting
        WebHitsQuery = "CiWebHitsFile=" & Server.URLEncode( RS("vpath") )
        WebHitsQuery = WebHitsQuery & "&CiRestriction=" & Server.URLEncode( Q.Query )
        WebHitsQuery = WebHitsQuery & "&CiBeginHilite=" & Server.URLEncode( "<strong class=Hit>" )
        WebHitsQuery = WebHitsQuery & "&CiEndHilite=" & Server.URLEncode( "</strong>" )
        WebHitsQuery = WebHitsQuery & "&CiUserParam3=" & QueryForm
'       WebHitsQuery = WebHitsQuery & "&CiLocale=" & Q.LocaleID
 %>
                <a href="qsumrhit.htw?<%= WebHitsQuery %>">
                <IMG src="hilight.gif" align=left alt="Highlight matching terms in document using Summary mode."> Summary</a>
                <br>
                <a href="qfullhit.htw?<%= WebHitsQuery %>&CiHiliteType=Full">
                <IMG src="hilight.gif" align=left alt="Highlight matching terms in document."> Full</a>
            </td>
            <td valign=top>
                <%if VarType(RS("characterization")) = 8 and RS("characterization") <> "" then%>
                <b><i>Abstract:  </i></b>
                    <%= Server.HTMLEncode(RS("characterization"))%>
                <%end if%>
                <p>
                <i class="RecordStats"><a href="javascript:NAF('http://<%=Request.ServerVariables("SERVER_NAME")%><%=RS("vpath")%>','<%=SearchString%>')" class="RecordStats" style="color:blue;">http://<%=Request("server_name")%><%=RS("vpath")%></a>
                <br><%if RS("size") = "" then%>(size and time unknown)<%else%>size <%=RS("size")%> bytes - <%=RS("write")%> GMT<%end if%></i>
            </td>
        </tr>
        <tr>
        </tr>
<%
          RS.MoveNext
          NextRecordNumber = NextRecordNumber+1
      Loop
 %>

</table>
<P><BR>

<%
  else   ' NOT RS.EOF
      if NextRecordNumber = 1 then
          Response.Write "No documents matched the query<P>"
      else
          Response.Write "No more documents in the query<P>"
      end if

  end if ' NOT RS.EOF


if NOT Q.OutOfDate then
' If the index is current, display the fact %>
<P>
    <I><B>The index is up to date.</B></I><BR>
<%end if


  if Q.QueryIncomplete then
'    If the query was not executed because it needed to enumerate to
'    resolve the query instead of using the index, but AllowEnumeration
'    was FALSE, let the user know
 %>
    <P>
    <I><B>The query is too expensive to complete.</B></I><BR>
<%end if


  if Q.QueryTimedOut then
'    If the query took too long to execute (for example, if too much work
'    was required to resolve the query), let the user know %>
    <P>
    <I><B>The query took too long to complete.</B></I><BR>
<%end if%>

<TABLE>

<%
'    This is the "previous" button.
'    This retrieves the previous page of documents for the query.

  SaveQuery = FALSE
  if CurrentPage > 1 and RS.RecordCount <> -1 then %>
    <td align=left>
        <form action="<%=QueryForm%>" method="get">
            <INPUT TYPE="HIDDEN" NAME="qu" VALUE="<%=SearchString%>">
            <INPUT TYPE="HIDDEN" NAME="Advanced" VALUE="<%=Advanced%>">
            <INPUT TYPE="HIDDEN" NAME="sc" VALUE="<%=FormScope%>">
            <INPUT TYPE="HIDDEN" NAME="pg" VALUE="<%=CurrentPage-1%>" >
            <INPUT TYPE="HIDDEN" NAME="RankBase" VALUE="<%=RankBase%>">
            <input type="submit" value="Previous <%=RS.PageSize%> documents">
        </form>
    </td>
    <%SaveQuery = UseSessions%>
<%end if%>

<%
'    This is the "next" button for unsorted queries.
'    This retrieves the next page of documents for the query.

  if Not RS.EOF then%>
    <td align=right>
        <form action="<%=QueryForm%>" method="get">
            <INPUT TYPE="HIDDEN" NAME="qu" VALUE="<%=SearchString%>">
            <INPUT TYPE="HIDDEN" NAME="Advanced" VALUE="<%=Advanced%>">
            <INPUT TYPE="HIDDEN" NAME="sc" VALUE="<%=FormScope%>">
            <INPUT TYPE="HIDDEN" NAME="pg" VALUE="<%=CurrentPage+1%>">
            <INPUT TYPE="HIDDEN" NAME="RankBase" VALUE="<%=RankBase%>">
            <%
               NextString = "Next "
               if RS.RecordCount <> -1 then
                   NextSet = (RS.RecordCount - NextRecordNumber) + 1
                   if NextSet > RS.PageSize then
                       NextSet = RS.PageSize
                   end if
                   NextString = NextString & NextSet & " documents"
               else
                   NextString = NextString & " page of documents"
               end if
             %>
            <input type="submit" value="<%=NextString%>">
        </form>
    </td>
    <%SaveQuery = UseSessions%>
<%end if%>

</TABLE>

<% ' Display the page number

if RS.PageCount <> 0 then
  Response.Write "Page " & CurrentPage
  if RS.PageCount <> -1 then
     Response.Write " of " & RS.PageCount
  end if
end if
 %>
<%
    ' If either of the previous or back buttons were displayed, save the query
    ' and the recordset in session variables.
    if SaveQuery then
        set Session("Query") = Q
        set Session("RecordSet") = RS
    else
        RS.close
        Set RS = Nothing
        Set Q = Nothing
        if UseSessions then
           set Session("Query") = Nothing
           set Session("RecordSet") = Nothing
        end if
    end if
 %>
<% end if %>
<BR>
<!--#include file ="is2foot.inc"-->

</BODY>

<SCRIPT LANGUAGE=JSCRIPT>
function Init()
{
    QueryForm.SearchString.focus();
}

function msieversion()
{
    var ua   = window.navigator.userAgent;
    var msie = ua.indexOf("MSIE");
    if (msie>0)
        return parseInt(ua.substring(msie+5, ua.indexOf(".", msie)));
    else
        return 0;
}

function NAF(szUrl, szQuery)
{
    if (msieversion() >= 5)
        window.external.NavigateAndFind(szUrl, szQuery, "_main");
    else
        window.navigate(szUrl, target="_main");
}
</SCRIPT>

</HTML>