/*/////////////////////////////////////////////////////////////////////////////////
    Version: 1.0
                                slideShow
    Diese Klasse ermöglicht eine Slideshow
    Vorsicht: das angegebene Img-Object wird durch einen div mit der selben id ersetzt.

	obj = das Img-Element oder die id des Img-Elements
	options = 
		slidetime     Überblende-Zeit in Sekunden
		swaptime      Abstand zwischen den Überblendungen in Sekunden
		transition    SlideEffect (http://docs.mootools.net/Effects/Fx-Transitions.js)
		path          der pfad in dem die Bilder liegen (falls kein Pfad weglassen)
		imgs          ein Array mit allen Bildern (wird später an den pfad angehängt)
		random        soll die Slideshow zufällig die Bilderauswahl treffen, oder der Reihe nach?
	
	Beispiele:
		1. var mySlideShow = new slideShow($('mainimg'));
		2. var mySlideShow = new slideShow($E('#topimg img'),{
			slidetime: 1,
			swaptime: 4,
			transition: Fx.Transitions.Quart.easeInOut,
			path: '/images/slide/',
			imgs: ['1.jpg','2.jpg','3.jpg'],
			random: true
		});
		
	PHP-Beispiel ohne random:
		<?if($t{site}{slideshow}){ 
			$path = '/images/slides/'.$t{site}{slideshow}; // ohne slash am ende...
			$images = array();
			$handle = opendir($t{root_path_user}.$path);
			while (false !== ($file = readdir($handle))) {
				if(stristr($file,'.jpg')!==false){
					$images[] = $file;
				}
			}
		}?>
		<div id="topimg"><img src="<?=$path?>/<?=$images[0]?>" alt="<?=$t{site}{topimg_alt}?>" /></div>
		<script type="text/javascript">
		drf.push(function(){
			var mySlideShow = new slideShow($E('#topimg img'), {
				path:'<?=$path?>/',
				imgs:'<?=implode(',',$images)?>'.split(',')
			});
		});
		</script>

	PHP-Beispiel mit random:
		<?if($t{site}{slideshow}){ 
			$path = '/images/slides/'.$t{site}{slideshow}; // ohne slash am ende...
			$images = array();
			$handle = opendir($t{root_path_user}.$path);
			while (false !== ($file = readdir($handle))) {
				if(stristr($file,'.jpg')!==false){
					$images[] = $file;
				}
			}
		}?>
		<div id="topimg"><img src="<?=$path?>/<?=$images[rand(0,sizeof($images)-1)]?>" alt="<?=$t{site}{topimg_alt}?>" /></div>
		<script type="text/javascript">
		drf.push(function(){
			var mySlideShow = new slideShow($E('#topimg img'), {
				path:'<?=$path?>/',
				imgs:'<?=implode(',',$images)?>'.split(','),
				random:true
			});
		});
		</script>
/////////////////////////////////////////////////////////////////////////////////*/
var slideShow = new Class({
	options: {
		slidetime: 1.2,                    // Überblende-Zeit in Sekunden
		swaptime: 5,                       // Abstand zwischen den Überblendungen in Sekunden
		transition: Fx.Transitions.linear, // SlideEffect (http://docs.mootools.net/Effects/Fx-Transitions.js)
		path: '',                          // der pfad in dem die Bilder liegen (falls kein Pfad "" angeben)
		imgs: [],                          // ein Array mit allen Bildern (wird später an den pfad angehängt)
		random: false                      // Zufällig? ((c)Wetz) => true/false
	},
	initialize: function(obj, options){
		this.obj = $(obj);
		this.setOptions(options);
		this.wrapper = new Element('div',{id:this.obj.getProperty('id'),'class':this.obj.getProperty('class')}).injectBefore(this.obj);
		this.obj.setProperty('id','');
		if(this.wrapper.getStyle('position')!="absolute"){
			this.wrapper.setStyle('position','relative');
		}
		this.obj.setProperty('class','');
		this.obj.injectInside(this.wrapper);
		this.wrapper.setStyles(this.obj.getStyles('width','height'));
		this.obj2 = new Element('img').injectInside(this.wrapper);
		this.obj.setStyles({
			position:'absolute',
			top:0,
			left:0
		});
		this.obj2.setStyles({
			position:'absolute',
			top:0,
			left:0
		});
		this.act_number = 0;
		this.slider = new Fx.Style(this.obj2, 'opacity', {duration:this.options.slidetime*1000,transition:this.options.transition});
		this.slider.set(0);
		this.inter = false;
		this.obj2.addEvent('load',this.imgOnLoad.bind(this));
		this.obj2.setProperty('src',this.obj.getProperty('src'));
		this.was_random = new Array();
	},
	run: function(){
		this.inter = false;
		if(this.options.random){
			if(this.options.imgs.length>=2){
				for(i=0;i<200;i++){
					var r=Math.floor(Math.random()*(this.options.imgs.length));
					if(r!=this.act_number){
						var flag = false;
						for(j=0;j<this.was_random.length;j++){
							if(r==this.was_random[j]){
								flag = true;
							}
						}
						if(!flag){
							break;
						}
					} 
				}
				this.was_random.push(r);
				if(this.was_random.length>=this.options.imgs.length){
					this.was_random = new Array();
				}
				this.act_number = r;
			}
			else{
				this.act_number = 0;
			}
		}
		else{
			this.act_number++;
			if(this.act_number>this.options.imgs.length-1){
				this.act_number = 0;
			}
		}
		this.obj2.setProperty('src',this.options.path+this.options.imgs[this.act_number]);
	},
	afterRun: function(){
		this.obj.setProperty('src',this.obj2.getProperty('src'));
		this.slider.set.delay(100,this.slider,0);
	},
	imgOnLoad: function(){
		if(this.inter==false){
			this.inter = this.run.delay(this.options.swaptime*1000,this);
			this.slider.start(1);
			this.afterRun.delay((this.options.slidetime*1000)+100,this);
		}
	}
});
slideShow.implement(new Options);