jQuery.fn.gallery = function(s,slideshow,styling) {	
		var gallery = this;
		var img = [];
		var currentImage = 0;
		var speed = 1000; if(s) speed = parseInt(s,10);
		var ssOption = '<li><a href="#" id="playstop" title="Play/Stop SlideShow">&nbsp;</a></li>';
		var take = 0;
		if(slideshow==undefined) {
			slideShowSpeed = speed*2.5;
		} else if(slideshow) {
			slideShowSpeed = slideshow;
		} else if (!slideshow) {
			ssOption = '';
			take = 1;
		}
/*<div id="img-description" style=""></div>		*/
		var galleryStructure = '<div id="img-gallery" align="center"><div class="inner"><div></div><div><div class="desc-wrap"></div><div class="img-wrap"><a href="" target="_blank" class="bannerLink" style=""><img style="display:none;" /></a></div></div><div><ul class="gallery-buttons">'+ssOption+'</ul></div></div></div>';
		var started = false;
		$(gallery).each(function(i){
			
			$(this).hide();
			img[i] = [this.src,this.alt,$(this).attr('longdesc'),$(this).parents('li:first').attr('class')];
			this.onload = function(){
				$(this).remove();
			}
			
			$(function(){
				$(this).remove();
/*				if(!started) {
				start();
				started = true;
				}*/
			});
/*			gallery[gallery.length-1].onload = function(){
				log(4445454);
			}*/


			setTimeout(function(){
				if(!started) start();
				started = true;
			},2000)
			
			
		})
		function start(){
			// EDITABLE:
			$('#galleryWrap').append(galleryStructure); // DESTINATION OF GALLERY (YOU CAN CHANGE THIS)
			// --------
			
			$(img).each(function(i){
				$('#img-gallery ul').append('<li><a class="galleryButton jsLink" href="#img' + (i + 1) + '">' + (i + 1) + '</a></li>');
			})
//			changeImage(0);
			$('#img-gallery ul a:not(#playstop)').click(function(){
				var imgToLoad = $(this).attr('href');
				imgToLoad = imgToLoad.split('#');
				imgToLoad = parseInt(imgToLoad[1].substr(3)) - 1;
				changeImage(imgToLoad);
				currentImage = imgToLoad;
				stopSlideShow();				
				startSlideShow();				
				if(window['ssr']) $('#img-gallery ul a#playstop').click();
				return false;
			})
			$('#img-gallery ul a#playstop').toggle(function(){
				$(this).toggleClass('stop');
				startSlideShow();
				return false;
			}, function(){
				$(this).toggleClass('stop');
				stopSlideShow();
				return false;
			})
			
			$('#img-gallery ul a#playstop').toggleClass('stop');
			startSlideShow();
			
			function changeImage(n, callback){
				$('#img-gallery #img-description p').fadeOut(speed / 5);
				$('#img-gallery ul a').removeClass('active');
				$('#img-gallery img').fadeOut(speed / 4, function(){
					var originalWidth = $('#img-gallery img').width();
					$('#img-gallery img').attr('src', img[n][0]).attr('alt', img[n][1]);
					$('#img-gallery a.bannerLink:first').attr('href', img[n][3]).attr('alt', img[n][2]);
					var width = $('#img-gallery img').width();
					var height = $('#img-gallery img').height();
					if (width == originalWidth) { fadeInAll(true); } else { animate(); }
					function animate(){
						fadeInAll(true);
						/*$('#img-gallery ul').fadeOut(speed / 2, function(){
							$('#img-gallery').animate({
								width: width,
								height: height
							}, speed / 2, function(){
								fadeInAll(true)
							})
						})*/
					}
					function fadeInAll(fromAnimate){
						var localSpeed = speed;
						if (!fromAnimate) 
							localSpeed = speed / 2;
						$('#img-gallery #img-description').html('<p>' + img[n][2] + '</p>');
						$('#img-gallery img').fadeIn(localSpeed / 2);
						
						$('#img-gallery ul').fadeIn(localSpeed / 2);
						$('#img-gallery ul a:eq(' + (n + 1 - take) + ')').addClass('active');
						
					

						$('#img-gallery #img-description p').fadeIn(speed / 5);

						if (callback) callback();
						if (styling) styling();
					}
				})


				
				if (img[n][2] == undefined) {
					$('#img-gallery #img-description p').hide();
				}
				else {
					$('#img-gallery #img-description p').show();
				}
				
				
			}
			function startSlideShow(){
			     imgToLoad = currentImage;
				 if(imgToLoad == gallery.length) {
    				 imgToLoad = 0;
    				 currentImage = 0;
    			 }
			     window['galleryTimeout'] = setTimeout(function(){startSlideShow()}, slideShowSpeed)
			     changeImage(imgToLoad, function(){eval(galleryTimeout);});
			     currentImage++;
			}
			function stopSlideShow(){
				window['ssr'] = false;
				clearTimeout(eval(galleryTimeout));
			}
		}
}


