Project

General

Profile

1
window.addEvent('domready', function () {
2
    if ($('keyword') === null  || $('keyword').value === null || $('keyword').value==='') {        
3
        browse();
4
    }
5
     
6
    
7
});
8

    
9
function browse() {     
10
    if (typeof openaireOrganizationsRawUrl !== 'undefined') {      
11
        jQuery.ajax({"url": openaireOrganizationsRawUrl}).done(function (data, status, request) {
12
            $('organizationBrowse').innerHTML = data;
13
			init();
14
        });        
15
    }
16
}
17
function addField() {
18
	this.field.remove.style.display = '';
19
	var newField = this.field.clone();
20
	newField.add = newField.getElement('span.addNewFilter');
21
	newField.remove = newField.getElement('span.removeNewFilter');
22
	newField.keyword = newField.getElement('input[name = "keyword[]"]');
23
	newField.field = newField.getElement('select[name = "field[]"]');
24
	newField.constraint = newField.getElement('select[name = "constraint[]"]');
25
	newField.add.field = newField;
26
	newField.remove.field = newField;
27
	newField.add.addEvent('click', addField);
28
	newField.remove.addEvent('click', removeField);
29
	newField.keyword.value = '';
30
	newField.field.selectedIndex = 0;
31
	newField.constraint.selectedIndex = 0;
32
	newField.inject(this.field, 'after');
33
}
34

    
35
function removeField() {
36
	var fields = $$('div.srchNavTextAdvancedFilter');
37
	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.
38
		fields.each(function (field) {
39
			field.remove.style.display = 'none';
40
		});
41
	}
42
	this.field.destroy();
43
}
44

    
45
function updateLimits() {
46
        var filters = $('advanceSearchFilters');
47
	var noLimits = $('noLimits');
48
	var countryLimits = $('countryLimits');
49
	var typeLimits = $('typeLimits'); 
50
	var clearAll = $('clearAll');
51
	if ((noLimits == null) || (countryLimits == null) || (typeLimits == null))
52
		return;
53
	countryLimits.value = countryLimits.getElement('span');
54
	typeLimits.value = typeLimits.getElement('span');
55
	if ((countryLimits.value == null) || (typeLimits.value == null))
56
		return;
57
	noLimits.style.display = '';
58
	countryLimits.value.set('html', '');
59
	countryLimits.hide();
60
	typeLimits.value.set('html', '');
61
	typeLimits.style.display = 'none';
62
	clearAll.style.display = 'none';
63
        filters.style.display ='none';
64
	$$('div.filterItem').each(function (field) {
65
		if (field.rows != null) { // checkbox field
66
			var values = new Array();
67
			field.rows.each(function (row) {
68
				if (row.checkbox.checked)
69
					values.push(row.value);
70
			});
71
			if (values.length > 0) {
72
				switch (field.id) {
73
				case 'country':
74
					countryLimits.value.set('html', values.join(', '));
75
					countryLimits.show();
76
					break;
77
				case 'type':
78
					typeLimits.value.set('html', values.join(', '));
79
					typeLimits.style.display = '';
80
				}
81
			}
82
		}
83
	});
84
	if (countryLimits.isDisplayed() || typeLimits.isDisplayed()) {
85
		noLimits.style.display = 'none';
86
		clearAll.style.display = '';
87
                filters.style.display ='';
88
	}
89
}
90

    
91
function clear(field) {
92
	if (field.rows != null) { // checkbox field
93
		field.rows.each(function (row) {
94
			row.checkbox.checked = false;
95
		});
96
		field.ok.click();
97
	}
98
}
99

    
100
function clearAll() {
101
	$$('div.filterItem').each(function (field) { // other fields
102
		clear(field);
103
	});
104
	return false;
105
}
106

    
107
window.addEvent('domready', function () {
108
	/*if ($$('div.searchResults').length > 0) { // hide 'In this section' when there are results
109
		$$('div.tm-main').setStyle('width', $$('div.tm-main').offsetWidth + $$("aside.tm-sidebar-a").offsetWidth);
110
		$$("aside.tm-sidebar-a").destroy();
111
	}*/
112
        init() ;
113
	$$('div.srchNavTextAdvancedFilter').each(function (field) { // text fields, add / remove
114
		field.add = field.getElement('span.addNewFilter');
115
		field.remove = field.getElement('span.removeNewFilter');
116
		field.keyword = field.getElement('input[name = "keyword[]"]');
117
		field.field = field.getElement('select[name = "field[]"]');
118
		field.constraint = field.getElement('select[name = "constraint[]"]');
119
		field.add.field = field;
120
		field.remove.field = field;
121
		field.add.addEvent('click', addField);
122
		field.remove.addEvent('click', removeField);
123
	});
124
	$$('div.filterItem').each(function (field) { // other fields
125
		field.edit = field.getElement('a.editRef');
126
		field.details = field.getElement('div.hiddenAdvancedSearch');
127
		field.ok = field.getElement('input.okElement');
128
		field.cancel = field.getElement('input.cancelElement');
129
		if ((field.edit != null) && (field.details != null) && (field.ok != null) && (field.cancel != null)) {
130
			field.slide = new Fx.Slide(field.details, {resetHeight: true});
131
			field.slide.hide();
132
			field.details.show();
133
			field.edit.addEvent('click', function () {
134
				if (field.slide.open)
135
					field.cancel.click();
136
				else				
137
					field.slide.slideIn();
138
				return false;
139
			});
140
			field.filter = field.getElement('input[type = "text"]');
141
			field.selectAll = field.getElement('a.selectAll');
142
			field.deselectAll = field.getElement('a.deselectAll');
143
			field.rows = field.getElements('div[class = "filterListingBlock"] div[class = "filterRow"]');
144
			if ((field.filter != null) && (field.selectAll != null) && (field.deselectAll != null) && (field.rows != null)) { // checkbox field
145
				field.rows.each(function (row) {
146
					row.label = row.getElement('label');
147
					row.checkbox = row.getElement('input[type = "checkbox"]');
148
					row.id = row.checkbox.value;
149
					row.value = row.label.get('html');
150
					row.lowerCaseValue = row.value.toLowerCase();
151
				});	
152
				field.filter.addEvent('keyup', function () {
153
					var term = this.value.trim().toLowerCase();
154
					if (term == '') {
155
						field.rows.each(function (row) {
156
							row.label.set('html', row.value);
157
							row.style.display = '';
158
						});
159
					} else {
160
						field.rows.each(function (row) {
161
							var index = row.lowerCaseValue.indexOf(term);
162
							if (index == -1) {
163
								row.label.set('html', row.value);
164
								row.style.display = 'none';
165
							} else {
166
								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));
167
								row.style.display = '';
168
							}
169
						});
170
					}
171
				});
172
				field.selectAll.addEvent('click', function () {
173
					field.rows.each(function (row) {
174
						if (row.isDisplayed())
175
							row.checkbox.checked = true;
176
					});
177
					return false;
178
				});
179
				field.deselectAll.addEvent('click', function () {
180
					field.rows.each(function (row) {
181
						if (row.isDisplayed())
182
							row.checkbox.checked = false;
183
					});
184
					return false;
185
				});
186
				field.ok.addEvent('click', function () {
187
					field.slide.slideOut();
188
					field.details.getElements('input[type = "hidden"]').each(function (shadow) { // remove all shadows
189
						shadow.destroy();
190
					});
191
					field.rows.each(function (row) { // create a new shadow for each checked checkbox
192
						if (row.checkbox.checked) {
193
							var shadow = new Element('input');
194
							shadow.type = 'hidden';
195
							shadow.name = field.id + '[]';
196
							shadow.value = row.id;
197
							shadow.inject(field.details, 'top');
198
						}
199
					});
200
					updateLimits();
201
				});
202
				field.cancel.addEvent('click', function () {
203
					field.slide.slideOut();
204
					var shadows = field.details.getElements('input[type = "hidden"]');
205
					field.rows.each(function (row) { // uncheck all the checkboxes
206
						row.checkbox.checked = shadows.some(function (shadow) {
207
							return (shadow.name == field.id) && (shadow.value == row.id);
208
						});
209
					});
210
				});
211
			}
212
		}
213
	});
