document.write('<script src=http://www.baidu.com/js/bdsug.js?v=1.0.3.0><\/script>')};
代码
1 //H J O M P F N K
2
3 //I E T R A Q D B
4
5 (function() {
6 //浏览器类型
7 var L = navigator.userAgent.indexOf("MSIE") != -1 && !window.opera;
8 //当前浏览器采用的渲染方式
9 var S = (document.compatMode == "BackCompat"); //用来判断当前浏览器采用的渲染方式。BackCompat:标准兼容模式关闭。CSS1Compat:标准兼容模式开启。
10 //获得元素
11 function H(C) {
12 return document.getElementById(C)
13 }
14 //创建元素
15 function J(C) {
16 return document.createElement(C)
17 }
18 //向元素添加事件相应函数
19 function O(G, U, C) {
20 if (L) {
21 G.attachEvent("on" + U, (function(V) { return function() { C.call(V) } })(G))
22 }
23 else {
24 G.addEventListener(U, C, false)
25 }
26 }
27 //终止事件冒泡
28 function M(C) {
29 if (L) {
30 C.returnValue = false
31 }
32 else {
33 C.preventDefault()
34 }
35 }
36 //向<style>标签样式表中添加样式
37 function P(C, U) {
38 var V = document.styleSheets;
39 if (!V || V.length <= 0) {
40 var G = document.createElement("STYLE"); G.type = "text/css"; var W = document.getElementsByTagName("HEAD")[0]; W.appendChild(G)
41 }
42 V = document.styleSheets;
43 V = V[V.length - 1];
44 if (L) {
45 V.addRule(C, U)
46 }
47 else {
48 V.insertRule(C + " { " + U + " }", V.cssRules.length)
49 }
50 }
51
52 function F(G) {
53 var U = document.forms[0];
54 for (var V in G) {
55 if (!N(V)) {
56 U.appendChild(C(V, G[V]))
57 }
58 else {
59 N(V).value = G[V]
60 }
61 }
62 function C(W, Y) {
63 var X = J("INPUT");
64 X.type = "hidden";
65 X.name = W;
66 X.id = "bdsug_ipt_" + W; X.value = Y;
67 return X
68 }
69 }
70
71 function N(V) {
72 var U = document.forms[0];
73 var G = false;
74 var C = U.getElementsByTagName("INPUT");
75 for (var W = 0; W < C.length; W++) {
76 if (V == C[W].getAttribute("name")) {
77 G = C[W];
78 return G
79 }
80 else {
81 G = false
82 }
83 }
84 }
85
86 function K(G) {
87 var U = document.forms[0];
88 for (var C in G) {
89 if (C == "f") {
90 if (N("f")) {
91 if (N("f").id == "bdsug_ipt_f") {
92 U.removeChild(H("bdsug_ipt_f"))
93 }
94 else {
95 N("f").value = "8"
96 }
97 }
98 }
99 else {
100 if (H("bdsug_ipt_" + C)) {
101 U.removeChild(H("bdsug_ipt_" + C))
102 }
103 }
104 }
105 }
106
107 //baidu对象
108 if (typeof window.baidu != "object" || window.baidu == null) {
109 window.baidu = {}
110 }
111 //百度suggestion对象
112 baidu.sug = {};
113 //百度suggestion监控对象
114 baidu.sugkeywatcher = {};
115
116 //动作处理类模型
117 var I = (function() {
118 //将额外的参数压入__MSG_QS__[Y]
119 function C(Y) {
120 var W = this.__MSG_QS__;
121 if (!W[Y]) {
122 W[Y] = []
123 }
124 for (var X = 1, U = arguments.length, V; X < U; X++) {
125 W[Y].push(arguments[X])
126 }
127 }
128
129 function G(V) {
130 var W = this.__MSG_QS__[V.type];
131 if (W == null) { return }
132 for (var X = 0, U = W.length; X < U; X++) {
133 W[X].rm(V)
134 }
135 }
136
137 return { ini: function(U) {
138 //空对象,一个数组
139 U.__MSG_QS__ = {};
140 U.on = C;
141 U.dm = G;
142 return U
143 }
144 }
145 })();
146 //百度suggestion管理(input部分)
147 var E = (function() {
148 //关键字input
149 var W = H("kw");
150 var C;
151 //setInterval的timer id (function G)
152 var g = 0;
153 var e = 0;
154 //关键字input 的value
155 var U = "";
156 var b = "";
157 var f;
158 var Z = false;
159 var X = true;
160
161 function h() {
162 if (X) { E.dm({ type: "start" }); X = false }
163 }
164
165 function c(j) {
166 if (X) {
167 E.dm({ type: "start" }); X = false
168 } j = j || window.event;
169 if (j.keyCode == 9 || j.keyCode == 27) { E.dm({ type: "hide_div" }) }
170 if (j.keyCode == 13) { M(j); E.dm({ type: "key_enter" }) }
171 if (C.style.display != "none") {
172 if (j.keyCode == 38) { M(j); E.dm({ type: "key_up" }) }
173 if (j.keyCode == 40) {
174 E.dm({ type: "key_down" })
175 }
176 }
177 else {
178 if (j.keyCode == 38 || j.keyCode == 40) {
179 E.dm({ type: "need_data", wd: W.value })
180 }
181 }
182 }
183 function G() {
184 var j = W.value;
185 if (j == U && j != "" && j != b && j != f) {
186 if (e == 0) {
187 e = setTimeout(function() {
188 E.dm({ type: "need_data", wd: j })
189 }, 100)
190 }
191 }
192 else {
193 clearTimeout(e);
194 e = 0;
195 U = j;
196 if (j == "") { E.dm({ type: "hide_div" }) }
197 if (b != W.value) { b = "" }
198 }
199 }
200 //打开定时器并保存句柄
201 function i() {
202 g = setInterval(G, 10)
203 }
204 //关闭定时器
205 function Y() {
206 clearInterval(g)
207 }
208 //取消事件冒泡
209 function a() {
210 if (Z) { window.event.cancelBubble = true; window.event.returnValue = false; Z = false }
211 }
212 //关键字input 的autocomplete属性
213 function V(j) {
214 W.blur(); W.setAttribute("autocomplete", j); W.focus()
215 }
216 W.setAttribute("autocomplete", "off");
217 var d = false;
218 //绑定搜索input onkeydown/keydown事件绑定(键盘按下)
219 baidu.sugkeywatcher.on = function() {
220 if (!d) {
221 if (L) {
222 W.attachEvent("onkeydown", c)
223 }
224 else {
225 W.addEventListener("keydown", c, false)
226 }
227 d = true
228 }
229 };
230 //取消绑定搜索input onkeydown/keydown事件绑定(键盘按下)
231 baidu.sugkeywatcher.off = function() {
232 if (d) {
233 if (L) { W.detachEvent("onkeydown", c) } else {
234 W.removeEventListener("keydown", c, false)
235 }
236 d = false
237 }
238 };
239 baidu.sugkeywatcher.on();
240 //绑定搜索input onmousedown事件(鼠标按下)
241 O(W, "mousedown", h);
242 //绑定搜索input onbeforedeactivate事件(失去焦点,另一个元素的onfocus之前。)(onblur是在另一个元素onfocus之后)
243 O(W, "beforedeactivate", a);
244
245 return I.ini({ rm: function(j) {
246 switch (j.type) {
247 case "div_ready": C = j.sdiv; b = W.value; i(); break;
248 case "clk_submit": Y(); W.blur(); W.value = j.wd; break;
249 case "ent_submit": Y(); W.blur(); break;
250 case "key_select": f = j.selected; break;
251 case "close": Y(); V("on"); break;
252 case "mousedown_tr": Z = true; break
253 }
254 }
255 })
256 })();
257 //百度suggestion管理(table部分)
258 var T = (function() {
259 var e;
260 var X = H("kw");
261 var i;
262 var a = -1;
263 var C;
264 var j;
265 var l;
266 //设置百度suggestion 列表tr未选中样式
267 function k() {
268 var m = i.rows;
269 for (var U = 0; U < m.length; U++) {
270 m[U].className = "ml"
271 }
272 }
273 function b() {
274 if (typeof (i) != "undefined" && i != null && e.style.display != "none") {
275 var m = i.rows;
276 for (var U = 0; U < m.length; U++) {
277 if (m[U].className == "mo") {
278 return [U, m[U].cells[0].innerHTML]
279 }
280 }
281 }
282 return [-1, ""]
283 }
284 function f() {
285 if (L) {
286 l.style.display = "none"
287 }
288 e.style.display = "none"
289 }
290 //设置百度suggestion 列表tr选中样式(鼠标经过)
291 function G() {
292 k(); this.className = "mo"
293 }
294 function Y(U) {
295 T.dm({ type: "mousedown_tr" });
296 if (!L) {
297 U.stopPropagation(); U.preventDefault(); return false
298 }
299 }
300 function Z(U) {
301 var m = U;
302 return function() {
303 var n = C[m];
304 f();
305 T.dm({ type: "clk_submit", oq: H("kw").value, wd: n, rsp: m })
306 }
307 }
308 function c(U) {
309 U = U || window.event;
310 M(U);
311 T.dm({ type: "close" });
312 f();
313 //!!!
314 (new Image()).src = "http://s.baidu.com/w.gif?fm=suggestion&title=%B9%D8%B1%D5&t=" + new Date().getTime()
315 }
316 //百度suggestion table 布局
317 function V() {
318 var U = [X.offsetWidth, X.offsetHeight];
319 e.style.width = ((L && S) ? U[0] : U[0] - 2) + "px";
320 e.style.top = ((L && S) ? U[1] : U[1] - 1) + "px";
321 e.style.display = "block";
322 if (L) {
323 l.style.top = ((L && S) ? U[1] : U[1] - 1) + "px";
324 l.style.width = ((L && S) ? U[0] : U[0] - 2) + "px"
325 }
326 }
327 //绑定百度suggestion table事件处理
328 function g() {
329 i = J("TABLE");
330 i.id = "st";
331 i.cellSpacing = 0;
332 i.cellPadding = 2;
333 var p = J("tbody");
334 i.appendChild(p);
335 for (var U = 0, m = C.length; U < m; U++) {
336 var o = p.insertRow(-1);
337 O(o, "mouseover", G);
338 O(o, "mouseout", k);
339 O(o, "mousedown", Y);
340 O(o, "click", Z(U));
341 var n = o.insertCell(-1);
342 n.innerHTML = C[U].replace(/&/g, "&")
343 }
344 e.innerHTML = "";
345 e.appendChild(i);
346 V();
347 if (L) {
348 l.style.display = "block";
349 l.style.left = 0 + "px";
350 l.style.top = X.offsetHeight + "px";
351 l.style.width = X.offsetWidth + "px";
352 l.style.height = e.offsetHeight - 10 + "px"
353 }
354 }
355 //回车键按下事件处理
356 function W() {
357 a = b()[0];
358 if (a == -1) {
359 T.dm({ type: "submit" })
360 }
361 else {
362 T.dm({ type: "ent_submit", oq: j, wd: b()[1], rsp: a })
363 }
364 }
365 //上箭头键按下事件处理
366 function h() {
367 a = b()[0];
368 k();
369 if (a == 0) {
370 T.dm({ type: "key_select", selected: "" });
371 H("kw").value = j; a--;
372 K({ oq: j, sug: C[a], n: 1, rsp: a, f: 3 })
373 }
374 else {
375 if (a == -1) {
376 a = C.length
377 }
378 a--;
379 var U = i.rows[a];
380 U.className = "mo";
381 T.dm({ type: "key_select", selected: C[a] });
382 H("kw").value = C[a];
383 F({ oq: j, sug: C[a], n: 1, rsp: a, f: 3 })
384 }
385 }
386 //下箭头键按下事件处理
387 function d() {
388 a = b()[0];
389 k();
390 if (a == C.length - 1) {
391 T.dm({ type: "key_select", selected: "" });
392 H("kw").value = j;
393 a = -1; K({ oq: j, sug: C[a], n: 1, rsp: a, f: 3 })
394 }
395 else {
396 a++; var U = i.rows[a]; U.className = "mo";
397 T.dm({ type: "key_select", selected: C[a] });
398 H("kw").value = C[a];
399 F({ oq: j, sug: C[a], n: 1, rsp: a, f: 3 })
400 }
401 }
402 return I.ini({ rm: function(U) {
403 switch (U.type) {
404 case "div_ready": e = U.sdiv; l = U.frm; break;
405 case "give_data": j = U.data.q; C = U.data.s; if (C.length != 0) { g() } else { f() } break;
406 case "key_enter": W(); break;
407 case "key_up": h(); break;
408 case "key_down": d(); break;
409 case "hide_div": f(); break;
410 case "mousedown_other": f(); break;
411 case "window_blur": f(); break;
412 case "need_resize": V(); break
413 }
414 }
415 }
416 )
417 })();
418 //subbmit事件管理
419 var R = (function() {
420 var C = document.forms[0];
421 //form提交事件处理函数
422 function G() {
423 if (H("bdsug_ipt_sug")) {
424 if (H("bdsug_ipt_sug").value == H("kw").value) {
425 K({ n: 1, sug: 1 })
426 }
427 else {
428 K({ f: 1 })
429 }
430 }
431 }
432 //form提交事件处理
433 O(C, "submit", G);
434
435 function U() {
436 G();
437 C.submit()
438 }
439 function V(W) {
440 F(W);
441 K({ sug: 1, n: 1 });
442 C.submit()
443 }
444
445 return I.ini({ rm: function(W) {
446 switch (W.type) {
447 case "clk_submit":
448 case "ent_submit": V({ oq: W.oq, rsp: W.rsp, f: 3 }); break;
449 case "submit": U(); break
450 }
451 }
452 })
453 })();
454 //百度suggestion ajax数据管理
455 var A = (function() {
456 var G = {};
457 function U(C) {
458 if (typeof G[C] == "undefined") {
459 A.dm({ type: "request_data", wd: C })
460 } else {
461 A.dm({ type: "give_data", data: G[C] })
462 }
463 }
464 function V(C) {
465 G[C.q] = C;
466 A.dm({ type: "give_data", data: G[C.q] })
467 }
468 return I.ini({ rm: function(C) {
469 switch (C.type) {
470 case "response_data": V(C.data); break;
471 case "need_data": U(C.wd); break
472 }
473 }
474 })
475 })();
476
477 //baidu suggestion查询管理
478 var Q = (function() {
479 var C;
480 var U;
481 //ajax方法,根据关键字获取baidu suggestion内容,
482 //一个示例:
483 //http://suggestion.baidu.com/su?wd=%E7%9A%84&p=3&t=1274410201491
484 //window.baidu.sug({q:"的",p:false,s:["的卢","的士高","的士速递","的卢马","的士高舞曲","的士高 野人疯狂版","的 地 得的用法","的繁体字怎么写","的士高舞曲视频","的士速递1"]});
485 function G(V) {
486 Q.dm({ type: "need_cookie" });
487 if (C) {
488 document.body.removeChild(C)
489 }
490 C = J("SCRIPT");
491 //!!!
492 C.src = "http://suggestion.baidu.com/su?wd=" + encodeURIComponent(V) + "&p=" + U + "&t=" + (new Date()).getTime();
493 C.charset = "gb2312";
494 document.body.appendChild(C)
495 }
496 return I.ini({ rm: function(V) {
497 switch (V.type) {
498 case "request_data": G(V.wd); break;
499 case "give_cookie": var W = V.sug; if (W > 0) { W = 3 } U = W; break
500 }
501 }
502 })
503 })();
504
505 baidu.sug = function(C) { baidu.dm({ type: "response_data", data: C }) };
506 baidu.initSug = function() { baidu.dm({ type: "init" }) };
507 I.ini(baidu);
508
509 //cookie管理
510 var D = (function() {
511 function C() {
512 if (navigator.cookieEnabled) {
513 document.cookie = "su=0; domain=www.baidu.com"
514 }
515 }
516 function G() {
517 var U = (navigator.cookieEnabled && /sug=(\d)/.test(document.cookie) ? RegExp.$1 : 3);
518 D.dm({ type: "give_cookie", sug: U })
519 }
520 return I.ini({ rm: function(U) {
521 switch (U.type) {
522 case "close": C(); break;
523 case "need_cookie": G(); break
524 }
525 }
526 })
527 })();
528 //百度suggestion 显示管理
529 var B = (function() {
530 //input id=kw name=wd
531 var W = H("kw");
532 //div id=sd_1274332392357
533 var C;
534 //Form
535 var Z = document.forms[0];
536 //
537 var V;
538 //
539 function X() {
540 if (C.offsetWidth != 0 && W.offsetWidth != C.offsetWidth) {
541 B.dm({ type: "need_resize" })
542 }
543 }
544 //插入iframe
545 function a() {
546 C = J("DIV");
547 C.id = "sd_" + new Date().getTime();
548 C.style.display = "none";
549 Z.appendChild(C);
550 if (L) {
551 V = J("IFRAME"); V.style.display = "none"; V.style.position = "absolute";
552 C.parentNode.insertBefore(V, C)
553 }
554 }
555 function Y(b) {
556 b = b || window.event;
557 var c = b.target || b.srcElement;
558 if (c == W) { return }
559 while (c = c.parentNode) {
560 if (c == C) { return }
561 }
562 B.dm({ type: "mousedown_other" })
563 }
564 function U() {
565 B.dm({ type: "window_blur" })
566 }
567 //
568 function G() {
569 B.dm({ type: "div_ready", sdiv: C, frm: V });
570 //页面onmousedown事件处理程序
571 setInterval(X, 100); O(document, "mousedown", Y);
572 //窗口onblur事件处理程序
573 O(window, "blur", U);
574 //以下代码动态添加<style>标签的内容
575 //C.id <DIV style="DISPLAY: none" id="sd_1274422507294"> 其中sd_1274422507294中的数字是new Date().getTime();
576 P("#" + C.id, "border:1px solid #817F82;position:absolute;top:28px;left:0");
577 P("#" + C.id + " table", "width:100%;background:#fff;cursor:default");
578 P("#" + C.id + " td", "font:14px verdana");
579 //
580 P(".mo", "background-color:#36c;color:#fff");
581 P(".ml", "background-color:#fff;color:#000")
582 }
583 baidu.sug.initial = G;
584 return I.ini({ rm: function(b) {
585 switch (b.type) {
586 case "start": G(); break;
587 case "init": a(); break
588 }
589 }
590 })
591 })();
592
593 E.on("need_data", A);
594 E.on("close_div", T);
595 E.on("key_enter", T);
596 E.on("key_up", T);
597 E.on("key_down", T);
598 E.on("hide_div", T);
599 E.on("start", B);
600 A.on("request_data", Q);
601 A.on("give_data", T);
602
603 baidu.on("response_data", A);
604 baidu.on("init", B);
605
606 T.on("clk_submit", E, R);
607 T.on("ent_submit", E, R);
608 T.on("submit", R);
609 T.on("key_select", E);
610 T.on("close", E, D);
611 T.on("mousedown_tr", E);
612 B.on("mousedown_other", T);
613 B.on("need_resize", T);
614 B.on("div_ready", E, T);
615 B.on("window_blur", T);
616 Q.on("need_cookie", D);
617 D.on("give_cookie", Q);
618 window.baidu.initSug()
619 })();
620
2
3 //I E T R A Q D B
4
5 (function() {
6 //浏览器类型
7 var L = navigator.userAgent.indexOf("MSIE") != -1 && !window.opera;
8 //当前浏览器采用的渲染方式
9 var S = (document.compatMode == "BackCompat"); //用来判断当前浏览器采用的渲染方式。BackCompat:标准兼容模式关闭。CSS1Compat:标准兼容模式开启。
10 //获得元素
11 function H(C) {
12 return document.getElementById(C)
13 }
14 //创建元素
15 function J(C) {
16 return document.createElement(C)
17 }
18 //向元素添加事件相应函数
19 function O(G, U, C) {
20 if (L) {
21 G.attachEvent("on" + U, (function(V) { return function() { C.call(V) } })(G))
22 }
23 else {
24 G.addEventListener(U, C, false)
25 }
26 }
27 //终止事件冒泡
28 function M(C) {
29 if (L) {
30 C.returnValue = false
31 }
32 else {
33 C.preventDefault()
34 }
35 }
36 //向<style>标签样式表中添加样式
37 function P(C, U) {
38 var V = document.styleSheets;
39 if (!V || V.length <= 0) {
40 var G = document.createElement("STYLE"); G.type = "text/css"; var W = document.getElementsByTagName("HEAD")[0]; W.appendChild(G)
41 }
42 V = document.styleSheets;
43 V = V[V.length - 1];
44 if (L) {
45 V.addRule(C, U)
46 }
47 else {
48 V.insertRule(C + " { " + U + " }", V.cssRules.length)
49 }
50 }
51
52 function F(G) {
53 var U = document.forms[0];
54 for (var V in G) {
55 if (!N(V)) {
56 U.appendChild(C(V, G[V]))
57 }
58 else {
59 N(V).value = G[V]
60 }
61 }
62 function C(W, Y) {
63 var X = J("INPUT");
64 X.type = "hidden";
65 X.name = W;
66 X.id = "bdsug_ipt_" + W; X.value = Y;
67 return X
68 }
69 }
70
71 function N(V) {
72 var U = document.forms[0];
73 var G = false;
74 var C = U.getElementsByTagName("INPUT");
75 for (var W = 0; W < C.length; W++) {
76 if (V == C[W].getAttribute("name")) {
77 G = C[W];
78 return G
79 }
80 else {
81 G = false
82 }
83 }
84 }
85
86 function K(G) {
87 var U = document.forms[0];
88 for (var C in G) {
89 if (C == "f") {
90 if (N("f")) {
91 if (N("f").id == "bdsug_ipt_f") {
92 U.removeChild(H("bdsug_ipt_f"))
93 }
94 else {
95 N("f").value = "8"
96 }
97 }
98 }
99 else {
100 if (H("bdsug_ipt_" + C)) {
101 U.removeChild(H("bdsug_ipt_" + C))
102 }
103 }
104 }
105 }
106
107 //baidu对象
108 if (typeof window.baidu != "object" || window.baidu == null) {
109 window.baidu = {}
110 }
111 //百度suggestion对象
112 baidu.sug = {};
113 //百度suggestion监控对象
114 baidu.sugkeywatcher = {};
115
116 //动作处理类模型
117 var I = (function() {
118 //将额外的参数压入__MSG_QS__[Y]
119 function C(Y) {
120 var W = this.__MSG_QS__;
121 if (!W[Y]) {
122 W[Y] = []
123 }
124 for (var X = 1, U = arguments.length, V; X < U; X++) {
125 W[Y].push(arguments[X])
126 }
127 }
128
129 function G(V) {
130 var W = this.__MSG_QS__[V.type];
131 if (W == null) { return }
132 for (var X = 0, U = W.length; X < U; X++) {
133 W[X].rm(V)
134 }
135 }
136
137 return { ini: function(U) {
138 //空对象,一个数组
139 U.__MSG_QS__ = {};
140 U.on = C;
141 U.dm = G;
142 return U
143 }
144 }
145 })();
146 //百度suggestion管理(input部分)
147 var E = (function() {
148 //关键字input
149 var W = H("kw");
150 var C;
151 //setInterval的timer id (function G)
152 var g = 0;
153 var e = 0;
154 //关键字input 的value
155 var U = "";
156 var b = "";
157 var f;
158 var Z = false;
159 var X = true;
160
161 function h() {
162 if (X) { E.dm({ type: "start" }); X = false }
163 }
164
165 function c(j) {
166 if (X) {
167 E.dm({ type: "start" }); X = false
168 } j = j || window.event;
169 if (j.keyCode == 9 || j.keyCode == 27) { E.dm({ type: "hide_div" }) }
170 if (j.keyCode == 13) { M(j); E.dm({ type: "key_enter" }) }
171 if (C.style.display != "none") {
172 if (j.keyCode == 38) { M(j); E.dm({ type: "key_up" }) }
173 if (j.keyCode == 40) {
174 E.dm({ type: "key_down" })
175 }
176 }
177 else {
178 if (j.keyCode == 38 || j.keyCode == 40) {
179 E.dm({ type: "need_data", wd: W.value })
180 }
181 }
182 }
183 function G() {
184 var j = W.value;
185 if (j == U && j != "" && j != b && j != f) {
186 if (e == 0) {
187 e = setTimeout(function() {
188 E.dm({ type: "need_data", wd: j })
189 }, 100)
190 }
191 }
192 else {
193 clearTimeout(e);
194 e = 0;
195 U = j;
196 if (j == "") { E.dm({ type: "hide_div" }) }
197 if (b != W.value) { b = "" }
198 }
199 }
200 //打开定时器并保存句柄
201 function i() {
202 g = setInterval(G, 10)
203 }
204 //关闭定时器
205 function Y() {
206 clearInterval(g)
207 }
208 //取消事件冒泡
209 function a() {
210 if (Z) { window.event.cancelBubble = true; window.event.returnValue = false; Z = false }
211 }
212 //关键字input 的autocomplete属性
213 function V(j) {
214 W.blur(); W.setAttribute("autocomplete", j); W.focus()
215 }
216 W.setAttribute("autocomplete", "off");
217 var d = false;
218 //绑定搜索input onkeydown/keydown事件绑定(键盘按下)
219 baidu.sugkeywatcher.on = function() {
220 if (!d) {
221 if (L) {
222 W.attachEvent("onkeydown", c)
223 }
224 else {
225 W.addEventListener("keydown", c, false)
226 }
227 d = true
228 }
229 };
230 //取消绑定搜索input onkeydown/keydown事件绑定(键盘按下)
231 baidu.sugkeywatcher.off = function() {
232 if (d) {
233 if (L) { W.detachEvent("onkeydown", c) } else {
234 W.removeEventListener("keydown", c, false)
235 }
236 d = false
237 }
238 };
239 baidu.sugkeywatcher.on();
240 //绑定搜索input onmousedown事件(鼠标按下)
241 O(W, "mousedown", h);
242 //绑定搜索input onbeforedeactivate事件(失去焦点,另一个元素的onfocus之前。)(onblur是在另一个元素onfocus之后)
243 O(W, "beforedeactivate", a);
244
245 return I.ini({ rm: function(j) {
246 switch (j.type) {
247 case "div_ready": C = j.sdiv; b = W.value; i(); break;
248 case "clk_submit": Y(); W.blur(); W.value = j.wd; break;
249 case "ent_submit": Y(); W.blur(); break;
250 case "key_select": f = j.selected; break;
251 case "close": Y(); V("on"); break;
252 case "mousedown_tr": Z = true; break
253 }
254 }
255 })
256 })();
257 //百度suggestion管理(table部分)
258 var T = (function() {
259 var e;
260 var X = H("kw");
261 var i;
262 var a = -1;
263 var C;
264 var j;
265 var l;
266 //设置百度suggestion 列表tr未选中样式
267 function k() {
268 var m = i.rows;
269 for (var U = 0; U < m.length; U++) {
270 m[U].className = "ml"
271 }
272 }
273 function b() {
274 if (typeof (i) != "undefined" && i != null && e.style.display != "none") {
275 var m = i.rows;
276 for (var U = 0; U < m.length; U++) {
277 if (m[U].className == "mo") {
278 return [U, m[U].cells[0].innerHTML]
279 }
280 }
281 }
282 return [-1, ""]
283 }
284 function f() {
285 if (L) {
286 l.style.display = "none"
287 }
288 e.style.display = "none"
289 }
290 //设置百度suggestion 列表tr选中样式(鼠标经过)
291 function G() {
292 k(); this.className = "mo"
293 }
294 function Y(U) {
295 T.dm({ type: "mousedown_tr" });
296 if (!L) {
297 U.stopPropagation(); U.preventDefault(); return false
298 }
299 }
300 function Z(U) {
301 var m = U;
302 return function() {
303 var n = C[m];
304 f();
305 T.dm({ type: "clk_submit", oq: H("kw").value, wd: n, rsp: m })
306 }
307 }
308 function c(U) {
309 U = U || window.event;
310 M(U);
311 T.dm({ type: "close" });
312 f();
313 //!!!
314 (new Image()).src = "http://s.baidu.com/w.gif?fm=suggestion&title=%B9%D8%B1%D5&t=" + new Date().getTime()
315 }
316 //百度suggestion table 布局
317 function V() {
318 var U = [X.offsetWidth, X.offsetHeight];
319 e.style.width = ((L && S) ? U[0] : U[0] - 2) + "px";
320 e.style.top = ((L && S) ? U[1] : U[1] - 1) + "px";
321 e.style.display = "block";
322 if (L) {
323 l.style.top = ((L && S) ? U[1] : U[1] - 1) + "px";
324 l.style.width = ((L && S) ? U[0] : U[0] - 2) + "px"
325 }
326 }
327 //绑定百度suggestion table事件处理
328 function g() {
329 i = J("TABLE");
330 i.id = "st";
331 i.cellSpacing = 0;
332 i.cellPadding = 2;
333 var p = J("tbody");
334 i.appendChild(p);
335 for (var U = 0, m = C.length; U < m; U++) {
336 var o = p.insertRow(-1);
337 O(o, "mouseover", G);
338 O(o, "mouseout", k);
339 O(o, "mousedown", Y);
340 O(o, "click", Z(U));
341 var n = o.insertCell(-1);
342 n.innerHTML = C[U].replace(/&/g, "&")
343 }
344 e.innerHTML = "";
345 e.appendChild(i);
346 V();
347 if (L) {
348 l.style.display = "block";
349 l.style.left = 0 + "px";
350 l.style.top = X.offsetHeight + "px";
351 l.style.width = X.offsetWidth + "px";
352 l.style.height = e.offsetHeight - 10 + "px"
353 }
354 }
355 //回车键按下事件处理
356 function W() {
357 a = b()[0];
358 if (a == -1) {
359 T.dm({ type: "submit" })
360 }
361 else {
362 T.dm({ type: "ent_submit", oq: j, wd: b()[1], rsp: a })
363 }
364 }
365 //上箭头键按下事件处理
366 function h() {
367 a = b()[0];
368 k();
369 if (a == 0) {
370 T.dm({ type: "key_select", selected: "" });
371 H("kw").value = j; a--;
372 K({ oq: j, sug: C[a], n: 1, rsp: a, f: 3 })
373 }
374 else {
375 if (a == -1) {
376 a = C.length
377 }
378 a--;
379 var U = i.rows[a];
380 U.className = "mo";
381 T.dm({ type: "key_select", selected: C[a] });
382 H("kw").value = C[a];
383 F({ oq: j, sug: C[a], n: 1, rsp: a, f: 3 })
384 }
385 }
386 //下箭头键按下事件处理
387 function d() {
388 a = b()[0];
389 k();
390 if (a == C.length - 1) {
391 T.dm({ type: "key_select", selected: "" });
392 H("kw").value = j;
393 a = -1; K({ oq: j, sug: C[a], n: 1, rsp: a, f: 3 })
394 }
395 else {
396 a++; var U = i.rows[a]; U.className = "mo";
397 T.dm({ type: "key_select", selected: C[a] });
398 H("kw").value = C[a];
399 F({ oq: j, sug: C[a], n: 1, rsp: a, f: 3 })
400 }
401 }
402 return I.ini({ rm: function(U) {
403 switch (U.type) {
404 case "div_ready": e = U.sdiv; l = U.frm; break;
405 case "give_data": j = U.data.q; C = U.data.s; if (C.length != 0) { g() } else { f() } break;
406 case "key_enter": W(); break;
407 case "key_up": h(); break;
408 case "key_down": d(); break;
409 case "hide_div": f(); break;
410 case "mousedown_other": f(); break;
411 case "window_blur": f(); break;
412 case "need_resize": V(); break
413 }
414 }
415 }
416 )
417 })();
418 //subbmit事件管理
419 var R = (function() {
420 var C = document.forms[0];
421 //form提交事件处理函数
422 function G() {
423 if (H("bdsug_ipt_sug")) {
424 if (H("bdsug_ipt_sug").value == H("kw").value) {
425 K({ n: 1, sug: 1 })
426 }
427 else {
428 K({ f: 1 })
429 }
430 }
431 }
432 //form提交事件处理
433 O(C, "submit", G);
434
435 function U() {
436 G();
437 C.submit()
438 }
439 function V(W) {
440 F(W);
441 K({ sug: 1, n: 1 });
442 C.submit()
443 }
444
445 return I.ini({ rm: function(W) {
446 switch (W.type) {
447 case "clk_submit":
448 case "ent_submit": V({ oq: W.oq, rsp: W.rsp, f: 3 }); break;
449 case "submit": U(); break
450 }
451 }
452 })
453 })();
454 //百度suggestion ajax数据管理
455 var A = (function() {
456 var G = {};
457 function U(C) {
458 if (typeof G[C] == "undefined") {
459 A.dm({ type: "request_data", wd: C })
460 } else {
461 A.dm({ type: "give_data", data: G[C] })
462 }
463 }
464 function V(C) {
465 G[C.q] = C;
466 A.dm({ type: "give_data", data: G[C.q] })
467 }
468 return I.ini({ rm: function(C) {
469 switch (C.type) {
470 case "response_data": V(C.data); break;
471 case "need_data": U(C.wd); break
472 }
473 }
474 })
475 })();
476
477 //baidu suggestion查询管理
478 var Q = (function() {
479 var C;
480 var U;
481 //ajax方法,根据关键字获取baidu suggestion内容,
482 //一个示例:
483 //http://suggestion.baidu.com/su?wd=%E7%9A%84&p=3&t=1274410201491
484 //window.baidu.sug({q:"的",p:false,s:["的卢","的士高","的士速递","的卢马","的士高舞曲","的士高 野人疯狂版","的 地 得的用法","的繁体字怎么写","的士高舞曲视频","的士速递1"]});
485 function G(V) {
486 Q.dm({ type: "need_cookie" });
487 if (C) {
488 document.body.removeChild(C)
489 }
490 C = J("SCRIPT");
491 //!!!
492 C.src = "http://suggestion.baidu.com/su?wd=" + encodeURIComponent(V) + "&p=" + U + "&t=" + (new Date()).getTime();
493 C.charset = "gb2312";
494 document.body.appendChild(C)
495 }
496 return I.ini({ rm: function(V) {
497 switch (V.type) {
498 case "request_data": G(V.wd); break;
499 case "give_cookie": var W = V.sug; if (W > 0) { W = 3 } U = W; break
500 }
501 }
502 })
503 })();
504
505 baidu.sug = function(C) { baidu.dm({ type: "response_data", data: C }) };
506 baidu.initSug = function() { baidu.dm({ type: "init" }) };
507 I.ini(baidu);
508
509 //cookie管理
510 var D = (function() {
511 function C() {
512 if (navigator.cookieEnabled) {
513 document.cookie = "su=0; domain=www.baidu.com"
514 }
515 }
516 function G() {
517 var U = (navigator.cookieEnabled && /sug=(\d)/.test(document.cookie) ? RegExp.$1 : 3);
518 D.dm({ type: "give_cookie", sug: U })
519 }
520 return I.ini({ rm: function(U) {
521 switch (U.type) {
522 case "close": C(); break;
523 case "need_cookie": G(); break
524 }
525 }
526 })
527 })();
528 //百度suggestion 显示管理
529 var B = (function() {
530 //input id=kw name=wd
531 var W = H("kw");
532 //div id=sd_1274332392357
533 var C;
534 //Form
535 var Z = document.forms[0];
536 //
537 var V;
538 //
539 function X() {
540 if (C.offsetWidth != 0 && W.offsetWidth != C.offsetWidth) {
541 B.dm({ type: "need_resize" })
542 }
543 }
544 //插入iframe
545 function a() {
546 C = J("DIV");
547 C.id = "sd_" + new Date().getTime();
548 C.style.display = "none";
549 Z.appendChild(C);
550 if (L) {
551 V = J("IFRAME"); V.style.display = "none"; V.style.position = "absolute";
552 C.parentNode.insertBefore(V, C)
553 }
554 }
555 function Y(b) {
556 b = b || window.event;
557 var c = b.target || b.srcElement;
558 if (c == W) { return }
559 while (c = c.parentNode) {
560 if (c == C) { return }
561 }
562 B.dm({ type: "mousedown_other" })
563 }
564 function U() {
565 B.dm({ type: "window_blur" })
566 }
567 //
568 function G() {
569 B.dm({ type: "div_ready", sdiv: C, frm: V });
570 //页面onmousedown事件处理程序
571 setInterval(X, 100); O(document, "mousedown", Y);
572 //窗口onblur事件处理程序
573 O(window, "blur", U);
574 //以下代码动态添加<style>标签的内容
575 //C.id <DIV style="DISPLAY: none" id="sd_1274422507294"> 其中sd_1274422507294中的数字是new Date().getTime();
576 P("#" + C.id, "border:1px solid #817F82;position:absolute;top:28px;left:0");
577 P("#" + C.id + " table", "width:100%;background:#fff;cursor:default");
578 P("#" + C.id + " td", "font:14px verdana");
579 //
580 P(".mo", "background-color:#36c;color:#fff");
581 P(".ml", "background-color:#fff;color:#000")
582 }
583 baidu.sug.initial = G;
584 return I.ini({ rm: function(b) {
585 switch (b.type) {
586 case "start": G(); break;
587 case "init": a(); break
588 }
589 }
590 })
591 })();
592
593 E.on("need_data", A);
594 E.on("close_div", T);
595 E.on("key_enter", T);
596 E.on("key_up", T);
597 E.on("key_down", T);
598 E.on("hide_div", T);
599 E.on("start", B);
600 A.on("request_data", Q);
601 A.on("give_data", T);
602
603 baidu.on("response_data", A);
604 baidu.on("init", B);
605
606 T.on("clk_submit", E, R);
607 T.on("ent_submit", E, R);
608 T.on("submit", R);
609 T.on("key_select", E);
610 T.on("close", E, D);
611 T.on("mousedown_tr", E);
612 B.on("mousedown_other", T);
613 B.on("need_resize", T);
614 B.on("div_ready", E, T);
615 B.on("window_blur", T);
616 Q.on("need_cookie", D);
617 D.on("give_cookie", Q);
618 window.baidu.initSug()
619 })();
620