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