jQuery.jSlideshow = {
	opened: false,
	options: {},
	images: [],
	activated: 0,
	run: false,
	interval: "",
	autoplay: true,
	show: false,
	addImages: function(){
		jQuery('a').each(function(key,item){
			if(this.rel == 'jSlideshow'){
				n = jQuery.jSlideshow.images.length;
				jQuery.jSlideshow.images[n] = new Image();
				jQuery.jSlideshow.images[n].src = this.href;
				jQuery(this).click(function(){
					try {
						i = 0;
						img = this;
						jQuery.each(jQuery.jSlideshow.images, function(key,item){
							if(item.src == img.href){
								i = key;
							}
						});
						jQuery.jSlideshow.activated = i;
						jQuery.jSlideshow.showImage(i);
					}
					finally {
						return false;
					}
				});
			} else if(this.rel == 'jSlideshow_Start') {
              			jQuery(this).click(function(){
					try {
						jQuery.jSlideshow.showImage(0);
					}
					finally {
						return false;
					}
				});
           		}
		});
	},
	fadeImage: function(n){
		var src = jQuery.jSlideshow.images[n].src;
		var width = jQuery.jSlideshow.images[n].width;
		var height = jQuery.jSlideshow.images[n].height;
		if (jQuery.jSlideshow.options.fading) {
			if (jQuery.jSlideshow.show == false) {
				jQuery.jSlideshow.show = true;
				jQuery('#jSimage').css({
					width: parseInt(width) - parseInt(jQuery.jSlideshow.options.distance),
					marginLeft: -parseInt(width) / 2,
					height: height,
					backgroundImage: 'url(' + src + ')',
					backgroundPosition: '0px'
				}).animate({
					backgroundPosition: '-' + parseInt(jQuery.jSlideshow.options.distance) + 'px'
				}, {
					duration: 1000
				});
			}
			else {
				jQuery.jSlideshow.show = true;
				jQuery('#jSimage').animate({
					opacity: 0
				},{
					duration: 1000,
					complete: function(){
						jQuery('#jSimage').css({
							width: parseInt(width) - parseInt(jQuery.jSlideshow.options.distance),
							marginLeft: -parseInt(width) / 2,
							height: height,
							backgroundImage: 'url(' + src + ')',
							backgroundPosition: '0px'
						}).animate({
							opacity: 1
						}, {
							duration: 1000,
							complete: function(){
								jQuery('#jSimage').animate({
									backgroundPosition: '-' + parseInt(jQuery.jSlideshow.options.distance) + 'px'
								}, {
									duration: 1000
								});
							}
						});
					}
				})
			}
		}
		else{
			jQuery('#jSimage').css('backgroundImage', 'url('+src+')');
		}
	},
	panelControl: function(){
		arr = {
			0: 'jSfirst',
			1: 'jSprev',
			2: 'jSnext',
			3: 'jSlast'
		};
		design = jQuery.jSlideshow.options.design;
		jQuery.each(arr, function(key,item){
			if(jQuery('#'+this+design).hasClass(this+"_deaktiv"+design)){
				jQuery('#'+this+design).removeClass(this+"_deaktiv"+design).addClass(this+'_aktiv'+design);
			}
			else{
				jQuery('#'+this+jQuery.jSlideshow.options.design).removeClass(this+"_aktiv"+jQuery.jSlideshow.options.design).addClass(this+"_deaktiv"+jQuery.jSlideshow.options.design);
			}
		});
	},
	getIndex: function(n){
		design = jQuery.jSlideshow.options.design;
		jQuery('#jSindex'+design).text((n+1)+'/'+jQuery.jSlideshow.images.length);
	},
	nextImage: function(){
		temp = false;
		if(jQuery.jSlideshow.activated < ( parseInt(jQuery.jSlideshow.images.length) -1 ) ) {
			n = parseInt(jQuery.jSlideshow.activated) + 1;
			temp = true;
		}
		else if(jQuery.jSlideshow.options.loop){
			n = 0;
			temp = true;
		}
		else if(jQuery.jSlideshow.run){
			jQuery.jSlideshow.play();
		}
		
		if(temp){
			jQuery.jSlideshow.activated = n;
			jQuery.jSlideshow.showImage(n);
		}
	},
	prevImage: function(){
		temp = false;
		if(jQuery.jSlideshow.activated > 0 ){
			n = parseInt(jQuery.jSlideshow.activated) - 1;
			temp = true;
		}
		else if(jQuery.jSlideshow.options.loop){
			n = parseInt(jQuery.jSlideshow.images.length) -1;
			temp = true;
		}
		
		if(temp){
			jQuery.jSlideshow.activated = n;
			jQuery.jSlideshow.showImage(n);
		}
	},
	lastImage: function(){
		if(jQuery.jSlideshow.activated < ( parseInt(jQuery.jSlideshow.images.length) -1 )){
			n = parseInt(jQuery.jSlideshow.images.length) -1;
			jQuery.jSlideshow.activated = n;
			jQuery.jSlideshow.showImage(n);
		}
	},
	firstImage: function(){
		if(jQuery.jSlideshow.activated > 0){
			n = 0;
			jQuery.jSlideshow.activated = n;
			jQuery.jSlideshow.showImage(n);
		}
	},
	play: function(){
		jQuery.jSlideshow.panelControl();
		design = jQuery.jSlideshow.options.design;
		if(!jQuery.jSlideshow.run){
			jQuery.jSlideshow.interval = window.setInterval(jQuery.jSlideshow.playnow, 5000 + parseInt(jQuery.jSlideshow.options.duration));
			jQuery.jSlideshow.run = true;
			jQuery('#jScontrol'+design).removeClass('play'+design).addClass('stop'+design);
		}
		else{
			window.clearInterval(jQuery.jSlideshow.interval);
			jQuery.jSlideshow.run = false;
			jQuery('#jScontrol'+design).removeClass('stop'+design).addClass('play'+design);
			if(jQuery.jSlideshow.options.autoplay){
				jQuery.jSlideshow.options.autoplay = false;
			}
		}
	},
	playnow: function(){
		jQuery.jSlideshow.nextImage();
	},
	showImage: function(n){
		design = jQuery.jSlideshow.options.design;
		var src = jQuery.jSlideshow.images[n].src;
		var width = jQuery.jSlideshow.images[n].width;
		var height = jQuery.jSlideshow.images[n].height;
		jQuery.jSlideshow.getIndex(n);
		if(jQuery('#jSlideshow').css('display') == 'none'){
			jQuery('#jSlideshow').css('display','block');
			if (jQuery.jSlideshow.options.panel) {
				jQuery('#jSpanel'+design).css('display', 'block');
			}
			else {
				jQuery('#jSpanel'+design).css('display','none');
			}
			jQuery('#jSimage').css({
				display: 'block'
			}).animate({
				width: width - parseInt(jQuery.jSlideshow.options.distance),
				height: height,
				left: '50%',
				marginLeft: -width/2
			},1500, function(){
				jQuery.jSlideshow.fadeImage(n);
			});
		} else {
			jQuery.jSlideshow.fadeImage(n);
		}
		if(jQuery.jSlideshow.options.autoplay && !jQuery.jSlideshow.run){
			jQuery.jSlideshow.play();
		}
	},
	close: function(){
		jQuery('#jSimage').css({
			backgroundImage: 'none'
		}).animate({
			marginLeft: 0,
			width: '0px',
			height: '0px',
			opacity: 0
		}, 1500, function() {
			jQuery('#jSlideshow').add('#jSpanel'+design).css('display','none');
			jQuery('#jSimage').css({
				opacity: 1,
				display: 'none'
			});
		});
		jQuery.jSlideshow.show = false;
		design = jQuery.jSlideshow.options.design;
		if (jQuery.jSlideshow.run) {
			jQuery.jSlideshow.play();
		}
		jQuery.jSlideshow.options.autoplay = jQuery.jSlideshow.autoplay;
	},
	setEvents: function(){
		jQuery.jSlideshow.addImages();
		design = jQuery.jSlideshow.options.design;
		if (jQuery.jSlideshow.options.panel) {
			jQuery('#jSfirst'+design).addClass('jSfirst_aktiv'+design).click(function(){
				if (!jQuery.jSlideshow.run) {
					jQuery.jSlideshow.firstImage();
				}
			});
			jQuery('#jSprev'+design).addClass('jSprev_aktiv'+design).click(function(){
				if (!jQuery.jSlideshow.run) {
					jQuery.jSlideshow.prevImage();
				}
			});
			jQuery('#jScontrol'+design).click(function(){
				jQuery.jSlideshow.play();
			});
			jQuery('#jSnext'+design).addClass('jSnext_aktiv'+design).click(function(){
				if (!jQuery.jSlideshow.run) {
					jQuery.jSlideshow.nextImage();
				}
			});
			jQuery('#jSlast'+design).addClass('jSlast_aktiv'+design).click(function(){
				if (!jQuery.jSlideshow.run) {
					jQuery.jSlideshow.lastImage();
				}
			});
			jQuery('#jSclose'+design).click(function(){
				jQuery.jSlideshow.close();
			});
		}
		else {
			jQuery('#jSlideshow').click(function(){
				if (jQuery.jSlideshow.show) {
					n = jQuery.jSlideshow.images.length;
					if (n == 1) {
						jQuery.jSlideshow.close();
					}
					else {
						jQuery.jSlideshow.nextImage();
					}
				}
			});
			jQuery(window).keydown(function(e){
				if (e.keyCode == 27) {
					jQuery.jSlideshow.close();
				}
			});
		}
	}
};
jQuery.fn.jSlideshow = function(options){
	var opt = jQuery.extend({
		autoplay: false,
		loop: false,
		fading: false,
		panel: false,
		duration: 1500,
		loadimg: "",
		distance: 150,
		option: "",
		design: ''
	}, options || {});
	
	jQuery.jSlideshow.options = opt;
	jQuery.jSlideshow.autoplay = opt.autoplay;
	
	if(jQuery.browser.msie && parseInt(jQuery.browser.version) == 6){
		jQuery.jSlideshow.options.design = '_IE';
		opt.design = '_IE';
		pos = 'absolute';
	} else{
		pos = 'fixed';
	}
	
	var ele = jQuery('<div></div>');
	var imgele = jQuery('<div></div>');
	var panelele = jQuery('<div></div>');
	ele.css({
		width: '100%',
		height: '100%',
		position: pos,
		left: '0px',
		top: '0px',
		bottom: '0px',
		right: '0px',
		zIndex: '1000',
		backgroundColor: '#000000',
		opacity: '0.5',
		display: 'none'
	}).attr('id','jSlideshow').appendTo("body");
	imgele.css({
		width: '0px',
		height: '0px',
		position: pos,
		left: '50%',
		top: '10px',
		zIndex: '1001',
		backgroundColor: '#FFFFFF',
		borderStyle: 'solid',
		boderWeight: '2px',
		borderColor: '#FFFFFF',
		textAlign: 'center',
		display: 'none'
	}).attr('id','jSimage').appendTo("body");
	panelele.attr('id','jSpanel'+opt.design).appendTo("body");
	
	arr = {
		0: 'jSfirst',
		1: 'jSprev',
		2: 'jScontrol',
		3: 'jSnext',
		4: 'jSlast',
		5: 'jSindex',
		6: 'jSclose'
	};
	
	jQuery.each(arr, function(key,item){
		jQuery('<div></div>').attr('id',item+opt.design).appendTo(panelele);
	})
	jQuery('#jScontrol').addClass('play'+opt.design);
	jQuery.jSlideshow.setEvents();	 
};

