
        var globalX = 0;
        var globalY = 0;
        var currentItem = null;

		function scrollToRandom(event) {
            if (event)
                event.target.blur();

		    scrollBy(((Math.random() * 5000) - 2500), ((Math.random() * 4000) - 2000));
		}

        function scrollToDiv(event, id) {
            if (event)
                event.target.blur();
            
            if (currentItem != id && $(id)) {
                
                if (currentItem != null)
                    $(currentItem).setStyle({opacity: 0.3});
                    
                currentItem = id;
                
                // track with google analytics (strip 'contentBlock')
               // alert(currentItem.substring(12, currentItem.length));
                pageTracker._trackPageview("/" + currentItem.substring(12, currentItem.length));
                //console.log(currentItem.substring(12));

                var rndWidth = (Math.floor(Math.random() * 3) - 1) * dimensions.width;
                var rndHeight = (Math.floor(Math.random() * 3) - 1) * dimensions.height;
            
                scrollTo(dimensions.marginLeft + rndWidth + globalX - Element.viewportOffset($(id))[0], 
                         dimensions.marginTop + rndHeight + globalY - Element.viewportOffset($(id))[1]);
            }
        }

        function scrollTo(newX, newY) {
            var o = new Object();
            var dX = globalX - newX;
            var dY = globalY - newY;
            var dis = Math.sqrt((dX*dX) + (dY*dY));
            var duration =  0.3 + ((dis * 0.5) / 1200);
         
            var t = new Tween(o,'delta',Tween.regularEaseInOut, 0, 1000, duration, null);
            
            

            t.onMotionChanged = function() {
                positionBlocks(Math.round(globalX + (newX - globalX) * (o.delta / 1000)), Math.round(globalY + (newY - globalY) * (o.delta / 1000)));
            };
            t.onMotionFinished = function() {
                globalX = newX;
                globalY = newY;
                
                $(currentItem).setStyle({opacity: 0.9})
            }
            t.start();
        }

        function scrollBy(deltaX, deltaY) {
            scrollTo(globalX + deltaX, globalY + deltaY);
        }
        
		function positionBlocks(toX, toY) {
		    // correct negative values
            toX = (toX % dimensions.width) + dimensions.width;
            toY = (toY % dimensions.height) + dimensions.height;

		    // move view port window back to 0,0 (because its the blocks are moved later in this method)
		    toX += (dimensions.columns * dimensions.columnsWidth / 3);
		    toY += (dimensions.rows * dimensions.rowsHeight / 3);
		
            for (var rowIndex = 0; rowIndex < dimensions.rows; rowIndex++) {
    		    for (var columnIndex = 0; columnIndex < dimensions.columns; columnIndex++) {
                    var _left = toX + (dimensions.columnsWidth * columnIndex);
                    var _top = toY + (dimensions.rowsHeight * rowIndex);

                    _left = ((_left % dimensions.width) - (dimensions.width / 3)) + 'px';
                    _top = ((_top % dimensions.height) - (dimensions.height / 3)) + 'px';

                    $('block'+rowIndex+'_'+columnIndex).setStyle({left: _left, top: _top});
                }
            }
		}

        Event.observe(document, 'dom:loaded', function() {
            // enables rollover behaviour
            new Rollover('rollOverableMenu');
            

            // connect anchors in index.html
            // connect click events
            for (var index = 0; index < blockIds.length; index++) {
                var aElements = $$('a.Anchor-'+blockIds[index]);
                aElements.each(function(aElement) {
                    Event.observe($(aElement), 'click', scrollToDiv.bindAsEventListener(scrollToDiv, blockIds[index]));
                });
            }

            e = $$('a.LinkRandom')[0];
            if (e) Event.observe(e, 'click', scrollToRandom.bindAsEventListener());

            /* overflow didn't work on ie6 so only for non ie6 we do this */
            if(!(Prototype.Browser.IE && navigator.appVersion.include('MSIE 6'))) {
                $('viewPort').setStyle({'overflow':'hidden'});
            }

        });

        Event.observe(window, 'load', function() {
            // initial position
            scrollToDiv(null, blockIds[0]);
        });

