Newer
Older
'qui/QUI',
'qui/controls/Control'
], function(QUI, QUIControl)
{
"use strict";
return new Class({
Extends : QUIControl,
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
Binds : [
'$onImport',
'scrollToTop',
'$scrollToClick'
],
initialize : function(options)
{
this.parent( options );
this.addEvents({
onImport: this.$onImport
});
},
/**
* event : on import
*/
$onImport : function()
{
var links = this.getElm().getElements( '.quiqqer-faq-list li a'),
topList = this.getElm().getElements( '[href="#top"]' );
for ( var i = 0, len = links.length; i < len; i++ ) {
links[ i ].addEvent( 'click', this.$scrollToClick );
}
topList.addEvent( 'click', this.scrollToTop );
// check location
if ( !window.location.hash || window.location.hash === '' ) {
return;
}
var Article = this.getElm().getElement( window.location.hash );
if ( Article ) {
new Fx.Scroll( window ).toElement( Article );
}
},
/**
* event : on click at a faq entry
*
* @param {DOMEvent} event - click event
*/
$scrollToClick : function(event)
{
if ( typeOf( event ) === 'domevent' ) {
event.stop();
}
var Target = event.target,
href = Target.get( 'href' );
href = href.split( '#' );
if ( typeof href[ 1 ] === 'undefined' ) {
return;
}
var Article = this.getElm().getElement( '#'+ href[ 1 ] );
if ( !Article ) {
return;
}
new Fx.Scroll(window, {
onComplete: function()
{
window.location = '#'+ href[ 1 ];
}
}).toElement( Article );
},
/**
* Scroll the window to top and clear the anchor
*
* @param {DOMEvent} [event] - (optional) click dom event
*/
scrollToTop : function(event)
{
if ( typeOf( event ) === 'domevent' ) {
event.stop();
}
new Fx.Scroll(window, {
onComplete: function() {
window.location = '#';
}
}).toTop();
}
});
});