var MagicZoom_ua='msie';
var W=navigator.userAgent.toLowerCase();
if(W.indexOf("opera")!=-1){
	MagicZoom_ua='opera'
}else if(W.indexOf("msie")!=-1){
	MagicZoom_ua='msie'
}else if(W.indexOf("safari")!=-1){
	MagicZoom_ua='safari'
}else if(W.indexOf("mozilla")!=-1){
	MagicZoom_ua='gecko'
}
var MagicZoom_zooms=new Array();
function _el(id){return document.getElementById(id)};
function MagicZoom_getBounds(e){
	if(e.getBoundingClientRect){
		var r=e.getBoundingClientRect();
		var wx=0;
		var wy=0;
		if(document.body&&(document.body.scrollLeft||document.body.scrollTop)){
			wy=document.body.scrollTop;
			wx=document.body.scrollLeft
		}else if(document.documentElement&&(document.documentElement.scrollLeft||document.documentElement.scrollTop)){
			wy=document.documentElement.scrollTop;
			wx=document.documentElement.scrollLeft
		}
		return{'left':r.left+wx,'top':r.top+wy,'right':r.right+wx,'bottom':r.bottom+wy}
	}
}
function MagicView_ia(){return false};
var MagicZoom_extendElement=function(){
							var args=arguments;
							if(!args[1])args=[this,args[0]];
							for(var property in args[1])args[0][property]=args[1][property];
							return args[0]};
function MagicZoom_addEventListener(obj,event,listener){
	if(MagicZoom_ua=='gecko'||MagicZoom_ua=='opera'||MagicZoom_ua=='safari'){
		obj.addEventListener(event,listener,false)
	}else if(MagicZoom_ua=='msie'){
		obj.attachEvent("on"+event,listener)
	}
};
function MagicZoom_removeEventListener(obj,event,listener){
	if(MagicZoom_ua=='gecko'||MagicZoom_ua=='opera'||MagicZoom_ua=='safari'){
		obj.removeEventListener(event,listener,false)
	}else if(MagicZoom_ua=='msie'){
		obj.detachEvent("on"+event,listener)
	}
};
function MagicZoom_concat(){
	var result=[];
	for(var i=0;i<arguments.length;i++)
		for(var j=0;j<arguments[i].length;j++)
			result.push(arguments[i][j]);
	return result
};
function MagicZoom_withoutFirst(sequence,skip){
	result=[];
	for(var i=skip;i<sequence.length;i++)
		result.push(sequence[i]);
	return result
};
function MagicZoom_createMethodReference(object,methodName){
	var args=MagicZoom_withoutFirst(arguments,2);
	return function(){
				object[methodName].apply(object,MagicZoom_concat(arguments,args))
				}
};
function MagicZoom_stopEventPropagation(e){
	if(MagicZoom_ua=='gecko'||MagicZoom_ua=='safari'||MagicZoom_ua=='opera'){
		e.cancelBubble=true;
		e.preventDefault();
		e.stopPropagation()
	}else if(MagicZoom_ua=='msie'){
		window.event.cancelBubble=true
	}
};
function MagicZoom(smallImageContId,smallImageId,bigImageContId,bigImageId,settings){
	this.recalculating=false;
	this.smallImageCont=_el(smallImageContId);
	this.smallImage=_el(smallImageId);
	this.bigImageCont=_el(bigImageContId);
	this.bigImage=_el(bigImageId);
	this.pup=0;
	this.settings=settings;
	if(!this.settings["header"]){this.settings["header"]=""}
	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='';
	this.safariOnLoadStarted=false;
	MagicZoom_zooms.push(this);
	this.checkcoords_ref=MagicZoom_createMethodReference(this,"checkcoords")
};
MagicZoom.prototype.stopZoom=function(){MagicZoom_removeEventListener(window.document,"mousemove",this.checkcoords_ref)};
MagicZoom.prototype.checkcoords=function(e){
			var y=0;
			var x=0;
			if(MagicZoom_ua=='msie'){
				y=e.clientY;
				x=e.clientX;
				if(document.body&&(document.body.scrollLeft||document.body.scrollTop)){
					y=e.clientY+document.body.scrollTop;
					x=e.clientX+document.body.scrollLeft
				}else if(document.documentElement&&(document.documentElement.scrollLeft||document.documentElement.scrollTop)){
					y=e.clientY+document.documentElement.scrollTop;
					x=e.clientX+document.documentElement.scrollLeft
				}
			}else{
				y=e.clientY;
				x=e.clientX;
				y+=window.pageYOffset;
				x+=window.pageXOffset}smallY=smallX=0;
				var tag=this.smallImage;
				while(tag.tagName!="BODY"&&tag.tagName!="HTML"){
					smallY+=tag.offsetTop;
					smallX+=tag.offsetLeft;
					tag=tag.offsetParent
				}
			if(MagicZoom_ua=='msie'){
				r=MagicZoom_getBounds(this.smallImage);
				smallX=r['left'];
				smallY=r['top']
			}
			if(x>parseInt(smallX+this.smallImageSizeX)){
				this.hiderect();
				return false
			}
			if(x<parseInt(smallX)){
				this.hiderect();
				return false
			}
			if(y>parseInt(smallY+this.smallImageSizeY)){
				this.hiderect();
				return false
			}
			if(y<parseInt(smallY)){
				this.hiderect();
				return false
			}
			if(MagicZoom_ua=='msie'){
				this.smallImageCont.style.zIndex=1
			}
			return true
		};
