/**
 * handles the toplink on product list pages
 * @author Bernhard.Spielmann
 */
topLink = Class.create({
    initialize:function(objRefTop, objRefLeft, objRefBottom, id) {
    	this.objRefTop = objRefTop;
    	this.objRefLeft = objRefLeft;
    	this.objRefBottom = objRefBottom;
    	this.domId = id;
    	
    	Event.observe(window, 'scroll', this.update.bind(this));
    },
    
    update:function(){
    	if (!this.isVisible(this.objRefTop) && !this.isVisible(this.objRefBottom)) {
    		$(this.domId).setStyle({
    			left: $(this.objRefLeft).cumulativeOffset().left + 10 + 'px'
    		});
    		$(this.domId).addClassName('visible');
    	} else {
    		$(this.domId).removeClassName('visible');
    	}
    },
    
    isVisible:function(obj){
    	//: see if element is currently in viewport (only horizontal check)
    	return (obj.viewportOffset().top >= 0 || obj.viewportOffset().top + obj.getDimensions().height >= 0) && obj.viewportOffset().top < document.viewport.getDimensions().height;
    }
});

Event.observe(document, 'dom:loaded', function(){
	//: do something reasonable
	
	/*
	 * body.catalog_category.view !
	 * (1) .wrapper .page .col2-left-layout .main .col-left .block-layered-nav #narrow-by-list
	 * 	>> .wrapper .page .col2-left-layout .main .col-left .block-layered-nav .block-content
	 * (2) #filterbar-loading-container (solr)
	 * 	>> .filterbar
	 */
	if ($$('.filterbar').length > 0) {
		//: solr filterbar
		new topLink(
			$$('.filterbar')[0],
			$$('.filterbar')[0],
			$$('.footer')[0], 
			'toplink'
		);
	} else if ($$('.wrapper .page .col2-left-layout .main .col-left .block-layered-nav #narrow-by-list').length > 0) {
		//: default filterbar
		new topLink(
			$$('.wrapper .page .col2-left-layout .main .col-left .block-layered-nav .block-content')[0], 
			$$('.wrapper .page .col2-left-layout .main .col-left .block-layered-nav .block-content')[0],
			$$('.footer')[0], 
			'toplink'
		);
	}
});
