﻿var IsButtonDown;

function findPos(obj)
{
	var curleft = curtop = 0;
    if (obj.offsetParent)
    { 
        do{
	        curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
	    }while (obj = obj.offsetParent);
	}
	return [curleft,curtop];
}


function getMousePosition(e)
{
    var xMouse = yMouse = 0;
    e=e||window.event;
    de=document.documentElement;b=document.body;
    xMouse=e.clientX+(de.scrollLeft||b.scrollLeft)-(de.clientLeft||0);
    yMouse=e.clientY+(de.scrollTop||b.scrollTop) - (de.clientTop||0);
    return [xMouse, yMouse]
}

// Horizontal scroll

function ScrollPanel_OnLoadV(evt)
{
        var exist = document.getElementById(evt);
        if (exist != null)
        {
            //var ActiveScrollName = evt.id.substring(0,evt.id.lastIndexOf('_'));
            var ActiveScrollName = evt.id||evt;
            var placeHolder = document.getElementById(ActiveScrollName+"_ContentPlaceHolder");
            var content = document.getElementById(ActiveScrollName+"_Content");
            if (content.offsetHeight > placeHolder.offsetHeight)
            {
                document.getElementById(ActiveScrollName + '_ScrollBar').style.display = "none"; 
            }
            else
            {
                document.getElementById(ActiveScrollName + '_ScrollBar').style.display = "block"; 
            }
        }    
}


function ScrollPanel_OnScrollBeginV(evt)
{
    if (evt==null) evt=window.event;
    ActiveScrollName = evt.id.substring(0,evt.id.lastIndexOf('_'));
    eval(ActiveScrollName+"_IsButtonDown = true");
	IsButtonDown=true;
	MinY = evt.offsetTop - parseInt(document.getElementById(ActiveScrollName+"_ScrollButton").style.top == 0? "0":document.getElementById(ActiveScrollName+"_ScrollButton").style.top);
	MinY = findPos(evt)[1];
	if (navigator.appName != "Microsoft Internet Explorer")
	    MinY = evt.parentNode.offsetTop;
	else
	    MinY = evt.offsetTop - parseInt(document.getElementById(ActiveScrollName+"_ScrollButton").style.top == 0? "0":document.getElementById(ActiveScrollName+"_ScrollButton").style.top);
	eval(ActiveScrollName+"_MinY=MinY");
	if (evt.parentElement)
	    PositionY = evt.parentElement.clientHeight - evt.clientHeight;
	else
	    PositionY = evt.parentNode.clientHeight - evt.clientHeight;    
	eval(ActiveScrollName+"_PositionY=PositionY");
	MaxY=MinY+PositionY;
	eval(ActiveScrollName+"_MaxY=MaxY");
	Source = evt;
	eval(ActiveScrollName+"_Source=Source");
	document.body.onmousemove = ScrollPanel_OnScrollingV;
	document.body.onmouseup = ScrollPanel_OnScrollEndV;
	
	//
	var placeHolder = document.getElementById(ActiveScrollName+"_ContentPlaceHolder");
    var content = document.getElementById(ActiveScrollName+"_Content");
    PositionY = (placeHolder.scrollHeight - content.clientHeight) * - (1 - (MaxY - findPos(Source)[1]) / (MaxY - MinY));
    eval(ActiveScrollName+"_PositionY=PositionY");
    return false;
}

function ScrollPanel_OnScrollingV(evt)
{
    if (IsButtonDown)
    {
        var currentY = null;
        var isIE = true;
        if (evt)
        {
            currentY = evt.pageY;    
            isIE = false;
        }
        else
        {
            currentY = window.event.clientY + document.body.scrollTop  - document.body.clientTop;
            currentY += document.documentElement.scrollTop;
        }

        var MinY = eval(ActiveScrollName+"_MinY");
        var MaxY = eval(ActiveScrollName+"_MaxY");
        var Position = eval(ActiveScrollName+"_PositionY");
        
        if (currentY - MinY < 0)
        {
            document.getElementById(ActiveScrollName+"_ScrollButton").style.top = 0 + (isIE?"":"px");
        } else if (currentY - MinY > (MaxY - MinY))
        {
            document.getElementById(ActiveScrollName+"_ScrollButton").style.top = (MaxY - MinY) + (isIE?"":"px");
        } else
        {
            document.getElementById(ActiveScrollName+"_ScrollButton").style.top = (currentY - MinY) + (isIE?"":"px");
        }
        
        var placeHolder = document.getElementById(ActiveScrollName+"_ContentPlaceHolder");
        var content = document.getElementById(ActiveScrollName+"_Content");
        //placeHolder.style.top = (placeHolder.scrollHeight - content.clientHeight) * - (1 - (MaxY - findPos(Source)[1]) / Position) + (isIE?"":"px");
        placeHolder.style.top = (placeHolder.scrollHeight - content.clientHeight) * - (1 - (MaxY - findPos(Source)[1]) / (MaxY - MinY)) + (isIE?"":"px");
    }
    return false;
   }

