(function($) {
    
    $.slider = function() {

		/**
		 * @description
		 * Slidet zu einer bestimmten Grafik
		 *
		 * @param required      : string | int slideTo
		 * @param required      : bool openSlide
		 *
		 * @return              : none
		 */
        var _slide = function(slideTo, openSlide) {

			// Hole die Nummer des aktuellen Slides
            var pointer = Number($('#sliderContainer input[name="pointer"]').val());

			// Hole die Anzahl aller Slides
            var slides = $('#sliderContainer .slide').length;

			// Der nächste Slide
            var next;

            switch (slideTo) {

				// Nächster
                case 'next':
					// Erhöhe um 1
					// Falls bei Maximum, setze auf Minimum
                    next = (pointer == slides) ? 1 : pointer+1;
                break;

				// Vorheriger
                case 'previous':
					// Werringer um 1
					// Falls bei 1, setze auf Maximum
                    next = (pointer == 1) ? slides : pointer-1;
                break;

				// Bestimmter
                default:
					// Setze auf bestimmten Wert
                    next = slideTo;
                break;

            }

			// Falls der nächste Slider nicht der selbe ist
            if (next != pointer) {

                $('#sliderContainer input[name="pointer"]').val(next);

                var pos = 517*(next-1)*-1+70;

				// Animiere die Navigation
                $('#sliderOverhang').animate({
                 	left: pos+'px'
            	});

            }
			
			// Falls slide geöffnet werden soll
			if (openSlide) {
				
				if ($('#sliderContainer .slide:eq('+(next-1)+')').hasClass('onFocus')) {
					
					$('#sliderContainer .slide').removeClass('onFocus').removeClass('offFocus');
					
				} else {
					
					$('#sliderContainer .slide').removeClass('onFocus').addClass('offFocus')
					
					$('#sliderContainer .slide:eq('+(next-1)+')').removeClass('offFocus').addClass('onFocus');
					
				}
			
			// Ansonsten
			} else {
				
				$('#sliderContainer .slide').removeClass('onFocus').removeClass('offFocus');
				
			}

        };

		// Verhalten bei Klick auf Button
        $('#sliderContainer .btn').click(function() {

            if ($(this).hasClass('btnPrevious')) {
                _slide('previous', false);
            } else if ($(this).hasClass('btnNext')) {
                _slide('next', false);
            }

        });
		
		// Verhalten bei Klick auf Slide-Image
		$('#sliderContainer .slide img').click(function() {
            var className = $(this).parent('.slide').attr('class').split(' ');
            var slideTo = Number(className[1].replace('slideTo_', ''));
            _slide(slideTo, true);
        });


    }

})(jQuery);
