
function registerVScroll(prop){
	prop = getCommonProperty(prop,{
      id:"",
	  containerid:"none"
   	});
	var b = registerDrag({
		id:prop.id,
		mode:"vertical",
		minX:"parent",
		minY:"parent",
		maxY:"parent"
	});
	if(b){
		if(prop.containerid != "none")
			b.container = document.getElementById(prop.containerid);
		else{
			b.container = "";
		}
		b.getPercent = function(){
			var rect = getRealClientBound(b);
			return (rect.top-b.dragMinY) / ((b.dragMaxY-b.dragMinY) - (rect.bottom - rect.top))*100;
		}
		b.setPercent = function(percent){
			var rect = getRealClientBound(b);
			b.style.top = b.dragMinY + (((b.dragMaxY-b.dragMinY) - (rect.bottom - rect.top))*percent/100) + 0+ "px";
		}
		b.onScroll = function(){
			
		}
		b.onScrollUp = function(){
			
		}
		b.onScrollDown = function(){
			
		}
		b.onDraging = function(){
			if(b.container){
				var rect = getRealClientBound(this.container);
				var calc = (this.container.scrollHeight - rect.bottom-rect.top) * this.getPercent()/100;
				if(scrollTop != calc){
					b.container.scrollTop = (calc);	
					b.onScroll(b,b.getPercent());
				}
			}
		}
		b.getPercentOfContainer = function(){
			if(b != "none"){
				var rect = getRealClientBound(this.container);
				return b.container.scrollTop/(b.container.scrollHeight - (rect.bottom - rect.top))*100;
			}
			return -1;
		}
		
		if(b.container != ""){
			hookEvent(b.container,"mousewheel",function(e){
				var rect = getRealClientBound(b);
				var delta = e.wheelDelta ? e.wheelDelta/-120 : e.detail/3;
				b.container.scrollTop = parseInt(b.container.scrollTop) + delta * 20;
				b.setPercent(b.getPercentOfContainer());
				b.onScroll(b,b.getPercent());
			});
		}
		
		hookEvent(b.parentNode,"mousewheel",function(e){
			var rect = getRealClientBound(b);
			var delta = e.wheelDelta ? e.wheelDelta/-120 : e.detail/3;
			b.container.scrollTop = parseInt(b.container.scrollTop) + delta * 20;
			b.setPercent(b.getPercentOfContainer());
		});
	}
	return b;
}

function hookEvent(element, eventName, callback)
{
  if(typeof(element) == "string")
    element = document.getElementById(element);
  if(element == null)
    return;
  if(element.addEventListener)
  {
    if(eventName == 'mousewheel')
      element.addEventListener('DOMMouseScroll', callback, false);  
    element.addEventListener(eventName, callback, false);
  }
  else if(element.attachEvent)
    element.attachEvent("on" + eventName, callback);
}

function unhookEvent(element, eventName, callback)
{
  if(typeof(element) == "string")
    element = document.getElementById(element);
  if(element == null)
    return;
  if(element.removeEventListener)
  {
    if(eventName == 'mousewheel')
      element.removeEventListener('DOMMouseScroll', callback, false);  
    element.removeEventListener(eventName, callback, false);
  }
  else if(element.detachEvent)
    element.detachEvent("on" + eventName, callback);
}