MagicZoom.prototype.mousedown=function(e){
			MagicZoom_stopEventPropagation(e);
			this.smallImageCont.style.cursor='move'
		};
MagicZoom.prototype.mouseup=function(e){
			MagicZoom_stopEventPropagation(e);
			this.smallImageCont.style.cursor='default'
		};
MagicZoom.prototype.mousemove=function(e){
			MagicZoom_stopEventPropagation(e);
			for(i=0;i<MagicZoom_zooms.length;i++){
				if(MagicZoom_zooms[i]!=this){
					MagicZoom_zooms[i].checkcoords(e)
				}
			}
			if(this.settings&&this.settings["drag_mode"]==true){
				if(this.smallImageCont.style.cursor!='move'){return}
			}
			if(this.recalculating){return}
			if(!this.checkcoords(e)){return}
			this.recalculating=true;
			var smallImg=this.smallImage;
			var smallX=0;
			var smallY=0;
			if(MagicZoom_ua=='gecko'||MagicZoom_ua=='opera'||MagicZoom_ua=='safari'){
				var tag=smallImg;
				while(tag.tagName!="BODY"&&tag.tagName!="HTML"){
					smallY+=tag.offsetTop;
					smallX+=tag.offsetLeft;
					tag=tag.offsetParent
				}
			}
			if(MagicZoom_ua=='msie'){
				this.positionX=event.x-this.smallImage.offsetLeft;
				var scrollTop=0;
				this.positionY=event.y+scrollTop
			}else{
				this.positionX=e.clientX-smallX;
				this.positionY=e.clientY-smallY;
				this.positionX+=window.pageXOffset;
				this.positionY+=window.pageYOffset
			}
			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
			}
			setTimeout(MagicZoom_createMethodReference(this,"showrect"),10)
		};
MagicZoom.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.bigImage.style.display='block';
			this.bigImage.style.visibility='visible';
			this.recalculating=false
		};

MagicZoom.prototype.hiderect=function(){
			if(this.settings&&this.settings["bigImage_always_visible"]==true)return;
			this.pup.style.visibility="hidden";
			this.bigImageCont.style.display='none';
			this.bigImageCont.style.visibility='visible';
			if(MagicZoom_ua=='msie'){this.smallImageCont.style.zIndex=0}
		};
MagicZoom.prototype.recalculatePopupDimensions=function(){
			this.popupSizeX=(parseInt(this.bigImageCont.style.width)-3)/(this.bigImageSizeX/this.smallImageSizeX);
			if(this.settings&&this.settings["header"]!=""){
				this.popupSizeY=(parseInt(this.bigImageCont.style.height)-3-19)/(this.bigImageSizeY/this.smallImageSizeY)
			}else{
				this.popupSizeY=(parseInt(this.bigImageCont.style.height)-3)/(this.bigImageSizeY/this.smallImageSizeY)
			}
			this.pup.style.width=this.popupSizeX+'px';
			this.pup.style.height=this.popupSizeY+'px'
		};
MagicZoom.prototype.initPopup=function(){
			this.pup=document.createElement("DIV");
			this.pup.className='MagicZoomPup';
			this.pup.style.zIndex=10;
			this.pup.style.visibility='hidden';
			this.pup.style.position='absolute';
			this.pup.style["opacity"]=parseFloat(this.settings['opacity']/100.0);
			this.pup.style["-moz-opacity"]=parseFloat(this.settings['opacity']/100.0);
			this.pup.style["-html-opacity"]=parseFloat(this.settings['opacity']/100.0);
			this.pup.style["filter"]="alpha(Opacity="+this.settings['opacity']+")";
			this.recalculatePopupDimensions();
			this.smallImageCont.appendChild(this.pup);
			this.smallImageCont.unselectable="on";
			this.smallImageCont.style.MozUserSelect="none";
			this.smallImageCont.onselectstart=MagicView_ia;
			this.smallImageCont.oncontextmenu=MagicView_ia
		};