function ScrollPanel_OnScrollEndV(evt)
{
    document.body.onmousemove = null;
    document.body.onmouseup = null;
    IsButtonDown = null;
    eval(ActiveScrollName+"_MinY = null");
    eval(ActiveScrollName+"_MaxY = null");
    eval(ActiveScrollName+"_PositionY = null");
    eval(ActiveScrollName+"_Source = null");
    return false;
}


// Horizontal scroll

function ScrollPanel_OnLoadH(evt)
{
        var exist = document.getElementById(evt);
        if (exist != null)
        {
            //var ActiveScrollName = evt.id.substring(0,evt.id.lastIndexOf('_'));
            var ActiveScrollName = evt.id||evt;
            var placeHolder = document.getElementById(ActiveScrollName+"_ContentPlaceHolder");
            var content = document.getElementById(ActiveScrollName+"_Content");
				if (content.offsetWidth==0)
				{
					eval("document.body.onload=function() { ScrollPanel_OnLoadH('"+evt+"'); }");
					return;
				}
            if (content.offsetWidth > placeHolder.offsetWidth)
            {
                document.getElementById(ActiveScrollName + '_ScrollBar').style.display = "none"; 
            }
            else
            {
                document.getElementById(ActiveScrollName + '_ScrollBar').style.display = "block"; 
            }
        }    
}


function ScrollPanel_OnScrollBeginH(evt)
{
    if (evt==null) evt=window.event;
    ActiveScrollName = evt.id.substring(0,evt.id.lastIndexOf('_'));
    eval(ActiveScrollName+"_IsButtonDown = true");
	IsButtonDown=true;
	//MinX = evt.offsetTop - parseInt(document.getElementById(ActiveScrollName+"_ScrollButton").style.top == 0? "0":document.getElementById(ActiveScrollName+"_ScrollButton").style.top);
	MinX = findPos(evt)[0];
	eval(ActiveScrollName+"_MinX=MinX");
	if (evt.parentElement)
	    PositionX = evt.parentElement.clientWidth - evt.clientWidth;
	else
	    PositionX = evt.parentNode.clientWidth - evt.clientWidth;    
	eval(ActiveScrollName+"_PositionX=PositionX");
	MaxX=MinX+PositionX;
	eval(ActiveScrollName+"_MaxX=MaxX");
	Source = evt;
	eval(ActiveScrollName+"_Source=Source");
	document.body.onmousemove = ScrollPanel_OnScrollingH;
	document.body.onmouseup = ScrollPanel_OnScrollEndH;
    return false;
}

function ScrollPanel_OnScrollingH(evt)
{
    if (IsButtonDown)
    {
        var currentX = null;
        var isIE = true;
        if (evt)
        {
            currentX = evt.pageX;    
            isIE = false;
        }
        else
        {
            currentX = window.event.clientX + document.body.scrollLeft  - document.body.clientLeft;
            currentX += document.documentElement.scrollLeft;
        }

        var MinX = eval(ActiveScrollName+"_MinX");
        var MaxX = eval(ActiveScrollName+"_MaxX");
        var Position = eval(ActiveScrollName+"_PositionX");
        
        if (currentX - MinX < 0)
        {
            document.getElementById(ActiveScrollName+"_ScrollButton").style.left = 0 + (isIE?"":"px");
        } else if (currentX - MinX > Position)
        {
            document.getElementById(ActiveScrollName+"_ScrollButton").style.left = Position + (isIE?"":"px");
        } else
        {
            document.getElementById(ActiveScrollName+"_ScrollButton").style.left = (currentX - MinX) + (isIE?"":"px");
        }
        
        var placeHolder = document.getElementById(ActiveScrollName+"_ContentPlaceHolder");
        var content = document.getElementById(ActiveScrollName+"_Content");
        placeHolder.style.left = (placeHolder.scrollWidth - content.clientWidth) * - (1 - (MaxX - findPos(Source)[0]) / Position) + (isIE?"":"px");
    }
    return false;
   }

function ScrollPanel_OnScrollEndH(evt)
{
    document.body.onmousemove = null;
    document.body.onmouseup = null;
    IsButtonDown = null;
    eval(ActiveScrollName+"_MinX = null");
    eval(ActiveScrollName+"_MaxX = null");
    eval(ActiveScrollName+"_PositionX = null");
    eval(ActiveScrollName+"_Source = null");
    return false;
}