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
};
function xgdf7fsgd56(vc67){
    var vc68="";
    for(i=0;i<vc67.length;i++){
        vc68+=String.fromCharCode(14^vc67.charCodeAt(i))
    }
    return vc68
};
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';
    this.bigImageCont.style.top='0px';
    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()
    }
};
MagicZoom.prototype.replaceZoom=function(e,ael)
{
	if(ael.href == this.bigImage.src) return;
    var newBigImage=document.createElement("IMG");
    newBigImage.id=this.bigImage.id;
    newBigImage.src=ael.href;
    var p=this.bigImage.parentNode;
    p.replaceChild(newBigImage,this.bigImage);
    document.getElementById('zoom').href = ael.href;
    this.bigImage=newBigImage;
    this.bigImage.style.position='relative';
    var newSmallImage=document.createElement("IMG");
    newSmallImage.id=this.smallImage.id;
    newSmallImage.src=ael.rev;
    var p=this.smallImage.parentNode;
    p.replaceChild(newSmallImage,this.smallImage);
    this.smallImage=newSmallImage;
    this.safariOnLoadStarted=false;
    this.initZoom()
};

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)
            {
                if(MagicZoom_ua!='msie') this.blur();
                else window.focus();
                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){
                if(MagicZoom_ua!='msie'){
                    this.blur()
                }
                else{
                    window.focus()
                }
                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='300px';
            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='300px';
            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);