var nScroll = 0;
var oScrollInterval = null;
var nScrollSpeed = 2;
var nInnerDimension = 0;
var bScroll = false;
function f_CalculatScrollInnerDimension(strObject,strMode){
	nInnerDimension = 0;
	var obj = document.getElementById(strObject);
	for (var i=0;i<obj.childNodes.length;i++) {
		var bContinue = false;
		if(obj.childNodes[i].nodeName.toLowerCase() == "div"){
			bContinue = true;
		}
		if(obj.childNodes[i].nodeName.toLowerCase() == "table"){
			bContinue = true;
		}
		if(bContinue == false){
			continue;
		}
		
		if(strMode == "h"){
			nInnerDimension += obj.childNodes[i].offsetWidth;
			if(obj.childNodes[i].style.marginLeft != ""){
				nInnerDimension += parseInt(obj.childNodes[i].style.marginLeft);
			}

			if(obj.childNodes[i].style.marginRight != ""){
				nInnerDimension += parseInt(obj.childNodes[i].style.marginRight);
			}
		}else{
			nInnerDimension += obj.childNodes[i].offsetHeight;
			if(obj.childNodes[i].style.marginTop != ""){
				nInnerDimension += parseInt(obj.childNodes[i].style.marginTop);
			}
			if(obj.childNodes[i].style.marginBottom != ""){
				nInnerDimension += parseInt(obj.childNodes[i].style.marginBottom);
			}
		}
	}
	//alert(nInnerDimension+" - "+obj.offsetWidth);
	if(strMode == "h"){
		nInnerDimension =  nInnerDimension-parseInt(obj.offsetWidth);
	}else{
		nInnerDimension =  nInnerDimension-parseInt(obj.style.height);
	}
	
}
function f_StartScroll(strObject,strMode,strDirection,nMScrollSpeed){
	f_CalculatScrollInnerDimension(strObject,strMode);
	if(strMode == "h"){
		nScroll = document.getElementById(strObject).scrollLeft;
	}else{
		nScroll = document.getElementById(strObject).scrollTop;
	}
	if(parseInt(nMScrollSpeed) != 0){
		nScrollSpeed = parseInt(nMScrollSpeed);
	}else{
		nScrollSpeed = 2;
	}
	oScrollInterval = window.setInterval("f_Scroll('"+ strObject +"','"+ strMode +"','"+ strDirection +"')", 10);
}

function f_initScroll(strObject,strMode){
	if(strMode == "h"){
		document.getElementById(strObject).scrollLeft = 0;
		document.getElementById(strObject+"_ScrollBar").style.marginLeft="0px";
	}else{
		document.getElementById(strObject).scrollTop = 0;
		document.getElementById(strObject+"_ScrollBar").style.marginTop="0px";
	}
}

function f_Scroll(strObject,strMode,strDirection){
	var obj = document.getElementById(strObject);
	//window.status = nScrollSpeed;
	if(strDirection == "plus"){
		nScroll = nScroll + nScrollSpeed;
	}else{
		nScroll = nScroll - nScrollSpeed;
	}
	var boolStop = false;
	if(nScroll <= 0){
		nScroll = 0;
		boolStop = true;
	}
	if(nScroll >= nInnerDimension){
		nScroll = nInnerDimension;
		boolStop = true;
	}
	if(strMode == "h"){
		obj.scrollLeft = nScroll;
	}else{
		obj.scrollTop = nScroll;
	}
	
	var obj = document.getElementById(strObject+"_ScrollBar");
	
	if(strMode == "h"){
		var nH = obj.parentNode.offsetWidth;
		var nHH = obj.offsetWidth;
		var nN = nH/nInnerDimension-nHH/nInnerDimension;
		obj.style.marginLeft = nScroll*nN;
	}else{
		var nH = obj.parentNode.offsetHeight;
		var nHH = obj.offsetHeight;
		var nN = nH/nInnerDimension-nHH/nInnerDimension;
		obj.style.marginTop = nScroll*nN;
	}
	if(boolStop  == true){
		f_StopScroll();
	}
}

function f_StopScroll(){
	window.clearInterval(oScrollInterval);
	oScrollInterval = null;
	nScrollSpeed = 2;
}

var sCurrentScrollObject = "";
var sCurrentScrollMode = "";
var sCurrentScrollDirection = "";
var nDragScrollCounter = 0;
var nDragMouseStart = 0;
var nDragObjectStart = 0;
function f_StartDragScroller(strObject,strMode,strDirection){
	sCurrentScrollObject = strObject;
	sCurrentScrollMode = strMode;
	sCurrentScrollDirection = strDirection;
	f_CalculatScrollInnerDimension(strObject,strMode);
	document.onmousemove = f_DragScroller;
	document.onmouseup = f_StopDragScroller;
}

function f_DragScroller(e){
	void getGlobalCoord(e);	
	var obj = document.getElementById(sCurrentScrollObject+"_ScrollBar");
	if(nDragScrollCounter == 0){
		if(sCurrentScrollMode == "h"){
			nDragMouseStart = window.MouseX;
			if(obj.style.marginLeft != ""){
				nDragObjectStart = parseInt(obj.style.marginLeft);
			}
		}else{
			nDragMouseStart = window.MouseY;
			if(obj.style.marginTop != ""){
				nDragObjectStart = parseInt(obj.style.marginTop);
			}
		}
	}
	
	nDragScrollCounter++;
	
	if(sCurrentScrollMode == "h"){
		var n = window.MouseX - nDragMouseStart + nDragObjectStart;
		
		var nH = obj.parentNode.offsetWidth-obj.offsetWidth;
	}else{
		var n = window.MouseY - nDragMouseStart + nDragObjectStart;
		var nH = obj.parentNode.offsetHeight-obj.offsetHeight;
	}
	if(n <= 0){
		n = 0;
	}
	if(n >= nH){
		n = nH;
	}
	var nN = n/nH;
	if(sCurrentScrollMode == "h"){
		obj.style.marginLeft = n;
	}else{
		obj.style.marginTop = n;
	}
	var obj = document.getElementById(sCurrentScrollObject);
	if(sCurrentScrollMode == "h"){
		obj.scrollLeft =  Math.round( nInnerDimension*nN);
	}else{
		obj.scrollTop =  Math.round( nInnerDimension*nN);
	}
	return false;
}

function f_StopDragScroller(){
	sCurrentScrollObject = "";
	sCurrentScrollMode = "";
	sCurrentScrollDirection = "";
	nDragScrollCounter = 0;
	nDragMouseStart = 0;
	nDragObjectStart  = 0;
	document.onmousemove = getGlobalCoord;
	document.onmouseup = null;
	document.onmousedown = null;
}