﻿var ua="msie";
var W=navigator.userAgent.toLowerCase();
if(W.indexOf("opera")!=-1)
{
	ua="opera";
} else if(W.indexOf("msie")!=-1)
{
	ua="msie";
} else if(W.indexOf("mozilla")!=-1)
{
	ua="gecko";
}

function myAddEventListener(obj,event,listener)
{
	if(ua=="gecko"||ua=="opera")
	{
		obj.addEventListener(event,listener,false);
	} else if(ua=="msie")
	{
		obj.attachEvent("on"+event,listener);
	}
}

function myRemoveEventListener(obj,event,listener)
{
	if(ua=="gecko"||ua=="opera")
	{
		obj.removeEventListener(event,listener,false);
	} else if(ua=="msie")
	{
		obj.detachEvent("on"+event,listener);
	}
}

function _el(id)
{
	return document.getElementById(id);
}

function createMethodReference(object,methodName)
{
	return function(){object[methodName].apply(object,arguments)}
}

function zoom(smallImageContId,smallImageId,bigImageContId,bigImageId)
{
	this.recalculating=false;
	this.smallImageCont=_el(smallImageContId);
	this.smallImage=_el(smallImageId);
	this.bigImageCont=_el(bigImageContId);
	this.bigImage=_el(bigImageId);
	this.pup=0;
	this.bigImageSizeX=0;
	this.bigImageSizeY=0;
	this.smallImageSizeX=0;
	this.smallImageSizeY=0;
	this.popupSizeX=20;
	this.popupSizey=20;
	this.positionX=0;
	this.positionY=0;
	this.baseuri='';
}

zoom.prototype.checkcoords=function(e)
{
	var y=0;
	if(ua=='msie')
	{
		y=e.clientY;
		if(document.body&&(document.body.scrollLeft||document.body.scrollTop))
		{
			y=e.clientY+document.body.scrollTop;
		} else if(document.documentElement&&(document.documentElement.scrollLeft||document.documentElement.scrollTop))
		{
			y=e.clientY+document.documentElement.scrollTop
		}
	} else
	{
		y=e.clientY+window.pageYOffset;
	}
	
	if(e.clientX>parseInt(this.smallImageCont.offsetLeft+this.smallImageSizeX))
	{
		this.hiderect();
		return false;
	}
	
	if(e.clientX<parseInt(this.smallImageCont.offsetLeft))
	{
		this.hiderect();
		return false;
	}
	
	if(y>parseInt(this.smallImageCont.offsetTop+this.smallImageSizeY))
	{
		this.hiderect();
		return false;
	}
	
	if(y<parseInt(this.smallImageCont.offsetTop))
	{
		this.hiderect();
		return false;
	}
	
	return true;
	
}

zoom.prototype.mousemove=function(e)
{
	if(ua=='gecko')
	{
		e.cancelBubble=true;
		e.preventDefault();
		e.stopPropagation()
	} else if(ua=='msie'||ua=='opera')
	{
		window.event.cancelBubble=true;
	}
	
	if(this.recalculating)
	{
		return;
	}
	
	this.recalculating=true;
	var smallImg=this.smallImage;
	var smallX=0;
	var smallY=0;

	if(ua=='gecko'||ua=='opera')
	{
		var tag=smallImg;
		while(tag.tagName!="BODY")
		{
			smallY+=tag.offsetTop;
			smallX+=tag.offsetLeft;
			tag=tag.offsetParent;
		}
	}
	
	if(ua=='msie')
	{
		this.positionX=event.x;
		this.positionY=event.y+document.body.scrollTop;
	} else
	{
		this.positionX=e.clientX-smallX;
		this.positionY=e.clientY-smallY
	}
	
	if((this.positionX+this.popupSizeX/2)>=this.smallImageSizeX)
	{
		this.positionX=this.smallImageSizeX-this.popupSizeX/2
	}
	
	if((this.positionY+this.popupSizeY/2)>=this.smallImageSizeY)
	{
		this.positionY=this.smallImageSizeY-this.popupSizeY/2;
	}
	
	if((this.positionX-this.popupSizeX/2)<=0)
	{
		this.positionX=this.popupSizeX/2;
	}
	
	if((this.positionY-this.popupSizeY/2)<=0)
	{
		this.positionY=this.popupSizeY/2;
	}
	
	theValue=""+this.positionX;
	
	if(theValue.indexOf(".")!=-1)
	{
		this.recalculating=false;
		this.hiderect();
		return;
	}
	
	setTimeout(createMethodReference(this,"showrect"),10);
}