MagicZoom.prototype.initBigContainer=function(){

			var bigimgsrc=this.bigImage.src;
			while(this.bigImageCont.firstChild){
				this.bigImageCont.removeChild(this.bigImageCont.firstChild)
			}
			if(MagicZoom_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)
			}
			if(this.settings&&this.settings["header"]!=""){
				var f=document.createElement("DIV");
				f.className='MagicZoomHeader';
				f.style.position='relative';
				f.style.zIndex=10;
				f.style.left='0px';
				f.style.top='0px';
				f.style.padding='3px';
				f.innerHTML=this.settings["header"];
				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)
		};
MagicZoom.prototype.initZoom=function(){
			if(W.indexOf("safari")!=-1){
				if(!this.safariOnLoadStarted){
					MagicZoom_addEventListener(this.bigImage,"load",MagicZoom_createMethodReference(this,"initZoom"));
					this.safariOnLoadStarted=true;
					return
				}
			}else{
				if(!this.bigImage.complete||!this.smallImage.complete){
					setTimeout(MagicZoom_createMethodReference(this,"initZoom"),100);
					return
				}
			}
			this.bigImageSizeX=this.bigImage.width;
			this.bigImageSizeY=this.bigImage.height;
			this.smallImageSizeX=this.smallImage.width;
			this.smallImageSizeY=this.smallImage.height;
			if(this.bigImageSizeX==0||this.bigImageSizeY==0||this.smallImageSizeX==0||this.smallImageSizeY==0){
				setTimeout(MagicZoom_createMethodReference(this,"initZoom"),100);
				return
			}
			this.smallImageCont.style.width=this.smallImage.width+'px';
			this.smallImageCont.style.height=this.smallImage.height+'px';
			this.bigImageCont.style.left=this.smallImage.width+15+'px';
			//Position verticale
			this.bigImageCont.style.top='-50px';
			switch(this.settings['position']){
				case'left':this.bigImageCont.style.left='-'+(15+parseInt(this.bigImageCont.style.width))+'px';break;
				case'bottom':this.bigImageCont.style.top=this.smallImage.height+15+'px';
					this.bigImageCont.style.left='0px';break;
				case'top':this.bigImageCont.style.top='-'+(15+parseInt(this.bigImageCont.style.height))+'px';
					this.bigImageCont.style.left='0px';break;
				case'custom':this.bigImageCont.style.left='0px';
					this.bigImageCont.style.top='0px';break
			}
			if(this.pup){
				this.recalculatePopupDimensions();
				return
			}
			this.initBigContainer();
			this.initPopup();
			MagicZoom_addEventListener(window.document,"mousemove",this.checkcoords_ref);
			MagicZoom_addEventListener(this.smallImageCont,"mousemove",MagicZoom_createMethodReference(this,"mousemove"));
			if(this.settings&&this.settings["drag_mode"]==true){
				MagicZoom_addEventListener(this.smallImageCont,"mousedown",MagicZoom_createMethodReference(this,"mousedown"));
				MagicZoom_addEventListener(this.smallImageCont,"mouseup",MagicZoom_createMethodReference(this,"mouseup"));
				this.positionX=this.smallImageSizeX/2;
				this.positionY=this.smallImageSizeY/2;
				this.showrect()
			}
		};

