var sx_scroll_do=true;
var sx_scroll_loaded=false;

function sx_scroll_init(idScroll,idControlVertical,idControlHorizontal,bolFirst){
	var objScroll=document.getElementById(idScroll);
	var objControlVertical=document.getElementById(idControlVertical);
	var objControlHorizontal=document.getElementById(idControlHorizontal);
	var objControlContentVertical;
	var objControlContentHorizontal;
	var bolBoth=false;
	var strClipVertical;
	var strClipHorizontal;
	if(objControlVertical!=undefined && objControlHorizontal!=undefined){
		bolBoth=true;
	}
	if(bolFirst){
		sx_scroll_loaded=true;
	}
	if(objControlVertical!=undefined){
		if(document.all){
			objControlContentVertical=objControlVertical.firstChild;
		}else{
			objControlContentVertical=objControlVertical.firstChild;
		}
		if(objScroll.offsetHeight!=0 && objScroll.offsetWidth<=objScroll.scrollWidth){
			objScroll.style.overflowY="scroll";
			if(objScroll.offsetWidth!=objScroll.clientWidth){
				if(objScroll.sx_scroll_previousClipVertical!=undefined && objScroll.sx_scroll_previousClipVertical!=""){
					objScroll.style.width=objScroll.sx_scroll_previousClipVertical+(objScroll.offsetWidth-objScroll.clientWidth)+"px";
				}else{
					objScroll.style.width=objScroll.offsetWidth+(objScroll.offsetWidth-objScroll.clientWidth)+"px";
				}
				if(bolBoth){
					strClipVertical=objScroll.clientWidth;
				}else{
					objScroll.style.clip="rect(auto "+objScroll.clientWidth+" auto auto)";
				}
				objScroll.sx_scroll_previousClipVertical=objScroll.clientWidth;
			}
		}else{
			if(document.all){
				objScroll.firstChild.style.height=objScroll.parentNode.parentNode.offsetHeight;
			}else{
				objScroll.firstChild.style.height=objScroll.parentNode.parentNode.offsetHeight;
			}
			objScroll.style.overflowY="hidden";
			if(objScroll.sx_scroll_previousClipVertical!="" && objScroll.sx_scroll_previousClipVertical!=undefined){
				objScroll.style.width=objScroll.sx_scroll_previousClipVertical+"px";
				objScroll.style.clip="rect(auto auto auto auto)";
				objScroll.sx_scroll_previousClipVertical="";
			}
		}
		if(objScroll.scrollHeight>objScroll.offsetHeight){
			objScroll.style.overflowY="scroll";
			objControlVertical.style.display="block";
			objControlContentVertical.style.height=Math.round(objScroll.scrollHeight*(objControlVertical.offsetHeight/objScroll.clientHeight))+"px";
			sx_scroll_content(idControlVertical,idControlHorizontal,objScroll);
		}else{
			objScroll.style.overflowY="hidden";
			objControlVertical.style.display="none";
		}
	}
	if(objControlHorizontal!=undefined){
		objControlContentHorizontal=objControlHorizontal.firstChild;
		if(objScroll.offsetWidth!=0 && objScroll.offsetHeight<=objScroll.scrollHeight){
			objScroll.style.overflowX="scroll";
			if(objScroll.offsetHeight!=objScroll.clientHeight){
				if(objScroll.sx_scroll_previousClipHorizontal!=undefined && objScroll.sx_scroll_previousClipHorizontal!=""){
					objScroll.style.height=objScroll.sx_scroll_previousClipHorizontal+(objScroll.offsetHeight-objScroll.clientHeight)+"px";
				}else{
					objScroll.style.height=objScroll.offsetHeight+(objScroll.offsetHeight-objScroll.clientHeight)+"px";
				}
				if(bolBoth){
					strClipHorizontal=objScroll.clientHeight;
				}else{
					objScroll.style.clip="rect(auto auto "+objScroll.clientHeight+" auto)";
				}
				objScroll.sx_scroll_previousClipHorizontal=objScroll.clientHeight;
			}
		}else{
			objScroll.style.overflowX="hidden";
			if(objScroll.sx_scroll_previousClipHorizontal!="" && objScroll.sx_scroll_previousClipHorizontal!=undefined){
				objScroll.style.height=objScroll.sx_scroll_previousClipHorizontal+"px";
				objScroll.style.clip="rect(auto auto auto auto)";
				objScroll.sx_scroll_previousClipHorizontal="";
			}
		}
		if(objScroll.scrollWidth>objScroll.offsetWidth){
			objScroll.style.overflowX="scroll";
			objControlHorizontal.style.display="block";
			objControlContentHorizontal.style.width=Math.round(objScroll.scrollWidth*(objControlHorizontal.offsetWidth/objScroll.clientWidth))+"px";
			sx_scroll_content(idControlVertical,idControlHorizontal,objScroll);
		}else{
			objScroll.style.overflowX="hidden";
			objControlHorizontal.style.display="none";
		}
	}
	if(bolBoth && strClipVertical!=undefined && strClipHorizontal!=undefined){
		objScroll.style.clip="rect(auto "+strClipVertical+"px "+strClipHorizontal+"px auto)";
	}
	objScroll.sx_scroll_previousScrollHeight=objScroll.scrollHeight;
	objScroll.sx_scroll_previousScrollWidth=objScroll.scrollWidth;
}

function sx_scroll_content(idControlVertical,idControlHorizontal,element){
	if(sx_scroll_do){
		var objControlVertical=document.getElementById(idControlVertical);
		var objControlHorizontal=document.getElementById(idControlHorizontal);
		if(objControlVertical!=undefined){
			objControlVertical.scrollTop=Math.round(element.scrollTop/(element.offsetHeight/objControlVertical.offsetHeight));
		}
		if(objControlHorizontal!=undefined){
			objControlHorizontal.scrollLeft=Math.round(element.scrollLeft/(element.offsetWidth/objControlHorizontal.offsetWidth));
		}
	}else{sx_scroll_do=true;}
}

function sx_scroll_control(id,element,direction){
	if(sx_scroll_do){
		var objScroll=document.getElementById(id);
		if(direction=='vertical'){
			objScroll.scrollTop=Math.round(element.scrollTop/(element.offsetHeight/objScroll.offsetHeight));
		}else{
			objScroll.scrollLeft=Math.round(element.scrollLeft/(element.offsetWidth/objScroll.offsetWidth));
		}
	}else{sx_scroll_do=true;}
}

function sx_scroll_check(idScroll,idControlVertical,idControlHorizontal){
	if(sx_scroll_loaded){
		var objScroll=document.getElementById(idScroll);
		if(objScroll.scrollHeight!=objScroll.sx_scroll_previousScrollHeight || objScroll.scrollWidth!=objScroll.sx_scroll_previousScrollWidth){
			objScroll.sx_scroll_previousScrollHeight=objScroll.scrollHeight;
			objScroll.sx_scroll_previousScrollWidth=objScroll.scrollWidth;
			sx_scroll_init(idScroll,idControlVertical,idControlHorizontal,false);
		}
	}
}
