/*
 * BlockScroll
 * Скроллинг внутри любого блока
 * Version 010.06.27
 *
 * Для дополнительной информации:
 * http://bitby.net/web/scroll-in-block/plagin-skrollinka-teksta-vnutri-bloka
 *
 * Автор: Жлобо Евгений (WebMast)
 * http://bitby.net/
 */

jQuery.fn.BlockScroll = function(options){
	var options = jQuery.extend({
		SEL:'.thisp',
		DOM: function(){
		  $('.container')
		    .prepend('<div id="status">x * ( m - l ) / (l - r) = k</div>');
		},
		startDragF: function(){},
		stopDragF: function(){},
		initDragF: function(x,m,l,r,k){
		  $('#status').html(x+'x * ( '+m+'m - '+l+'l ) / ('+l+'l - '+r+'r) = '+k+'k');
		},
	},options);
	return this.each(function(){$this=jQuery(this);$this.wrap('<div></div>').css({'overflow':'hidden'}).children('div').eq(0).html('<span class="all-cont">'+$this.children('div').eq(0).html()+'</span>').parent().parent().attr({'className':'container'}).append('<div class="trackDrag"><div class="arrowDrag"></div></div>');$trackDrag=$('.trackDrag');$arrowDrag=$('.arrowDrag');$trackDrag.css({width:$this.width(),});options.DOM();var m=$('.all-cont',$this).width();var l=$this.innerWidth();var r=$arrowDrag.width();var t=$trackDrag.width();if($('.all-cont',$this).width()<=l){return false;}var startDrag=function(){options.startDragF();$(window).bind('mousemove',trackDrag).bind('mouseup',stopDrag);if(jQuery.browser.msie){$(window).bind('selectstart',ignore).bind('dragstart',ignore);}};var stopDrag=function(){options.stopDragF();$(window).unbind('mousemove',trackDrag).unbind('mouseup',stopDrag);if(jQuery.browser.msie){$(window).unbind('selectstart',ignore).unbind('dragstart',ignore);}};var trackDrag=function(m){left=m.pageX - $trackDrag.offset().left -(r/2 );maxLeft=t - r;if(left<1)left=0;else if(left>=maxLeft)left=maxLeft;arrowDrag(left);};var blockDrag=function(x){k=x *(m - l )/(l - r);$('.all-cont',$this).css({marginLeft:-k});options.initDragF(x,m,l,r,k);};var arrowDrag=function(x){$arrowDrag.css({'left':x});blockDrag(x);};var trackClick=function(m){trackDrag(m);};function haveX(k){x=k/((m - l )/(l - r) );return x;}var showSel=function(){if($(options.sel).length){var $sel=$(options.sel);k=$sel.offset().left-$trackDrag.offset().left;if(k<l/2){k=0;}else{k=k-(l/2)+($sel.width()/2);}x=haveX(k);if(l>m-k)x=l-r;arrowDrag(x);}};var ignore=function(){return false;};showSel();$arrowDrag.bind('mousedown',startDrag);$trackDrag.bind('click',trackClick);});$trackDrag.css({width:$this.width(),});options.DOM();var m=$('.all-cont',$this).width();var l=$this.innerWidth();var r=$arrowDrag.width();var t=$trackDrag.width();if($('.all-cont',$this).width()<=l){return false;}var startDrag=function(){options.startDragF();$(window).bind('mousemove',trackDrag).bind('mouseup',stopDrag);if(jQuery.browser.msie){$(window).bind('selectstart',ignore).bind('dragstart',ignore);}};var stopDrag=function(){options.stopDragF();$(window).unbind('mousemove',trackDrag).unbind('mouseup',stopDrag);if(jQuery.browser.msie){$(window).unbind('selectstart',ignore).unbind('dragstart',ignore);}};var trackDrag=function(m){left=m.pageX - $trackDrag.offset().left -(r/2 );maxLeft=t - r;if(left<1)left=0;else if(left>=maxLeft)left=maxLeft;arrowDrag(left);};var blockDrag=function(x){k=x *(m - l )/(l - r);$('.all-cont',$this).css({marginLeft:-k});options.initDragF(x,m,l,r,k);};var arrowDrag=function(x){$arrowDrag.css({'left':x});blockDrag(x);};var trackClick=function(m){trackDrag(m);};function haveX(k){x=k/((m - l )/(l - r) );return x;}var showSel=function(){if($(options.sel).length){var $sel=$(options.sel);k=$sel.offset().left-$trackDrag.offset().left;if(k<l/2){k=0;}else{k=k-(l/2)+($sel.width()/2);}x=haveX(k);if(l>m-k)x=l-r;arrowDrag(x);}};var ignore=function(){return false;};showSel();$arrowDrag.bind('mousedown',startDrag);$trackDrag.bind('click',trackClick);});
};
