/**
*
*
*
*/
(function($){
	
	var FIREBUG 	= false;
	var VERSION 	= "0.1a";
	var URL 		= "www.pixelheimat.de";
	
	if(window.console && window.console.firebug)
		FIREBUG = true;
	
	var PiXELplayer = function(element, options) {
		
		var elem = element;
		var obj = this;
		var currentMarker = $('.marker');
		
		// Menge an Bilder
		var img_count = 0;
		
		// Default
		var settings = $.extend({
			fancyBox: 				true,
			highlightColorkey: 		"blue"
			
		}, options || {});

		/**
		* 
		*
		*
		*/
		var show = function(e) {
			if(e != null && isNaN(e)){
				e.preventDefault();
				this.blur();
			}
			
			var left = 0;
			var _this = $(this);


			
			
			
			if($('#bmwplayer ul li').length  > 6){
				left = parseInt($(this).position().left);
				
				if(parseInt($('#bmwplayer' + ' .slide').position().left) < 0)
					left = parseInt($(this).position().left) + parseInt($('#bmwplayer' + ' .slide').position().left);

				if(left == 525 && parseInt($('#bmwplayer' + ' .slide').position().left) +  parseInt($('#bmwplayer' + ' .slide').width()) > 640){
						left -= 105;
						pos = parseInt($('#bmwplayer' + ' .slide').position().left) - 105;
					
						$('#bmwplayer' + ' .slide').supremate({
							left: pos +'px'
						}, 1000	, function(){
								check_slide();
							});
				}
				else if(left == 0 && parseInt($('#bmwplayer' + ' .slide').position().left) < 0){
					
					left += 105;
					pos = parseInt($('#bmwplayer' + ' .slide').position().left) + 105;
				
					$('#bmwplayer' + ' .slide').supremate({
						left: pos +'px'
					}, 1000, function(){
						check_slide();
					});
				}
					
			}	
			else{
				left = parseInt($(this).position().left) +  parseInt($('#bmwplayer' + ' ul').position().left) - 10 ;
				
			}

			
			$('#bmwplayer' + ' .pixelplayerCurrent').removeClass('pixelplayerCurrent');
			$(this).parent().addClass('pixelplayerCurrent');
			
			var image  = $(this).find('img').attr('src');

			$('#bmwplayer div.stage img').css('z-index', 2).delay(200).fadeOut('slow', function(){
				$(this).remove();
			});
			
				$('#bmwplayer' + ' .marker').supremate({
					left: left +'px'
				}, 1000, function(){

				});
			

			
			$('<img>').attr('src', image).css({'z-index': 1, 'display': 'none'}).appendTo('#bmwplayer div.stage').fadeIn();





       };


		var check_slide = function(){
			if(parseInt($('#bmwplayer' + ' .slide').position().left) < 0){
				$('#bmwplayer .left').show();
			}
			else {
				$('#bmwplayer .left').hide();
			}

			if(parseInt($('#bmwplayer' + ' .slide').position().left) + parseInt($('#bmwplayer' + ' .slide').width()) > 640){
				$('#bmwplayer .right').show();
			}
			else {
				$('#bmwplayer .right').hide();
			}
		}



		/**
		* 
		*
		*
		*/
		var scroll_right = function(e){
			if(e != null && isNaN(e)){
				e.preventDefault();
				this.blur();
			}
			
			
			if($('#bmwplayer' + ' .slide').is(':animated'))
				return false;
			
			// Nur Marker verschieben, solange er noch nicht ganz rechts steht
			if($('#bmwplayer' + ' .marker').position().left < 105 * 4){
				
				// neue Zielposition für den Marker
				var leftPos = $('#bmwplayer' + ' .marker').position().left +  105;
				
				// Marker fährt zur neuen Zielposition
				$('#bmwplayer' + ' .marker').supremate({
					left: leftPos +'px'
				}, 1000, function(){
				
					// neues Bild an Zielposition markieren
					var next 	= $('#bmwplayer' + ' .pixelplayerCurrent').next();
				
					// Markierung beim alten Bild entfernen
					$('#bmwplayer' + ' .pixelplayerCurrent').removeClass('pixelplayerCurrent');
				
					// Bildpfad auslesen
					var image 	= next.addClass('pixelplayerCurrent').find('img').attr('src');

					// altes Bild ausblenden und entfernen
					$('#bmwplayer div.stage img').css('z-index', 2).delay(200).fadeOut('slow', function(){
						$(this).remove();
					});
				
					// neues Bild einblenden
					$('<img>').attr('src', image).css({'z-index': 1, 'display': 'none'}).appendTo('#bmwplayer div.stage').fadeIn();
				});
			}
			else{
				var width = $('#bmwplayer' + ' .slide').css('width');
				var offset = 105;
		
				
				var pos = $('#bmwplayer' + ' .slide').position().left - offset;
				
				if(pos < 0){
					$('#bmwplayer .left').show();	
				}
				

				if(parseInt(width) + pos > 525){
					$('#bmwplayer' + ' .slide').supremate({
						left: pos +'px'
					}, 1000, function(){
						
						check_slide();
						
						var next 	= $('#bmwplayer' + ' .pixelplayerCurrent').next();
						$('#bmwplayer' + ' .pixelplayerCurrent').removeClass('pixelplayerCurrent');
						var image 	= next.addClass('pixelplayerCurrent').find('img').attr('src');
						
						var width = $('#bmwplayer' + ' .slide').css('width');
						var pos = $('#bmwplayer' + ' .slide').position().left - offset;
						if(parseInt(width) + pos <= 525){
							//$('#bmwplayer .right').hide();
						}
						
						$('#bmwplayer div.stage img').css('z-index', 2).delay(200).fadeOut('slow', function(){
							$(this).remove();
						});

						$('<img>').attr('src', image).css({'z-index': 1, 'display': 'none'}).appendTo('#bmwplayer div.stage').fadeIn();
					});	
				}
				else{
					
					var next 	= $('#bmwplayer' + ' .pixelplayerCurrent').next();
					$('#bmwplayer' + ' .pixelplayerCurrent').removeClass('pixelplayerCurrent');
					var image 	= next.addClass('pixelplayerCurrent').find('img').attr('src');
					
					var leftPos = $('#bmwplayer' + ' .marker').position().left +  105;
					$('#bmwplayer' + ' .marker').supremate({
						left: leftPos +'px'
					}, 1000);
					
					$('#bmwplayer .right').hide();
					
					$('#bmwplayer div.stage img').css('z-index', 2).delay(200).fadeOut('slow', function(){
						$(this).remove();
					});

					$('<img>').attr('src', image).css({'z-index': 1, 'display': 'none'}).appendTo('#bmwplayer div.stage').fadeIn();
				}

				
			}
			
			
			
		}



		/**
		* 
		*
		*
		*/
		var scroll_left = function(e){
			if(e != null && isNaN(e)){
				e.preventDefault();
				this.blur();
			}
			
			if($('#bmwplayer' + ' .slide').is(':animated'))
				return false;
			
			var width = $('#bmwplayer' + ' .slide').css('width');
			var offset = 105;
			

			if($('#bmwplayer' + ' .slide').position().left + parseInt(width) >= 600){
				$('#bmwplayer .right').show();
			}
			// Nur Marker verschieben, solange er noch nicht ganz rechts steht
			
			if($('#bmwplayer' + ' .marker').position().left == offset * 5){
				
				// neue Zielposition für den Marker
				var leftPos = $('#bmwplayer' + ' .marker').position().left -  offset;

				// Marker fährt zur neuen Zielposition
				$('#bmwplayer' + ' .marker').supremate({
					left: leftPos +'px'
				}, 1000, function(){
				
					// neues Bild an Zielposition markieren
					var prev 	= $('#bmwplayer' + ' .pixelplayerCurrent').prev();
				
					// Markierung beim alten Bild entfernen
					$('#bmwplayer' + ' .pixelplayerCurrent').removeClass('pixelplayerCurrent');
				
					// Bildpfad auslesen
					var image 	= prev.addClass('pixelplayerCurrent').find('img').attr('src');

					// altes Bild ausblenden und entfernen
					$('#bmwplayer div.stage img').css('z-index', 2).delay(200).fadeOut('slow', function(){
						$(this).remove();
					});
				
					// neues Bild einblenden
					$('<img>').attr('src', image).css({'z-index': 1, 'display': 'none'}).appendTo('#bmwplayer div.stage').fadeIn();
					
					if($('#bmwplayer' + ' .marker').position().left == 0){
						$('#bmwplayer .left').hide();
					}
				});
				
				
			}
			else if($('#bmwplayer' + ' .slide').position().left < 0){


				var pos = $('#bmwplayer' + ' .slide').position().left + offset;
				

			
				$('#bmwplayer' + ' .slide').supremate({
					left: pos +'px'
				}, 1000, function(){
					check_slide();
					
					var prev 	= $('#bmwplayer' + ' .pixelplayerCurrent').prev();
					$('#bmwplayer' + ' .pixelplayerCurrent').removeClass('pixelplayerCurrent');
					var image 	= prev.addClass('pixelplayerCurrent').find('img').attr('src');
					
					var width = $('#bmwplayer' + ' .slide').css('width');
					var pos = $('#bmwplayer' + ' .slide').position().left + offset;

					
					$('#bmwplayer div.stage img').css('z-index', 2).delay(200).fadeOut('slow', function(){
						$(this).remove();
					});

					$('<img>').attr('src', image).css({'z-index': 1, 'display': 'none'}).appendTo('#bmwplayer div.stage').fadeIn();
					

					

				});	
		

				

			}
			else{

				// neue Zielposition für den Marker
				var leftPos = $('#bmwplayer' + ' .marker').position().left -  offset;

				// Marker fährt zur neuen Zielposition
				$('#bmwplayer' + ' .marker').supremate({
					left: leftPos +'px'
				}, 1000, function(){
				
					// neues Bild an Zielposition markieren
					var prev 	= $('#bmwplayer' + ' .pixelplayerCurrent').prev();
				
					// Markierung beim alten Bild entfernen
					$('#bmwplayer' + ' .pixelplayerCurrent').removeClass('pixelplayerCurrent');
				
					// Bildpfad auslesen
					var image 	= prev.addClass('pixelplayerCurrent').find('img').attr('src');

					// altes Bild ausblenden und entfernen
					$('#bmwplayer div.stage img').css('z-index', 2).delay(200).fadeOut('slow', function(){
						$(this).remove();
					});
				
					// neues Bild einblenden
					$('<img>').attr('src', image).css({'z-index': 1, 'display': 'none'}).appendTo('#bmwplayer div.stage').fadeIn();
					
					if($('#bmwplayer' + ' .marker').position().left == 0){
						$('#bmwplayer .left').hide();
					}
				});
				
				
				
			}

		}

		
		/**
		* Initialisierung vom PiXELplayer
		*
		*
		*/
		var init = function() {
			var img_width	= 105;
			var img_count	= $('#bmwplayer ul li').length;

			$('#bmwplayer ul').css('width', (img_count * img_width) +'px');

			if(parseInt($('#bmwplayer ul').css('width')) < 640){
				$('#bmwplayer ul').css('left', 640/2 -  parseInt($('#bmwplayer ul').css('width'))/2);
				$('#bmwplayer .marker').css('left', parseInt($('#bmwplayer ul').css('left')) -10);
			}
			else{
				$('#bmwplayer ul').css('left', 10);
				$('#bmwplayer .right').show();
			}

		
			var images = $(elem).find('li a');
			
			images.click(show);
			
			$(elem).find('a.right').click(scroll_right);
			$(elem).find('a.left').click(scroll_left);
			
			this.count = images.length;
			
			if(FIREBUG)
				console.info('PiXELplayer ' + VERSION + ' (' + URL + ') initialisiert: ' + this.count + ' Bilder');
	    };
	   
		$(init);
   };

	/**
	*
	*
	*
	*/
	$.fn.pixelplayer = function(options){
		return this.each(function() {
			var element = $(this);

			// Return early if this element already has a plugin instance
			if (element.data('pixelplayer')) return;

			// pass options to plugin constructor
			var pixelplayer = new PiXELplayer(this, options);

			// Store plugin object in this element's data
			element.data('pixelplayer', pixelplayer);

       });
   };
})(jQuery);




(function($){$.fn.supremate=function(properties,speed,easing,callback){var element=this;duration=calcDuration(element,properties,speed);$(element).animate(properties,duration,easing,callback);function calcDuration(element,properties,speed){before=measurePosition(element);cloned=element.clone().insertBefore(element);element.hide();$(cloned).animate(properties,0);after=measurePosition(cloned);cloned.remove();element.show();distance=calcDistance(before,after);return distance/(speed/1000)}function calcDistance(elem1,elem2){var max=distance=0;$.each(elem1,function(key,value){distance=Math.abs(elem1[key]-elem2[key]);max=(distance>max)?distance:max});return max}function measurePosition(elem){return{top:$(elem).offset().top,left:$(elem).offset().left,width:$(elem).width(),height:$(elem).height()}}}})(jQuery);
