Noticed the above still had some problems with Chrome.
Code:
/**
* [YUI] Live Search Main Script Version 4.0.5
*
* @author mad@Max
*/
(function() {
var g = YAHOO.util, e = g.Dom, c = g.Event, i = YAHOO.lang;
i
.augmentObject(
YAHOO.vBulletin.lsa,
{
init : function() {
c.removeListener(this.textobj, "focus", this.start);
c.on(this.textobj, "blur", this.winop, this, true);
c.on(this.textobj, "focus", this.winop, this, true);
c.on(this.textobj, "keyup", function(a) {
a = a || window.event;
PHP.in_array(a.keyCode || a.which, [ 37, 39,
32, 36, 35 ]) > -1
|| this.get()
}, this, true);
c.on("lsarld", "click", this.get, this, true);
c.on("lsacls", "click", this.winop, this, true)
},
load : function() {
YAHOO.util.Connect
.asyncRequest(
"POST",
this.bb
+ "/ajaxlivesearch.php?do=lsawin",
{
success : function(a) {
if (a.responseXML) {
this.cont = document
.createElement("div");
this.cont.id = "lsa_cont";
this.cont.style.position = "absolute";
this.cont.style.display = "none";
this.cont.innerHTML = a.responseXML
.getElementsByTagName("lsagetwin")[0].firstChild.nodeValue;
document.body
.appendChild(this.cont);
this.textobj.value = "";
this.resobj = e
.get("lsa_results");
this.init();
(new g.DD(this.cont.id))
.setHandleElId("lsadd");
this.winop();
init_collapsers()
}
},
failure : vBulletin_AJAX_Error_Handler,
timeout : vB_Default_Timeout,
scope : this
}, SESSIONURL + "securitytoken="
+ SECURITYTOKEN
+ "&do=lsawin")
},
winop : function(a) {
if (this.cont.style.display == "none") {
this.textobj.value = "";
this.resobj.innerHTML = vbphrase.lsa_wait;
this.cont.style.display = "block";
center_element(this.cont)
} else {
if (c.getTarget(do_an_e(a)).id == "lsacls")
this.cont.style.display = "none";
this.textobj.value = this.textobj.value
|| vbphrase.live_search
}
},
get : function() {
var a = PHP.trim(this.textobj.value), h = e
.get("lsawithword").value > 0, b = "";
if (a.length >= this.min) {
b = a;
if (!h) {
var d = a.split(" ");
b = "";
for ( var f in d)
d[f].length < this.min
|| (b += (b ? " " : "") + d[f])
}
}
if (b.length >= this.min) {
if (h || !(d.length > 1 && b != a)) {
this.timeout && this.timeout.cancel();
this.timeout = i.later(500, this,
this.send, b)
}
} else
this.resobj.innerHTML = vbphrase.lsa_wait
},
send : function(a) {
var h = new vB_Hidden_Form(null), b = this.resobj, d = e
.get("lsaloading");
h.add_variables_from_object(e.get("lsform"));
e.removeClass(d, "hidden");
g.Connect.isCallInProgress(this.req)
&& g.Connect.abort(this.req);
var f = new vB_AJAX_Handler(true);
f.callback = function(j) {
e.addClass(d, "hidden");
b.innerHTML = j.responseXML
.getElementsByTagName("ajaxlivesearch")[0].firstChild.nodeValue
};
var sendData = "&do=search&"
+ h
.build_query_string()
.replace(
/lsazone=([a-z0-9]+)&/g,
function(j,k,l) {
try {
var test = RegExp.rightContext;
} catch (e) {
return (l == 24 ? "lsazone="
: ",") + k + '';
}
return (
l == 24 ? "lsazone="
: ",")
+ k
+ (RegExp.rightContext
.search(/^lsasort/) == 0 ? "&"
: "");
})
+ "keyword="
+ PHP.urlencode(a);
f
.send(
"ajaxlivesearch.php?do=search",
sendData );
this.req = f.conn
}
})
})();
Really quick and dirty. Looks like the RegExp.rightContext chokes under that one condition in Chrome. Used a try/catch to handle it prior.