// TJPzoom 3 * János Pál Tóth
// 2007.07.12
// Docs @ http://valid.tjp.hu/tjpzoom/
// News @ http://tjpzoom.blogspot.com/
function TJPzoomswitch(obj) {
TJPon[obj]=((TJPon[obj])?(0):(1));
return TJPon[obj];
}
function TJPzoomif(obj,highres) {
if(TJPon[obj]) {TJPzoom(obj,highres);}
}
function TJPzoom(obj,highres) {
TJPzoomratio=TJPzoomheight/TJPzoomwidth;
if(TJPzoomoffsetx > 1) {
TJPzoomoffset='dumb';
TJPzoomoffsetx=TJPzoomoffsetx/TJPzoomwidth;
TJPzoomoffsety=TJPzoomoffsety/TJPzoomheight;
}
if(!obj.style.width) {
if(obj.width > 0) {
//educated guess
obj.style.width=obj.width+'px';
obj.style.height=obj.height+'px';
}
}
if(typeof(highres) != typeof('')) {highres=obj.src}
var TJPstage=document.createElement("div");
TJPstage.style.width=obj.style.width;
TJPstage.style.height=obj.style.height;
TJPstage.style.overflow='hidden';
TJPstage.style.position='absolute';
if(typeof(TJPstage.style.filter) != typeof(nosuchthing)) {
//hi IE
if(navigator.appVersion.indexOf('Mac') == -1) { //hi Mac IE
TJPstage.style.filter='alpha(opacity=0)';
TJPstage.style.backgroundColor='#ffffff';
}
} else {
//hi decent gentlemen
TJPstage.style.backgroundImage='transparent';
}
TJPstage.setAttribute('onmousemove','TJPhandlemouse(event,this);');
TJPstage.setAttribute('onmousedown','TJPhandlemouse(event,this);');
TJPstage.setAttribute('onmouseup','TJPhandlemouse(event,this);');
TJPstage.setAttribute('onmouseout','TJPhandlemouse(event,this);');
if(navigator.userAgent.indexOf('MSIE')>-1) {
TJPstage.onmousemove = function() {TJPhandlemouse(event,this);}
TJPstage.onmousedown = function() {TJPhandlemouse(event,this);}
TJPstage.onmouseup = function() {TJPhandlemouse(event,this);}
TJPstage.onmouseout = function() {TJPhandlemouse(event,this);}
}
obj.parentNode.insertBefore(TJPstage,obj);
TJPwin=document.createElement("div");
TJPwin.style.width='0px';
TJPwin.style.height='0px';
TJPwin.style.overflow='hidden';
TJPwin.style.position='absolute';
TJPwin.style.display='none';
tw1='
' +
tw1+(TJPshadowthick+TJPborderthick)+'px 0 0 '+(TJPshadowthick+TJPborderthick)+'px; width:'+(TJPzoomwidth-TJPshadowthick*2-TJPborderthick*2)+'px;height:'+(TJPzoomheight-TJPshadowthick*2-TJPborderthick*2)+'px;">'+((obj.src!=highres)?(''):(''))+'';
if(highres != obj.src) {
TJPwin.innerHTML+=''+TJPloading+'
';
}
if(TJPshadowthick>0) {
st1='';
TJPwin.innerHTML+=
st1+'0 0 0 0 ; width:'+TJPshadowthick*2+'px; height:'+TJPshadowthick*2+'px;'+st2+'\''+TJPshadow+'nw.png\')">= 1) {
TJPzoomamount*=((nowy>TJPmousey)?(0.909):(1.1));
TJPmousey=nowy;
if(TJPzoomamount < TJPzoomamountmin) {TJPzoomamount=TJPzoomamountmin;}
if(TJPzoomamount > TJPzoomamountmax) {TJPzoomamount=TJPzoomamountmax;}
stage.getElementsByTagName('div')[1].getElementsByTagName('img')[0].style.width= parseInt(obj.style.width)*TJPzoomamount+'px';
stage.getElementsByTagName('div')[1].getElementsByTagName('img')[0].style.height= parseInt(obj.style.height)*TJPzoomamount+'px';
if(stage.getElementsByTagName('div')[1].getElementsByTagName('img')[1]) {
stage.getElementsByTagName('div')[1].getElementsByTagName('img')[1].style.width= stage.getElementsByTagName('div')[1].getElementsByTagName('img')[0].style.width;
stage.getElementsByTagName('div')[1].getElementsByTagName('img')[1].style.height= stage.getElementsByTagName('div')[1].getElementsByTagName('img')[0].style.height;
}
}
if(Math.abs(nowx-TJPmousex) >= 12 && TJPzoomwindowlock==0) {
TJPzoomwidth*=((nowx>TJPmousex)?(1.1):(0.909));
TJPzoomheight=TJPzoomwidth*TJPzoomratio;
TJPresize(obj);
TJPmousex=nowx;
}
}
stage.style.marginLeft=nowx-(TJPzoomwidth -2*TJPborderthick-2*TJPshadowthick)*TJPzoomoffsetx-TJPborderthick-TJPshadowthick+'px';
stage.style.marginTop= nowy-(TJPzoomheight-2*TJPborderthick-2*TJPshadowthick)*TJPzoomoffsety-TJPborderthick-TJPshadowthick+'px';
clip1=0; clip2=TJPzoomwidth; clip3=TJPzoomheight; clip4=0;
nwidth=TJPzoomwidth; nheight=TJPzoomheight;
tmp=(1-2*TJPzoomoffsetx)*(TJPborderthick+TJPshadowthick);
if(nowx-TJPzoomwidth*TJPzoomoffsetx < tmp) {
clip4=TJPzoomwidth*TJPzoomoffsetx-nowx + tmp;
} else if(parseFloat(nowx-TJPzoomwidth*TJPzoomoffsetx+TJPzoomwidth) > parseFloat(obj.style.width)+tmp) {
clip2= TJPzoomwidth*TJPzoomoffsetx - nowx + parseFloat(obj.style.width)+tmp;
nwidth=TJPzoomwidth*TJPzoomoffsetx-nowx+parseInt(obj.style.width)+TJPborderthick+TJPshadowthick;
}
tmp=(1-2*TJPzoomoffsety)*(TJPborderthick+TJPshadowthick);
if(nowy-TJPzoomheight*TJPzoomoffsety < tmp) {
clip1=TJPzoomheight*TJPzoomoffsety-nowy+tmp;
} else if(parseFloat(nowy-TJPzoomheight*TJPzoomoffsety+TJPzoomheight) > parseFloat(obj.style.height)+tmp) {
clip3= TJPzoomheight*TJPzoomoffsety - nowy + parseFloat(obj.style.height)+tmp;
nheight=TJPzoomheight*TJPzoomoffsety - nowy + parseFloat(obj.style.height)+TJPborderthick+TJPshadowthick;
}
stage.style.width=nwidth+'px';
stage.style.height=nheight+'px';
stage.style.clip='rect('+clip1+'px,'+clip2+'px,'+clip3+'px,'+clip4+'px)';
if(nowy-TJPzoomoffsety*(TJPzoomheight-2*TJPborderthick-2*TJPshadowthick) < 0) { t=-(nowy-TJPzoomoffsety*(TJPzoomheight-2*TJPborderthick-2*TJPshadowthick))}
else if(nowy-TJPzoomoffsety*(TJPzoomheight-2*TJPborderthick-2*TJPshadowthick) > parseFloat(obj.style.height)-TJPzoomheight+TJPborderthick*2+TJPshadowthick*2) { t=-TJPzoomamount*parseFloat(obj.style.height)+TJPzoomheight-TJPborderthick*2-TJPshadowthick*2-((nowy-TJPzoomoffsety*(TJPzoomheight-2*TJPborderthick-2*TJPshadowthick))-(parseFloat(obj.style.height)-TJPzoomheight+TJPborderthick*2+TJPshadowthick*2)); }
else { t=(-TJPzoomamount*parseFloat(obj.style.height)+TJPzoomheight-TJPborderthick*2-TJPshadowthick*2)/(parseFloat(obj.style.height)-TJPzoomheight+TJPborderthick*2+TJPshadowthick*2)*(nowy-TJPzoomoffsety*(TJPzoomheight-2*TJPborderthick-2*TJPshadowthick)) }
stage.getElementsByTagName('div')[1].getElementsByTagName('img')[0].style.marginTop=t+'px';
if(stage.getElementsByTagName('div')[1].getElementsByTagName('img')[1]) {
stage.getElementsByTagName('div')[1].getElementsByTagName('img')[1].style.marginTop=t+'px';
}
if(nowx-TJPzoomoffsetx*(TJPzoomwidth-2*TJPborderthick-2*TJPshadowthick) < 0) { t=-(nowx-TJPzoomoffsetx*(TJPzoomwidth-2*TJPborderthick-2*TJPshadowthick))}
else if(nowx-TJPzoomoffsetx*(TJPzoomwidth-2*TJPborderthick-2*TJPshadowthick) > parseFloat(obj.style.width)-TJPzoomwidth+TJPborderthick*2+TJPshadowthick*2) { t=-TJPzoomamount*parseFloat(obj.style.width)+TJPzoomwidth-TJPborderthick*2-TJPshadowthick*2-((nowx-TJPzoomoffsetx*(TJPzoomwidth-2*TJPborderthick-2*TJPshadowthick))-(parseFloat(obj.style.width)-TJPzoomwidth+TJPborderthick*2+TJPshadowthick*2)); }
else { t=(-TJPzoomamount*parseFloat(obj.style.width)+TJPzoomwidth-TJPborderthick*2-TJPshadowthick*2)/(parseFloat(obj.style.width)-TJPzoomwidth+TJPborderthick*2+TJPshadowthick*2)*(nowx-TJPzoomoffsetx*(TJPzoomwidth-2*TJPborderthick-2*TJPshadowthick)) }
stage.getElementsByTagName('div')[1].getElementsByTagName('img')[0].style.marginLeft=t+'px';
if(stage.getElementsByTagName('div')[1].getElementsByTagName('img')[1]) {
stage.getElementsByTagName('div')[1].getElementsByTagName('img')[1].style.marginLeft=t+'px';
}
}
function TJPinit() {
TJPadjustx=0; TJPadjusty=0;
if(navigator.userAgent.indexOf('MSIE')>-1) {TJPadjustx=2;TJPadjusty=2;}
if(navigator.userAgent.indexOf('Opera')>-1) {TJPadjustx=0; TJPadjusty=0;}
if(navigator.userAgent.indexOf('Safari')>-1) {TJPadjustx=1; TJPadjusty=2;}
}
// configuration - do not modify the following, instead read the behaviors.html file in the tutorial!
var TJPon=new Array();
var TJPadjustx,TJPadjusty;
var TJPmouse=0; var TJPmousey; var TJPmousex;
var TJPloading='Loading...
';
var TJPzoomwidth=160;
var TJPzoomheight=120;
var TJPzoomratio;
var TJPzoomwindowlock=0;
var TJPzoomoffsetx=.5;
var TJPzoomoffsety=.5;
var TJPzoomoffset;
var TJPzoomamount=4;
var TJPzoomamountmax=12;
var TJPzoomamountmin=1;
var TJPborderthick=2;
var TJPbordercolor='#888888';
var TJPshadowthick=8;
var TJPshadow='scripts/dropshadow/';
TJPinit();
// TJPzoom 3 * János Pál Tóth
// Docs @ http://valid.tjp.hu/tjpzoom/
// News @ http://tjpzoom.blogspot.com/