jQuery.noConflict();

jQuery(document).ready(function(){
	jQuery('.bildbox-holder').slideShow({
		slideEl:'div.gallery li',
		linkNext:'.bildmenu a.next',
		linkPrev:'.bildmenu a.prev',
		duration:0,
		switchTime:5000,
		event:'click',
		currentEl:'.bildmenu span.current',
		allEl:'.bildmenu span.all'
	});
});

(function ($){
	jQuery.fn.slideShow = function(_options){    
		// defaults options	    
		var _options = jQuery.extend({		
			slideEl:'div.slide',		
			linkNext:'a.next',		
			linkPrev:'a.prev',		
			linkPause:'a.pause',		
			numElement:'div.slideNav li a',		
			duration:500,		
			autoSlideShow:false,		
			switchTime:3000,
			noCicle:false,
			disableClass:'no-active',
			event:'click',		
			currentEl:'span.cur',		
			allEl:'span.all'    
		},_options);
		 return this.each(function(){
			var _THIS = jQuery(this);
			var _slideEl = $(_options.slideEl, _THIS);
			
			var _linkNext = $(_options.linkNext, _THIS);
			var _linkPrev = $(_options.linkPrev, _THIS);
			var _linkPause = $(_options.linkPause, _THIS);
			var _numElement = $(_options.numElement, _THIS);
			var _currentEl = $(_options.currentEl, _THIS);
			var _allEl = $(_options.allEl, _THIS)

			var _duration = _options.duration;
			var _switchTime = _options.switchTime;
			var _numElActive, _timer = false, _hover = false, _current = 0, _next = 0, _pause = true;
			
			if (!_slideEl.filter('.active').length) {
				_slideEl.eq(0).addClass('active');
				_current = 0;
			} else {
				_current = _slideEl.index(_slideEl.filter('.active'));
			}
			_slideEl.not(".active").hide();
			
			if ($(_numElement).length && _options.numElement) activeNumEl();
			if (_options.autoSlideShow) {
				_pause = false;
				_timer = setTimeout(function(){nextEl()},_switchTime);
				if (_linkPause.length && _options.linkPause) _linkPause.addClass('play')	
				contentHover();
			}
			if (_options.currentEl && _currentEl.length) {
				_allEl.html(_slideEl.length);
				currentNum();
			}
			if (_linkNext.length && _options.linkNext) {
				_linkNext.click(function(){
					nextEl();
					return false;
				});
			}
			if (_options.noCicle) {
				_linkPrev.addClass('prev-'+_options.disableClass);
			}
			if (_linkPrev.length && _options.linkPrev) {	
				_linkPrev.click(function(){
					_linkNext.removeClass('next-'+_options.disableClass);
					if (!_slideEl.is(':animated') && !$(this).hasClass('prev-'+_options.disableClass)) {
						if (_timer) clearTimeout(_timer);
						_next = _current-1;
						if (_next < 0) _next = _slideEl.length-1;
						if (_options.noCicle && _next-1 < 0) {
							$(this).addClass('prev-'+_options.disableClass);
						}
						fadeElement();
						activeNumEl();
						pauseCode();
					}
					return false;
				});
			}
			if (_numElement.length && _options.numElement) {
				_numElement.bind(_options.event, function(){
					if (!_slideEl.is(':animated')) {
						_next = _numElement.index($(this));
						_linkNext.removeClass('next-'+_options.disableClass);
						_linkPrev.removeClass('prev-'+_options.disableClass);
						if (_options.noCicle && _next+1 >= _slideEl.length) _linkNext.addClass('next-'+_options.disableClass);
						if (_options.noCicle && _next-1 < 0) _linkPrev.addClass('prev-'+_options.disableClass);
						if (_timer) clearTimeout(_timer);
						if (!_slideEl.eq(_next).hasClass("active")){
							fadeElement();
							activeNumEl();
							pauseCode();
						}
					}
					return false;
				});
			}
			if (_linkPause.length && _options.linkPause) {
				_linkPause.click(function(){
					if (!_pause) {
						$(this).removeClass('play');
						clearTimeout(_timer);
						_pause = true;
					} else {
						$(this).addClass('play');
						_timer = setTimeout(function(){nextEl()},_switchTime);
						_pause = false;
					}
					return false;
				});
			}
			function fadeElement(){
				if (_current != _next) {
					_slideEl.removeClass('active');
					_slideEl.eq(_current).addClass('hide');
					_slideEl.eq(_next).fadeIn(_duration, function(){
						_slideEl.filter('.hide').hide().removeClass('hide');
					}).addClass('active');
					_current = _next;
					if (_options.currentEl && _currentEl.length) currentNum();
				}
			};
			function currentNum() {
				_currentEl.html(_current+1);
			}
			function activeNumEl() {
				_numElement.parent().removeClass("active");
				_numElement.eq(_current).parent().addClass("active");
			};
			function nextEl(){
				_linkPrev.removeClass('prev-'+_options.disableClass);
				if (!_slideEl.is(':animated') && !_linkNext.hasClass('next-'+_options.disableClass)) {
					if (_timer) clearTimeout(_timer);
					_next = _current+1;
					if (_next == _slideEl.length) _next = 0;
					if (_options.noCicle && _next+1 >= _slideEl.length) {
						_linkNext.addClass('next-'+_options.disableClass);
					}
					fadeElement();
					activeNumEl();
					pauseCode();
				}
			};
			function pauseCode(){
				if (!_pause) {
					if (_linkPause.length && _options.linkPause) {
						if (_linkPause.hasClass('play')) {
							_timer = setTimeout(function(){nextEl()},_switchTime);
						}					
					} else {
						_timer = setTimeout(function(){nextEl()},_switchTime);
					}
				}
			}
			function contentHover() {
				_hover = true;
				_slideEl.mouseenter(function() {
					if (_timer) clearTimeout(_timer);
				}).mouseleave(function(){
					pauseCode();
				});			
			}
			_slideEl.find('a').click(function (){
				_linkNext.trigger(_options.event);
				return false;
			});
		 });
	}
})(jQuery);
