	
	var MaxYScroll=false;
	var aZoomImages = new Array();
	var gZoomGrp = false;
	var gPrevZoomIndex = -1;
	var gCurZoomIndex = -1;
	var gNextZoomIndex = -1;
	
	// process pwm generated forms
	function zoomImage(pCurDiv,pInternal) 
	{
		if (typeof pInternal == "undefined") pInternal = false;
		var aZoomdata 	= pCurDiv.getAttribute('zoomdata').split("|");
		var lGroup 		= aZoomdata[0]; 
		var lImg 		= aZoomdata[1];
		var lTitle 		= unescape(aZoomdata[2]);
		var oModal		= document.getElementById('p-modal');
		
		// reset groups
		if (!pInternal)
		{
			gZoomGrp = lGroup;
			aZoomImages = new Array();
			gCurZoomIndex = -1;
			gPrevZoomIndex = -1;
			gNextZoomIndex = -1;
		}
		
		// if a group is given, find all images with this group and provide paging through the group
		if (lGroup!="none")
		{
			// get all zoomable divs
			var aDIVs = pics.findByAttribute(false, 'zoomdata', false, 1000);
			// walk through divs
			var lCnt = 0;
			for (var i=0; i<aDIVs.length; i++) 
			{
				// detect the group
				aTmpZoomData = aDIVs[i].getAttribute('zoomdata').split("|");
				if (aTmpZoomData[0]==lGroup)
				{
					// cur index
					if (aDIVs[i]==pCurDiv) {
						gCurZoomIndex = lCnt;
					} // prev but
					else if (gCurZoomIndex==-1) {
						gPrevZoomIndex = lCnt;
					} // next but
					else if (gCurZoomIndex>=0 && gNextZoomIndex==-1) {
						gNextZoomIndex = lCnt;
					}
					// remember all indezes in grp
					aZoomImages[lCnt] = new Array(aDIVs[i],aTmpZoomData[0],aTmpZoomData[1],aTmpZoomData[2]);
					// counter
					lCnt++;
				}
			}
			if (gCurZoomIndex>gNextZoomIndex) gNextZoomIndex=-1;
		}		
				
		// create elements
		if (!oModal || !pInternal) 
		{
			if (!oModal && !pInternal)
			{
				oModal = document.createElement('div');		oModal.setAttribute('id','p-modal');		document.body.appendChild(oModal);
		
				// container
				var oZoomContainer = document.createElement('div');	oZoomContainer.setAttribute('id','p-zoom-container');		document.body.appendChild(oZoomContainer);
					// header
					var oZoomHeader = document.createElement('div');	oZoomHeader.setAttribute('id','p-zoom-header');		oZoomContainer.appendChild(oZoomHeader);
						var oZoomTitle = document.createElement('div');	oZoomTitle.setAttribute('id','p-zoom-title');	oZoomTitle.innerHTML = 'Title of the Image';	oZoomHeader.appendChild(oZoomTitle);
						var oZoomClose = document.createElement('div');	oZoomClose.setAttribute('id','p-zoom-close'); oZoomClose.onclick=closeZoomImage;	oZoomClose.innerHTML = 'X';						oZoomHeader.appendChild(oZoomClose);
						var oZoomClear = document.createElement('div');	oZoomClear.setAttribute('class','clear');	oZoomHeader.appendChild(oZoomClear);
					// img
					var oZoomImg = document.createElement('div');	oZoomImg.setAttribute('id','p-zoom-img');		oZoomContainer.appendChild(oZoomImg);
					var oZoomImgTag = document.createElement('img');	oZoomImgTag.setAttribute('id','p-zoom-img-tag'); oZoomImgTag.setAttribute('alt',''); oZoomImgTag.setAttribute('border','0'); oZoomImgTag.setAttribute('src',''); oZoomImg.appendChild(oZoomImgTag);
					// footer
					var oZoomFooter = document.createElement('div');	oZoomFooter.setAttribute('id','p-zoom-footer');		oZoomContainer.appendChild(oZoomFooter);
						var oZoomButBack = document.createElement('div');	oZoomButBack.setAttribute('id','p-zoom-but-back');	oZoomButBack.onclick=previousZoomImage;	oZoomButBack.innerHTML = '&lt; zurück';	oZoomFooter.appendChild(oZoomButBack);
						var oZoomButNext = document.createElement('div');	oZoomButNext.setAttribute('id','p-zoom-but-next');	oZoomButNext.onclick=nextZoomImage;	oZoomButNext.innerHTML = 'weiter &gt;';	oZoomFooter.appendChild(oZoomButNext);
						oZoomClear = document.createElement('div');	oZoomClear.setAttribute('class','clear');	oZoomFooter.appendChild(oZoomClear);
			}			 
			// get content dimensions
			document.getElementById('p-zoom-container').style.display = "";
			var lWidth = pics.getEWidth(document.getElementById('p-zoom-container'));
			document.getElementById('p-zoom-container').style.display = "none";
			var lHeight = pics.getEHeight(document.getElementById('p-zoom-header'))+pics.getEHeight(document.getElementById('p-zoom-img'))+pics.getEHeight(document.getElementById('p-zoom-footer'));
			
			var oZoomContainer = document.getElementById('p-zoom-container');
			oZoomContainer.style.top = Math.floor(pics.getPageScrollY()+100)+"px";
			oZoomContainer.style.left = Math.floor((pics.getScreenWidth()-lWidth)/2)+"px";
			// modal height needs to be updated when scrolled
			MaxYScroll = pics.getPageScrollY();
			oModal.style.height = (MaxYScroll+pics.getScreenHeight())+"px";
		}
		// show paging-buttons if allowed
		document.getElementById('p-zoom-but-back').style.display = (gPrevZoomIndex==-1 ? "none" : "");
		document.getElementById('p-zoom-but-next').style.display = (gNextZoomIndex==-1 ? "none" : "");
		// show modal layer
		oModal.style.display = "";		
		// set image src
		document.getElementById('p-zoom-img-tag').src = lImg;
		// set title
		document.getElementById('p-zoom-title').innerHTML = lTitle;
		// show wrapper
		document.getElementById('p-zoom-container').style.display = "";
	}
