webgui/www/extras/yui/docs/assets/ac-js
2007-07-05 04:23:55 +00:00

89 lines
2.9 KiB
Text

(function() {
var oACDS;
var oAutoComp;
var propsort = function(a, b) {
//return (a.url > b.url) ? 1 : ((a.url < b.url) ? -1 : 0);
return (a.name.toLowerCase() > b.name.toLowerCase()) ? 1 : ((a.name.toLowerCase() < b.name.toLowerCase()) ? -1 : 0);
}
var allprops = ALL_YUI_PROPS;
// allprops.sort(propsort);
var getResults = function(query) {
var results = [];
if(query && query.length > 0) {
for (var i=0, len=allprops.length; i<len; ++i) {
var prop = allprops[i];
//var searchStr = prop.host.toLowerCase() + '.' + prop.name.toLowerCase();
var searchStr = prop.url.toLowerCase();
if (searchStr.indexOf(query.toLowerCase()) > -1) {
results.push([query,prop]);
}
}
}
return results;
};
// Define Custom Event handlers
var myOnDataReturn = function(sType, aArgs) {
var oAutoComp = aArgs[0];
var query = aArgs[1];
var aResults = aArgs[2];
if(aResults.length == 0) {
if (query.length > 0) {
oAutoComp.setBody("<div id=\"resultsdefault\">Not found</div>");
} else {
oAutoComp.setBody("<div id=\"resultsdefault\">Start typing to find a property/method/event/config " +
" or browse a module by clicking a link on the left.</div>");
}
}
};
var myOnContainerCollapse = function(sType, aArgs) {
var oAutoComp = aArgs[0];
oAutoComp.setBody("<div id=\"resultsdefault\">Start typing to find a property/method/event/config</div>");
};
var myOnItemSelect = function(sType, aArgs) {
var ac = aArgs[0];
var item = aArgs[2];
location.href = item[1].url;
};
var init = function() {
// Instantiate JS Function DataSource
oACDS = new YAHOO.widget.DS_JSFunction(getResults);
oACDS.maxCacheEntries = 30;
// Instantiate AutoComplete
oAutoComp = new YAHOO.widget.AutoComplete('searchinput','searchresults', oACDS);
oAutoComp.alwaysShowContainer = true;
oAutoComp.queryDelay = 0.2;
oAutoComp.maxResultsDisplayed = 200;
oAutoComp.formatResult = function(oResultItem, query) {
var sMarkup = "<em>" + oResultItem[1].host + '</em> <span>' + oResultItem[1].name + '</span>';
return sMarkup;
};
// Subscribe to Custom Events
oAutoComp.dataReturnEvent.subscribe(myOnDataReturn);
oAutoComp.containerCollapseEvent.subscribe(myOnContainerCollapse);
oAutoComp.itemSelectEvent.subscribe(myOnItemSelect);
// Set initial content in the container
oAutoComp.sendQuery(document.getElementById("searchinput").value);
};
var validateForm = function() {
return false;
};
init();
})();