// Scroller OBJECT - soucast DHTML Lib 1.2.1 - dhtmllib.js musi byt nactena/*  Pixy DOM DHTML Lib 1.2.1    ------------------------    Knihovna JS funkci pro snazsi dynamickou manipulaci s HTML dokumenty        Copyright (C) 2001 Petr Stanicek (aka -pixy-), mailto:stanicek@mac.com    Info, licence, download, kontakt: http://web.iol.cz/pixy/dhtmllib.html    * GNU/GPL 2.CZE *    Tato knihovna a jeji soucasti jsou volne programove vybaveni;    muzete jej sirit a modifikovat podle ustanoveni Obecne verejne licence GNU    pro Ceskou republiku, vydavane Free Software Foundation a obcanskym sdruzenim    zastudena.cz, ve verzi 2.CZE teto licence.    Tento program je rozsirovan v nadeji, ze bude uzitecny, avsak BEZ JAKEKOLI ZARUKY;    neposkytuji se ani odvozene zaruky PRODEJNOSTI anebo VHODNOSTI PRO URCITY UCEL.    Dalsi podrobnosti hledejte v Obecne verejne licenci GNU pro Ceskou republiku,    ktera je soucasti teto knihovny - http://web.iol.cz/pixy/dhtmllib.html*/// outerObj i innerObj jsou absolutne pozicovane, padding i border: 0// Po zmene velikosti se musi znovu inicializovat kazdy scroller, jinak nebudou souhlasit rozmery// napr. windows.onresize = MyScoller.Init();function ScrollerObj(outerObj, innerObj, padding, allowFullscroll) {    this.outer = getObj(outerObj);    this.inner = getObj(innerObj);    this.pad = padding;    this.allowFull = allowFullscroll;    setObjCSSProp(this.outer,'overflow','hidden');    this.Init();    }function ScrollObjInit() {    var width = getObjW(this.outer);    var height = getObjH(this.outer);    this.outW = width - 2*this.pad;    this.outH = height - 2*this.pad;    resizeObjTo(this.inner,this.outW,null);    moveObjTo(this.inner,this.pad,this.pad);    this.inH = getObjH(this.inner);    this.minScroll = (this.allowFull) ? -this.outH : 0;    this.maxScroll = (this.allowFull) ? this.inH : this.inH-this.outH;    this.midScroll = Math.round((this.maxScroll+this.minScroll)/2);    this.ScrollFullDn(); this.ShiftMid();    }function ScrollObjScrollFullDn() { this.ofs = this.minScroll; this.DoScroll(); }function ScrollObjScrollFullUp() { this.ofs = this.maxScroll; this.DoScroll(); }function ScrollObjScrollMid() { this.ofs = this.midScroll; this.DoScroll(); }function ScrollObjDoScroll() {    this.inner.style.top = -this.ofs+this.pad+'px';    setObjClip(this.inner, this.ofs,this.ltr+this.outW, this.ofs+this.outH,this.ltr);    }function ScrollObjScrollPgDn() { return this.Scroll(-this.outH); }function ScrollObjScrollPgUp() { return this.Scroll(this.outH); }function ScrollObjScroll(n) { // n>0 - nahoru; n<0 - dolu    if ( ((n<0) && this.ofs>this.minScroll) || ((n>0) && this.ofs<this.maxScroll) ) {        this.ofs+=n;        if (this.ofs>this.maxScroll) this.ofs=this.maxScroll;        if (this.ofs<this.minScroll) this.ofs=this.minScroll;        this.DoScroll();        return true;        }    else return false;    }function ScrollObjShiftFullLeft() { this.ltr = this.outW; this.DoShift(); }function ScrollObjShiftFullRight() { this.ltr = -this.outW; this.DoShift(); }function ScrollObjShiftMid() { this.ltr = 0; this.DoShift(); }function ScrollObjDoShift() {    this.inner.style.left = -this.ltr+this.pad+'px';    setObjClip(this.inner, this.ofs, this.ltr+this.outW, this.ofs+this.outH, this.ltr);    }function ScrollObjShift(n) { // n>0 - doprava; n<0 - doleva    if ( ((n<0) && this.ltr>-this.outW) || ((n>0) && this.ltr<this.outW) ) {        this.ltr+=n;        if (this.ltr>this.outW) this.ofs=this.outW;        if (this.ltr<-this.outW) this.ofs=-this.outW;        this.DoShift();        return true;        }    else return false;    }ScrollerObj.prototype.Init = ScrollObjInit;ScrollerObj.prototype.ScrollFullUp = ScrollObjScrollFullUp;ScrollerObj.prototype.ScrollFullDn = ScrollObjScrollFullDn;ScrollerObj.prototype.ScrollMid = ScrollObjScrollMid;ScrollerObj.prototype.ScrollPgUp = ScrollObjScrollPgUp;ScrollerObj.prototype.ScrollPgDn = ScrollObjScrollPgDn;ScrollerObj.prototype.DoScroll = ScrollObjDoScroll;ScrollerObj.prototype.Scroll = ScrollObjScroll;ScrollerObj.prototype.ShiftFullLeft = ScrollObjShiftFullLeft;ScrollerObj.prototype.ShiftFullRight = ScrollObjShiftFullRight;ScrollerObj.prototype.ShiftMid = ScrollObjShiftMid;ScrollerObj.prototype.DoShift = ScrollObjDoShift;ScrollerObj.prototype.Shift = ScrollObjShift;// AutoScroller OBJECTfunction AutoScrollerObj(selfname, outerObj, padding) {    this.self = selfname;    this.outer = getObj(outerObj);    this.pad = padding;    this.inners = new Array();    this.innersCnt = 0;    this.reverse = false;    this.active = -1;    this.play = false;    }function AutoScrollerObjAddInner(innerObj,horiz,step1,step2,speed1,speed2,pause) {    var obj = new ScrollerObj(this.outer, innerObj, this.pad, true);    obj.step1 = step1;    obj.step2 = step2;    obj.speed1 = speed1;    obj.speed2 = speed2;    obj.pause = pause;    obj.horiz = horiz;    obj.wasMid = false;    this.inners[this.innersCnt] = obj;    this.DeactivateInner(this.innersCnt);    this.innersCnt++;    }function AutoScrollerObjActivateInner(n) {    this.active = n;    var o = this.inners[n];    if (o.horiz) {        o.ScrollMid();        if (o.step1<0) o.ShiftFullLeft(); else o.ShiftFullRight();        }    else {        o.ShiftMid();        if (o.step1<0) o.ScrollFullUp(); else o.ScrollFullDn();        }    o.wasMid = false;    setObjVisible(o.inner,true);    }function AutoScrollerObjDeactivateInner(n) {    this.active = -1;    setObjVisible(this.inners[n].inner,false);    }function AutoScrollerObjMove() {    var n,o,p,st,scrolled=false,toMid,isMid=false;    if (this.play && this.innersCnt) {        if (this.active<0) this.ActivateInner(0);        n=this.active; o=this.inners[n];        if (o.wasMid) st=o.step2;        else {            if (o.horiz) {                toMid = Math.abs(o.ltr);                if (toMid<=o.step1 && o.step1>0 && o.ltr<0) { st=toMid; isMid=true; }                else if (-toMid>=o.step1 && o.step1<0 && o.ltr>0) { st=-toMid; isMid=true; }                else st = o.step1;                }            else {                toMid = Math.abs(o.midScroll-o.ofs);                if (toMid<=o.step1 && o.step1>0 && o.ofs<o.midScroll) { st=toMid; isMid=true; }                else if (-toMid>=o.step1 && o.step1<0 && o.ofs>o.midScroll) { st=-toMid; isMid=true; }                else st = o.step1;                }            }        if (isMid && !o.wasMid) o.wasMid=true;        scrolled = (o.horiz) ? o.Shift(st) : o.Scroll(st);        p = (isMid) ? o.speed1+o.pause : (o.wasMid) ? o.speed2: o.speed1;        if (!scrolled) {            this.DeactivateInner(n);            n++;            if (n>=this.innersCnt) n=0;            this.ActivateInner(n);            }        setTimeout(this.self+".Move()",p);        }    }function AutoScrollerObjGo(on) {    this.play = on;    if (this.play) this.Move();    }function AutoScrollerObjReinitAll() { for (var i=0; i<this.innersCnt; i++) this.inners[i].Init(); }AutoScrollerObj.prototype.AddInner = AutoScrollerObjAddInner;AutoScrollerObj.prototype.ActivateInner = AutoScrollerObjActivateInner;AutoScrollerObj.prototype.DeactivateInner = AutoScrollerObjDeactivateInner;AutoScrollerObj.prototype.Move = AutoScrollerObjMove;AutoScrollerObj.prototype.Go = AutoScrollerObjGo;AutoScrollerObj.prototype.ReinitAll = AutoScrollerObjReinitAll;