zoom.prototype.showrect=function()
{
	this.pup.style.left=(this.positionX-this.popupSizeX/2)+'px';
	this.pup.style.top=(this.positionY-this.popupSizeY/2)+'px';
	this.pup.style.visibility="visible";
	perX=parseInt(this.pup.style.left)*(this.bigImageSizeX/this.smallImageSizeX);
	perY=parseInt(this.pup.style.top)*(this.bigImageSizeY/this.smallImageSizeY);
	this.bigImage.style.left=(-perX)+'px';
	this.bigImage.style.top=(-perY)+'px';
	this.bigImageCont.style.display='block';
	this.bigImageCont.style.visibility='visible';
	this.recalculating=false;
}

zoom.prototype.hiderect=function()
{
	this.pup.style.visibility="hidden";
	this.bigImageCont.style.display='none';
	this.bigImageCont.style.visibility='visible';
}

zoom.prototype.initPopup=function()
{
	this.pup=document.createElement("DIV");
	this.pup.className='zoomSource';
	this.popupSizeX=(parseInt(this.bigImageCont.style.width)-3)/(this.bigImageSizeX/this.smallImageSizeX);
	this.popupSizeY=(parseInt(this.bigImageCont.style.height)-19-3)/(this.bigImageSizeY/this.smallImageSizeY);
	this.pup.style.width=this.popupSizeX+'px';
	this.pup.style.height=this.popupSizeY+'px';
	this.smallImageCont.appendChild(this.pup);
}

zoom.prototype.initBigContainer=function()
{
	var bigimgsrc=this.bigImage.src;
	
	while(this.bigImageCont.firstChild)
	{
		this.bigImageCont.removeChild(this.bigImageCont.firstChild);
	}
	
	if(ua=='msie')
	{
		var f=document.createElement("IFRAME");
		f.style.left='0px';
		f.style.top='0px';
		f.style.position='absolute';
		f.style.filter='progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)';
		f.style.width=this.bigImageCont.style.width;
		f.style.height=this.bigImageCont.style.height;
		f.frameBorder=0;
		this.bigImageCont.appendChild(f)
	}
	
	var ar1=document.createElement("DIV");
	ar1.style.overflow="hidden";
	this.bigImageCont.appendChild(ar1);
	this.bigImage=document.createElement("IMG");
	this.bigImage.src=bigimgsrc;
	this.bigImage.style.position='relative';
	ar1.appendChild(this.bigImage)
}

zoom.prototype.initZoom=function()
{
	var elements=document.getElementsByTagName('script');

	for(var i=0;i<elements.length;i++)
	{
		if(elements[i].src&&(elements[i].src.indexOf("zoom.js")!=-1||elements[i].src.indexOf("packed.js")!=-1))
		{
			var src=elements[i].src;
			srcMode=(src.indexOf('_src')!=-1)?'_src':'';
			src=src.substring(0,src.lastIndexOf('/'));
			this.baseuri=src;
			break;
		}
	}
	//alert("zoom.js Line 221: before this");
	this.bigImageSizeX=this.bigImage.width;
	this.bigImageSizeY=this.bigImage.height;
	this.smallImageSizeX=this.smallImage.width;
	this.smallImageSizeY=this.smallImage.height;
	this.initBigContainer();
	this.initPopup();
	this.hiderect();
	myAddEventListener(window.document,"mousemove",createMethodReference(this,"checkcoords"));
	myAddEventListener(this.smallImageCont,"mousemove",createMethodReference(this,"mousemove"))
}