/*
  <div id="p-modal"></div>
	<div id="p-zoom-container">
		<div id="p-zoom-header">
			<div id="p-zoom-title">Title of the Image</div>
			<div id="p-zoom-close" onclick="closeZoomImage()">X</div>
			<div class="clear"></div>
		</div>
		<div id="p-zoom-img"><img src="media/img/450x450/0005_start.jpg" alt="" border="0" id="p-zoom-img-tag" /></div>
		<div id="p-zoom-footer">
			<div id="p-zoom-but-back">&lt; zurück</div>
			<div id="p-zoom-but-next">weiter &gt;</div>
			<div class="clear"></div>
		</div>
	</div>
 * */		
	
	
	// show previous image in grp
	function previousZoomImage() {
		gCurZoomIndex = gPrevZoomIndex;
		gNextZoomIndex = (gCurZoomIndex+1<aZoomImages.length ? gCurZoomIndex+1 : -1);
		gPrevZoomIndex = (gCurZoomIndex-1);
		var aData = aZoomImages[gCurZoomIndex];
		zoomImage(aData[0],true);
	}
	
	// show next image in grp
	function nextZoomImage() {
		gCurZoomIndex = gNextZoomIndex;
		gNextZoomIndex = (gCurZoomIndex+1<aZoomImages.length ? gCurZoomIndex+1 : -1);
		gPrevZoomIndex = (gCurZoomIndex-1);
		var aData = aZoomImages[gCurZoomIndex];
		zoomImage(aData[0],true);
	}
	
	// close image
	function closeZoomImage() {
		// hide wrapper
		//document.body.removeChild(document.getElementById('p-zoom-container'));
		document.getElementById('p-zoom-container').style.display = "none";
		// hide modal layer
		document.getElementById('p-modal').style.display = "none";
		// disable scroll lock
		MaxYScroll=false;
	}
	
	/* don't allow scolling */
	function StopScroll() {
		if (MaxYScroll) {
			if (document.all){ _y=document.body.scrollTop; }
			else { _y=window.pageYOffset; }
			if (_y!=MaxYScroll){ window.scroll(0,MaxYScroll); }
		}
	}
	
	// scroll handler
	window.onscroll=StopScroll;
