1
|
function addField() {
|
2
|
this.field.remove.show();
|
3
|
var newField = this.field.clone();
|
4
|
newField.add = newField.getElement('div.addNewFilter img');
|
5
|
newField.remove = newField.getElement('div.removeNewFilter img');
|
6
|
newField.keyword = newField.getElement('input[name = "keyword[]"]');
|
7
|
newField.field = newField.getElement('select[name = "field[]"]');
|
8
|
newField.constraint = newField.getElement('select[name = "constraint[]"]');
|
9
|
newField.add.field = newField;
|
10
|
newField.remove.field = newField;
|
11
|
newField.add.addEvent('click', addField);
|
12
|
newField.remove.addEvent('click', removeField);
|
13
|
newField.keyword.value = '';
|
14
|
newField.field.selectedIndex = 0;
|
15
|
newField.constraint.selectedIndex = 0;
|
16
|
newField.inject(this.field, 'after');
|
17
|
}
|
18
|
|
19
|
function removeField() {
|
20
|
var fields = $$('div.srchNavTextAdvancedFilter');
|
21
|
if (fields.length == 2) { // When just two fields are present, only one will remain after removal. In this case hide its remove button because the last remaining field should never be deleted.
|
22
|
fields.each(function (field) {
|
23
|
field.remove.hide();
|
24
|
});
|
25
|
}
|
26
|
this.field.destroy();
|
27
|
}
|
28
|
|
29
|
function updateLimits() {
|
30
|
var noLimits = $('noLimits');
|
31
|
var typeLimits = $('typeLimits');
|
32
|
var languageLimits = $('languageLimits');
|
33
|
var contentLimits = $('contentLimits');
|
34
|
var compatibilityLimits = $('compatibilityLimits');
|
35
|
var clearAll = $('clearAll');
|
36
|
if ((noLimits == null) || (typeLimits == null) || (languageLimits == null) || (contentLimits == null) || (compatibilityLimits == null))
|
37
|
return;
|
38
|
typeLimits.value = typeLimits.getElement('span');
|
39
|
languageLimits.value = languageLimits.getElement('span');
|
40
|
contentLimits.value = contentLimits.getElement('span');
|
41
|
compatibilityLimits.value = compatibilityLimits.getElement('span');
|
42
|
if ((typeLimits.value == null) || (languageLimits.value == null) || (contentLimits.value == null) || (compatibilityLimits.value == null))
|
43
|
return;
|
44
|
noLimits.show();
|
45
|
typeLimits.value.set('html', '');
|
46
|
typeLimits.hide();
|
47
|
languageLimits.value.set('html', '');
|
48
|
languageLimits.hide();
|
49
|
contentLimits.value.set('html', '');
|
50
|
contentLimits.hide();
|
51
|
compatibilityLimits.value.set('html', '');
|
52
|
compatibilityLimits.hide();
|
53
|
clearAll.hide();
|
54
|
$$('div.filterItem').each(function (field) {
|
55
|
if (field.rows != null) { // checkbox field
|
56
|
var values = new Array();
|
57
|
field.rows.each(function (row) {
|
58
|
if (row.checkbox.checked)
|
59
|
values.push(row.value);
|
60
|
});
|
61
|
if (values.length > 0) {
|
62
|
switch (field.id) {
|
63
|
case 'type':
|
64
|
typeLimits.value.set('html', values.join(', '));
|
65
|
typeLimits.show();
|
66
|
break;
|
67
|
case 'languageSearch':
|
68
|
languageLimits.value.set('html', values.join(', '));
|
69
|
languageLimits.show();
|
70
|
break;
|
71
|
case 'datasourceContent':
|
72
|
contentLimits.value.set('html', values.join(', '));
|
73
|
contentLimits.show();
|
74
|
break;
|
75
|
case 'compatibility':
|
76
|
compatibilityLimits.value.set('html', values.join(', '));
|
77
|
compatibilityLimits.show();
|
78
|
}
|
79
|
}
|
80
|
}
|
81
|
|
82
|
});
|
83
|
if (typeLimits.isDisplayed() || languageLimits.isDisplayed() || contentLimits.isDisplayed() || compatibilityLimits.isDisplayed()) {
|
84
|
noLimits.hide();
|
85
|
clearAll.show();
|
86
|
}
|
87
|
}
|
88
|
|
89
|
function clear(field) {
|
90
|
if (field.rows != null) { // checkbox field
|
91
|
field.rows.each(function (row) {
|
92
|
row.checkbox.checked = false;
|
93
|
});
|
94
|
field.ok.click();
|
95
|
}
|
96
|
}
|
97
|
|
98
|
function clearAll() {
|
99
|
$$('div.filterItem').each(function (field) { // other fields
|
100
|
clear(field);
|
101
|
});
|
102
|
return false;
|
103
|
}
|
104
|
|
105
|
window.addEvent('domready', function () {
|
106
|
if ($$('div.searchResults').length > 0 && $('sidebar-a') != null) { // hide 'In this section' when there are results
|
107
|
$('maininner').setStyle('width', $('maininner').offsetWidth + $('sidebar-a').offsetWidth);
|
108
|
$('sidebar-a').destroy();
|
109
|
}
|
110
|
$$('div.flowWrapper').each(function (statistic) { // view more
|
111
|
var viewMore = statistic.getElement('span.viewmore');
|
112
|
if (viewMore != null) {
|
113
|
viewMore.more = statistic.getElement('div.viewallpop');
|
114
|
if (viewMore.more != null) {
|
115
|
viewMore.addEvent('click', function () {
|
116
|
tooltip.hide();
|
117
|
tooltip.pop(this, '#' + this.more.id, {relativeTo: 'element', position: 1, offsetX: -30, offsetY: 0,effect: 'fade', overlay: true, sticky: true, position: 1, license: tooltipLicense});
|
118
|
return false;
|
119
|
});
|
120
|
}
|
121
|
}
|
122
|
});
|
123
|
$$('div.srchNavTextAdvancedFilter').each(function (field) { // text fields, add / remove
|
124
|
field.add = field.getElement('div.addNewFilter img');
|
125
|
field.remove = field.getElement('div.removeNewFilter img');
|
126
|
field.keyword = field.getElement('input[name = "keyword[]"]');
|
127
|
field.field = field.getElement('select[name = "field[]"]');
|
128
|
field.constraint = field.getElement('select[name = "constraint[]"]');
|
129
|
field.add.field = field;
|
130
|
field.remove.field = field;
|
131
|
field.add.addEvent('click', addField);
|
132
|
field.remove.addEvent('click', removeField);
|
133
|
});
|
134
|
$$('div.filterItem').each(function (field) { // other fields
|
135
|
field.edit = field.getElement('a.editRef');
|
136
|
field.details = field.getElement('div.hiddenAdvancedSearch');
|
137
|
field.ok = field.getElement('input.okElement');
|
138
|
field.cancel = field.getElement('input.cancelElement');
|
139
|
if ((field.edit != null) && (field.details != null) && (field.ok != null) && (field.cancel != null)) {
|
140
|
field.slide = new Fx.Slide(field.details, {resetHeight: true});
|
141
|
field.slide.hide();
|
142
|
field.details.show();
|
143
|
field.edit.addEvent('click', function () {
|
144
|
if (field.slide.open)
|
145
|
field.cancel.click();
|
146
|
else
|
147
|
field.slide.slideIn();
|
148
|
return false;
|
149
|
});
|
150
|
field.filter = field.getElement('input[type = "text"]');
|
151
|
field.selectAll = field.getElement('a.selectAll');
|
152
|
field.deselectAll = field.getElement('a.deselectAll');
|
153
|
field.rows = field.getElements('div[class = "filterListingBlock"] div[class = "filterRow"]');
|
154
|
if ((field.filter != null) && (field.selectAll != null) && (field.deselectAll != null) && (field.rows != null)) { // checkbox field
|
155
|
field.rows.each(function (row) {
|
156
|
row.label = row.getElement('label');
|
157
|
row.checkbox = row.getElement('input[type = "checkbox"]');
|
158
|
row.id = row.checkbox.value;
|
159
|
row.value = row.label.get('html');
|
160
|
row.lowerCaseValue = row.value.toLowerCase();
|
161
|
});
|
162
|
field.filter.addEvent('keyup', function () {
|
163
|
var term = this.value.trim().toLowerCase();
|
164
|
if (term == '') {
|
165
|
field.rows.each(function (row) {
|
166
|
row.label.set('html', row.value);
|
167
|
row.show();
|
168
|
});
|
169
|
} else {
|
170
|
field.rows.each(function (row) {
|
171
|
var index = row.lowerCaseValue.indexOf(term);
|
172
|
if (index == -1) {
|
173
|
row.label.set('html', row.value);
|
174
|
row.hide();
|
175
|
} else {
|
176
|
row.label.set('html', row.value.substr(0, index) + '<span class="filterMatch">' + row.value.substr(index, term.length) + '</span>' + row.value.substr(index + term.length));
|
177
|
row.show();
|
178
|
}
|
179
|
});
|
180
|
}
|
181
|
});
|
182
|
field.selectAll.addEvent('click', function () {
|
183
|
field.rows.each(function (row) {
|
184
|
if (row.isDisplayed())
|
185
|
row.checkbox.checked = true;
|
186
|
});
|
187
|
return false;
|
188
|
});
|
189
|
field.deselectAll.addEvent('click', function () {
|
190
|
field.rows.each(function (row) {
|
191
|
if (row.isDisplayed())
|
192
|
row.checkbox.checked = false;
|
193
|
});
|
194
|
return false;
|
195
|
});
|
196
|
field.ok.addEvent('click', function () {
|
197
|
field.slide.slideOut();
|
198
|
field.details.getElements('input[type = "hidden"]').each(function (shadow) { // remove all shadows
|
199
|
shadow.destroy();
|
200
|
});
|
201
|
field.rows.each(function (row) { // create a new shadow for each checked checkbox
|
202
|
if (row.checkbox.checked) {
|
203
|
var shadow = new Element('input');
|
204
|
shadow.type = 'hidden';
|
205
|
shadow.name = ((field.id == 'datasourceContent') ? 'content' : field.id) + '[]';
|
206
|
shadow.value = row.id;
|
207
|
shadow.inject(field.details, 'top');
|
208
|
}
|
209
|
});
|
210
|
updateLimits();
|
211
|
});
|
212
|
field.cancel.addEvent('click', function () {
|
213
|
field.slide.slideOut();
|
214
|
var shadows = field.details.getElements('input[type = "hidden"]');
|
215
|
field.rows.each(function (row) { // uncheck all the checkboxes
|
216
|
row.checkbox.checked = shadows.some(function (shadow) {
|
217
|
return (shadow.name == ((field.id == 'datasourceContent') ? 'content' : field.id)) && (shadow.value == row.id);
|
218
|
});
|
219
|
});
|
220
|
});
|
221
|
}
|
222
|
}
|
223
|
});
|
224
|
$('typeLimits').addEvent('click', function () {
|
225
|
clear($('type'));
|
226
|
});
|
227
|
$('languageLimits').addEvent('click', function () {
|
228
|
clear($('languageSearch'));
|
229
|
});
|
230
|
$('contentLimits').addEvent('click', function () {
|
231
|
clear($('datasourceContent'));
|
232
|
});
|
233
|
$('compatibilityLimits').addEvent('click', function () {
|
234
|
clear($('compatibility'));
|
235
|
});
|
236
|
$('clearAll').addEvent('click', clearAll);
|
237
|
updateLimits();
|
238
|
$$('div.viewmore').each(function (viewFilters) { // hide filters
|
239
|
viewFilters.leftFilters = viewFilters.getParent().getElement('div.leftAdvanced');
|
240
|
viewFilters.leftFilters.hide();
|
241
|
viewFilters.rightFilters = viewFilters.getParent().getElement('div.rightAdvanced');
|
242
|
viewFilters.rightFilters.hide();
|
243
|
viewFilters.addEvent('click', function () {
|
244
|
if (this.leftFilters.isVisible() || this.rightFilters.isVisible()) {
|
245
|
this.leftFilters.hide();
|
246
|
this.rightFilters.hide();
|
247
|
} else {
|
248
|
this.leftFilters.show();
|
249
|
this.rightFilters.show();
|
250
|
}
|
251
|
});
|
252
|
});
|
253
|
});
|
254
|
|