//Javascript
	//Config
	var iZoomMinMarging = 30;//px
	var iZoomDelay = 4;//mlsgs
	var iZoomFrames = 16;//px
	
	//
	var iZoomImgW = 0;
	var iZoomImgH = 0;
	var iZoomImgY = 0;
	var iZoomImgX = 0;
	var bZoomImgOn = false;
	var bZoomImgAnim = false;
	var aZoomImgInfo = new Object();
	var eZoomImage = null;
	var oZoomImgLoad = null;
	var eZoomImgLoader = null;
	var eZoomImgLayer = null;
	var eZoomImgImage = null;
	var eZoomImgClose = null;

	function zoomInit(){
		if(!window.innerWidth){//IE
			iZoomImgW = document.documentElement.clientWidth;
			iZoomImgH = document.documentElement.clientHeight;
			iZoomImgY = document.documentElement.scrollTop;
			iZoomImgX = document.documentElement.scrollLeft;
		}
		else{
			iZoomImgW = window.innerWidth;
			iZoomImgH = window.innerHeight;
			iZoomImgY = window.pageYOffset;
			iZoomImgX = window.pageXOffset;
		}
		eZoomImgLoader = document.getElementById('zoomLayLoader');
		eZoomImgLayer = document.getElementById('zoomLayPrev');
		eZoomImgImage = document.getElementById('zoomImagePrev');
		eZoomImgImage.onclick = zoomImageOut;
		eZoomImgClose = document.getElementById('zoomImageClose');
		eZoomImgClose.onclick = zoomImageOut;
	}
	
	function zoomImage(event, image){
		StopEvent(event);
		zoomInit();
		eZoomImage = image;
		zoomShowLoader(true);
		zoomImageLoad();
	}
	
	function zoomImageLoad(){
		oZoomImgLoad = new Image();
		oZoomImgLoad.onload = function(){ zoomImageLoaded(); }
		oZoomImgLoad.src = eZoomImage.src.substr(0, eZoomImage.src.lastIndexOf('.') - 1) + eZoomImage.src.substr(eZoomImage.src.lastIndexOf('.'), eZoomImage.src.length);
	}
	
	function zoomImageLoaded(){
		zoomShowLoader(false);
		zoomImageIn();
	}
	
	function zoomShowLoader(bShow){
		if(bShow){
			eZoomImgLoader.style.top = Math.ceil(((iZoomImgH - eZoomImgLoader.offsetHeight) / 2) + iZoomImgY) + 'px';
			eZoomImgLoader.style.left = Math.ceil(((iZoomImgW - eZoomImgLoader.offsetWidth) / 2) + iZoomImgX) + 'px';
			eZoomImgLoader.style.visibility = 'visible';
		}
		else{
			eZoomImgLoader.style.top = '-' + (eZoomImgLoader.offsetHeight + 20) + 'px';
			eZoomImgLoader.style.visibility = 'hidden';
		}
	}
	
	function zoomImageIn(){
		var iIniW = eZoomImage.width;
		var iIniH = eZoomImage.height;
		var iEndW = oZoomImgLoad.width;
		var iEndH = oZoomImgLoad.height;
		
		var oPos = getElementPos(eZoomImage);
		var iIniX = oPos.x;
		var iIniY = oPos.y;
		
		if(bZoomImgAnim != true){
			aZoomImgInfo['iIniW'] = iIniW;
			aZoomImgInfo['iIniH'] = iIniH;
			aZoomImgInfo['iIniX'] = iIniX;
			aZoomImgInfo['iIniY'] = iIniY;
			
			eZoomImgImage.style.height = iIniH + 'px';
			eZoomImgImage.style.width = iIniW + 'px';
			eZoomImgImage.src = oZoomImgLoad.src;
			eZoomImgImage.alt = eZoomImage.alt;
			eZoomImgImage.title = eZoomImage.title;
			
			eZoomImgLayer.style.top = iIniY + 'px';
			eZoomImgLayer.style.left = iIniX + 'px';
			
			setOpacity(0, eZoomImgLayer);
			eZoomImgLayer.style.visibility = 'visible';
			
			var iPorc = iEndW / iEndH;
			if(iEndW > iZoomImgW - iZoomMinMarging){
				iEndW = iZoomImgW - iZoomMinMarging;
				iEndH = iEndW / iPorc;
			}
			if(iEndH > iZoomImgH - iZoomMinMarging){
				iEndH = iZoomImgH - iZoomMinMarging;
				iEndW = iEndH * iPorc;
			}
			
			var iChangeX = (((iZoomImgW / 2) - (iEndW / 2) - iIniX) + iZoomImgX);
			var iChangeY = (((iZoomImgH / 2) - (iEndH / 2) - iIniY) + iZoomImgY);
			var iChangeW = (iEndW - iIniW);
			var iChangeH = (iEndH - iIniH);
			var sOpacity = "(100 / iZoomFrames) * iCurFrame";
			
			setTimeout('zoomImageAnim('+iIniW+', '+iChangeW+', '+iIniH+', '+iChangeH+', '+iIniX+', '+iChangeX+', '+iIniY+', '+iChangeY+', 0, "in")', iZoomDelay);
			bZoomImgAnim = true;
			oPos = null;
		}
	}
	
	function zoomImageOut(){
		if(bZoomImgAnim != true){
			eZoomImgClose.style.visibility = 'hidden';
			
			var iIniW = parseInt(eZoomImgImage.style.width);
			var iIniH = parseInt(eZoomImgImage.style.height);
			var iEndW = eZoomImage.width;
			var iEndH = eZoomImage.height;
			
			var iIniX = parseInt(eZoomImgLayer.style.left);
			var iIniY = parseInt(eZoomImgLayer.style.top);
			
			var iChangeX = aZoomImgInfo['iIniX'] - iIniX;
			var iChangeY = aZoomImgInfo['iIniY'] - iIniY;
			var iChangeW = aZoomImgInfo['iIniW'] - iIniW;
			var iChangeH = aZoomImgInfo['iIniH'] - iIniH;
			
			setTimeout('zoomImageAnim('+iIniW+', '+iChangeW+', '+iIniH+', '+iChangeH+', '+iIniX+', '+iChangeX+', '+iIniY+', '+iChangeY+', 0, "out")', iZoomDelay);
			bZoomImgAnim = true;
		}
	}
	
	function zoomImageAnim(iIniW, iChangeW, iIniH, iChangeH, iIniX, iChangeX, iIniY, iChangeY, iCurFrame, sMode){
		if(iCurFrame == (iZoomFrames + 1)){
			bZoomImgAnim = false;
			if(sMode == 'in'){ zoomImageInEnd(); }
			else{ zoomImageOutEnd(); }
		}
		else{
			var w = strongEaseInOut(iCurFrame, iIniW, iChangeW, iZoomFrames);
			var h = strongEaseInOut(iCurFrame, iIniH, iChangeH, iZoomFrames);
			var x = strongEaseInOut(iCurFrame, iIniX, iChangeX, iZoomFrames);
			var y = strongEaseInOut(iCurFrame, iIniY, iChangeY, iZoomFrames);
			var i = (sMode == 'in')? (100 / iZoomFrames) * iCurFrame : (100 / iZoomFrames) * (iZoomFrames - iCurFrame);
			
			eZoomImgLayer.style.left = x + 'px';
			eZoomImgLayer.style.top = y + 'px';
			eZoomImgImage.style.width = w + 'px';
			eZoomImgImage.style.height = h + 'px';
			
			setOpacity(i, eZoomImgLayer);
			
			iCurFrame++;
			
			setTimeout('zoomImageAnim('+iIniW+', '+iChangeW+', '+iIniH+', '+iChangeH+', '+iIniX+', '+iChangeX+', '+iIniY+', '+iChangeY+', '+iCurFrame+', "'+sMode+'")', iZoomDelay);
		}
	}
	
	function zoomImageInEnd(){
		bZoomImgOn = true;
		eZoomImgClose.style.top = (parseInt(eZoomImgLayer.style.top) - (eZoomImgClose.offsetHeight / 2)) + 'px';
		eZoomImgClose.style.left = (parseInt(eZoomImgLayer.style.left) -  (eZoomImgClose.offsetWidth / 2)) + 'px';
		eZoomImgClose.style.visibility = 'visible';
	}
	
	function zoomImageOutEnd(){
		bZoomImgOn = false;
		eZoomImgLayer.style.visibility = 'hidden';
		eZoomImgLayer.style.top = '-1000px';
		eZoomImgLayer.style.left = '0';
	}
