search.jsp revision 1419
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley<%--
acb4f5236966c2b680b949c1eda826948b24fc23Mark Andrews$Id$
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews
40f53fa8d9c6a4fc38c0014495e7a42b08f52481David LawrenceCDDL HEADER START
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley
f94f59d746daffc38356d0a019b64eb01d2341c0Bob HalleyThe contents of this file are subject to the terms of the
f94f59d746daffc38356d0a019b64eb01d2341c0Bob HalleyCommon Development and Distribution License (the "License").
40f53fa8d9c6a4fc38c0014495e7a42b08f52481David LawrenceYou may not use this file except in compliance with the License.
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews
dafcb997e390efa4423883dafd100c975c4095d6Mark AndrewsSee LICENSE.txt included in this distribution for the specific
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrewslanguage governing permissions and limitations under the License.
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrews
dafcb997e390efa4423883dafd100c975c4095d6Mark AndrewsWhen distributing Covered Code, include this CDDL HEADER in each
dafcb997e390efa4423883dafd100c975c4095d6Mark Andrewsfile and include the License file at LICENSE.txt.
dafcb997e390efa4423883dafd100c975c4095d6Mark AndrewsIf applicable, add the following below this CDDL HEADER, with the
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halleyfields enclosed by brackets "[]" replaced with your own identifying
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halleyinformation: Portions Copyright [yyyy] [name of copyright owner]
186e7f37c9fc985a7a7264cc8170e48a25bed434Mark Andrews
ab023a65562e62b85a824509d829b6fad87e00b1Rob AusteinCDDL HEADER END
ab023a65562e62b85a824509d829b6fad87e00b1Rob Austein
9c3531d72aeaad6c5f01efe6a1c82023e1379e4dDavid LawrenceCopyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
f94f59d746daffc38356d0a019b64eb01d2341c0Bob HalleyPortions Copyright 2011 Jens Elkner.
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley
1e107b3d7b54de5022c3328423164e533afcc15eMark Andrews--%><%@page session="false" errorPage="error.jsp" import="
6028d1ce0380d0ba7f6c6ecd1ad20b31ddd1becbDavid Lawrenceorg.opensolaris.opengrok.search.Results,
186e7f37c9fc985a7a7264cc8170e48a25bed434Mark Andrewsorg.opensolaris.opengrok.web.SearchHelper,
440be4c866f6935ac069db79a414304507a664c2Michael Grafforg.opensolaris.opengrok.web.SortOrder,
186e7f37c9fc985a7a7264cc8170e48a25bed434Mark Andrewsorg.opensolaris.opengrok.web.Suggestion"
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley%><%@
d0eb2cc33c5db3366a16b1cb0abcca6ec7c8ee3cTatuya JINMEI 神明達哉
5135844210552b359cdd42f483e52633f2680889Andreas Gustafssoninclude file="projects.jspf"
726290e9d5b720b736fa39d9f7d92c2efb7d1f24Bob Halley
fd15c8e32ed0c1cfd3ed737858a81966e7fbaeacAndreas Gustafsson%><%!
2504b0a58600c1156a6b829c816d13c58a069453Bob Halley private StringBuilder createUrl(SearchHelper sh, boolean menu) {
03e200df5dc283f24a6a349f0b31d3eab26da893Mark Andrews StringBuilder url = new StringBuilder(64);
205790a755849f9b9ec12dd7836dcd87ca580d89Bob Halley QueryBuilder qb = sh.builder;
30e6ea9dedbe0738f9729833b1b59042dbebc4dfBrian Wellington if (menu) {
7457bbd82fa701ee78f709cd157436e6878b43d1Bob Halley url.append(sh.contextPath).append(Prefix.SEARCH_P).append('?');
c69ad15d9444d76c44471579f28a84e8ce4ef0c2Bob Halley } else {
eb8713ed947fdf22a41dad673d561896dd6fe4a2Brian Wellington Util.appendQuery(url, "sort", sh.order.toString());
2dd99c098ca162f985b7ef3c8142a964ad8281aeMark Andrews }
03ccfda9ec9fde56c83b381eccbac44071b36143Andreas Gustafsson if (qb != null) {
c56c5586b49ccddbaf7e2b5c6c06adee1c509253Bob Halley Util.appendQuery(url, "q", qb.getFreetext());
9e53cbca72767d0c91962b7a01650ea07d7398ddMark Andrews Util.appendQuery(url, "defs", qb.getDefs());
09f22ac5b09e70bc526015f37168ba33e21ea91fDavid Lawrence Util.appendQuery(url, "refs", qb.getRefs());
09f22ac5b09e70bc526015f37168ba33e21ea91fDavid Lawrence Util.appendQuery(url, "path", qb.getPath());
b984520acca2532d048eae929dc0682dd334c7a3Brian Wellington Util.appendQuery(url, "hist", qb.getHist());
290074dd410acdd003f67f99409d75e0dcacd97bAndreas Gustafsson }
070d058606dff606710f320b071891bf16e02076Andreas Gustafsson if (sh.projects != null && sh.projects.size() != 0) {
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley Util.appendQuery(url, "project", cfg.getRequestedProjectsAsString());
205790a755849f9b9ec12dd7836dcd87ca580d89Bob Halley }
205790a755849f9b9ec12dd7836dcd87ca580d89Bob Halley return url;
9e53cbca72767d0c91962b7a01650ea07d7398ddMark Andrews }
205790a755849f9b9ec12dd7836dcd87ca580d89Bob Halley%><%
4607e7a9b8dfb1b41c70e51c2b603daaf22cf302Mark Andrews/* ---------------------- search.jsp start --------------------- */
4607e7a9b8dfb1b41c70e51c2b603daaf22cf302Mark Andrews{
205790a755849f9b9ec12dd7836dcd87ca580d89Bob Halley cfg = PageConfig.get(request);
205790a755849f9b9ec12dd7836dcd87ca580d89Bob Halley
9e53cbca72767d0c91962b7a01650ea07d7398ddMark Andrews long starttime = System.currentTimeMillis();
205790a755849f9b9ec12dd7836dcd87ca580d89Bob Halley
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley SearchHelper searchHelper = cfg.prepareSearch()
6f44af1c8320e84d6b0c0c42bacadfe3020d9a91Mark Andrews .prepareExec(cfg.getRequestedProjects()).executeQuery().prepareSummary();
6f44af1c8320e84d6b0c0c42bacadfe3020d9a91Mark Andrews if (searchHelper.redirect != null) {
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley response.sendRedirect(searchHelper.redirect);
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley }
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley if (searchHelper.errorMsg != null) {
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley cfg.setTitle("Search Error");
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley } else {
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley cfg.setTitle("Search");
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley }
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley response.addCookie(new Cookie("OpenGrokSorting", searchHelper.order.toString()));
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley%><%@
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halleyinclude file="httpheader.jspf"
f3ca27e9fe307b55e35ea8d7b37351650630e5a3Andreas Gustafsson
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley%><body class="yui3-skin-sam">
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley<div id="page">
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley <div id="whole_header">
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley <div id="header"><%@
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halleyinclude file="pageheader.jspf"
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley%>
18d0b5e54be891a1aa938c165b6d439859121ec8Mark Andrews </div>
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley <div id="Masthead"></div>
18d0b5e54be891a1aa938c165b6d439859121ec8Mark Andrews <div id="bar">
c627721fedbb33c18bf577c46ff281a8c3bc082fMark Andrews <ul>
c627721fedbb33c18bf577c46ff281a8c3bc082fMark Andrews <li><a href="<%= request.getContextPath()
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley %>/"><span id="home"></span>Home</a></li>
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley </ul>
c627721fedbb33c18bf577c46ff281a8c3bc082fMark Andrews <%-- TODO: jel: IMHO it should be move to menu.jspf as combobox --%>
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley <div id="sortfield">
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley <label for="sortby">Sort by</label>
65a66336a6e2ce2032f68139ef9c8afe18d08c14Andreas Gustafsson <ul id="sortby"><%
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley StringBuilder url = createUrl(searchHelper, true).append("&amp;sort=");
00e7d7a0e8529998c78b73371dc90fbf680b57efBob Halley for (SortOrder o : SortOrder.values()) {
7457bbd82fa701ee78f709cd157436e6878b43d1Bob Halley if (searchHelper.order == o) {
00e7d7a0e8529998c78b73371dc90fbf680b57efBob Halley %><li><span class="active"><%= o.getDesc() %></span></li><%
00e7d7a0e8529998c78b73371dc90fbf680b57efBob Halley } else {
7457bbd82fa701ee78f709cd157436e6878b43d1Bob Halley %><li><a href="<%= url %><%= o %>"><%= o.getDesc() %></a></li><%
00e7d7a0e8529998c78b73371dc90fbf680b57efBob Halley }
00e7d7a0e8529998c78b73371dc90fbf680b57efBob Halley }
c627721fedbb33c18bf577c46ff281a8c3bc082fMark Andrews %></ul>
00e7d7a0e8529998c78b73371dc90fbf680b57efBob Halley </div>
7457bbd82fa701ee78f709cd157436e6878b43d1Bob Halley </div>
7457bbd82fa701ee78f709cd157436e6878b43d1Bob Halley <div id="menu"><%@
7457bbd82fa701ee78f709cd157436e6878b43d1Bob Halley
7457bbd82fa701ee78f709cd157436e6878b43d1Bob Halleyinclude file="menu.jspf"
7457bbd82fa701ee78f709cd157436e6878b43d1Bob Halley
7457bbd82fa701ee78f709cd157436e6878b43d1Bob Halley%>
7457bbd82fa701ee78f709cd157436e6878b43d1Bob Halley </div>
7457bbd82fa701ee78f709cd157436e6878b43d1Bob Halley </div>
7457bbd82fa701ee78f709cd157436e6878b43d1Bob Halley <div id="results"><%
30e6ea9dedbe0738f9729833b1b59042dbebc4dfBrian Wellington // TODO spellchecking cycle below is not that great and we only create
30e6ea9dedbe0738f9729833b1b59042dbebc4dfBrian Wellington // suggest links for every token in query, not for a query as whole
30e6ea9dedbe0738f9729833b1b59042dbebc4dfBrian Wellington if (searchHelper.errorMsg != null) {
30e6ea9dedbe0738f9729833b1b59042dbebc4dfBrian Wellington %><h3>Error</h3><p><%
30e6ea9dedbe0738f9729833b1b59042dbebc4dfBrian Wellington if (searchHelper.errorMsg.startsWith((SearchHelper.PARSE_ERROR_MSG))) {
30e6ea9dedbe0738f9729833b1b59042dbebc4dfBrian Wellington %><%= Util.htmlize(SearchHelper.PARSE_ERROR_MSG) %>
30e6ea9dedbe0738f9729833b1b59042dbebc4dfBrian Wellington <br/>You might try to enclose your search term in quotes,
30e6ea9dedbe0738f9729833b1b59042dbebc4dfBrian Wellington <a href="help.jsp#escaping">escape special characters</a>
30e6ea9dedbe0738f9729833b1b59042dbebc4dfBrian Wellington with <b>\</b>, or read the <a href="help.jsp">Help</a>
19f08273e2592fa48608ec1ac5e021b4b3489030Bob Halley on the query language. Error message from parser:<br/>
d0eb2cc33c5db3366a16b1cb0abcca6ec7c8ee3cTatuya JINMEI 神明達哉 <%= Util.htmlize(searchHelper.errorMsg.substring(
fd15c8e32ed0c1cfd3ed737858a81966e7fbaeacAndreas Gustafsson SearchHelper.PARSE_ERROR_MSG.length())) %><%
2504b0a58600c1156a6b829c816d13c58a069453Bob Halley } else {
03e200df5dc283f24a6a349f0b31d3eab26da893Mark Andrews %><%= Util.htmlize(searchHelper.errorMsg) %><%
38980568375a6505452550b5677104ab44291b66Bob Halley }%></p><%
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley } else if (searchHelper.hits == null) {
726290e9d5b720b736fa39d9f7d92c2efb7d1f24Bob Halley %><p>No hits</p><%
9e53cbca72767d0c91962b7a01650ea07d7398ddMark Andrews } else if (searchHelper.hits.length == 0) {
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley List<Suggestion> hints = searchHelper.getSuggestions();
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley String prefix = searchHelper.contextPath + Prefix.SEARCH_P + '?';
c56c5586b49ccddbaf7e2b5c6c06adee1c509253Bob Halley for (Suggestion hint : hints) {
205790a755849f9b9ec12dd7836dcd87ca580d89Bob Halley %><p><font color="#cc0000">Did you mean (for <%= hint.name %>)</font>:<%
18d0b5e54be891a1aa938c165b6d439859121ec8Mark Andrews for (String word : hint.freetext) {
18d0b5e54be891a1aa938c165b6d439859121ec8Mark Andrews %> <a href="<%= prefix + "q=" + word %>"><%= word %></a> &nbsp; <%
18d0b5e54be891a1aa938c165b6d439859121ec8Mark Andrews }
22608315e8e08b1fef12bce6e123c9ff6fe7a17cAndreas Gustafsson for (String word : hint.refs) {
9e53cbca72767d0c91962b7a01650ea07d7398ddMark Andrews %> <a href="<%= prefix + "refs=" + word %>"><%= word %></a> &nbsp; <%
9e53cbca72767d0c91962b7a01650ea07d7398ddMark Andrews }
b984520acca2532d048eae929dc0682dd334c7a3Brian Wellington for (String word : hint.defs) {
b984520acca2532d048eae929dc0682dd334c7a3Brian Wellington %> <a href="<%= prefix + "defs=" + word %>"><%= word %></a> &nbsp; <%
5135844210552b359cdd42f483e52633f2680889Andreas Gustafsson }
ee3ab6063dd13b5947d3fbe88b9ce8f38d65df9dBrian Wellington %></p><%
ee3ab6063dd13b5947d3fbe88b9ce8f38d65df9dBrian Wellington }
f93d33e24fdf76eb2558168f018b8992bcfc5681Andreas Gustafsson %>
419590499823ce15b5d2ad4fe71eaf04bd5a86c0Michael Graff <p> Your search <b><%= searchHelper.query %></b> did not match any files.
18d0b5e54be891a1aa938c165b6d439859121ec8Mark Andrews <br/> Suggestions:<br/>
03ccfda9ec9fde56c83b381eccbac44071b36143Andreas Gustafsson </p>
2dd99c098ca162f985b7ef3c8142a964ad8281aeMark Andrews <ul>
4607e7a9b8dfb1b41c70e51c2b603daaf22cf302Mark Andrews <li>Make sure all terms are spelled correctly.</li>
68a918e03858b81a430b686fed9114b5f1b106c3Mark Andrews <li>Try different keywords.</li>
68a918e03858b81a430b686fed9114b5f1b106c3Mark Andrews <li>Try more general keywords.</li>
66e2dd5001f249bc5e2c89074df41f769f13bf07Andreas Gustafsson <li>Use 'wil*' cards if you are looking for partial match.</li>
1a69a1a78cfaa86f3b68bbc965232b7876d4da2aDavid Lawrence </ul><%
1a69a1a78cfaa86f3b68bbc965232b7876d4da2aDavid Lawrence } else {
40f53fa8d9c6a4fc38c0014495e7a42b08f52481David Lawrence // We have a lots of results to show: create a slider for
66e2dd5001f249bc5e2c89074df41f769f13bf07Andreas Gustafsson String slider = "";
66e2dd5001f249bc5e2c89074df41f769f13bf07Andreas Gustafsson int thispage; // number of items to display on the current page
6d3496c045bbf35514b4697ff20741975083e125Michael Graff int start = searchHelper.start;
6d3496c045bbf35514b4697ff20741975083e125Michael Graff int max = searchHelper.maxItems;
89783da064f4f9bf2e82d2b3941ddeffe2a8c30dMark Andrews int totalHits = searchHelper.totalHits;
cfe92110ce4eaf19f7f3255d2961710879bdc9ddMark Andrews if (searchHelper.maxItems < searchHelper.totalHits) {
fabf2ee6b01ee06a0de940b83d53cf57f9f79265Mark Andrews StringBuilder buf = new StringBuilder(4096);
d9112843333472bb7700c02a10d18e2b253b2708Bob Halley thispage = (start + max) < totalHits ? max : totalHits - start;
66e2dd5001f249bc5e2c89074df41f769f13bf07Andreas Gustafsson StringBuilder urlp = createUrl(searchHelper, false);
a672bfbee46c261729811405685db409bd7c9285Andreas Gustafsson int labelStart = 1;
a672bfbee46c261729811405685db409bd7c9285Andreas Gustafsson int sstart = start - max * (start / max % 10 + 1) ;
febaa091847ab004f40500cc475a819f2c73fcddAndreas Gustafsson if (sstart < 0) {
edcb93b49c763709ead9374a15ec3b7c4d904383Andreas Gustafsson sstart = 0;
edcb93b49c763709ead9374a15ec3b7c4d904383Andreas Gustafsson labelStart = 1;
c8c884b79b3cb4a9e279391f913edc36f31608e9Andreas Gustafsson } else {
c8c884b79b3cb4a9e279391f913edc36f31608e9Andreas Gustafsson labelStart = sstart / max + 1;
d98c74e2ec5b96bd22aa4ed6d893e8993787493bMichael Graff }
c4a9ce445c48a57eed5aa16582b1964cf8cedf87Mark Andrews int label = labelStart;
de4976142190ae84ed3e4099f3e0fc07781748a3Mark Andrews int labelEnd = label + 11;
50105afc551903541608b11851d73278b23579a3Mark Andrews String prefix = searchHelper.contextPath + Prefix.SEARCH_R + "?n=";
08c90261660649ca7d92065f6f13a61ec5a9a86dMark Andrews for (int i = sstart; i < totalHits && label <= labelEnd; i+= max) {
50105afc551903541608b11851d73278b23579a3Mark Andrews if (i <= start && start < i + max) {
66e2dd5001f249bc5e2c89074df41f769f13bf07Andreas Gustafsson buf.append("<span class=\"rsps\">").append(label).append("</span>");
2dd99c098ca162f985b7ef3c8142a964ad8281aeMark Andrews } else {
419590499823ce15b5d2ad4fe71eaf04bd5a86c0Michael Graff buf.append("<a class=\"rspn\" href=\"").append(prefix).append(max)
03ccfda9ec9fde56c83b381eccbac44071b36143Andreas Gustafsson .append("&amp;start=").append(i).append(urlp).append("\">");
6eccf5bd07eb9abf65cc08fec4a8fc97b62c0e1bBrian Wellington if (label == labelStart && label != 1) {
2dd99c098ca162f985b7ef3c8142a964ad8281aeMark Andrews buf.append("&lt;&lt");
2dd99c098ca162f985b7ef3c8142a964ad8281aeMark Andrews } else if (label == labelEnd && i < totalHits) {
2dd99c098ca162f985b7ef3c8142a964ad8281aeMark Andrews buf.append("&gt;&gt;");
2dd99c098ca162f985b7ef3c8142a964ad8281aeMark Andrews } else {
6eccf5bd07eb9abf65cc08fec4a8fc97b62c0e1bBrian Wellington buf.append(label);
6eccf5bd07eb9abf65cc08fec4a8fc97b62c0e1bBrian Wellington }
6eccf5bd07eb9abf65cc08fec4a8fc97b62c0e1bBrian Wellington buf.append("</a>");
6eccf5bd07eb9abf65cc08fec4a8fc97b62c0e1bBrian Wellington }
0157410ea7680a43f83c5c581c570de73a5a869eMichael Graff label++;
f3ca27e9fe307b55e35ea8d7b37351650630e5a3Andreas Gustafsson }
205790a755849f9b9ec12dd7836dcd87ca580d89Bob Halley slider = buf.toString();
205790a755849f9b9ec12dd7836dcd87ca580d89Bob Halley } else {
f3ca27e9fe307b55e35ea8d7b37351650630e5a3Andreas Gustafsson // set the max index to max or last
205790a755849f9b9ec12dd7836dcd87ca580d89Bob Halley thispage = totalHits - start;
205790a755849f9b9ec12dd7836dcd87ca580d89Bob Halley }
f3ca27e9fe307b55e35ea8d7b37351650630e5a3Andreas Gustafsson %>
9e53cbca72767d0c91962b7a01650ea07d7398ddMark Andrews <p class="pagetitle">Searched <b><%= searchHelper.query
9e53cbca72767d0c91962b7a01650ea07d7398ddMark Andrews %></b> (Results <b> <%= start + 1 %> - <%= thispage + start
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley %></b> of <b><%= totalHits %></b>) sorted by <%=
40f53fa8d9c6a4fc38c0014495e7a42b08f52481David Lawrence searchHelper.order.getDesc() %></p><%
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley if (slider.length() > 0) {
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley %>
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley <p class="slider"><%= slider %></p><%
f94f59d746daffc38356d0a019b64eb01d2341c0Bob Halley }
6eccf5bd07eb9abf65cc08fec4a8fc97b62c0e1bBrian Wellington %>
6eccf5bd07eb9abf65cc08fec4a8fc97b62c0e1bBrian Wellington <table><%
6eccf5bd07eb9abf65cc08fec4a8fc97b62c0e1bBrian Wellington Results.prettyPrint(out, searchHelper, start, start + thispage);
2dd99c098ca162f985b7ef3c8142a964ad8281aeMark Andrews %>
2dd99c098ca162f985b7ef3c8142a964ad8281aeMark Andrews </table>
2dd99c098ca162f985b7ef3c8142a964ad8281aeMark Andrews <p><b>Completed in <%= System.currentTimeMillis() - starttime
03ccfda9ec9fde56c83b381eccbac44071b36143Andreas Gustafsson %> milliseconds</b></p><%
40f53fa8d9c6a4fc38c0014495e7a42b08f52481David Lawrence if (slider.length() > 0) {
03ccfda9ec9fde56c83b381eccbac44071b36143Andreas Gustafsson %>
18d0b5e54be891a1aa938c165b6d439859121ec8Mark Andrews <p class="slider"><%= slider %></p><%
18d0b5e54be891a1aa938c165b6d439859121ec8Mark Andrews }
18d0b5e54be891a1aa938c165b6d439859121ec8Mark Andrews %>
30e6ea9dedbe0738f9729833b1b59042dbebc4dfBrian Wellington </div><%
30e6ea9dedbe0738f9729833b1b59042dbebc4dfBrian Wellington }
30e6ea9dedbe0738f9729833b1b59042dbebc4dfBrian Wellington searchHelper.destroy();
7457bbd82fa701ee78f709cd157436e6878b43d1Bob Halley}
7457bbd82fa701ee78f709cd157436e6878b43d1Bob Halley/* ---------------------- search.jsp end --------------------- */
7457bbd82fa701ee78f709cd157436e6878b43d1Bob Halley%><%@
9e565c950b7eef312b2f56125fde371bf1e3f4b7Andreas Gustafsson
7457bbd82fa701ee78f709cd157436e6878b43d1Bob Halleyinclude file="foot.jspf"
40f53fa8d9c6a4fc38c0014495e7a42b08f52481David Lawrence
c627721fedbb33c18bf577c46ff281a8c3bc082fMark Andrews%>