// movingBlock v1.0.0

jQuery.fn.movingBlock = function(_options){    
	// defaults options	    
	var _options = jQuery.extend({
		holder:'div.wrapper',
		topDif:0,
		bottomDif:0,
		toEl:false,
		cssTop:'marginTop',
		duration:350
	},_options);
	
    return this.each(function(){
		var _obj = jQuery(this);
		var _holder = _obj.parents(_options.holder);
		var _offset = _obj.offset();
		var _thisHeight = _obj.outerHeight(true);
		var _prop = _options.cssTop.toString();
		var _duration = _options.duration;
		var _defTop = parseInt(_obj.css(_prop));
		var _move = true, _height;
		if (!_defTop) _defTop = 0;
		var _toEl = (_options.toEl) ? jQuery(_options.toEl) : false;
		var _toElTop = (_options.toEl) ? _toEl.offset().top : 0;
		var _tD = parseInt(_options.topDif)
		var _top = _offset.top - _tD + _defTop;
		var _bottom = _holder.innerHeight() - _options.bottomDif - _thisHeight - _defTop;
		
		if (_options.toEl) {
			_offset.bottom = jQuery(_options.toEl).offset().top;
		}
		
		var _win = jQuery(window);
		_win.scroll(function(){
			animateBlock();
		});
		_win.resize(function(){
			winResize();
			animateBlock();
		});
		animateBlock();
		winResize();
		function winResize(){
			if (window.innerHeight) _height = window.innerHeight;
			else _height = document.documentElement.clientHeight;
			if (_thisHeight >= _height) _move = false;
			else _move = true;
		}
		function animateBlock(){
			if (_move) {
				var _scrollTop = _win.scrollTop();
				var _dif = _scrollTop - _top;
				
				if (_toEl && _scrollTop - _toElTop + _tD > 0) _dif = _toElTop - _top -_tD;
				
				if (_dif > 0) {
					if (_dif >= _bottom) _dif = _bottom;
					eval('_obj.animate({'+_prop+':_dif+_defTop}, {duration:_duration, queue:false})');
				} else {
					eval('_obj.animate({'+_prop+':_defTop}, {duration:_duration, queue:false})');
				}
			}
		}
    });
}



