Файл: MysqlIManager/js/scrollbar3.js
Строк: 453
<?php
// ------------------------------------------------
//      Custom DHTML scrollbar
// ------------------------------------------------
//      (c) 2000 Peter Nederlof
//      http://www.xs4all.nl/~peterned/
//      Last updated: January 26, 2001
// ------------------------------------------------
// Values below are defaults. overwrite in HTML
var barWidth  = 23;
var barHeight = 230;
var barXstart = 260;
var barXfromRight = false;
var barYstart = 0;
var scrollerHeight = 15;
var layerToScroll = "divContent";
var arrowSpeed = 3;
var clickStepSize = 40;
var extraSpace = 5;
var scrollerBG = "images/scroll_balk2.gif";
var upSRC      = "images/up2.gif";
var downSRC    = "images/down2.gif";
var scrollSRC  = "images/scroller2.gif";
var autoDisable = true;
var onDisable = "hide";
var arrowGrouping = false;
// ------------------------------------------------
//        I suggest you don't alter anything below
var ie4 = (document.all)? true:false;
var ns6 = (!ie4 && document.getElementById)? true:false;
var ns4 = (!ie4 && !ns6)? true:false;
var loaded = false;
var arrowSize;
var x, y, pageFromTop;
var upIMG, downIMG, scrollIMG;
var pageWidth, pageHeight;
if(!ie4 && navigator.appName != "Netscape")
{    alert('It seems you are using an unsupported browser');
}
// ------------------------------------------------
//        Initializes the scrollbar
//        - called by body onload()
function initScroller()
{    arrowSize  = barWidth;
    pageWidth  = (ie4)? document.body.clientWidth:window.innerWidth;
    pageHeight = (ie4)? document.body.clientHeight:window.innerHeight;
    var tempLyr = getLayer(layerToScroll);
    if(ie4)    pageFromTop = tempLyr.style.pixelTop;
    if(ns4)    pageFromTop = tempLyr.top;
    if(ns6) pageFromTop = 0; //parseInt(tempLyr.style.top);
    upIMG    = '<IMG SRC="'+upSRC     +'" WIDTH="'+barWidth+'" HEIGHT="'+barWidth+'" BORDER="0">';
    downIMG  = '<IMG SRC="'+downSRC   +'" WIDTH="'+barWidth+'" HEIGHT="'+barWidth+'" BORDER="0">';
    scrollIMG = '<IMG name="theScroller" SRC="'+scrollSRC+'" WIDTH="'+barWidth+'" HEIGHT="'+scrollerHeight+'" BORDER="0">';
    
    scrollbar = new Scrollbar(barWidth, barHeight, barXstart, barYstart);
    scrollbar.build();    
    scrollbar.setMaxScroll();
    loaded = true;
    scrollbar.monitor();
    
    scrollbar.setPage(layerToScroll);
}
// ------------------------------------------------
//        Scrollbar Object.
//        - defines values and functions
function Scrollbar(width, height, xPos, yPos)
{    
    // ------------------------------------------------
    //        Values:
    this.width  = width;
    this.height = height;
    this.xPos = xPos;
    this.yPos = yPos;
    this.enabled = true;
    
    this.barString = "";
    this.arrowSize = arrowSize;
    this.arrowUpYstart   = 0;
    this.pageToScroll = layerToScroll;
    this.toScrollHeight = 0;
    this.activePage = layerToScroll;
    this.maxScroll = this.height - this.arrowSize;
    this.scrollerHeight = scrollerHeight;
    
    // ------------------------------------------------
    //        Functions:
    this.build   = build;
    this.monitor = monitor;
    this.setPage = setPage;
    this.toTop   = toTop;    
    this.setMaxScroll = setMaxScroll;
}
// ------------------------------------------------
//        Scrollbar Build function
//        - builds Scrollbar and writes it to page
function build()
{    
    upApos = (arrowGrouping)? (this.height - (2*this.arrowSize)):0;
    scrpos = (arrowGrouping)? 0:this.arrowSize;
        
    // ------------------------------------------------
    //        Internet Explorer 4+
    if(ie4)
    {    this.barString = '<DIV ID="scrollyr" STYLE="position:absolute; left:'+this.xPos+'; top:'+this.yPos+'; '
        + 'z-index:20; width:'+this.width+'; height:'+this.height+';">'
        
        + '<DIV ID="arrowUp" STYLE="position:absolute; left:0; top:'+upApos+'; width:'+this.arrowSize+'; height:'
        + this.arrowSize+'; z-index:30; Clip:rect(0,'+this.arrowSize+','+this.arrowSize
        + ',0); cursor:hand;">'+upIMG+'</DIV>'
            
        + '<DIV ID="scroller" STYLE="position:absolute; left:0; top:'+scrpos+'; width:'+this.arrowSize
        + '; height:'+scrollerHeight+';' // clip:rect(0,'+this.width+','+scrollerHeight+',0);'
        + ' z-index:25; cursor:hand;">'+scrollIMG+'</DIV>'
        
        + '<DIV ID="arrowDown" STYLE="position:absolute; left:0; top:'+(this.height-this.arrowSize)+'; width:'
        + arrowSize+'; height:'+arrowSize+'; z-index:30; Clip:rect(0,'+this.arrowSize+','+this.arrowSize
        + ',0); cursor:hand;">'+downIMG+'</DIV>'
        + '</DIV>';
        
        document.body.insertAdjacentHTML("BeforeEnd", this.barString);            
        
        scrollyr.onmousedown = goThere;        
        if(scrollerBG != "none") 
        {    if(scrollerBG.indexOf('.') != -1) scrollyr.style.backgroundImage = "url("+scrollerBG+")";
            else scrollyr.style.backgroundColor = scrollerBG;
            scrollyr.style.height = this.height
        }
    }    
    
    // ------------------------------------------------
    //        Netscape Navigator 4.x
    if(ns4)
    {    this.barString = '<Layer name="arrowUpF" left="0" top="'+upApos+'" width="'+this.arrowSize+'" height="'
        + this.arrowSize+'" z-index="30">'+upIMG+'</Layer>'
        + '<Layer name="arrowUp" left="0" top="'+upApos+'" width="'+this.arrowSize+'" height="'
        + this.arrowSize+'" z-index="31"></Layer>'
            
        + '<Layer name="scrollerF" left="0" top="'+scrpos+'" width="'+this.arrowSize
        + '" height="'+scrollerHeight+'" z-index="25">'+scrollIMG+'</Layer>'
        + '<Layer name="scroller" left="0" top="'+scrpos+'" width="'+this.arrowSize
        + '" height="'+scrollerHeight+'" z-index="26"></Layer>'
        
        + '<Layer name="arrowDownF" left="0" top="'+(this.height-this.arrowSize)+'" width="'
        + arrowSize+'" height="'+arrowSize+'" z-index="30">'+downIMG+'</Layer>'
        + '<Layer name="arrowDown" left="0" top="'+(this.height-this.arrowSize)+'" width="'
        + arrowSize+'" height="'+arrowSize+'" z-index="31"></Layer>';
        scrollyr = new Layer(this.width);
        scrollyr.document.write(this.barString);
        scrollyr.document.close();
        scrollyr.visibility = "show";
        scrollyr.moveTo(barXstart, barYstart);
        
        if(scrollerBG!="none") 
        {    if(scrollerBG.indexOf('.') != -1) scrollyr.background.src = scrollerBG;
            else scrollyr.bgColor = scrollerBG
        }
        scrollyr.document.onmousedown = goThere;
        
        this.pageToScroll = getLayer(layerToScroll);
        scroller  = getLayer('scroller');
        scrollerF = getLayer('scrollerF');
        arrowUp   = getLayer('arrowUp');
        arrowDown = getLayer('arrowDown');
        
        scroller.style = scroller;
        scrollyr.style = scrollyr;
    }
    // ------------------------------------------------
    //        Mozilla - Netscape 5 or 6
    if(ns6)
    {    scrollbarElement = new ns6layer("scrollyr",  this.xPos, this.yPos, this.width, this.height, 20);
        arrowUpElement   = new ns6layer("arrowUp",   0, 0, this.arrowSize, this.arrowSize, 30);
            arrowUpElement.addImage(upSRC);
        arrowDownElement = new ns6layer("arrowDown", 0, (this.height-this.arrowSize), this.arrowSize, this.arrowSize, 30);
            arrowDownElement.addImage(downSRC);
        scrollerElement   = new ns6layer("scroller", 0, this.arrowSize, this.arrowSize, scrollerHeight, 25);
            scrollerElement.addImage(scrollSRC, "theScroller");
            
        scroller  = getLayer('scroller');
        scrollyr  = getLayer('scrollyr');
        arrowUp   = getLayer('arrowUp');
        arrowDown = getLayer('arrowDown');
        
        scrollyr.onmousedown = goThere;
    }
}
// ------------------------------------------------
//        Mozilla layer function (as Object)
//        - creates and writes layer to page
//        - addImage() writes an image to the layer
    function ns6layer(name, left, top, width, height, z)
    {    this.nameSRC = document.createElement("Div");
        this.nameSRC.id = name;
        if(name == "scrollyr") document.body.appendChild(this.nameSRC);
        else scrollbarElement.nameSRC.appendChild(this.nameSRC);
        this.lyr = document.getElementById(this.nameSRC.id);
        this.lyr.setAttribute("style","position:absolute; left:"+left
                    +"; top:"+top+"; width:"+width+"; height:"+height+";");
        this.lyr.style.zIndex = z;
        
        if(name == "scrollyr" && scrollerBG != "none")
        {    if(scrollerBG.indexOf('.') != -1) this.lyr.style.backgroundImage = "url("+scrollerBG+")";
            else this.lyr.style.backgroundColor = scrollerBG;
        }
        this.addImage = addImage;
    }
        function addImage(path, imgName)
        {    this.imgElement = document.createElement("Img");
            this.imgElement.src = path
            this.imgElement.width = barWidth;
            if (imgName != null)
            {    this.imgElement.id = imgName;
                this.imgElement.height = scrollerHeight;
            }
            this.imgElement.border = 0;
            this.lyr.appendChild(this.imgElement);
        }
