// ThumbGallery
function TumbGallery(thumbs, image, pagenum, imagepath) {
	this.thumbs = $(thumbs).getElementsByTagName("img");
	this.image = $(image);
	this.pagenum = $(pagenum);
	this.imagepath = imagepath;
	this.opacity = 0.2;
	this.duration = 0.2;
	
    this.start = function() {
    	this.hlAll(false);
    	this.show(this.thumbs[0]);
    }
    
    this.hlAll = function(status) {
    	for(i=0;i<this.thumbs.length;i++) {
    		//this.hl(this.thumbs[i], status);
    		new Effect.Opacity(this.thumbs[i], { duration: 0, transition: Effect.Transitions.linear, from: 1, to: this.opacity });
    	}    	
    }
    
    this.hl = function(elem, status) {
    	if (elem != this.thumbActiveElem) {
	    	if (status==true) {
	    		//elem.style.opacity = 1;
	    		//elem.style.filter = "alpha(opacity=100)"; // IE
	    		new Effect.Opacity(elem, { duration: this.duration, transition: Effect.Transitions.linear, from: this.opacity, to: 1 });
	    	} else {
	    		//elem.style.opacity = this.opacity/100;
	    		//elem.style.filter = "alpha(opacity="+this.opacity+")"; // IE
	    		new Effect.Opacity(elem, { duration: this.duration, transition: Effect.Transitions.linear, from: 1, to: this.opacity });
	    	}
    	}
    }
    
    this.show = function(elem) {
    	if (elem != this.thumbActiveElem) {
	    	// ermittelt die Nummer
	    	for(i=0;i<this.thumbs.length;i++) {
	    		if(this.thumbs[i] == elem) {
	    			num = i+1;
	    			break;
	    		}
	    	}
	    	
	    	this.hlAll(false);
	    	this.hl(elem, true);
	    	
	    	this.thumbActiveElem = elem;
	    	this.thumbActiveNum = num;
	    	
	    	this.image.src = this.imagepath+'image'+this.thumbActiveNum+'.jpg';
	    	this.pagenum.innerHTML = this.thumbActiveNum+' | '+this.thumbs.length;
    	}
    }
    
    this.next = function() {
    	nextNum = false;
    	
    	for(i=0;i<this.thumbs.length;i++) {
    		if(this.thumbs[i] == this.thumbActiveElem) {
    			if((i+1) < this.thumbs.length) {
    				nextNum = i+2;
    				nextElem = this.thumbs[i+1];
    			}
    			break;
    		}
    	}
    	
    	if(nextNum==false) {
			nextNum = 1;
			nextElem = this.thumbs[0];
    	}
    	
    	this.show(nextElem, nextNum);
    }
    
    this.back = function() {
    	nextNum = false;
    	
    	for(i=0;i<this.thumbs.length;i++) {
    		if(this.thumbs[i] == this.thumbActiveElem) {
    			if((i+1) > 1) {
    				nextNum = i;
    				nextElem = this.thumbs[i-1];
    			}
    			break;
    		}
    	}
    	
    	if(nextNum==false) {
			nextNum = this.thumbs.length;
			nextElem = this.thumbs[this.thumbs.length-1];
    	}
    	
    	this.show(nextElem, nextNum);
    }
}

// slideshow
function Fader(id, staytime, fadetime) {
    this.id = id;
    this.staytime = staytime;
    this.fadetime = fadetime;
    
    this.images = $(this.id).getElementsByTagName("img");
    this.counter = 0;

    this.fade = function(step) {
        var fader = this;

        step = step || 0;

        this.images[this.counter].style.opacity = step/100;
        this.images[this.counter].style.filter = "alpha(opacity=" + step + ")"; // IE

        step = step + 2;

        if (step <= 100) {
            window.setTimeout(function() { fader.fade(step); }, this.fadetime);
        } else {
            window.setTimeout(function() { fader.next(); }, this.staytime);
        }
    };
	
    this.fadeOut = function(step) {
        var fader = this;

        step = step || 100;

        this.images[this.counter].style.opacity = step/100;
        this.images[this.counter].style.filter = "alpha(opacity=" + step + ")"; // IE

        step = step - 2;

        if (step > 0) {
            window.setTimeout(function() { fader.fadeOut(step); }, this.fadetime);
        } else {
            window.setTimeout(function() {
				fader.counter = 0;
				fader.next(); 
			}, this.staytime);
        }
    };

    this.next = function() {
	    if (this.images.length > 1) {
	        if (this.counter+1 < this.images.length) {
				this.counter++;
				this.fade();
			} else {			
				for (var i=1; i<this.images.length-1; i++) {
	        		this.images[i].style.opacity = 0;
	        		this.images[i].style.filter = "alpha(opacity=0)"; // IE?
				}
				
				this.fadeOut();
	        }
	    }
    }
    
    this.start = function() {
        var fader = this;
        window.setTimeout(function() { fader.next(); }, this.staytime);
    }
}

//scroll the element vertically based on its width and the slider maximum value
function scrollVertical(value, element, slider) {
	element.scrollTop = Math.round(value/slider.maximum*(element.scrollHeight-element.offsetHeight));
}
