<div dir="ltr" style="text-align: left;" trbidi="on">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript">
</script>
<script type="text/javascript">
// QuickSearch v0.1
// Created by Jan Tielens, http://weblogs.asp.net/jan
// This sample code is provided on an “as is” basis and without warranty of any kind.
// *** Customizable parameters ***
var quickSearchConfig = {
delay: 500, // time to wait before executing the query (in ms)
minCharacters: 3, // minimum nr of characters to enter before search
scope: "All Sites", // search scope to use
numberOfResults: 15, // number of results to show
resultsAnimation: 200, // animation time (in ms) of the search results
resultAnimation: 0 // animation time (in ms) of individual result (when selected)
};
</script>
<style type="text/css">
.quickSearchResultDivUnselected
{
background: white;
border: 1px solid white;
margin-left: 2px;
overflow: hidden;
text-overflow: ellipsis;
}
.quickSearchResultDivSelected
{
background: #EEEEEE;
border: 1px solid Gray;
margin-left: 2px;
overflow: hidden;
text-overflow: ellipsis;
}
</style>
<table border="0" class="ms-sbtable ms-sbtable-ex" id="quickSearchTable"><tbody>
<tr class="ms-sbrow"> <td class="ms-sbcell">
<input alt="Enter search words" class="ms-sbplain" id="quickSearchTextBox" maxlength="200" style="width: 100%;" title="Enter search words" value="" /></td> <td class="ms-sbgo ms-sbcell" style="width: 14px;">
<img alt="Go Search" src="/_layouts/images/gosearch.gif" style="border-width: 0px;" title="Go Search" /></td> <td style="width: 1px;">
</td> </tr>
</tbody> </table>
<div id="quickSearchResults" style="display: none;">
</div>
<script type="text/javascript">
var quickSearchTimer;
var quickSearchSelectedDivIndex = -1;
function showResultsDiv(text) {
var div = $("#quickSearchResults");
var prevTable = div.prev();
var divCss = {
"left": prevTable.offset().left,
"padding": 2,
"position": "absolute",
"top": prevTable.offset().top + prevTable.height() + 1,
"border": "1px solid #7f9db9",
"width": prevTable.width() - 3,
"background": "white",
"max-width": prevTable.width() - 3
};
div.css(divCss).append(text).slideDown(quickSearchConfig.resultsAnimation);
}
$(document).ready(function() {
$('#quickSearchTextBox').keyup(function(event) {
var previousSelected = quickSearchSelectedDivIndex;
// catch some keys
switch(event.keyCode) {
case 13: // enter
var selectedDiv = $("#quickSearchResults>div:eq(" + quickSearchSelectedDivIndex + ") a");
if(selectedDiv.length == 1)
window.location = selectedDiv.attr("href");
break;
case 38: // key up
quickSearchSelectedDivIndex--;
break;
case 40: // key down
quickSearchSelectedDivIndex ++;
break;
}
// check bounds
if(quickSearchSelectedDivIndex != previousSelected) {
if(quickSearchSelectedDivIndex < 0)
quickSearchSelectedDivIndex = 0;
if(quickSearchSelectedDivIndex >= $("#quickSearchResults>div").length -1)
quickSearchSelectedDivIndex = $("#quickSearchResults>div").length - 2;
}
// select new div, unselect the previous selected
if(quickSearchSelectedDivIndex > -1) {
if(quickSearchSelectedDivIndex != previousSelected) {
unSelectDiv( $("#quickSearchResults>div:eq(" + previousSelected + ")"));
selectDiv($("#quickSearchResults>div:eq(" + quickSearchSelectedDivIndex + ")"));
}
}
// if the query is different from the previous one, search again
if($('#quickSearchTextBox').data("query") != $('#quickSearchTextBox').val()) {
if (quickSearchTimer != null) // cancel the delayed event
clearTimeout(quickSearchTimer);
quickSearchTimer = setTimeout(function() { // delay the searching
$("#quickSearchResults").fadeOut(200, initSearch);
} , quickSearchConfig.delay);
}
});
});
function unSelectDiv(div) {
// first stop all animations still in progress
$("#quickSearchResults>div>div").stop(true,true);
div.removeClass("quickSearchResultDivSelected").addClass("quickSearchResultDivUnselected");
$("#details", div).hide();
}
function selectDiv(div) {
div.addClass("quickSearchResultDivSelected");
$("#details", div).slideDown(quickSearchConfig.resultAnimation);
}
function initSearch() {
// first store query in data
$('#quickSearchTextBox').data("query", $('#quickSearchTextBox').val());
// clear the results
$("#quickSearchResults").empty();
// start the search
var query = $("#quickSearchTextBox").val();
if(query.length >= quickSearchConfig.minCharacters) {
showResultsDiv("Searching ..."); // display status
search(query);
}
}
function search(query) {
quickSearchSelectedDivIndex = -1;
var queryXML =
"<querypacket xmlns='urn:Microsoft.Search.Query' Revision='1000'> <query domain='QDomain'> <supportedformats><format>urn:Microsoft.Search.Response.Document.Document</Format></SupportedFormats> <context> <querytext language='en-US' type='STRING' >SCOPE:\"" + quickSearchConfig.scope + "\"" + query + "</QueryText> </Context> <sortbyproperties><sortbyproperty name='Rank' direction='Descending' order='1'/></SortByProperties> <range><startat>1</StartAt><count>" + quickSearchConfig.numberOfResults + "</Count></Range> <enablestemming>false</EnableStemming> <trimduplicates>true</TrimDuplicates> <ignoreallnoisequery>true</IgnoreAllNoiseQuery> <implicitandbehavior>true</ImplicitAndBehavior> <includerelevanceresults>true</IncludeRelevanceResults> <includespecialtermresults>true</IncludeSpecialTermResults> <includehighconfidenceresults>true</IncludeHighConfidenceResults> </Query></QueryPacket>";
var soapEnv =
"<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'> <soap:Body> <query xmlns='urn:Microsoft.Search'> <queryxml>" + escapeHTML(queryXML) + "</queryXml> </Query> </soap:Body> </soap:Envelope>";
$.ajax({
url: "/_vti_bin/search.asmx",
type: "POST",
dataType: "xml",
data: soapEnv,
complete: processResult,
contentType: "text/xml; charset=\"utf-8\""
});
function processResult(xData, status) {
var html = "";
$(xData.responseXML).find("QueryResult").each(function() {
var divWidh = $("#quickSearchTable").width() - 13;
var x = $("<xml>" + $(this).text() + "</xml>");
x.find("Document").each(function() {
var title = $("Title", $(this)).text();
var url = $("Action>LinkUrl", $(this)).text();
var description = $("Description", $(this)).text()
html +=
"<div class='quickSearchResultDivUnselected' style='width:" + divWidh + "px;max-width:" + divWidh +"px'>
<a href='" + url + "'>" + $("Title", $(this)).text() + "</a> <div style='display:none' id='details' style='margin-left:10px'>
"
+ description +
"
" + url + " </div>
</div>
";
});
if(x.find("TotalAvailable").text() != "")
html += "<div style='text-align:right'>
Total results: " + x.find("TotalAvailable").text() + "</div>
";
else
html += "<div style='text-align:right'>
Total results: 0</div>
";
});
$("#quickSearchResults").empty().append(html);
$("#quickSearchResults>div>a").hover(
function() { selectDiv($(this).parent()); },
function() { unSelectDiv($(this).parent()); }
);
showResultsDiv();
}
}
function escapeHTML (str) {
return str.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>');
}
</script></div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript">
</script>
<script type="text/javascript">
// QuickSearch v0.1
// Created by Jan Tielens, http://weblogs.asp.net/jan
// This sample code is provided on an “as is” basis and without warranty of any kind.
// *** Customizable parameters ***
var quickSearchConfig = {
delay: 500, // time to wait before executing the query (in ms)
minCharacters: 3, // minimum nr of characters to enter before search
scope: "All Sites", // search scope to use
numberOfResults: 15, // number of results to show
resultsAnimation: 200, // animation time (in ms) of the search results
resultAnimation: 0 // animation time (in ms) of individual result (when selected)
};
</script>
<style type="text/css">
.quickSearchResultDivUnselected
{
background: white;
border: 1px solid white;
margin-left: 2px;
overflow: hidden;
text-overflow: ellipsis;
}
.quickSearchResultDivSelected
{
background: #EEEEEE;
border: 1px solid Gray;
margin-left: 2px;
overflow: hidden;
text-overflow: ellipsis;
}
</style>
<table border="0" class="ms-sbtable ms-sbtable-ex" id="quickSearchTable"><tbody>
<tr class="ms-sbrow"> <td class="ms-sbcell">
<input alt="Enter search words" class="ms-sbplain" id="quickSearchTextBox" maxlength="200" style="width: 100%;" title="Enter search words" value="" /></td> <td class="ms-sbgo ms-sbcell" style="width: 14px;">
<img alt="Go Search" src="/_layouts/images/gosearch.gif" style="border-width: 0px;" title="Go Search" /></td> <td style="width: 1px;">
</td> </tr>
</tbody> </table>
<div id="quickSearchResults" style="display: none;">
</div>
<script type="text/javascript">
var quickSearchTimer;
var quickSearchSelectedDivIndex = -1;
function showResultsDiv(text) {
var div = $("#quickSearchResults");
var prevTable = div.prev();
var divCss = {
"left": prevTable.offset().left,
"padding": 2,
"position": "absolute",
"top": prevTable.offset().top + prevTable.height() + 1,
"border": "1px solid #7f9db9",
"width": prevTable.width() - 3,
"background": "white",
"max-width": prevTable.width() - 3
};
div.css(divCss).append(text).slideDown(quickSearchConfig.resultsAnimation);
}
$(document).ready(function() {
$('#quickSearchTextBox').keyup(function(event) {
var previousSelected = quickSearchSelectedDivIndex;
// catch some keys
switch(event.keyCode) {
case 13: // enter
var selectedDiv = $("#quickSearchResults>div:eq(" + quickSearchSelectedDivIndex + ") a");
if(selectedDiv.length == 1)
window.location = selectedDiv.attr("href");
break;
case 38: // key up
quickSearchSelectedDivIndex--;
break;
case 40: // key down
quickSearchSelectedDivIndex ++;
break;
}
// check bounds
if(quickSearchSelectedDivIndex != previousSelected) {
if(quickSearchSelectedDivIndex < 0)
quickSearchSelectedDivIndex = 0;
if(quickSearchSelectedDivIndex >= $("#quickSearchResults>div").length -1)
quickSearchSelectedDivIndex = $("#quickSearchResults>div").length - 2;
}
// select new div, unselect the previous selected
if(quickSearchSelectedDivIndex > -1) {
if(quickSearchSelectedDivIndex != previousSelected) {
unSelectDiv( $("#quickSearchResults>div:eq(" + previousSelected + ")"));
selectDiv($("#quickSearchResults>div:eq(" + quickSearchSelectedDivIndex + ")"));
}
}
// if the query is different from the previous one, search again
if($('#quickSearchTextBox').data("query") != $('#quickSearchTextBox').val()) {
if (quickSearchTimer != null) // cancel the delayed event
clearTimeout(quickSearchTimer);
quickSearchTimer = setTimeout(function() { // delay the searching
$("#quickSearchResults").fadeOut(200, initSearch);
} , quickSearchConfig.delay);
}
});
});
function unSelectDiv(div) {
// first stop all animations still in progress
$("#quickSearchResults>div>div").stop(true,true);
div.removeClass("quickSearchResultDivSelected").addClass("quickSearchResultDivUnselected");
$("#details", div).hide();
}
function selectDiv(div) {
div.addClass("quickSearchResultDivSelected");
$("#details", div).slideDown(quickSearchConfig.resultAnimation);
}
function initSearch() {
// first store query in data
$('#quickSearchTextBox').data("query", $('#quickSearchTextBox').val());
// clear the results
$("#quickSearchResults").empty();
// start the search
var query = $("#quickSearchTextBox").val();
if(query.length >= quickSearchConfig.minCharacters) {
showResultsDiv("Searching ..."); // display status
search(query);
}
}
function search(query) {
quickSearchSelectedDivIndex = -1;
var queryXML =
"<querypacket xmlns='urn:Microsoft.Search.Query' Revision='1000'> <query domain='QDomain'> <supportedformats><format>urn:Microsoft.Search.Response.Document.Document</Format></SupportedFormats> <context> <querytext language='en-US' type='STRING' >SCOPE:\"" + quickSearchConfig.scope + "\"" + query + "</QueryText> </Context> <sortbyproperties><sortbyproperty name='Rank' direction='Descending' order='1'/></SortByProperties> <range><startat>1</StartAt><count>" + quickSearchConfig.numberOfResults + "</Count></Range> <enablestemming>false</EnableStemming> <trimduplicates>true</TrimDuplicates> <ignoreallnoisequery>true</IgnoreAllNoiseQuery> <implicitandbehavior>true</ImplicitAndBehavior> <includerelevanceresults>true</IncludeRelevanceResults> <includespecialtermresults>true</IncludeSpecialTermResults> <includehighconfidenceresults>true</IncludeHighConfidenceResults> </Query></QueryPacket>";
var soapEnv =
"<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'> <soap:Body> <query xmlns='urn:Microsoft.Search'> <queryxml>" + escapeHTML(queryXML) + "</queryXml> </Query> </soap:Body> </soap:Envelope>";
$.ajax({
url: "/_vti_bin/search.asmx",
type: "POST",
dataType: "xml",
data: soapEnv,
complete: processResult,
contentType: "text/xml; charset=\"utf-8\""
});
function processResult(xData, status) {
var html = "";
$(xData.responseXML).find("QueryResult").each(function() {
var divWidh = $("#quickSearchTable").width() - 13;
var x = $("<xml>" + $(this).text() + "</xml>");
x.find("Document").each(function() {
var title = $("Title", $(this)).text();
var url = $("Action>LinkUrl", $(this)).text();
var description = $("Description", $(this)).text()
html +=
"<div class='quickSearchResultDivUnselected' style='width:" + divWidh + "px;max-width:" + divWidh +"px'>
<a href='" + url + "'>" + $("Title", $(this)).text() + "</a> <div style='display:none' id='details' style='margin-left:10px'>
"
+ description +
"
" + url + " </div>
</div>
";
});
if(x.find("TotalAvailable").text() != "")
html += "<div style='text-align:right'>
Total results: " + x.find("TotalAvailable").text() + "</div>
";
else
html += "<div style='text-align:right'>
Total results: 0</div>
";
});
$("#quickSearchResults").empty().append(html);
$("#quickSearchResults>div>a").hover(
function() { selectDiv($(this).parent()); },
function() { unSelectDiv($(this).parent()); }
);
showResultsDiv();
}
}
function escapeHTML (str) {
return str.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>');
}
</script></div>
No comments:
Post a Comment