var ImageZoom={SelectedImage:new Object(),zoomArea:null,mouse:{'left':0,'top':0},displayImage:null,Lens:null,LensImage:null,imgTrans:null,loadingArea:null,loadingAreaImage:null,fader:null,identity : -1,Show : true,ImgParam : {'image':null, 'zoomImage':null, 'LocImage':null, 'scaleX':0, 'scaleY':0, 'LensBorderWidth':0, 'imageBorderWidth':0},matchImage : true,fadeSpeed : 15,fadeStrength : 5,offsetX : 0,offsetY : 0,Initialize:function() {if (ImageZoom.Lens) {return;}ImageZoom.Lens =  document.createElement('div');ImageZoom.Lens.id = 'ImageZoomMagnifier';ImageZoom.Lens.style.position = 'absolute';ImageZoom.LensImage = document.createElement('img');ImageZoom.LensImage.alt = '';ImageZoom.LensImage.id = 'ImageZoomMagnifierImage';ImageZoom.LensImage.style.position = 'absolute';ImageZoom.Lens.appendChild(ImageZoom.LensImage);ImageZoom.zoomArea =  document.createElement('div');ImageZoom.zoomArea.id = 'ImageZoomArea';ImageZoom.zoomArea.style.display = 'none';ImageZoom.zoomArea.style.position = 'absolute';ImageZoom.zoomArea.style.overflow = 'hidden';ImageZoom.zoomArea.style.zIndex = 5;ImageZoom.displayImage = document.createElement('img');ImageZoom.displayImage.alt = '';ImageZoom.displayImage.style.position = 'absolute';ImageZoom.zoomArea.appendChild(ImageZoom.displayImage);ImageZoom.imgTrans = document.createElement('div');ImageZoom.imgTrans.id = 'ImageZoomimgTrans';ImageZoom.imgTrans.style.display = 'none';ImageZoom.imgTrans.style.position = 'absolute';ImageZoom.loadingArea = document.createElement('div');ImageZoom.loadingArea.id = 'ImageZoomLoadingArea';ImageZoom.loadingArea.style.display = 'none';ImageZoom.loadingArea.style.position = 'absolute';ImageZoom.loadingArea.style.zIndex = '1';document.body.appendChild(ImageZoom.imgTrans);document.body.appendChild(ImageZoom.Lens);document.body.appendChild(ImageZoom.zoomArea);document.body.appendChild(ImageZoom.loadingArea);ImageZoom.DefaultValues();},
DefaultValues:function() {var zoomArea = ImageZoom.zoomArea.style;var magnifier = ImageZoom.Lens.style;var imgTrans = ImageZoom.imgTrans.style;zoomArea.borderWidth = '1px';zoomArea.borderColor = '#c1c1c1';zoomArea.borderStyle = 'solid';magnifier.borderWidth = '1px';magnifier.borderColor = '#c1c1c1';magnifier.borderStyle = 'solid';magnifier.overflow = 'hidden';imgTrans.opacity = '.50';imgTrans.backgroundColor = '#cccccc';imgTrans.filter = 'alpha(opacity=50)';ImageZoom.matchImage = true;ImageZoom.fadeSpeed = 15;ImageZoom.fadeStrength = 5;ImageZoom.offsetX = 0;ImageZoom.offsetY = 0;},
GetPath:function(path) {return path.toLowerCase();return path.toLowerCase().replace(/[\.\-\:\/]/g, '');},ItemAdd:function(element, bigImage) {if (typeof(element) == 'string') {element = document.getElementById(element);}element.onmouseover = ImageZoom.onmouseover;if (bigImage != null) {ImageZoom.preloadImage(element.src, bigImage);}else {ImageZoom.preloadImage(element.src, element.src);}element.onload = null;},preloadImage:function(mImage, lImage) {if (mImage && lImage) {var mImg = new Image();var lImg = new Image();lImg.onerror = function(event) {lImg.onerror = null;lImg.onload = null;lImg = null;};lImg.onload = function(event) {lImg.onload = null;lImg.loaded = true;if (ImageZoom.ImgParam.zoomImage == lImg) {ImageZoom.loadingArea.style.display = 'none';ImageZoom.ImgParam.image.onmouseover(event);}};mImg.src = mImage;lImg.src = lImage;var intPos = ImageZoom.GetPath(mImg.src);if (!ImageZoom.SelectedImage[intPos]) {ImageZoom.SelectedImage[intPos] = lImg;}}},
ShowShade:function(opacity) {if (ImageZoom.fader) {window.clearTimeout(ImageZoom.fader);ImageZoom.fader = null;}ImageZoom.zoomArea.style.opacity = opacity / 100;ImageZoom.zoomArea.style.filter = 'alpha(opacity=' + opacity + ')';if (opacity < 100) {ImageZoom.fader = window.setTimeout('ImageZoom.ShowShade(' + (opacity + ImageZoom.fadeStrength) + ');', ImageZoom.fadeSpeed);}},onmouseover:function(event) {ImageZoom.Initialize();var intPos = ImageZoom.GetPath(this.src);var zoomImage = ImageZoom.SelectedImage[intPos];if (zoomImage == null) {return;}ImageZoom.DefaultValues();var LocImage = GetImgLoc(this);AddEvent(document, 'mousemove', ImageZoom.onmousemove);ImageZoom.ImgParam.image = this;ImageZoom.ImgParam.zoomImage = zoomImage;ImageZoom.ImgParam.LocImage = LocImage;if (zoomImage.loaded != true) {ImageZoom.loadingArea.style.display = '';ImageZoom.loadingArea.style.left = LocImage.left + LocImage.width / 2 - ImageZoom.loadingAreaImage.offsetWidth / 2  + 'px';ImageZoom.loadingArea.style.top = LocImage.top + LocImage.height / 2 - ImageZoom.loadingAreaImage.offsetHeight / 2 + 'px';return;}else {ImageZoom.loadingArea.style.display = 'none';if (ImageZoom.displayImage.src != zoomImage.src) {ImageZoom.displayImage.src = zoomImage.src;}}if (ImageZoom.LensImage.src != this.src) {ImageZoom.LensImage.src = this.src;}ImageZoom.Lens.style.display = '';ImageZoom.zoomArea.style.display = '';ImageZoom.imgTrans.style.display = '';var docWidth = document.documentElement.clientWidth || document.body.clientWidth;var docHeight = document.documentElement.clientHeight || document.body.clientHeight;if (ImageZoom.matchImage) {ImageZoom.zoomArea.style.width = LocImage.width + 'px';ImageZoom.zoomArea.style.height = LocImage.height + 'px';var zoomLocImage = {'width':ImageZoom.zoomArea.offsetWidth, 'height':ImageZoom.zoomArea.offsetHeight};if (zoomLocImage.width > LocImage.width) {ImageZoom.zoomArea.style.width = parseFloat(ImageZoom.zoomArea.style.width) - (zoomLocImage.width - LocImage.width) + 'px';}if (zoomLocImage.height > LocImage.height) {ImageZoom.zoomArea.style.height = parseFloat(ImageZoom.zoomArea.style.height) - (zoomLocImage.height - LocImage.height) + 'px';}}var zoomLocImage = {'width':ImageZoom.zoomArea.offsetWidth, 'height':ImageZoom.zoomArea.offsetHeight};var x = LocImage.left + LocImage.width + ImageZoom.offsetX;var y = LocImage.top + ImageZoom.offsetY;if (x + zoomLocImage.width > docWidth) {x = LocImage.left - zoomLocImage.width - ImageZoom.offsetX;y = LocImage.top - ImageZoom.offsetY;if (x < 0) {x = LocImage.left + ImageZoom.offsetX;y = LocImage.top + LocImage.height + ImageZoom.offsetY;if (y + zoomLocImage.height > docHeight) {x = LocImage.left - ImageZoom.offsetX;y = LocImage.top - zoomLocImage.height - ImageZoom.offsetY;if (y < 0) {x = LocImage.left + LocImage.width + ImageZoom.offsetX;y = LocImage.top + ImageZoom.offsetY;}}}}ImageZoom.zoomArea.style.left = x + 'px';ImageZoom.zoomArea.style.top = y + 'px';var scaleX = (ImageZoom.displayImage.offsetWidth / LocImage.width);var scaleY = (ImageZoom.displayImage.offsetHeight / LocImage.height);if (scaleY < 1.2 || scaleX < 1.2) {ImageZoom.hide(null, true);return;}ImageZoom.LensImage.onmousedown = ImageZoom.ImgParam.image.onmousedown;ImageZoom.LensImage.onmouseup = ImageZoom.ImgParam.image.onmouseup;ImageZoom.LensImage.onclick = function(event) {var event = window.event || event;if (ImageZoom.ImgParam.image.onclick) {ImageZoom.ImgParam.image.onclick(event);}if (ImageZoom.ImgParam.image.parentNode.nodeName.toUpperCase() == 'A') {var anchorTag = ImageZoom.ImgParam.image.parentNode;if (anchorTag.href) {window.location.href = anchorTag.href;}if (anchorTag.onclick) {anchorTag.onclick(event);}}}
if (ImageZoom.Lens.currentStyle) {ImageZoom.ImgParam.LensBorderWidth = parseFloat(ImageZoom.Lens.currentStyle.borderTopWidth) || 0;ImageZoom.ImgParam.imageBorderWidth = parseFloat(this.currentStyle.borderTopWidth) || 0;}else if (document.defaultView && document.defaultView.getComputedStyle) {ImageZoom.ImgParam.LensBorderWidth = parseFloat(document.defaultView.getComputedStyle(ImageZoom.Lens, null).getPropertyValue('border-top-width')) || 0;ImageZoom.ImgParam.imageBorderWidth = parseFloat(document.defaultView.getComputedStyle(this, null).getPropertyValue('border-top-width')) || 0;}else {ImageZoom.ImgParam.LensBorderWidth = 0;ImageZoom.ImgParam.imageBorderWidth = 0;}ImageZoom.Lens.style.width = (ImageZoom.zoomArea.offsetWidth / scaleX) + ImageZoom.ImgParam.LensBorderWidth + 'px';ImageZoom.Lens.style.height = (ImageZoom.zoomArea.offsetHeight / scaleY) + ImageZoom.ImgParam.LensBorderWidth + 'px';ImageZoom.ImgParam.scaleX = scaleX;ImageZoom.ImgParam.scaleY = scaleY;ImageZoom.imgTrans.style.left = LocImage.left + ImageZoom.ImgParam.imageBorderWidth + 'px';ImageZoom.imgTrans.style.top = LocImage.top + ImageZoom.ImgParam.imageBorderWidth + 'px';ImageZoom.imgTrans.style.width = LocImage.width - ImageZoom.ImgParam.imageBorderWidth * 2 + 'px';ImageZoom.imgTrans.style.height = LocImage.height - ImageZoom.ImgParam.imageBorderWidth * 2 + 'px';ImageZoom.onmousemove(event);if (zoomImage.loaded) {ImageZoom.ShowShade(1);}},
hide:function(event, force) {var target;if (event && !force) {target = event.srcElement ? event.srcElement : event.target;}if (force || (target != ImageZoom.loadingAreaImage && target != null && target != document && target != ImageZoom.Lens && target != ImageZoom.ImgParam.image && target != ImageZoom.LensImage && target != ImageZoom.imgTrans)) {if (ImageZoom.Show && target == ImageZoom.SelectedImage[ImageZoom.GetPath(ImageZoom.ImgParam.image.src)]) {ImageZoom.Show = false;}else {ImageZoom.Show = false;RemoveEvent(document, 'mousemove', ImageZoom.onmousemove);ImageZoom.Lens.style.display = 'none';ImageZoom.zoomArea.style.display = 'none';ImageZoom.imgTrans.style.display = 'none';ImageZoom.loadingArea.style.display = 'none';ImageZoom.mouse.left = 0;ImageZoom.mouse.top = 0;ImageZoom.ImgParam = {'image':null, 'zoomImage':null, 'LocImage':null, 'scaleX':0, 'scaleY':0, 'LensBorderWidth':0};return true;}}return false;},
onmousemove:function(event) {var event = window.event || event;if (ImageZoom.hide(event)) {return;}if (event.clientX) {var x = document.documentElement.scrollLeft || document.body.scrollLeft;var y = document.documentElement.scrollTop || document.body.scrollTop;x += event.clientX;y += event.clientY;}else {var x = ImageZoom.mouse.left;var y = ImageZoom.mouse.top;}ImageZoom.mouse.left = x;ImageZoom.mouse.top = y; var intPos = ImageZoom.GetPath(ImageZoom.ImgParam.image.src);if (ImageZoom.SelectedImage[intPos].loaded != true) {return;}var Lens = ImageZoom.Lens;var LensPlacement = {'width':Lens.offsetWidth, 'height':Lens.offsetHeight};var LocImage = ImageZoom.ImgParam.LocImage;x -= LensPlacement.width / 2;y -= LensPlacement.height / 2;if (x < LocImage.left + ImageZoom.ImgParam.imageBorderWidth) {x = LocImage.left + ImageZoom.ImgParam.imageBorderWidth;}else if (x > LocImage.left + LocImage.width - LensPlacement.width - ImageZoom.ImgParam.imageBorderWidth) {x = LocImage.left + LocImage.width - LensPlacement.width - ImageZoom.ImgParam.imageBorderWidth;}else {}if (y < LocImage.top + ImageZoom.ImgParam.imageBorderWidth) {y = LocImage.top + ImageZoom.ImgParam.imageBorderWidth;}else if (y > LocImage.top + LocImage.height - LensPlacement.height - ImageZoom.ImgParam.imageBorderWidth) {y = LocImage.top + LocImage.height - LensPlacement.height - ImageZoom.ImgParam.imageBorderWidth;}Lens.style.left = x + 'px';Lens.style.top = y + 'px';x -= LocImage.left;y -= LocImage.top;if (x < 0) {x = 0;}if (y < 0) {y = 0;}x += ImageZoom.ImgParam.LensBorderWidth;y += ImageZoom.ImgParam.LensBorderWidth;var scaleX = ImageZoom.ImgParam.scaleX;var scaleY = ImageZoom.ImgParam.scaleY;ImageZoom.displayImage.style.left = -x * scaleX + 'px';ImageZoom.displayImage.style.top = -y * scaleY + 'px';ImageZoom.LensImage.style.left = parseFloat(LocImage.left) - parseFloat(ImageZoom.Lens.style.left) - ImageZoom.ImgParam.LensBorderWidth + ImageZoom.ImgParam.imageBorderWidth + 'px';ImageZoom.LensImage.style.top = parseFloat(LocImage.top) - parseFloat(ImageZoom.Lens.style.top) - ImageZoom.ImgParam.LensBorderWidth + ImageZoom.ImgParam.imageBorderWidth + 'px';}}