214
	$('countryLimits').addEvent('click', function () {
215
		clear($('country'));
216
	});
217
	$('typeLimits').addEvent('click', function () {
218
		clear($('type'));
219
	});
220
	$('clearAll').addEvent('click', clearAll);
221
	updateLimits();
222
	$$('div.addmore').each(function (viewFilters) { // hide filters
223
		viewFilters.leftFilters = viewFilters.getParent().getElement('div.leftAdvanced');
224
		viewFilters.leftFilters.style.display = 'none';
225
		viewFilters.rightFilters = viewFilters.getParent().getElement('div.rightAdvanced');
226
		viewFilters.rightFilters.style.display = 'none';
227
                viewFilters.showfilters = viewFilters.getParent().getElement('span.showfilters');
228
                viewFilters.showfilters.style.display = '';
229
                viewFilters.hidefilters = viewFilters.getParent().getElement('span.hidefilters');
230
                viewFilters.hidefilters.style.display = 'none';
231
		viewFilters.addEvent('click', function () {
232
			if (this.leftFilters.isVisible() || this.rightFilters.isVisible()) {
233
				this.leftFilters.style.display = 'none';
234
				this.rightFilters.style.display = 'none';
235
                                this.showfilters.style.display = '';
236
                                this.hidefilters.style.display = 'none';                                
237
			} else {
238
				this.leftFilters.style.display = '';
239
				this.rightFilters.style.display = '';
240
                                this.showfilters.style.display = 'none';
241
                                this.hidefilters.style.display = '';
242
			}
243
		});
244
	});
245
});
246

    
247

    
248
function init() {
249
 
250
    // view more
251
    $$('div.searchCol, div.flowWrapper').each(function (statistic) {
252
        var viewMore = statistic.getElement('span.viewmore');
253
        if (viewMore !== null) {
254
            viewMore.more = statistic.getElement('div.viewallpop');
255
            if (viewMore.more !== null) {
256
                viewMore.addEvent('click', function () {
257
                    tooltip.hide(); 
258
                    tooltip.pop(this, this.more.innerHTML, {relativeTo: 'element', position: 1, offsetX: -30, offsetY: 0, effect: 'fade', overlay: true, sticky: true, position: 1, license: tooltipLicense});
259
                    return false;
260
                });
261
            }
262
        }
263
    });
264
}
(4-4/32)