/* konfiguracja */
		var zoomImageConfig = {
			iconZoomPath: 'image/zoom/ico_zoom.gif',
			iconLoadingPath: 'image/zoom/ico_loading.gif',
			iconZoomWidth: 24,
			iconZoomHeight: 24,			
			iconClosePath: 'image/zoom/ico_close.gif',
			iconCloseWidth: 24,
			iconCloseHeight: 24,
			imgContainerStyle: 	{ // styl nadawany dla kontenera w ktrym pojawia si duy obrazek
									border: "solid 5px #E56C11"
								}
		};
	
		
		// keszuj ikonk zoom i close
		var tmpImg1 = new Image();
		tmpImg1.src = zoomImageConfig.iconZoomPath;
		var tmpImg2 = new Image(); 
		tmpImg2.src = zoomImageConfig.iconClosePath;
		
		// ustawia ikon zoomowania na miniaturce
		function createZoomIco(objTarget)
		{				
			// sprawdzam czy ikonki juz nie ma przypadkiem
			var isIcoExits = $(objTarget).up().select("div.zoom_ico_exists");
			
			// jezeli jest to nic nie robie
			if (isIcoExits.length != 0) return null;
			
			// ikona bedzie znajodowala sie w kontenerku
			var zoomIcoContainer = new Element("div");
			zoomIcoContainer.addClassName("zoom_ico_exists");
			var zoomIco = new Element("img")
			zoomIco.writeAttribute("src", zoomImageConfig.iconZoomPath);
			zoomIco.writeAttribute("alt", "Kliknij by powiększyć");						
			zoomIcoContainer.appendChild(zoomIco);
			
			// pobieram polozenie i rozmiary malego obrazka
			var position = $(objTarget).cumulativeOffset();
			var width = $(objTarget).getWidth();
			var height = $(objTarget).getHeight();						
			
			// ustawiam ikonke zoomowania w dolnym prawym rogu miniakuurki obrazka
			zoomIcoContainer.setStyle({
				position: 'absolute',
				cursor: 'pointer',							
				top: (position[1] + height - zoomImageConfig.iconZoomHeight) + "px",
				left: (position[0] + width - zoomImageConfig.iconZoomWidth) + "px",
				zIndex: 2000
			});
			
			// pokazuje ikonke zoomowania
			$(objTarget).up().appendChild(zoomIcoContainer);
			
			return zoomIcoContainer;
		};
		
		// umiesza ikone zamkniecia na powiekoszonym obrazku
		function createCloseIco(bigImgContainer) {
			// ikona bedzie w kontenerze 
			var closeImgContainer = new Element("div");
			var closeImg = new Element("img");
			closeImg.writeAttribute("src", zoomImageConfig.iconClosePath);
			closeImg.writeAttribute("alt", "Zamknij");
			closeImgContainer.appendChild(closeImg);
			
			
			
			closeImgContainer.setStyle({
				width: zoomImageConfig.iconCloseWidth+ "px",
				height: zoomImageConfig.iconCloseHeight + "px",
				top: '0px',
				left: (bigImgContainer.getWidth() - zoomImageConfig.iconCloseWidth - 10)+ "px",		
				cursor: 'pointer',
				position: 'absolute'
			});						
			
			bigImgContainer.appendChild(closeImgContainer);	
			
			// po kliknieciu na ikonce usuwam cale powiekszenie
			/* 
			closeImgContainer.observe('click', function(event){
				bigImgContainer.up().remove();
				event.stop();
				return false;				
			});
			*/
		};
		
		// funkcja wywolywana po zaladowaniu sie obrazka
		function imageLoaded(objSender, zoomIco, imgObj) 
		{
			zoomIco.down().src = zoomImageConfig.iconZoomPath;
			var bigImgContainer = new Element("div");
			bigImgContainer.addClassName("big_image_container");
			bigImgContainer.setStyle(zoomImageConfig.imgContainerStyle);
			bigImgContainer.setStyle({
				width: imgObj.width + "px",
				height: imgObj.height + "px",
				cursor: 'default',
				position: 'absolute',
				zIndex: '4000'
			});
			
			var bigImg = new Element("img");
			bigImg.writeAttribute("src", imgObj.src);
			bigImg.writeAttribute("alt", "");
			
			
			
			bigImgContainer.appendChild(bigImg);
			zoomIco.appendChild(bigImgContainer);
					
			
			bigImgContainer.setStyle({
				top: "0px",
				left: "0px"
			})
			
			var screen = new EproScreenClass();
			
			var widnowWidth = screen.getWindowWidth();
			
			
			var leftCorrect = 0;
			var topCorrect = 0;
			
			var icoCumulativeOffset = zoomIco.cumulativeOffset();
			var icoWindowOffsetWidth = icoCumulativeOffset[0] - screen.getLeftOffset();
			var icoWindowOffsetHeight = icoCumulativeOffset[1] - screen.getTopOffset();
			
			var windowWidth = screen.getWindowWidth();
			var windowHeight = screen.getWindowHeight();
			
			if (icoWindowOffsetWidth + bigImgContainer.getWidth() >= windowWidth) 
			{
				leftCorrect = -bigImgContainer.getWidth() + zoomIco.getWidth();	
			}
			
			if (icoWindowOffsetHeight + bigImgContainer.getHeight() >= windowHeight) 
			{
				topCorrect = windowHeight - (icoWindowOffsetHeight  + bigImgContainer.getHeight());
			}
			
			
			bigImgContainer.setStyle({
				marginLeft: leftCorrect + "px",
				marginTop: topCorrect + "px"	
			});
			
			createCloseIco(bigImgContainer);		
		};
		
		var closeZoomImage = function(zoomIco, windowObs) {			
			Event.stopObserving(document, 'mousemove', windowObs);
			if (zoomIco && zoomIco.visible()) zoomIco.remove();
			
		};
		
		
		/* podpina zdarzenie do ikonki */
		function eproZoomImage(objSender, bigPath)
		{			
			var zoomIco = createZoomIco(objSender, bigPath);
			
			if (zoomIco == null) return; 
			
			var ident = zoomIco.identify();
			
			var windowObserver = function(event){
				var el = event.element();				

				event.stop();

				if (!el.descendantOf(objSender.up()))
				{					
					closeZoomImage(zoomIco, windowObserver);
					//if (zoomIco && zoomIco.visible()) zoomIco.remove();					
				}
			}
			
			
			zoomIco.observe('click', function(event){
				var imgObj = new Image();
				imgObj.src = bigPath;
				zoomIco.down().src = zoomImageConfig.iconLoadingPath;
				if (imgObj.complete) // ie bug fix, jak ma obrazek skeszowany nie wyzwala zdarenia onload
				{
						imageLoaded(objSender, zoomIco, imgObj);
												
						var bigImgContainer = zoomIco.select("div.big_image_container");											
						bigImgContainer[0].observe('click', function(event){							
							closeZoomImage(zoomIco, windowObserver);
							event.stop();
						});
				}
				else
				{
					imgObj.onload = function(){
						imageLoaded(objSender, zoomIco, imgObj)
						var bigImgContainer = zoomIco.select("div.big_image_container");
						
						bigImgContainer[0].observe('click', function(event){							
							closeZoomImage(zoomIco, windowObserver);
							event.stop();				
						});
					};
				}				
				event.stop();
				return false;
			});	
		
			Event.observe(document, 'mousemove', windowObserver);
		}