function MagicZoom_findSelectors(id,zoom){
	var aels=window.document.getElementsByTagName("A");
	for(var i=0;i<aels.length;i++){
		if(aels[i].rel==id){
			MagicZoom_addEventListener(aels[i],"click",function(event){
										this.blur();
										MagicZoom_stopEventPropagation(event);
										return false});
			MagicZoom_addEventListener(aels[i],zoom.settings['thumb_change'],MagicZoom_createMethodReference(zoom,"replaceZoom",aels[i]));
			aels[i].mzextend=MagicZoom_extendElement;
			aels[i].mzextend({zoom:zoom,selectThisZoom:function(){this.zoom.replaceZoom(null,this)}});
			var img=document.createElement("IMG");
			img.src=aels[i].href;
			img=document.createElement("IMG");
			img.src=aels[i].rev
		}
	}
};
function MagicZoom_stopZooms(){
	while(MagicZoom_zooms.length>0){
		var zoom=MagicZoom_zooms.pop();
		zoom.stopZoom()
	}
};
function MagicZoom_findZooms(){
	var aels=window.document.getElementsByTagName("A");
	for(var i=0;i<aels.length;i++){
		if(aels[i].className=="MagicZoom"){
			while(aels[i].firstChild){
				if(aels[i].firstChild.tagName!='IMG'){
					aels[i].removeChild(aels[i].firstChild)
				}else{
					break
				}
			}
			if(aels[i].firstChild.tagName!='IMG')throw"Invalid MagicZoom invocation!";
			var rand=Math.round(Math.random()*1000000);
			aels[i].zoom=zoom;
			aels[i].style.position="relative";
			aels[i].style.display='block';
			aels[i].style.textDecoration='none';
			MagicZoom_addEventListener(aels[i],"click", function(event){
													this.blur();
													MagicZoom_stopEventPropagation(event);
													return false});
			if(aels[i].id==''){
				aels[i].id="sc"+rand
			}
			if(MagicZoom_ua=='msie'){
				aels[i].style.zIndex=0
			}
			var smallImg=aels[i].firstChild;
			smallImg.id="sim"+rand;
			var bigCont=document.createElement("DIV");
			bigCont.id="bc"+rand;
			re=new RegExp(/opacity(\s+)?:(\s+)?(\d+)/i);
			matches=re.exec(aels[i].rel);
			var opacity=50;
			if(matches){opacity=parseInt(matches[3])}
			re=new RegExp(/thumb\-change(\s+)?:(\s+)?(click|mouseover)/i);
			matches=re.exec(aels[i].rel);
			var thumb_change='click';
			if(matches){thumb_change=matches[3]}
			re=new RegExp(/zoom\-width(\s+)?:(\s+)?(\w+)/i);
			matches=re.exec(aels[i].rel);
			bigCont.style.width='315px';
			if(matches){bigCont.style.width=matches[3]}
			re=new RegExp(/zoom\-height(\s+)?:(\s+)?(\w+)/i);
			matches=re.exec(aels[i].rel);
			bigCont.style.height='260px';
			if(matches){bigCont.style.height=matches[3]}
			re=new RegExp(/zoom\-position(\s+)?:(\s+)?(\w+)/i);
			matches=re.exec(aels[i].rel);
			bigCont.style.left=aels[i].firstChild.width+15+'px';
			bigCont.style.top='0px';
			var position='right';
			if(matches){
				switch(matches[3]){
					case'left':position='left';break;
					case'bottom':position='bottom';break;
					case'top':position='top';break;
					case'custom':position='custom';break
				}
			}
			re=new RegExp(/drag\-mode(\s+)?:(\s+)?(true|false)/i);
			matches=re.exec(aels[i].rel);
			var drag_mode=false;
			if(matches){if(matches[3]=='true')drag_mode=true}
			re=new RegExp(/always\-show\-zoom(\s+)?:(\s+)?(true|false)/i);
			matches=re.exec(aels[i].rel);
			var bigImage_always_visible=false;
			if(matches){if(matches[3]=='true')bigImage_always_visible=true}
			bigCont.style.overflow='hidden';
			bigCont.className="MagicZoomBigImageCont";
			bigCont.style.zIndex=100;
			bigCont.style.visibility='hidden';
			if(position!='custom'){
				bigCont.style.position='absolute'
			}else{
				bigCont.style.position='relative'
			}
			var bigImg=document.createElement("IMG");
			bigImg.id="bim"+rand;
			bigImg.src=aels[i].href;
			bigCont.appendChild(bigImg);
			if(position!='custom'){
				aels[i].appendChild(bigCont)
			}else{
				_el(aels[i].id+'-big').appendChild(bigCont)
			}
			var settings={bigImage_always_visible:bigImage_always_visible,drag_mode:drag_mode,header:aels[i].title,opacity:opacity,thumb_change:thumb_change,position:position};
			var zoom=new MagicZoom(aels[i].id,'sim'+rand,bigCont.id,'bim'+rand,settings);
			zoom.initZoom();
			MagicZoom_findSelectors(aels[i].id,zoom)
		}
	}
};
if(MagicZoom_ua=='msie')try{document.execCommand("BackgroundImageCache",false,true)}catch(e){};
MagicZoom_addEventListener(window,"load",MagicZoom_findZooms);
