//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;
	var eZoomImgBack = null;
	var eZoomImgFord = null;
	var eZoomFromGalery = false;
	var eZoomFromBtnGalery = false;
	var eZoomHasFord = false;
	var eZoomHasBack = false;
	var eZoomImgBlock = null;
	var eZoomImgClosePos = 'right';

	function zoomInit(){
		iZoomImgW = WBody();
		iZoomImgH = HScreen();
		iZoomImgY = YPos();
		iZoomImgX = XPos();
		
		eZoomImgLoader = document.getElementById('zoomLayLoader');
		eZoomImgLayer = document.getElementById('zoomLayPrev');
		eZoomImgImage = document.getElementById('zoomImagePrev');
		eZoomImgImage.onclick = zoomImageOut;
		eZoomImgEpi = document.getElementById('zoomImageEpi');
		eZoomImgEpi.firstChild.innerHTML = '';
		eZoomImgEpi.style.display = 'none';
		eZoomImgClose = document.getElementById('zoomImageClose');
		eZoomImgClose.onclick = zoomImageOut;
		eZoomImgClose.style.visibility = 'hidden';
		eZoomImgBack = document.getElementById('zoomImageBack');
		eZoomImgBack.onclick = zoomImagePrev;
		eZoomImgBack.style.visibility = 'hidden';
		eZoomImgFord = document.getElementById('zoomImageFord');
		eZoomImgFord.onclick = zoomImageNext;
		eZoomImgFord.style.visibility = 'hidden';
		eZoomImgBlock = document.getElementById('zoomLayBlock');
		if(!eZoomFromBtnGalery){
			eZoomImgBlock.style.display = 'none';
			eZoomFromBtnGalery = false;
		}
		setOpacity(70, eZoomImgBlock);
	}
	
	function zoomImage(event, image, galery){
		StopEvent(event);
		zoomInit();
		eZoomImage = image;
		eZoomFromGalery = (!galery)? false:true;
		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 iPorc = iEndW / iEndH;
		
		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.title = eZoomImage.title;
			
			eZoomImgLayer.style.top = iIniY + 'px';
			eZoomImgLayer.style.left = iIniX + 'px';
			
			setOpacity(0, eZoomImgLayer);
			eZoomImgLayer.style.visibility = 'visible';
			
			var iDif = 0;
			if(trim(eZoomImage.alt) != ''){
				eZoomImgEpi.firstChild.innerHTML = eZoomImage.alt;
				eZoomImgEpi.style.width = iIniW + 'px';
				eZoomImgEpi.style.display = 'block';
				
				iDif = eZoomImgEpi.offsetHeight;
			}
			
			if(iEndW > iZoomImgW - iZoomMinMarging){
				iEndW = iZoomImgW - iZoomMinMarging;
				iEndH = iEndW / iPorc;
			}
			if(iEndH > iZoomImgH - iZoomMinMarging - iDif){
				iEndH = iZoomImgH - iZoomMinMarging - iDif;
				iEndW = (iEndH - iDif) * iPorc;
			}
			
			var iChangeX = (((iZoomImgW / 2) - (iEndW / 2) - iIniX) + iZoomImgX);
			var iChangeY = (((iZoomImgH / 2) - (iEndH / 2) - iIniY) + iZoomImgY - (iDif / 2));
			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){
			
			RemEvent(document, 'keypress', zoomImageKeypress);
			
			eZoomImgBlock.style.display = 'none';
			eZoomImgClose.style.visibility = eZoomImgBack.style.visibility = 
			eZoomImgFord.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';
			
			if(eZoomImgEpi.style.display == 'block'){
				eZoomImgEpi.style.width = w + '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';
		if(eZoomImgClosePos == 'left'){ eZoomImgClose.style.left = (parseInt(eZoomImgLayer.style.left) -  (eZoomImgClose.offsetWidth / 2)) + 'px'; }
		else{ eZoomImgClose.style.left = (parseInt(eZoomImgLayer.style.left) + parseInt(eZoomImgImage.style.width) -  (eZoomImgClose.offsetWidth / 2)) + 'px'; }
		eZoomImgClose.style.visibility = 'visible';
		if(eZoomFromGalery && !!eZoomImage.parentNode && !!eZoomImage.parentNode.nextSibling && !!eZoomImage.parentNode.nextSibling.nextSibling){
			eZoomHasFord = true;
			eZoomImgFord.style.top = (((iZoomImgH - eZoomImgFord.offsetHeight) / 2) + iZoomImgY) + 'px';
			eZoomImgFord.style.visibility = 'visible';
		}
		else{ eZoomHasFord = false; }
		
		if(eZoomFromGalery && !!eZoomImage.parentNode && !!eZoomImage.parentNode.previousSibling && !!eZoomImage.parentNode.previousSibling.previousSibling){
			eZoomHasBack = true;
			eZoomImgBack.style.top = (((iZoomImgH - eZoomImgBack.offsetHeight) / 2) + iZoomImgY) + 'px';
			eZoomImgBack.style.visibility = 'visible';
		}
		else{ eZoomHasBack = false; }
		
		var n = (HBody() > iZoomImgH)? HBody():iZoomImgH;
		eZoomImgBlock.style.height = n + 'px';
		eZoomImgBlock.style.width = WBody() + 'px';
		eZoomImgBlock.style.display = 'block';
		
		AddEvent(document, 'keypress', zoomImageKeypress);
	}
	
	function zoomImageOutEnd(){
		bZoomImgOn = false;
		eZoomImgLayer.style.visibility = 'hidden';
		eZoomImgLayer.style.top = '-1000px';
		eZoomImgLayer.style.left = '0';
	}
	
	function zoomImageNext(){
		if(eZoomHasFord){
			eZoomFromBtnGalery = true;
			FireEvent(eZoomImage.parentNode.nextSibling.nextSibling.firstChild, 'click');
		}
	}
	
	function zoomImagePrev(){
		if(eZoomHasBack){
			eZoomFromBtnGalery = true;
			FireEvent(eZoomImage.parentNode.previousSibling.previousSibling.firstChild, 'click');
		}
	}
	
	function zoomImageKeypress(e){
		if(bZoomImgAnim != true){
			if(e.keyCode == 27){ zoomImageOut(); }
			else if(e.keyCode == 39){ zoomImageNext(); }
			else if(e.keyCode == 37){ zoomImagePrev(); }
		}
	}
