function Slider() {
 this.numImages = 15;
 this.speed = 30;
 this.direction = 1;
 this.isStopped = false;
 this.spacer = 12;
 this.imageWidth = 129;
 this.images = new Array();
 this.spaces = new Array();
 this.leftFirst = 1;
 this.loadedImages = 0;
 this.bigImages = new Array();
 this.dateStop = new Date().valueOf();
 this.clientWidth = 0;
 this.clientHeight = 0;
    
    this.detectResolution = function() {
         if( self.innerHeight ) { 
            this.clientWidth = self.innerWidth; 
            this.clientHeight = self.innerHeight; 
        } else if( document.documentElement && document.documentElement.clientHeight ) { 
            this.clientWidth = document.documentElement.clientWidth; 
            this.clientHeight = document.documentElement.clientHeight; 
        } else if( document.body ) { 
            this.clientWidth = document.body.clientWidth; 
            this.clientHeight = document.body.clientHeight; 
        } 
    }
   
    this.init = function() {
            this.detectResolution();
       var position = - (this.imageWidth + this.spacer);
        for (var i = 1; i <= this.numImages; ++i) {
            var img = new Image();
            img.src = "images/preview/" + i + "_.jpg";
            img.style.position = "relative";
            img.style.left = position;
            img.id = "img" + i;
            img.className = "slider-image";
            $(img).ready(this.onImageLoad);
            $(img).click(this.onClick);
            var imgSpace = new Image();
            imgSpace.src = "images/space.jpg";
            imgSpace.style.position = "relative";
            imgSpace.id = "imgSpace" + i;
            this.images[i] = img;
            this.spaces[i] = imgSpace;
            this.bigImages[i] = new Image();
            this.bigImages[i].src = "images/big/" + i + ".jpg";
  $("#slider").append(img);
            $("#slider").append(imgSpace);
        }
    }
    
    this.onClick = function() {
        var id = this.id.substring(3);
        var img = slider.bigImages[id];
         img.onload = function() {
             $("#sliderPupupImage").attr("src", img.src);
            var left = slider.clientWidth / 2 - (img.width / 2); 
            var top = slider.clientHeight / 2 - (img.height / 2);
            $("#sliderPopup").css("left", left + "px");
            $("#sliderPopup").css("top", top + "px");
             $("#sliderPopup").show();
        }
        
        $(img).ready(function() {
             $("#sliderPupupImage").attr("src", img.src);
            var left = slider.clientWidth / 2 - (img.width / 2); 
            var top = slider.clientHeight / 2 - (img.height / 2);
            $("#sliderPopup").css("left", left + "px");
            $("#sliderPopup").css("top", top + "px");
            $("#sliderPopup").show();
        });
    }
    
    this.onImageLoad = function() {
        slider.loadedImages++;
        if (slider.loadedImages == slider.numImages) {
            $(document).ready(function () {
                $("#sliderTable").show();
                slider.start();
            });
        }
    }
    
    this.start = function() {
        var now = new Date();
        var curTime = now.valueOf();

        if (curTime - this.dateStop <= this.speed) {
            return;
        }
    
        this.isStopped = false;
        window.setTimeout("slider.move()", this.speed);
    }
    
    this.stop = function() {
        var now = new Date();
        this.dateStop = now.valueOf();
        this.isStopped = true;
    }
    
    this.move = function() {
        if (this.isStopped) {
            return;
        }
    
        if (this.direction == -1) {
            this.moveLeft();
        } else {
            this.moveRight();
        }
    }
    
    this.nextLeftFirst = function() {
        this.leftFirst++;
        if (this.leftFirst > this.numImages) {
            this.leftFirst = 1;
        }
    }
    
    this.prevLeftFirst = function() {
        this.leftFirst--;
        if (this.leftFirst < 1) {
            this.leftFirst = this.numImages;
        }
    }
    
    this.getFirstRight = function() {
        var result = this.leftFirst + (this.numImages - 1);
        if (result > this.numImages) {
            result = result - this.numImages;
        }
        
        return result;
    }
    
    this.changeDirection = function(newDirection) {
        this.direction = newDirection;
    }
    
    this.moveLeft = function() {
        
        if (this.images[this.leftFirst].width == 0) {
            if (this.spaces[this.leftFirst].width == 0) {
                 $("#" + this.images[this.leftFirst].id).remove();
                $("#" + this.spaces[this.leftFirst].id).remove();
                 this.images[this.leftFirst].width = this.imageWidth;
                this.spaces[this.leftFirst].width = this.spacer;
                 $("#slider").append(this.images[this.leftFirst]);
                $("#slider").append(this.spaces[this.leftFirst]);
                 $(this.images[this.leftFirst]).click(this.onClick);
                this.nextLeftFirst();
            }
            else {
                this.spaces[this.leftFirst].width = this.spaces[this.leftFirst].width - 1;
            }
        } else {
             this.images[this.leftFirst].width = this.images[this.leftFirst].width - 1;
        }
        
        window.setTimeout("slider.move()", this.speed);
    }
    
    this.moveRight = function() {
        
        if (this.images[this.leftFirst].width == this.imageWidth) {
            if (this.spaces[this.leftFirst].width == this.spacer) {
                var rightFirst = this.getFirstRight();
                  $("#" + this.images[rightFirst].id).remove();
                $("#" + this.spaces[rightFirst].id).remove();
                this.images[rightFirst].width = 0;
                this.spaces[rightFirst].width = 0;
                $("#slider").prepend(this.spaces[rightFirst]);
                $("#slider").prepend(this.images[rightFirst]);
                $(this.images[rightFirst]).click(this.onClick);
                this.prevLeftFirst();
            }
            else {
                this.spaces[this.leftFirst].width = this.spaces[this.leftFirst].width + 1;
            }
        } else {
            this.images[this.leftFirst].width = this.images[this.leftFirst].width + 1;
        }
        
        window.setTimeout("slider.move()", this.speed);
    }
}
