(function($) {
	$.event.special.mousewheel = {
		setup: function() {
			if (this.addEventListener)
				this.addEventListener('DOMMouseScroll', $.event.special.mousewheel.handler, false);
			this.onmousewheel = $.event.special.mousewheel.handler;
		},
		teardown: function() {
			if (this.removeEventListener)
				this.removeEventListener('DOMMouseScroll', $.event.special.mousewheel.handler, false);
			this.onmousewheel = null;
		},
		handler: function( event ) {
			event = $.event.fix(event || window.event);
			event.type = "mousewheel";
			event.delta = 0;
			if ( event.wheelDelta < 0 || event.detail > 0 )
				event.delta = -1;
			else if (  event.wheelDelta > 0 || event.detail < 0 )
				event.delta = 1;
			$.event.handle.apply( this, [event] );
			return ;
		}
	};
	$.fn.scroll = function(options) {
		options = $.extend({
			width: 680,
			height: 360,
			background: "",
			button_img_up: "http://developing.name/images/scroll/btn-up.gif",
			button_img_down: "http://developing.name/images/scroll/btn-dn.gif",
			button_width: 13,
			button_height: 30,
			bar_img_top: "http://developing.name/images/scroll/btn1.png",
			bar_img_middle: "/themes/default/images/scroller.gif",
			bar_img_bottom: "http://developing.name/images/scroll/btn3.png",
			bar_drag: "http://developing.name/images/scroll/dragbar.gif",
			bar_width: 13,
			box_style: ""
		}, options);
		var id_prosc = 'prosc';
		var id_rnd = $(this).attr("id") + id_prosc;
		var id_box = 'box' + id_rnd;
		var id_content = 'content' + id_rnd;
		var id_bar = "bar" + id_rnd;
		var id_line = "line" + id_rnd;
		var id_up = "up" + id_rnd;
		var id_down = "down" + id_rnd;
		var box_top = $(this).position().top;	
    	code_bar  = '<table cellpadding="0" cellspacing="0" width="100%" height="100%" border="0" id="' + id_bar + '">';
    	code_bar += '<tr><td style="background: url(' + options.bar_img_middle + ') no-repeat; cursor:pointer;"></td></tr>';
    	code_bar += '</table>';
		code_scrollbar  = '<table height="' + options.height + '" width="' + options.bar_width + '" cellpadding="0" cellspacing="0">';
		code_scrollbar += '<tr><td width="' + options.button_width + '" height="' + options.button_height + '"><a href="" id="' + id_up + '"><div style="width:100%;height:100%"></div></a></td></tr>';
		code_scrollbar += '<tr><td valign="top" id="' + id_line + '">' + code_bar + '</td></tr>';
		code_scrollbar += '<tr><td width="' + options.button_width + '" height="' + options.button_height + '"><a href="" id="' + id_down + '"><div style="width:100%;height:100%"></div></a></td></tr>';
		code_scrollbar += '</table>';
		
		code_box  = '<table id="' + id_box + '" border="0" cellpadding="0" cellspacing="0" width="' + options.width + '" height="' + options.height + '" bgcolor="' + options.background + '">';
		code_box += '<tr><td><div style="position:relative; overflow:hidden; width:' + (options.width - options.bar_width) + 'px; height:' + options.height + 'px; ' + options.box_style + ' ">';
		code_box += '<div id="' + id_content + '" style="position:absolute; left:0px; top:0px; visibility: visible;">' + $(this).html() + '</div></div></td><td width="' + options.bar_width + '">' + code_scrollbar + '</td></tr><table>';
		$(this).replaceWith(code_box);
		var content_height = parseInt($('#' + id_content).innerHeight());	
		var content_top = options.height - content_height;
		content_top = (content_top < 0 ? content_top : 0);
		var bar_height_max = options.height - options.button_height * 2;
		var bar_height_cur = 0;
		var bar_top_max = 0;
		var bar_top_cur = 0;
		var bar_move = false;
		if (content_height > options.height)
		{	
			bar_height_cur = bar_height_max * options.height / content_height;
		} else {
			bar_height_cur = bar_height_max;
		}
		bar_height_cur = 47;
		var bar_top_max = bar_height_max - bar_height_cur;
		$('#' + id_bar).css({
			'height' : bar_height_cur
		});
		$('#' + id_down).bind("mouseover", function(e) {
			if (!bar_move)
			{
				$('#' + id_bar).animate({marginTop: bar_top_max + "px"}, 1500)
				$('#' + id_content).animate({"top": content_top + "px"}, 1500);
			}
		});
		$('#' + id_up).bind("mouseover", function(e) {
			if (!bar_move)
			{
				$('#' + id_bar).animate({marginTop: "0px"}, 1500);
				$('#' + id_content).animate({"top": "0px"}, 1500);
			}
		});
		$('#' + id_down + ', #' + id_up).bind("mouseout", function(e) {
			if (!bar_move)
			{
				$('#' + id_content).stop();
				$('#' + id_bar).stop();
			}
		});		
		$('#' + id_down).bind("click", function(e) {	
			bar_top_get();
			$('#' + id_content).stop();
			$('#' + id_bar).stop();
			move_content_bar(bar_top_cur + 5, 120, false);
			return false;
		});
		$('#' + id_up).bind("click", function(e) {	
			bar_top_get();
			$('#' + id_content).stop();
			$('#' + id_bar).stop();
			move_content_bar(bar_top_cur - 5, 120, false);
			return false;
		});
		$('#' + id_bar).bind("mousedown", function(e) {
			if (bar_move) return false;
			bar_top_get();
			bar_top_cur = (e.pageY - box_top - options.button_height) - bar_top_cur;
			$("body").bind("mousemove", function(e) {
				bar_move = true;	
				move_margin = (e.pageY - box_top - 15) - bar_top_cur;				
				move_content_bar(move_margin, 0, true);
				return false;
			});
			$("body").one("mouseup", function(e) {
				$("body").unbind("mousemove");
				bar_move = false;
			});
			return false;
		});
		$('#' + id_box).bind('mousewheel', function (event) {
			if (bar_move) return false;
			bar_move = true;
			bar_top_get();
			move_margin = bar_top_cur + (-1 * event.delta * 90 * 300 / content_height);
			move_content_bar(move_margin, 150, false);
			return false;		
		});		

		function bar_top_get()
		{
			bar_top_cur = parseInt($('#' + id_bar).css('marginTop'));
			bar_top_cur = (isNaN(bar_top_cur) ? 0 : bar_top_cur);
			return ;
		}
		
		function move_content_bar(top, sec, move)
		{
			if (top > bar_top_max)
			{
				top = bar_top_max;
			}
			else if (top < 0)
			{
				top = 0;
			}
				
			$('#' + id_bar).animate({marginTop: top + "px"}, sec)

			top = top * content_top / bar_top_max;
				
			$('#' + id_content).animate({"top": top + "px"}, sec, function () {
				bar_move = move; 
			});
		}
	}
	
	
	
	
	
	$.fn.gscroll = function(options) {
		options = $.extend({
			width: 940,
			height: 420,
			background: "",
			button_img_up: "http://developing.name/images/scroll/btn-up.gif",
			button_img_down: "http://developing.name/images/scroll/btn-dn.gif",
			button_width: 20,
			button_height: 18,
			bar_img_top: "http://developing.name/images/scroll/btn1.png",
			bar_img_middle: "/themes/default/images/scro.png",
			bar_scrollbar: "/themes/default/images/bar.png",
			bar_img_bottom: "http://developing.name/images/scroll/btn3.png",
			bar_drag: "http://developing.name/images/scroll/dragbar.gif",
			bar_width: 30,
			bar_height: 18,
			box_style: ""
		}, options);
		var id_prosc = 'prosc';
		var id_rnd = $(this).attr("id") + id_prosc;
		var id_box = 'box' + id_rnd;
		var id_content = 'content' + id_rnd;
		var id_bar = "bar" + id_rnd;
		var id_line = "line" + id_rnd;
		var id_up = "up" + id_rnd;
		var id_down = "down" + id_rnd;
		var box_top = $(this).position().left;	
    	code_bar  = '<table cellpadding="0" cellspacing="0" width="100%" height="100%" border="0" id="' + id_bar + '">';
    	code_bar += '<tr><td><div style="position:relative; z-index:999; background-image: url(' + options.bar_img_middle + '); background-repeat:no-repeat; background-position:center center;_background-image:none; filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' + options.bar_img_middle + '\', sizingMethod=\'image\');cursor:pointer; width:84px;height:18px;"></div></td></tr>';
    	code_bar += '</table>';
		code_scrollbar  = '<div style="position:relative; height:' + options.bar_height + 'px;width:940px;z-index:999;"><div style="position:absolute; top:0px; left:0px; height:' + options.bar_height + 'px;width:940px;background-image: url(' + options.bar_scrollbar + ');_background-image:none; filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' + options.bar_scrollbar + '\', sizingMethod=\'image\');"></div><table height="' + options.bar_height + '" width="940" cellpadding="0" cellspacing="0">';
		code_scrollbar += '<tr><td width="' + options.button_width + '" height="' + options.button_height + '"><a href="" id="' + id_up + '"><div style="width:100%;height:100%;position:relative;z-index:9999;"></div></a></td>';
		code_scrollbar += '<td valign="top" id="' + id_line + '">' + code_bar + '</td>';
		code_scrollbar += '<td width="' + options.button_width + '" height="' + options.button_height + '"><a href="" id="' + id_down + '"><div style="width:100%;height:100%;position:relative;z-index:9999;"></div></a></td></tr>';
		code_scrollbar += '</table></div>';
		
		code_box  = '<table id="' + id_box + '" border="0" cellpadding="0" cellspacing="0" width="' + options.width + '" height="' + options.height + '" bgcolor="' + options.background + '">';
		code_box += '<tr><td align="center"><div style="position:relative; overflow:hidden; width:940px; height:' + options.height + 'px; ' + options.box_style + ' ">';
		code_box += '<div id="' + id_content + '" style="position:absolute; left:0px; top:0px; visibility: visible;">' + $(this).html() + '</div></div></td></tr><tr><td width="940">' + code_scrollbar + '</td></tr><table>';
		$(this).replaceWith(code_box);
		var content_height = parseInt($('#' + id_content).innerWidth());	
		var content_top = options.width - content_height;
		content_top = (content_top < 0 ? content_top : 0);
		var bar_height_max = options.width - options.button_height * 2;
		var bar_height_cur = 0;
		var bar_top_max = 0;
		var bar_top_cur = 0;
		var bar_move = false;
		bar_height_cur = 84;
		var bar_top_max = bar_height_max - bar_height_cur;
		$('#' + id_bar).css({
			'width' : bar_height_cur
		});
		$('#' + id_down).bind("mouseover", function(e) {
			if (!bar_move)
			{
				$('#' + id_bar).animate({marginLeft: bar_top_max + "px"}, 4000)
				$('#' + id_content).animate({"left": content_top + "px"}, 4000);
			}
		});
		$('#' + id_up).bind("mouseover", function(e) {
			if (!bar_move)
			{
				$('#' + id_bar).animate({marginLeft: "0px"}, 4000);
				$('#' + id_content).animate({"left": "0px"}, 4000);
			}
		});
		$('#' + id_down + ', #' + id_up).bind("mouseout", function(e) {
			if (!bar_move)
			{
				$('#' + id_content).stop();
				$('#' + id_bar).stop();
			}
		});		
		$('#' + id_down).bind("click", function(e) {	
			bar_top_get();
			$('#' + id_content).stop();
			$('#' + id_bar).stop();
			move_content_bar(bar_top_cur + 5, 120, false);
			return false;
		});
		$('#' + id_up).bind("click", function(e) {	
			bar_top_get();
			$('#' + id_content).stop();
			$('#' + id_bar).stop();
			move_content_bar(bar_top_cur - 5, 120, false);
			return false;
		});
		$('#' + id_bar).bind("mousedown", function(e) {
			if (bar_move) return false;
			bar_top_get();
			bar_top_cur = (e.pageX - box_top - options.button_height) - bar_top_cur;
			$("body").bind("mousemove", function(e) {
				bar_move = true;	
				move_margin = (e.pageX - box_top - 15) - bar_top_cur;				
				move_content_bar(move_margin, 0, true);
				return false;
			});
			$("body").one("mouseup", function(e) {
				$("body").unbind("mousemove");
				bar_move = false;
			});
			return false;
		});
		$('#' + id_box).bind('mousewheel', function (event) {
			if (bar_move) return false;
			bar_move = true;
			bar_top_get();
			move_margin = bar_top_cur + (-1 * event.delta * 90 * 2000 / content_height);
			move_content_bar(move_margin, 150, false);
			return false;
		});		


		$("#right_scroll").click(function(){

			$('#' + id_content).css("left", $('#' + id_content).css("left").replace(/-4724/, '-4725'))
			var lll= parseInt($('#' + id_content).css("left").replace(/px/, '')/315)
			
			if(lll<0){lll*=-1}
			lll=(lll+1)*315*bar_top_max/content_top
			if(lll<0){lll*=-1}
			move_content_bar(lll, 1000, false);
		});
		$("#left_scroll").click(function(){
			$('#' + id_content).css("left", $('#' + id_content).css("left").replace(/-4724/, '-4725'))
			var lll= parseInt($('#' + id_content).css("left").replace(/px/, '')/315)
			if(lll<0){lll*=-1}
			if(lll>1){
				lll=(lll-1)*315*bar_top_max/content_top
				if(lll<0){lll*=-1}
				move_content_bar(lll, 1000, false);
			}else{
				move_content_bar(0, 1000, false);
			}
		});
		$('#oblast').mouseover(function(){
			$('body').attr('class', 'nelzya')
		});
		
		$('#oblast').mouseout(function(){
			$('body').removeClass()
		});
		
		function automat_list(){
			if($('body').attr('class') != 'nelzya'){
			$('#' + id_content).css("left", $('#' + id_content).css("left").replace(/-4724/, '-4725'))
				var lll= parseInt($('#' + id_content).css("left").replace(/px/, '')/315)
				if(lll<0){lll*=-1}
				if($('#' + id_content).attr('class') == 'goleft'){
					if(lll>1){
						lll=(lll-1)*315*bar_top_max/content_top
						if(lll<0){lll*=-1}
						move_content_bar(lll, 1000, false);
					}else{
						move_content_bar(0, 1000, false);
					}
				}else{
					lll=(lll+1)*315*bar_top_max/content_top
					if(lll<0){lll*=-1}
					move_content_bar(lll, 1000, false);
				}
			}
		}
		
		setInterval(automat_list, 5000);

		function bar_top_get()
		{
			bar_top_cur = parseInt($('#' + id_bar).css('marginLeft'));
			bar_top_cur = (isNaN(bar_top_cur) ? 0 : bar_top_cur);
			return ;
		}
		
		function move_content_bar(top, sec, move)
		{
			if (top > bar_top_max || top == bar_top_max)
			{
				top = bar_top_max;
				$('#' + id_content).attr('class', 'goleft')
			}
			else if (top < 0 || top == 0)
			{
				top = 0;
				$('#' + id_content).removeClass()
			}
				
			$('#' + id_bar).animate({marginLeft: top + "px"}, sec)

			top = top * content_top / bar_top_max;
				
			$('#' + id_content).animate({"left": top + "px"}, sec, function () {
				bar_move = move; 
			});
		}
	}
	
	
	
})(jQuery);

