Требование: PHP => 5.3, часть 2
[cswow.git] / js / my_livesearch.js
blob954285190bb500ab8957db93ed0c712248e035dd
1 /*\r
2  * Live search script\r
3  */\r
4 var ls_delay = 500;      // Search delay after key up\r
5 var ls_hidedelay = 500;  // Hide delay after lose focus (must be > 0)\r
6 \r
7 var ls_mainDiv = 0,      // Main div\r
8 ls_begin_timer = new Number(0);\r
9 \r
10 function ls_postLoad()\r
11 {\r
12         var ls_input = getElementsByClass('ls_search', null, 'input');\r
13         if (ls_input == null)\r
14                 return;\r
15         for (i=0;i<ls_input.length; i++)\r
16         {\r
17                 var input = ls_input[i];\r
18                 input.setAttribute("autocomplete", "off");\r
19                 addEvent(input, 'keyup', liveSearch);\r
20                 addEvent(input, 'focus', liveSearch);\r
21                 addEvent(input, 'input', liveSearch);\r
22                 addEvent(input, 'blur', ls_hide);\r
23         }\r
24 }\r
25 function ls_Init()\r
26 {\r
27         ls_body = document.body || document.documentElement;\r
28         ls_mainDiv = insertElement(ls_body, 'DIV', 'ls_my_livesearch');\r
29         ls_mainDiv.style.position = "absolute";\r
30         ls_mainDiv.style.zIndex = 10;\r
31         addLoadEvent(ls_postLoad);\r
32 }\r
33 function ls_dosearch(parent)\r
34 {\r
35         my_AJAX.GETupload('ajax.php?ls=' + parent.alt + '&name=' + parent.value, function (text){ls_show(parent, text);});\r
36 }\r
37 function liveSearch()\r
38 {\r
39         var name = this.value, input = this;\r
40         if (name.length < 2)\r
41         {\r
42                 ls_hide();\r
43                 return;\r
44         }\r
45         if (ls_delay)\r
46                 ls_begin_timer.Timer(function (){ls_dosearch(input)}, ls_delay, true);\r
47         else\r
48                 ls_dosearch(input);\r
49 }\r
50 function ls_show(parent, text)\r
51 {\r
52         ls_mainDiv.innerHTML = text;\r
53         parseHref(ls_mainDiv);\r
54         var bounds = getBounds(parent);\r
55         p = getPageRect(),\r
56         x = bounds.left,\r
57         y = bounds.top + bounds.height+1,\r
58         max_x = p.width - ls_mainDiv.offsetWidth,\r
59         max_y = p.height - ls_mainDiv.offsetHeight,\r
60         x = x > max_x ? max_x : x;\r
61         y = y > max_y ? max_y : y;\r
62         var css = ls_mainDiv.style;\r
63         css.left = (x < p.left ? p.left : x) + 'px';\r
64         css.top  = (y < p.top ? p.top : y) + 'px';\r
65         css.display = "block";\r
66 }\r
67 function ls_doHide()\r
68 {\r
69         ls_mainDiv.style.display = "none";\r
70 }\r
71 function ls_hide()\r
72 {\r
73         ls_begin_timer.Timer('ls_doHide()', ls_hidedelay, true);\r
74 }\r
75 ls_Init();