Project

General

Profile

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

    
(3-3/31)