author | Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de> |
Wed, 31 Aug 2011 14:22:19 +0200 | |
changeset 1 | 6288d5685bff |
permissions | -rw-r--r-- |
1
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
1 |
jQuery.autocomplete = function(input, options) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
2 |
// Create a link to self |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
3 |
var me = this; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
4 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
5 |
// Create jQuery object for input element |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
6 |
var $input = $(input).attr("autocomplete", "off"); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
7 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
8 |
// Apply inputClass if necessary |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
9 |
if (options.inputClass) $input.addClass(options.inputClass); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
10 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
11 |
// Create results |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
12 |
var results = document.createElement("div"); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
13 |
// Create jQuery object for results |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
14 |
var $results = $(results); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
15 |
$results.hide().addClass(options.resultsClass).css("position", "absolute"); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
16 |
if( options.width > 0 ) $results.css("width", options.width); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
17 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
18 |
// Add to body element |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
19 |
$("body").append(results); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
20 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
21 |
input.autocompleter = me; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
22 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
23 |
var timeout = null; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
24 |
var prev = ""; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
25 |
var active = -1; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
26 |
var cache = {}; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
27 |
var keyb = false; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
28 |
var hasFocus = false; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
29 |
var lastKeyPressCode = null; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
30 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
31 |
// flush cache |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
32 |
function flushCache(){ |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
33 |
cache = {}; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
34 |
cache.data = {}; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
35 |
cache.length = 0; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
36 |
}; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
37 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
38 |
// flush cache |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
39 |
flushCache(); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
40 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
41 |
// if there is a data array supplied |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
42 |
if( options.data != null ){ |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
43 |
var sFirstChar = "", stMatchSets = {}, row = []; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
44 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
45 |
// no url was specified, we need to adjust the cache length to make sure it fits the local data store |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
46 |
if( typeof options.url != "string" ) options.cacheLength = 1; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
47 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
48 |
// loop through the array and create a lookup structure |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
49 |
for( var i=0; i < options.data.length; i++ ){ |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
50 |
// if row is a string, make an array otherwise just reference the array |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
51 |
row = ((typeof options.data[i] == "string") ? [options.data[i]] : options.data[i]); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
52 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
53 |
// if the length is zero, don't add to list |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
54 |
if( row[0].length > 0 ){ |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
55 |
// get the first character |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
56 |
sFirstChar = row[0].substring(0, 1).toLowerCase(); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
57 |
// if no lookup array for this character exists, look it up now |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
58 |
if( !stMatchSets[sFirstChar] ) stMatchSets[sFirstChar] = []; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
59 |
// if the match is a string |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
60 |
stMatchSets[sFirstChar].push(row); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
61 |
} |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
62 |
} |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
63 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
64 |
// add the data items to the cache |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
65 |
for( var k in stMatchSets ){ |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
66 |
// increase the cache size |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
67 |
options.cacheLength++; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
68 |
// add to the cache |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
69 |
addToCache(k, stMatchSets[k]); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
70 |
} |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
71 |
} |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
72 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
73 |
$input |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
74 |
.keydown(function(e) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
75 |
// track last key pressed |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
76 |
lastKeyPressCode = e.keyCode; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
77 |
switch(e.keyCode) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
78 |
case 38: // up |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
79 |
e.preventDefault(); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
80 |
moveSelect(-1); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
81 |
break; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
82 |
case 40: // down |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
83 |
e.preventDefault(); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
84 |
moveSelect(1); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
85 |
break; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
86 |
case 9: // tab |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
87 |
case 13: // return |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
88 |
if( selectCurrent() ){ |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
89 |
// make sure to blur off the current field |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
90 |
$input.get(0).blur(); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
91 |
e.preventDefault(); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
92 |
} |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
93 |
break; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
94 |
default: |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
95 |
active = -1; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
96 |
if (timeout) clearTimeout(timeout); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
97 |
timeout = setTimeout(function(){onChange();}, options.delay); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
98 |
break; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
99 |
} |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
100 |
}) |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
101 |
.focus(function(){ |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
102 |
// track whether the field has focus, we shouldn't process any results if the field no longer has focus |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
103 |
hasFocus = true; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
104 |
}) |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
105 |
.blur(function() { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
106 |
// track whether the field has focus |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
107 |
hasFocus = false; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
108 |
hideResults(); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
109 |
}); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
110 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
111 |
hideResultsNow(); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
112 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
113 |
function onChange() { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
114 |
// ignore if the following keys are pressed: [del] [shift] [capslock] |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
115 |
if( lastKeyPressCode == 46 || (lastKeyPressCode > 8 && lastKeyPressCode < 32) ) return $results.hide(); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
116 |
var v = $input.val(); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
117 |
if (v == prev) return; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
118 |
prev = v; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
119 |
if (v.length >= options.minChars) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
120 |
$input.addClass(options.loadingClass); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
121 |
requestData(v); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
122 |
} else { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
123 |
$input.removeClass(options.loadingClass); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
124 |
$results.hide(); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
125 |
} |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
126 |
}; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
127 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
128 |
function moveSelect(step) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
129 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
130 |
var lis = $("li", results); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
131 |
if (!lis) return; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
132 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
133 |
active += step; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
134 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
135 |
if (active < 0) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
136 |
active = 0; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
137 |
} else if (active >= lis.size()) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
138 |
active = lis.size() - 1; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
139 |
} |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
140 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
141 |
lis.removeClass("ac_over"); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
142 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
143 |
$(lis[active]).addClass("ac_over"); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
144 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
145 |
// Weird behaviour in IE |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
146 |
// if (lis[active] && lis[active].scrollIntoView) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
147 |
// lis[active].scrollIntoView(false); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
148 |
// } |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
149 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
150 |
}; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
151 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
152 |
function selectCurrent() { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
153 |
var li = $("li.ac_over", results)[0]; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
154 |
if (!li) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
155 |
var $li = $("li", results); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
156 |
if (options.selectOnly) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
157 |
if ($li.length == 1) li = $li[0]; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
158 |
} else if (options.selectFirst) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
159 |
li = $li[0]; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
160 |
} |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
161 |
} |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
162 |
if (li) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
163 |
selectItem(li); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
164 |
return true; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
165 |
} else { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
166 |
return false; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
167 |
} |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
168 |
}; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
169 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
170 |
function selectItem(li) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
171 |
if (!li) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
172 |
li = document.createElement("li"); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
173 |
li.extra = []; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
174 |
li.selectValue = ""; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
175 |
} |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
176 |
var v = $.trim(li.selectValue ? li.selectValue : li.innerHTML); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
177 |
input.lastSelected = v; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
178 |
prev = v; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
179 |
$results.html(""); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
180 |
$input.val(v); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
181 |
hideResultsNow(); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
182 |
if (options.onItemSelect) setTimeout(function() { options.onItemSelect(li) }, 1); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
183 |
}; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
184 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
185 |
// selects a portion of the input string |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
186 |
function createSelection(start, end){ |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
187 |
// get a reference to the input element |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
188 |
var field = $input.get(0); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
189 |
if( field.createTextRange ){ |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
190 |
var selRange = field.createTextRange(); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
191 |
selRange.collapse(true); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
192 |
selRange.moveStart("character", start); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
193 |
selRange.moveEnd("character", end); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
194 |
selRange.select(); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
195 |
} else if( field.setSelectionRange ){ |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
196 |
field.setSelectionRange(start, end); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
197 |
} else { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
198 |
if( field.selectionStart ){ |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
199 |
field.selectionStart = start; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
200 |
field.selectionEnd = end; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
201 |
} |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
202 |
} |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
203 |
field.focus(); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
204 |
}; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
205 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
206 |
// fills in the input box w/the first match (assumed to be the best match) |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
207 |
function autoFill(sValue){ |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
208 |
// if the last user key pressed was backspace, don't autofill |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
209 |
if( lastKeyPressCode != 8 ){ |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
210 |
// fill in the value (keep the case the user has typed) |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
211 |
$input.val($input.val() + sValue.substring(prev.length)); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
212 |
// select the portion of the value not typed by the user (so the next character will erase) |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
213 |
createSelection(prev.length, sValue.length); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
214 |
} |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
215 |
}; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
216 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
217 |
function showResults() { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
218 |
// get the position of the input field right now (in case the DOM is shifted) |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
219 |
var pos = findPos(input); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
220 |
// either use the specified width, or autocalculate based on form element |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
221 |
var iWidth = (options.width > 0) ? options.width : $input.width(); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
222 |
// reposition |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
223 |
$results.css({ |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
224 |
width: parseInt(iWidth) + "px", |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
225 |
top: (pos.y + input.offsetHeight) + "px", |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
226 |
left: pos.x + "px" |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
227 |
}).show(); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
228 |
}; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
229 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
230 |
function hideResults() { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
231 |
if (timeout) clearTimeout(timeout); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
232 |
timeout = setTimeout(hideResultsNow, 200); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
233 |
}; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
234 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
235 |
function hideResultsNow() { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
236 |
if (timeout) clearTimeout(timeout); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
237 |
$input.removeClass(options.loadingClass); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
238 |
if ($results.is(":visible")) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
239 |
$results.hide(); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
240 |
} |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
241 |
if (options.mustMatch) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
242 |
var v = $input.val(); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
243 |
if (v != input.lastSelected) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
244 |
selectItem(null); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
245 |
} |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
246 |
} |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
247 |
}; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
248 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
249 |
function receiveData(q, data) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
250 |
if (data) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
251 |
$input.removeClass(options.loadingClass); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
252 |
results.innerHTML = ""; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
253 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
254 |
// if the field no longer has focus or if there are no matches, do not display the drop down |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
255 |
if( !hasFocus || data.length == 0 ) return hideResultsNow(); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
256 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
257 |
if ($.browser.msie) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
258 |
// we put a styled iframe behind the calendar so HTML SELECT elements don't show through |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
259 |
$results.append(document.createElement('iframe')); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
260 |
} |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
261 |
results.appendChild(dataToDom(data)); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
262 |
// autofill in the complete box w/the first match as long as the user hasn't entered in more data |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
263 |
if( options.autoFill && ($input.val().toLowerCase() == q.toLowerCase()) ) autoFill(data[0][0]); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
264 |
showResults(); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
265 |
} else { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
266 |
hideResultsNow(); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
267 |
} |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
268 |
}; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
269 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
270 |
function parseData(data) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
271 |
if (!data) return null; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
272 |
var parsed = []; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
273 |
var rows = data.split(options.lineSeparator); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
274 |
for (var i=0; i < rows.length; i++) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
275 |
var row = $.trim(rows[i]); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
276 |
if (row) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
277 |
parsed[parsed.length] = row.split(options.cellSeparator); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
278 |
} |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
279 |
} |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
280 |
return parsed; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
281 |
}; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
282 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
283 |
function dataToDom(data) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
284 |
var ul = document.createElement("ul"); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
285 |
var num = data.length; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
286 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
287 |
// limited results to a max number |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
288 |
if( (options.maxItemsToShow > 0) && (options.maxItemsToShow < num) ) num = options.maxItemsToShow; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
289 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
290 |
for (var i=0; i < num; i++) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
291 |
var row = data[i]; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
292 |
if (!row) continue; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
293 |
var li = document.createElement("li"); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
294 |
if (options.formatItem) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
295 |
li.innerHTML = options.formatItem(row, i, num); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
296 |
li.selectValue = row[0]; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
297 |
} else { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
298 |
li.innerHTML = row[0]; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
299 |
li.selectValue = row[0]; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
300 |
} |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
301 |
var extra = null; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
302 |
if (row.length > 1) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
303 |
extra = []; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
304 |
for (var j=1; j < row.length; j++) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
305 |
extra[extra.length] = row[j]; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
306 |
} |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
307 |
} |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
308 |
li.extra = extra; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
309 |
ul.appendChild(li); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
310 |
$(li).hover( |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
311 |
function() { $("li", ul).removeClass("ac_over"); $(this).addClass("ac_over"); active = $("li", ul).indexOf($(this).get(0)); }, |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
312 |
function() { $(this).removeClass("ac_over"); } |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
313 |
).click(function(e) { e.preventDefault(); e.stopPropagation(); selectItem(this) }); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
314 |
} |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
315 |
return ul; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
316 |
}; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
317 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
318 |
function requestData(q) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
319 |
if (!options.matchCase) q = q.toLowerCase(); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
320 |
var data = options.cacheLength ? loadFromCache(q) : null; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
321 |
// recieve the cached data |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
322 |
if (data) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
323 |
receiveData(q, data); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
324 |
// if an AJAX url has been supplied, try loading the data now |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
325 |
} else if( (typeof options.url == "string") && (options.url.length > 0) ){ |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
326 |
$.get(makeUrl(q), function(data) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
327 |
data = parseData(data); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
328 |
addToCache(q, data); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
329 |
receiveData(q, data); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
330 |
}); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
331 |
// if there's been no data found, remove the loading class |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
332 |
} else { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
333 |
$input.removeClass(options.loadingClass); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
334 |
} |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
335 |
}; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
336 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
337 |
function makeUrl(q) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
338 |
var url = options.url + "?q=" + encodeURI(q); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
339 |
for (var i in options.extraParams) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
340 |
url += "&" + i + "=" + encodeURI(options.extraParams[i]); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
341 |
} |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
342 |
return url; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
343 |
}; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
344 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
345 |
function loadFromCache(q) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
346 |
if (!q) return null; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
347 |
if (cache.data[q]) return cache.data[q]; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
348 |
if (options.matchSubset) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
349 |
for (var i = q.length - 1; i >= options.minChars; i--) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
350 |
var qs = q.substr(0, i); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
351 |
var c = cache.data[qs]; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
352 |
if (c) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
353 |
var csub = []; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
354 |
for (var j = 0; j < c.length; j++) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
355 |
var x = c[j]; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
356 |
var x0 = x[0]; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
357 |
if (matchSubset(x0, q)) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
358 |
csub[csub.length] = x; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
359 |
} |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
360 |
} |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
361 |
return csub; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
362 |
} |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
363 |
} |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
364 |
} |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
365 |
return null; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
366 |
}; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
367 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
368 |
function matchSubset(s, sub) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
369 |
if (!options.matchCase) s = s.toLowerCase(); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
370 |
var i = s.indexOf(sub); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
371 |
if (i == -1) return false; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
372 |
return i == 0 || options.matchContains; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
373 |
}; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
374 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
375 |
this.flushCache = function() { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
376 |
flushCache(); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
377 |
}; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
378 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
379 |
this.setExtraParams = function(p) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
380 |
options.extraParams = p; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
381 |
}; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
382 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
383 |
this.findValue = function(){ |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
384 |
var q = $input.val(); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
385 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
386 |
if (!options.matchCase) q = q.toLowerCase(); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
387 |
var data = options.cacheLength ? loadFromCache(q) : null; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
388 |
if (data) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
389 |
findValueCallback(q, data); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
390 |
} else if( (typeof options.url == "string") && (options.url.length > 0) ){ |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
391 |
$.get(makeUrl(q), function(data) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
392 |
data = parseData(data) |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
393 |
addToCache(q, data); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
394 |
findValueCallback(q, data); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
395 |
}); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
396 |
} else { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
397 |
// no matches |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
398 |
findValueCallback(q, null); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
399 |
} |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
400 |
} |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
401 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
402 |
function findValueCallback(q, data){ |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
403 |
if (data) $input.removeClass(options.loadingClass); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
404 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
405 |
var num = (data) ? data.length : 0; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
406 |
var li = null; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
407 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
408 |
for (var i=0; i < num; i++) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
409 |
var row = data[i]; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
410 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
411 |
if( row[0].toLowerCase() == q.toLowerCase() ){ |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
412 |
li = document.createElement("li"); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
413 |
if (options.formatItem) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
414 |
li.innerHTML = options.formatItem(row, i, num); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
415 |
li.selectValue = row[0]; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
416 |
} else { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
417 |
li.innerHTML = row[0]; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
418 |
li.selectValue = row[0]; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
419 |
} |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
420 |
var extra = null; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
421 |
if( row.length > 1 ){ |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
422 |
extra = []; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
423 |
for (var j=1; j < row.length; j++) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
424 |
extra[extra.length] = row[j]; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
425 |
} |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
426 |
} |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
427 |
li.extra = extra; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
428 |
} |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
429 |
} |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
430 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
431 |
if( options.onFindValue ) setTimeout(function() { options.onFindValue(li) }, 1); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
432 |
} |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
433 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
434 |
function addToCache(q, data) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
435 |
if (!data || !q || !options.cacheLength) return; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
436 |
if (!cache.length || cache.length > options.cacheLength) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
437 |
flushCache(); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
438 |
cache.length++; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
439 |
} else if (!cache[q]) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
440 |
cache.length++; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
441 |
} |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
442 |
cache.data[q] = data; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
443 |
}; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
444 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
445 |
function findPos(obj) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
446 |
var curleft = obj.offsetLeft || 0; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
447 |
var curtop = obj.offsetTop || 0; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
448 |
while (obj = obj.offsetParent) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
449 |
curleft += obj.offsetLeft |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
450 |
curtop += obj.offsetTop |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
451 |
} |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
452 |
return {x:curleft,y:curtop}; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
453 |
} |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
454 |
} |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
455 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
456 |
jQuery.fn.autocomplete = function(url, options, data) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
457 |
// Make sure options exists |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
458 |
options = options || {}; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
459 |
// Set url as option |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
460 |
options.url = url; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
461 |
// set some bulk local data |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
462 |
options.data = ((typeof data == "object") && (data.constructor == Array)) ? data : null; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
463 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
464 |
// Set default values for required options |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
465 |
options.inputClass = options.inputClass || "ac_input"; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
466 |
options.resultsClass = options.resultsClass || "ac_results"; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
467 |
options.lineSeparator = options.lineSeparator || "\n"; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
468 |
options.cellSeparator = options.cellSeparator || "|"; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
469 |
options.minChars = options.minChars || 1; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
470 |
options.delay = options.delay || 400; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
471 |
options.matchCase = options.matchCase || 0; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
472 |
options.matchSubset = options.matchSubset || 1; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
473 |
options.matchContains = options.matchContains || 0; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
474 |
options.cacheLength = options.cacheLength || 1; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
475 |
options.mustMatch = options.mustMatch || 0; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
476 |
options.extraParams = options.extraParams || {}; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
477 |
options.loadingClass = options.loadingClass || "ac_loading"; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
478 |
options.selectFirst = options.selectFirst || false; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
479 |
options.selectOnly = options.selectOnly || false; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
480 |
options.maxItemsToShow = options.maxItemsToShow || -1; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
481 |
options.autoFill = options.autoFill || false; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
482 |
options.width = parseInt(options.width, 10) || 0; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
483 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
484 |
this.each(function() { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
485 |
var input = this; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
486 |
new jQuery.autocomplete(input, options); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
487 |
}); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
488 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
489 |
// Don't break the chain |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
490 |
return this; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
491 |
} |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
492 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
493 |
jQuery.fn.autocompleteArray = function(data, options) { |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
494 |
return this.autocomplete(null, options, data); |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
495 |
} |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
496 |
|
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
497 |
jQuery.fn.indexOf = function(e){ |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
498 |
for( var i=0; i<this.length; i++ ){ |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
499 |
if( this[i] == e ) return i; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
500 |
} |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
501 |
return -1; |
6288d5685bff
Stand v. 31.08.2011
Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
parents:
diff
changeset
|
502 |
}; |