			var step=20;
			var speed=10;
			var scrollUpFlag=false;
			var scrollDownFlag=false;
			var scrollDragFlag=false;
			
			var wheelBarStartCordY;
			var mouseStartCordY;
			
			var SavedOnmouseup = null;
			var SavedOnmousemove = null;
			
			
			
			function ApplyVerticalWheelBar(ev)
			{
			    if (!ev) var evn = window.event;
				else var evn=ev;
				
				insideScrollField = document.getElementById("InsideScrollField");
				outsideScrollField = document.getElementById("OutsideScrollField");
				verticalScrollWheel = document.getElementById("VerticalScrollWheel");
				verticalScrollWheelBar = document.getElementById("VerticalScrollWheelBar");
				
				if (!insideScrollField) return;
				if (!outsideScrollField) return;
				if (!verticalScrollWheel) return;
				if (!verticalScrollWheelBar) return;
				if (parseInt(insideScrollField.offsetHeight) <= parseInt(outsideScrollField.style.height)) return;
				
				fieldChange = parseInt(insideScrollField.offsetHeight) - parseInt(outsideScrollField.style.height);
				wheelChange = parseInt(verticalScrollWheel.style.height) - parseInt(verticalScrollWheelBar.style.height);
				
				curDiff = evn.clientY - mouseStartCordY;
				
				if ((wheelBarStartCordY + curDiff) > wheelChange) verticalScrollWheelBar.style.top = wheelChange;
				else if ((wheelBarStartCordY + curDiff) < 0) verticalScrollWheelBar.style.top = 0;
				else verticalScrollWheelBar.style.top = wheelBarStartCordY + curDiff;
				
				insideScrollField.style.top = -(fieldChange/wheelChange)*parseInt(verticalScrollWheelBar.style.top);
			}
			
			function RefreshVerticalWheelBar()
			{
				insideScrollField = document.getElementById("InsideScrollField");
				outsideScrollField = document.getElementById("OutsideScrollField");
				verticalScrollWheel = document.getElementById("VerticalScrollWheel");
				verticalScrollWheelBar = document.getElementById("VerticalScrollWheelBar");
				
				if (!insideScrollField) return;
				if (!outsideScrollField) return;
				if (!verticalScrollWheel) return;
				if (!verticalScrollWheelBar) return;
				if (parseInt(insideScrollField.offsetHeight) <= parseInt(outsideScrollField.style.height)) return;
				
				fieldChange = parseInt(insideScrollField.offsetHeight) - parseInt(outsideScrollField.style.height);
				wheelChange = parseInt(verticalScrollWheel.style.height) - parseInt(verticalScrollWheelBar.style.height);
				
				verticalScrollWheelBar.style.top = -(wheelChange/fieldChange)*parseInt(insideScrollField.style.top);
			}
			
			function ScrollFieldStepUp(st)
			{
				insideScrollField = document.getElementById("InsideScrollField");
				outsideScrollField = document.getElementById("OutsideScrollField");
				
				if (!insideScrollField) return;
				if (!outsideScrollField) return;
				if (parseInt(insideScrollField.offsetHeight) <= parseInt(outsideScrollField.style.height)) return;		
				
				
				if (parseInt(insideScrollField.offsetHeight) - parseInt(outsideScrollField.style.height) + parseInt(insideScrollField.style.top)  > st)
					insideScrollField.style.top = parseInt(insideScrollField.style.top)-st+"px";
				else
					insideScrollField.style.top = -parseInt(insideScrollField.offsetHeight) + parseInt(outsideScrollField.style.height)+"px";
				
			
				RefreshVerticalWheelBar();
			}
			function ScrollFieldStepDown(st)
			{
				
				insideScrollField = document.getElementById("InsideScrollField");
				outsideScrollField = document.getElementById("OutsideScrollField");
				
				
				if (!insideScrollField) return;
				if (!outsideScrollField) return;
				if (parseInt(insideScrollField.offsetHeight) <= parseInt(outsideScrollField.style.height)) return;	
				
				
				if (parseInt(insideScrollField.style.top) < -st)
					insideScrollField.style.top = parseInt(insideScrollField.style.top)+st+"px";
				else
					insideScrollField.style.top = 0;
					
				RefreshVerticalWheelBar();
			}			
			function ScrollProcess()
			{
				if (scrollUpFlag) {
					ScrollFieldStepUp(3);
					setTimeout(ScrollProcess, speed);
				}
				if (scrollDownFlag) {
					ScrollFieldStepDown(3);
					setTimeout(ScrollProcess, speed);
				}
			}
			function ScrollUpBegin()
			{
				scrollUpFlag=true;
				
				ScrollProcess();
			}
			
			function ScrollUpEnd()
			{
				scrollUpFlag=false;
			}
			
			function ScrollDownBegin()
			{
				scrollDownFlag=true;
				
				ScrollProcess();
			}
			
			function ScrollDownEnd()
			{
				scrollDownFlag=false;
			}
			
			function ScrollFielWheelAction()
			{
				if (event.wheelDelta >0) ScrollFieldStepDown(step*event.wheelDelta/120);
				else ScrollFieldStepUp(-step*event.wheelDelta/120);  
			}
			
			function ScrollDragBegin(ev)
			{
				if (!scrollDragFlag) {
					
					if (!ev) var evn = window.event;
					else evn=ev;
				
					evn.cancelBubble = true;
                
					verticalScrollWheelBar = document.getElementById("VerticalScrollWheelBar");
					if (!verticalScrollWheelBar) return;
                     
					wheelBarStartCordY=parseInt(verticalScrollWheelBar.style.top);
					mouseStartCordY=evn.clientY;
					scrollDragFlag=true;
				
					SavedOnmouseup = document.onmouseup;
					SavedOnmousemove = document.onmousemove;
				
					//alert(mouseStartCordY);
				
					document.onmouseup = ScrollDragEnd;
					document.onmousemove = ApplyVerticalWheelBar;
					document.ondragend = ScrollDragEnd;
				}
			}
			
			function ScrollDragEnd()
			{
				
				scrollDragFlag=false;
				//alert("up");
				document.onmouseup = SavedOnmouseup;
				document.onmousemove = SavedOnmousemove;
			}
			