// ------------------------------------------------
//        Built in option to enable page flipping in
//        one document.
//
//        - scrollbar.setPage(arg) with arg as String
//          representing a layername with content,
//          nested in the clipped top level layer
function setPage(toWhat)
{    var hideThis = getLayer(this.activePage);
    if(ns4) hideThis.style = hideThis;
    hideThis.style.visibility = "hidden";
    var showThis = toWhat;
    showThis = getLayer(showThis);
    if(ns4) showThis.style = showThis;
    showThis.style.visibility = "visible";    
    this.pageToScroll = toWhat;
    if(ns4 || ns6) this.pageToScroll = getLayer(this.pageToScroll);
    this.activePage = toWhat;
    if(ie4) this.toScrollHeight = document.all[this.pageToScroll].clientHeight;
    if(ns4) this.toScrollHeight = this.pageToScroll.document.height;
    if(ns6) this.toScrollHeight = this.pageToScroll.offsetHeight;
        if(autoDisable && this.toScrollHeight <= this.height)
        {    scrollbar.enabled = false;
            if(onDisable == "hide") 
            {    scrollyr.style.visibility = "hidden";
            }
        }
        else 
        {    scrollbar.enabled = true;
            scrollyr.style.visibility = "visible";
        }    
        
    scroller.style.top = (arrowGrouping)? 0:this.arrowSize;
    scroller.checkPos();    
}
function toTop()
{    with(this)
    {    setPage(activePage);
    }
}
// ------------------------------------------------
//        Defines the range of the scroll-element,
//        how far you can drag it up and down.
function setMaxScroll()
{    this.maxScroll = this.height - this.arrowSize - this.scrollerHeight;
    scroller.range = this.maxScroll - this.arrowSize;
}
// ------------------------------------------------
//        Sets up mouse event listeners for the
//        elements of the scrollbar.
function monitor()
{    scroller.scrolling = false;
    scroller.moving = false;
    scroller.yStart = this.yPos;
    scroller.difY = 0;
    scroller.checkPos = checkPos;
    if(ns4)
    {    arrowUp.onmouseout   = stopScroll;
        arrowDown.onmouseout  = stopScroll;
        arrowUp = arrowUp.document;
        arrowDown = arrowDown.document;
        scroller.document.onmousedown = setDrag;
        scroller.document.onmouseup   = stopDrag;
    }
    
    else
    {    scroller.onmousedown = setDrag;
        scroller.onmouseup   = stopDrag;
        arrowUp.onmouseout   = stopScroll;
        arrowDown.onmouseout  = stopScroll;
    }
    arrowUp.onmouseout    = stopScroll;
    arrowDown.onmouseout   = stopScroll;    
    
    arrowUp.onmouseover  = scrollUp;
    arrowDown.onmouseover = scrollDown;            
}
// ------------------------------------------------
//        Maps scroll-element position to the content
//        layer, the heart of the script.
function checkPos()
{    if(arrowGrouping)
    {    scrollbar.maxScroll -= scrollbar.arrowSize;
        scrollbar.arrowSize = 0;        
    }
    if(ns4)
    {    if(this.top < scrollbar.arrowSize) this.top = scrollbar.arrowSize;
        if(this.top > scrollbar.maxScroll) this.top = scrollbar.maxScroll;
        scrollerF.top = scroller.top;
    }
    else
    {    if(parseInt(this.style.top) < scrollbar.arrowSize) this.style.top = scrollbar.arrowSize;
        if(parseInt(this.style.top) > scrollbar.maxScroll) this.style.top = scrollbar.maxScroll;
    }
    
    var position = 0 - scrollbar.arrowSize;
    if(ns4) position += this.top
    else    position += parseInt(this.style.top);
    var amountToDo = (scrollbar.toScrollHeight - scrollbar.height) + pageFromTop + extraSpace;
    if(amountToDo < 0) amountToDo = 0;
    var stepSize = amountToDo/this.range;
    var newPosition = pageFromTop - (position * stepSize);
    if(ie4) document.all[scrollbar.pageToScroll].style.pixelTop = newPosition;
    if(ns4) scrollbar.pageToScroll.top = newPosition;
    if(ns6) scrollbar.pageToScroll.style.top = newPosition;
}
// ------------------------------------------------
//        Mouse event function, enables dragging
function setDrag()
{    scroller.scrolling = true;
    scroller.difY = (y - scroller.yStart);
    
    if(ie4) scroller.difY -= scroller.style.pixelTop;
    if(ns4) scroller.difY -= scroller.top;
    if(ns6) scroller.difY -= parseInt(scroller.style.top);
    scroller.difY += scroller.yStart;
    
}
// ------------------------------------------------
//        Mouse event functions, disables dragging
function stopDrag()
{    if(!loaded) return;
    scroller.scrolling = false;
}
function mouseUp(e)
{    if(!loaded) return;
    scroller.scrolling = false;    
}
// ------------------------------------------------
//        Mouse event function, mouse positions
function mouseMove(e)
{    if(!loaded) return;
    if (ns4) {x=e.pageX; y=e.pageY;}
    if (ns6) {x=e.clientX; y=e.clientY;}
    if (ie4) {x=event.x; y=event.y;}
    if(ie4 && loaded) 
    {    if(event.button == 0) stopDrag();        
    }
    
    if(loaded && scroller.scrolling && scrollbar.enabled)
    {    if(ie4 || ns6) scroller.style.top = (y - scroller.yStart) - (scroller.difY - scroller.yStart);
        if(ns4) scroller.top = (y - scroller.yStart) - (scroller.difY - scroller.yStart);
        
        scroller.checkPos();        
        return false;
    }    
}
function fixNSresize()
{    if(pageWidth != window.innerWidth || pageHeight != window.innerHeight)
    history.go(0);
}
document.onmousemove = mouseMove;
document.onmouseup = mouseUp;
if(ns4) 
{    document.captureEvents(Event.MOUSEMOVE||Event.MOUSEUP||Event.MOUSEDOWN);
    window.onresize = fixNSresize;
}
// ------------------------------------------------
//        Arrow Buttons events, up and down functions
var SCmove = null;
function scrollUp()
{    keyLock = true;
    scroller.moving = true;
    if(ns6)  SCmove = setInterval(moveScroller, 25, (0-arrowSpeed));
    else SCmove = setInterval("moveScroller(0-arrowSpeed)",25);
}
function scrollDown()
{    keyLock = true;
    scroller.moving = true;
    if(ns6)  SCmove = setInterval(moveScroller, 25, arrowSpeed);
    else SCmove = setInterval("moveScroller(arrowSpeed)",25);
}
function stopScroll()
{    scroller.moving = false;
    if(SCmove != null) clearInterval(SCmove);
}
function moveScroller(how)
{    if(scroller.moving && scrollbar.enabled)
    {    if(ie4) scroller.style.pixelTop += how;
        if(ns4) scroller.top += how;
        if(ns6) scroller.style.top = parseInt(scroller.style.top) + how;
        scroller.checkPos();        
    }    
}
// ------------------------------------------------
//        Clicking in the bar causes the scroll
//        element to take a step towards the mouse
function goThere()
{    var where = y - scrollbar.yPos;
    if(!scroller.scrolling && !scroller.moving)
    {    if(where < ((ie4)? scroller.style.pixelTop:((ns6)? parseInt(scroller.style.top):scroller.top)))
        {    if(ie4) scroller.style.pixelTop -= clickStepSize;
            if(ns4) scroller.top -= clickStepSize;
            if(ns6) scroller.style.top = parseInt(scroller.style.top) - clickStepSize;
        }
        else
        {    if(ie4) scroller.style.pixelTop += clickStepSize;
            if(ns4) scroller.top += clickStepSize;
            if(ns6) scroller.style.top = parseInt(scroller.style.top) + clickStepSize;
        }
        scroller.checkPos();
    }
}
// ------------------------------------------------
//        finds layers within document. Brainjar.
//        -  http://www.brainjar.com. 
function getLayer(name) 
{    if (ns4) return findLayer(name, document);
    if (ie4) return eval('document.all.' + name);
    if (ns6) return document.getElementById(name);    
    return null;
}
function findLayer(name, doc) 
{    var i, layer;
    for (i = 0; i < doc.layers.length; i++) 
    {    layer = doc.layers[i];
        if (layer.name == name)    return layer;
        if (layer.document.layers.length > 0) 
        {    layer = findLayer(name, layer.document);
            if (layer != null) return layer;
        }
    }
    return null;
}
?>