/* Scroll posuvník pro fotografie
   Napsal: Daniel Čekan, djdaca(zavinac)orangesoft.cz.
   Description: Posouvá obrázky doleva nebo doprava 
   License:
   Script je možno šířit i stahovat pod podmínkou že mi dáte vědět na e-mail :)
   PS: Když mi vědět nedáte nestane se nic, svědší to pouze o vašem charakteru.
   
   Poslední update: 9 listopadu 2008
   Psáno v PSPadu
*/
function ScrollGalery(_parent){
    var self = this;
    // maximální možná pozice
    var MaxW = 0;
    // aktuální left pozice
    var CurW = 0;
    // přičteme, odečteme
    var Direction = 0;
    // čas
    var Timer = 0;
    var Otec,Cfg,Cont;
    this.init = function(_config) {
         // hlavní DIV
         Otec = _parent;
         // nastavení
         Cfg = _config;
         Otec.style.overflow = 'hidden';
         window.onload = function() {
               // obsah který se bude posouvat
               self.Cont  = self.getElementByClass(Cfg.Content);
               // tlačítko které bude posouvat left
               this.Left  = self.getElementByClass(Cfg.Left);
               // tlačítko které bude posouvat right
               this.Rght  = self.getElementByClass(Cfg.Right);
               // controls events
               self.addEvent(this.Rght, 'mousedown', function() {self.moveEvent(1)} );
               self.addEvent(this.Rght, 'mouseover', function() {self.moveEvent(1)} );
               self.addEvent(this.Rght, 'mouseout', function() {self.moveEvent(0)} );
               self.addEvent(this.Rght, 'mouseup', function() {self.moveEvent(0)} );
               self.addEvent(this.Left, 'mousedown', function() {self.moveEvent(-1)} );
               self.addEvent(this.Left, 'mouseup', function() {self.moveEvent(0)} );
               self.addEvent(this.Left, 'mouseover', function() {self.moveEvent(-1)} );
               self.addEvent(this.Left, 'mouseout', function() {self.moveEvent(0)} );
               // maximální šířka
               self.Cont.style.opacity = 10;
	             self.Cont.style.filter = 'alpha(opacity=' + 100 + ')';
               MaxW = Math.max(0,self.Cont.offsetWidth - Otec.offsetWidth);
               document.getElementById('loading-gal').style.display = 'none';
         }
         
    };
    
    this.moveEvent = function (dir) {
         Direction = dir;
         clearInterval(Timer);
         if(Direction) {
            Timer = setInterval(this.moveItem,Cfg.Rate);
            return false;
         } 
         
    };
    
    this.moveItem = function () {
         CurW += Cfg.Step * Direction;
         CurW = Math.max(0, Math.min(CurW, MaxW));
         if(CurW <= MaxW) {
            self.Cont.style.left = -CurW + 'px';
         }
    };
    
    this.addEvent = function (obekt, evt, fce) {
         if (!obekt) return;
         if (obekt.addEventListener){ 
             obekt.addEventListener(evt, fce, false);
         } else if (obekt.attachEvent) {
           // Pro retarda IE
           obekt.attachEvent('on'+ evt, fce);
         } else {
           obekt['on'+ evt] = fce;   
         }
	  };

    this.getElementByClass = function (trida) {
         var deti = Otec.childNodes;
		     for (var i = 0; i < deti.length; i++) {
			        if (deti[i].className && deti[i].className == trida) {
				          return deti[i];
			        }
		     }
    };
}

