/*
	Class:    	cvRelativeTop
	Author:   	Crispijn Verkade
	Website:    http://crispijnverkade.nl
	Version:  	2.0
	Date:     	02/05/2009
	Built For:  MooTools 1.2.0
*/


var cvRelativeTop = new Class({
    Implements: [Options,Events],
 
    options: {
		between: [220,600],
		position: [20,100],
		align: 'right',
		mouseEnter: true
    },
   
    initialize: function(el,options) {
        this.setOptions(options);
		this.el = $(el);
		this.fixed = false;
		this.fix = 0;
	    var self = this;
		
		
		this.el.addEvents({
			'mouseover': function(){
				self.removeEvent('relativeTop');
				self.mouseEnter();
			},
			'mouseleave': function(){
				//self.fireEvent('relativeTop');
				//this.fixed = false;
			}
		});

		window.addEvent('scroll', function(){
			self.relativeTop();
		});	
		
		//window.addEvent('resize', this.rePos);

    },
	
	/*rePos: function(){
		console.log('resize');
	},*/
	
	mouseEnter: function(){
		//console.log('mouseenter');
		
		if(this.fix > 0){
			this.fix = window.getScroll().y
			
			if(this.fix >= this.options.between[0] && this.fixed == true){
				this.el.setStyles({	'position'	: 'relative',
									'top': this.fix - this.options.between[0],
									'left'		: 0
									}); 
			}
		}
	},
	
	mouseLeave: function(){
		this.fix = 0;
	},
	
	relativeTop: function(){
		var self = this;
		
		window.addEvent('scroll',function(){
			self.scroll = window.getScroll().y;
			
			if(self.scroll > self.options.between[0] && self.scroll < self.options.between[1]){ //in case the window scroll is larger than the between[0]
				self.el.setStyles({	'position'	: 'fixed',
									'top'		: self.options.position[0],
									'left'		: self.options.position[1],
									});
				self.fixed = false;
			}else if(self.scroll <= self.options.between[0]){  //in case the window scroll is smaller than the between[0]
				self.el.setStyles({	'position'	: 'relative',
									'top'		: 0,
									'left'		: 0
									});
				self.fixed = false;
			}else if(self.scroll >= self.options.between[1] && self.fixed == false){  //in case the window scroll is larger than the between[1]
				var boe = self.scroll.limit(self.options.between[0], self.scroll - self.options.between[0])
				
				self.el.setStyles({ 'position'	: 'relative',
								  	'top'		: boe,
									'left'		: 0
								  	});
				self.fixed = true;
			}
        });
	}
});

/*
window.addEvent('domready',function() { 
	var relative = new cvRelativeTop('rcol_content',{
		between: [220,$('content').getHeight().toInt() - $('rcol_div').getHeight().toInt() + 110],
		position: [20,(window.getWidth() / 2).toInt() + 190]
	});
});*/