Fx.ScrollWindow = Fx.Base.extend({

			initialize: function(options){
				this.setOptions(options);
				this.now = [];
				var b = document.body;
				var stop = this.clearTimer.bind(this);
				if (!this.options.continuer){
					if (b.addEventListener) b.addEventListener('DOMMouseScroll', stop, false);
					else b.onmousewheel = stop;
				}
			},
		
			setNow: function(){
				[0,1].each(function(i){
					this.now[i] = this.compute(this.from[i], this.to[i]);
				}, this);
			},
		
			scrollTo: function(x, y){
				if (this.timer && this.options.wait) return;
				var left = Window.getScrollLeft();
				var top =  Window.getScrollTop();
				var width = Window.getWidth();
				var height = Window.getHeight();
				var fullWidth = Window.getScrollWidth();
				var fullHeight = Window.getScrollHeight();
				var maxScrollWidth = fullWidth - width;
				var maxScrollHeight = fullHeight - height;
				if (x > maxScrollWidth) x = maxScrollWidth;
				if (y > maxScrollHeight) y = maxScrollHeight;
				//if (x<0) x=580+x*(-1)
				
				if (x<0) x=1162+x-15 //kod za vo MS E, a 15 eden gallery item
				x=x-40;
				//alert('left='+left+"x="+x);
				//return this.custom([left, top], [x, y]);
				return this.custom([left, top], [x, y]);
			},
		
			toElement: function(el){
				//alert('left='+$(el).getLeft());
				return this.scrollTo($(el).getLeft(), $(el).getTop());
			},
		
			increase: function(){
				window.scrollTo(this.now[0], this.now[1]);
			}
		});
		var SmoothScrollWindow = new Class({	
			anchorName: '',
			scroller: null,
			elements: [],
			
			initialize: function(_elements, options){	
				this.elements = _elements;
				options = Object.extend({ onComplete: this.setLocationAnchor.bind(this) }, options || {}); //extend the options with the oncomplete
				Window.onDomReady( this.findAllAnchors.pass(options, this) );	//start when dom is ready (onload)
			},
			
			findAllAnchors: function(options) {
				this.scroller = new Fx.ScrollWindow(options);	
				
				var els = [];
				this.elements.each(function(el){				//convert the array of 'elements'
					els.extend($S(el));					//to the wanted DOM elements
				});
				els.each( this.addEventsToAnchor.bind(this) );
			},
			
			addEventsToAnchor: function(el) {
				el.onclick=function(){return false};				//delete the old anchor event
				el.addEvent('click', this.scrollToAnchor.pass(el, this) );	//set the new scrolling event
			},
			
			scrollToAnchor: function(el) {
				this.anchorName = el.href.substr(el.href.search(/#/)+1);	//extract the anchor name
				this.scroller.toElement(document.getElementsByName(this.anchorName)[0]);
			},
			
			setLocationAnchor: function() {
				window.location.href = "#"+this.anchorName;
			}
		});
		
		//new SmoothScrollWindow(['a.backtotop'], {duration: 3000, wait: false, transition: Fx.Transitions.cubicOut});