function mg_addEvent(obj, evType, fn, useCapture) {
  if (obj.addEventListener) {
   obj.addEventListener(evType, fn, useCapture);
   return true;
  } else if (obj.attachEvent) {
   var r = obj.attachEvent("on"+evType, fn);
   return r;
  } else {
   alert('Handler could not be attached');
  }
 }

 function mg_removeEvent(obj, evType, fn, useCapture){
  if (obj.removeEventListener){
   obj.removeEventListener(evType, fn, useCapture);
   return true;
  } else if (obj.detachEvent){
   var r = obj.detachEvent('on' + evType, fn);
   return r;
  } else {
   alert('Handler could not be removed');
  }
 }


if (!window.console || !console.firebug)
{
	var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml",
	"group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"];		
	window.console = {};
	for (var i = 0; i < names.length; ++i)
		window.console[names[i]] = function() {}
}

var Slideshow = {
	initialize: function(folder,duration,currentImg,imageString) {
		
		
		this.obj = this;
		this.imageString = imageString;
		//alert(this.imageString);
		this.container = $('slideShow');
		this.img = $('slidePic');
		this.folder = (folder)?folder:'dummy';
		this.duration = (duration)?duration:10000;
		this.currentImg = (currentImg)?currentImg:0;
		//this.phpfile = '/orselina.com/htdocs/inc/img/slideshow/slideshow.php';
		this.isActive = true;
		this.clone = this.img.clone();
		this.clone.setProperty('id','imgClone');
		this.clone.injectBefore(this.img);
		this.imgText = $('slideText');
		this.imgNavi = $('slideNavi');
		this.imgNaviId = 'slideId';
		this.images = {};
		this.loadImages(this.folder);
	},
	loadImages: function() {
		var imgObj = Json.evaluate(this.imageString);

		Slideshow.addImages(imgObj.images);
		
	},
	addImages: function(images) {
		/* addImages gefüttert durch loadImages -> via json-obj */
		/* {"images":[{"file":"inc/img/slideshow/dummy/01.jpg", "text":"bu1"},{"file":"inc/img/slideshow/dummy/02.jpg", "text":"bu2"},{"file":"inc/img/slideshow/dummy/03.jpg", "text":"bu3"}]} */
		this.images = images;
		this.maxImg = this.images.length;
		this.imgArray = new Array();
		
		
		for(i=0;i<this.maxImg;i++) {
			
			this.imgArray[i] = this.images[i]['file'];
		}
		var nr = this.currentImage;
		new Asset.images(this.imgArray, {
			onComplete: function(){
				Slideshow.isActive = false;
				Slideshow.setLinks(nr);
				Slideshow.createNavi(nr);
				Slideshow.startTimer();
			}
		});
	},
	createNavi: function(nr) {
		var nr = this.validNr(nr);
		for (i=1; i <= this.maxImg; i++) {
			var li = new Element('li');
			var aclass = (i == nr+1)?'selected':'';
			var url = this.images[i-1]['file'];
			var fn = function fn(e) {
				e = new Event(e).stop();				
				Slideshow.fadeTo(this.rel);
				Slideshow.setHighlight(this.rel);
			};
			var a = new Element('a', {
				'href': url,
				'rel': i-1,
				'id': this.imgNaviId + (i-1),
				'events': { 'click': fn },
				'class': aclass
			});
			a.innerHTML = i;
			a.injectInside(li);
			li.injectInside(this.imgNavi);
		}
	},
	setLinks: function(nr) {
		var nr = this.validNr(nr);
		var nextNr = this.getNextNr(nr);
		this.img.removeEvents();
		this.img.addEvent('click', function(){
			Slideshow.resetTimer();
			Slideshow.fadeTo(nextNr);
		});
		this.setText(nr);
	},
	setHighlight: function(nr) {
		var nr = this.validNr(nr);
		$ES('a',this.imgNavi).removeClass('selected');
		$(this.imgNaviId+nr).addClass('selected');
	},
	setText: function(nr) {
		this.imgText.setHTML(this.images[nr]['text']);
	},
	validNr: function(nr) {
		return (nr)?Number(nr):Number(this.currentImg);
	},
	getNextNr: function(nr) {
		var nr = this.validNr(nr);
		var nextNr = (nr + 1 < this.maxImg)?nr+1:0;
		return nextNr;
	},
	checkNr: function(nr) {
		var nr = this.validNr(nr);
		return nr = (nr <= this.maxImg)?nr:0;
	},
	fadeTo: function( nr) {
		if (this.isActive) return;
		this.isActive = true;
		this.resetTimer();
		var nr = (nr)?this.checkNr(nr):this.getNextNr();
		var url = this.images[nr]['file'];
		this.nextImg = new Image();
		this.nextImg.src = url;
		this.nextImg.alt = this.images[nr]['text'];
		this.clone.src = url;
		var fnComplete = function() {
			Slideshow.img.src = Slideshow.nextImg.src;
			Slideshow.img.alt = Slideshow.nextImg.alt;
			Slideshow.currentImg = nr;
			Slideshow.setLinks();
			Slideshow.setHighlight();
			Slideshow.isActive = false;
			Slideshow.startTimer();
			var ieTimeOut = window.setTimeout('Slideshow.antiFlackerIe()',500);
		}
		this.fadeFx = new Fx.Style ( this.img, 'opacity', { onComplete: fnComplete } ).start(1,0);
		
	},
	antiFlackerIe: function() {
		/* der Ie braucht etwas mehr zeit zum rendern - ansonsten flackerts abundan */
		Slideshow.fadeFx.set(1);
	},
	resetTimer: function() {
		if (typeof slideshowTimer != 'undefined') {
			window.clearTimeout(slideshowTimer);
		}
	},
	startTimer: function() {
		Slideshow.resetTimer();
		slideshowTimer = window.setTimeout("Slideshow.fadeTo()", this.duration);
	}
};
