// TJPzoom 3 * János Pál Tóth
// 2007.04.28
// 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) {
 if(TJPon[obj]) {TJPzoom(obj);}
}

function TJPzoom(obj,highres) {
 if(obj.parentNode.style.textAlign == 'center') {
  obj.parentNode.style.textAlign='left';
  obj.parentNode.style.width=obj.style.width;
  obj.parentNode.style.margin='auto';
 }
 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';
 TJPstage.style.backgroundImage='url('+TJPtransp+')';

 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.innerHTML= 
 '<div style="position:absolute;overflow:hidden;margin: '+TJPshadowthick+'px 0 0 '+TJPshadowthick+'px; background-color:'+TJPbordercolor+'; width:'+(TJPzoomwidth-TJPshadowthick*2)+'px;height:'+(TJPzoomheight-TJPshadowthick*2)+'px"></div>' +
 '<div style="position:absolute;overflow:hidden;margin: '+(TJPshadowthick+TJPborderthick)+'px 0 0 '+(TJPshadowthick+TJPborderthick)+'px; width:'+(TJPzoomwidth-TJPshadowthick*2-TJPborderthick*2)+'px;height:'+(TJPzoomheight-TJPshadowthick*2-TJPborderthick*2)+'px;"><img src="'+highres+'" style="margin:0;padding:0;border:0; width:'+(TJPzoomamount*parseInt(obj.style.width))+'px;height:'+(TJPzoomamount*parseInt(obj.style.height))+'px;" '+((highres != obj.src)?('onload="if(this.parentNode) {this.parentNode.parentNode.getElementsByTagName(\'div\')[2].style.display=\'none\';}"'):(''))+'/></div>';
 if(highres != obj.src) {
  TJPwin.innerHTML+='<div style="position:absolute; margin:'+(TJPshadowthick+TJPborderthick)+'px 0 0 '+(TJPshadowthick+TJPborderthick)+'px;">'+TJPloading+'</div>';
 }
 if(TJPshadowthick>0) {
  TJPwin.innerHTML+='<span style="position:absolute; margin: 0 0 0 0    ; display:inline-block; width:'+TJPshadowthick*2+'px; height:'+TJPshadowthick*2+'px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\''+TJPshadow+'nw.png\',sizingMethod=\'scale\')"><img src="'+TJPshadow+'nw.png" style="width:'+TJPshadowthick*2+'px; height:'+TJPshadowthick*2+'px;filter:alpha(opacity=0);"/></span>' +
  '<span style="position:absolute; margin: 0 0 0 '+(TJPzoomwidth-TJPshadowthick*2)+'px; display:inline-block; width:'+TJPshadowthick*2+'px; height:'+TJPshadowthick*2+'px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\''+TJPshadow+'ne.png\',sizingMethod=\'scale\')"><img src="'+TJPshadow+'ne.png" style="width:'+TJPshadowthick*2+'px; height:'+TJPshadowthick*2+'px;filter:alpha(opacity=0);"/></span>' +
  '<span style="position:absolute; margin: '+(TJPzoomheight-TJPshadowthick*2)+'px 0 0 0px; display:inline-block; width:'+TJPshadowthick*2+'px; height:'+TJPshadowthick*2+'px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\''+TJPshadow+'sw.png\',sizingMethod=\'scale\')"><img src="'+TJPshadow+'sw.png" style="width:'+TJPshadowthick*2+'px; height:'+TJPshadowthick*2+'px;filter:alpha(opacity=0);"/></span>' +
  '<span style="position:absolute; margin: '+(TJPzoomheight-TJPshadowthick*2)+'px 0 0 '+(TJPzoomwidth-TJPshadowthick*2)+'px; display:inline-block; width:'+TJPshadowthick*2+'px; height:'+TJPshadowthick*2+'px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\''+TJPshadow+'se.png\',sizingMethod=\'scale\')"><img src="'+TJPshadow+'se.png" style="width:'+TJPshadowthick*2+'px; height:'+TJPshadowthick*2+'px;filter:alpha(opacity=0);"/></span>' +
  '<span style="position:absolute; margin: 0 0 0 '+(TJPshadowthick*2)+'px; display:inline-block; background-color: #ff00000;width:'+(TJPzoomwidth-TJPshadowthick*4)+'px; height:'+TJPshadowthick*2+'px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\''+TJPshadow+'n.png\',sizingMethod=\'scale\')"><img src="'+TJPshadow+'n.png" style="width:'+(TJPzoomwidth-TJPshadowthick*4)+'px; height:'+TJPshadowthick*2+'px;filter:alpha(opacity=0);"/></span>' +
  '<span style="position:absolute; margin: '+(TJPshadowthick*2)+'px 0 0 0; display:inline-block; width:'+(TJPshadowthick*2)+'px; height:'+(TJPzoomheight-TJPshadowthick*4)+'px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\''+TJPshadow+'w.png\',sizingMethod=\'scale\')"><img src="'+TJPshadow+'w.png" style="width:'+(TJPshadowthick*2)+'px; height:'+(TJPzoomheight-TJPshadowthick*4)+'px;filter:alpha(opacity=0);"/></span>' +
  '<span style="position:absolute; margin: '+(TJPshadowthick*2)+'px 0 0 '+(TJPzoomwidth-TJPshadowthick*2)+'px; display:inline-block; width:'+(TJPshadowthick*2)+'px; height:'+(TJPzoomheight-TJPshadowthick*4)+'px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\''+TJPshadow+'e.png\',sizingMethod=\'scale\')"><img src="'+TJPshadow+'e.png" style="width:'+(TJPshadowthick*2)+'px; height:'+(TJPzoomheight-TJPshadowthick*4)+'px;filter:alpha(opacity=0);"/></span>' +
  '<span style="position:absolute; margin: '+(TJPzoomheight-TJPshadowthick*2)+'px 0 0 '+(TJPshadowthick*2)+'px; display:inline-block; width:'+(TJPzoomwidth-TJPshadowthick*4)+'px; height:'+TJPshadowthick*2+'px;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\''+TJPshadow+'s.png\',sizingMethod=\'scale\')"><img src="'+TJPshadow+'s.png" style="width:'+(TJPzoomwidth-TJPshadowthick*4)+'px; height:'+TJPshadowthick*2+'px;filter:alpha(opacity=0);"/></span>';

 }
 ;
 //marker - zoomer
 obj.parentNode.insertBefore(TJPwin,TJPstage);
}


function TJPfindposy(obj) {
 var curtop = 0;
 if(!obj) {return 0;}
 if (obj.offsetParent) {
  while (obj.offsetParent) {
   curtop += obj.offsetTop
   obj = obj.offsetParent;
  }
 } else if (obj.y) {
  curtop += obj.y;
 }
 return curtop;
}

function TJPfindposx(obj) {
 var curleft = 0;
 if(!obj) {return 0;}
 if (obj && obj.offsetParent) {
  while (obj.offsetParent) {
   curleft += obj.offsetLeft
   obj = obj.offsetParent;
  }
 } else if (obj.x) {
  curleft += obj.x;
 }
 return curleft;
}


function TJPhandlemouse(evt,obj) {
 var evt = evt?evt:window.event?window.event:null; if(!evt) { return false; }
 if(evt.pageX) {
  nowx=evt.pageX-TJPfindposx(obj)-TJPadjustx;
  nowy=evt.pageY-TJPfindposy(obj)-TJPadjusty;
 } else {
  if(document.documentElement && document.documentElement.scrollTop) {
   nowx=evt.clientX+document.documentElement.scrollLeft-TJPfindposx(obj)-TJPadjustx;
   nowy=evt.clientY+document.documentElement.scrollTop-TJPfindposy(obj)-TJPadjusty;
  } else {
   nowx=evt.x+document.body.scrollLeft-TJPfindposx(obj)-TJPadjustx;
   nowy=evt.y+document.body.scrollTop-TJPfindposy(obj)-TJPadjusty;
  }
 }
 if(evt.type == 'mousemove') {
  TJPsetwin(obj,nowx,nowy);
 } else if(evt.type == 'mousedown') {
  TJPmouse=1;
  TJPmousey=nowy;
 } else if(evt.type =='mouseup') {
  TJPmouse=0;
 } else if(evt.type =='mouseout') {
  x=obj.parentNode;
  x.removeChild(x.getElementsByTagName('div')[0]);
  x.removeChild(x.getElementsByTagName('div')[0]);
 }
}


// TJPzoom 3 * János Pál Tóth
// Docs @ http://valid.tjp.hu/tjpzoom/ 
// News @ http://tjpzoom.blogspot.com/


function TJPsetwin(obj,nowx,nowy) {
 stage=obj.parentNode.getElementsByTagName('div')[0];
 if(TJPmouse == 1) {
  if(Math.abs(nowy-TJPmousey) >= 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';
  }
 }
 stage.style.marginLeft=nowx-TJPzoomoffsetx+'px';
 stage.style.marginTop=nowy-TJPzoomoffsety+'px';
 clip1=0; clip2=TJPzoomwidth; clip3=TJPzoomheight; clip4=0;
 nwidth=TJPzoomwidth; nheight=TJPzoomheight;
 if(nowx-TJPzoomoffsetx < 0) {
  clip4=TJPzoomoffsetx-nowx;
 } else if(parseFloat(nowx-TJPzoomoffsetx+TJPzoomwidth) > parseFloat(obj.style.width)) {
  clip2= TJPzoomoffsetx - nowx + parseFloat(obj.style.width);
  nwidth=TJPzoomoffsetx-nowx+parseInt(obj.style.width)+TJPborderthick;
 }
 
 if(nowy-TJPzoomoffsety < 0) {
  clip1=TJPzoomoffsety-nowy;
 } else if(parseFloat(nowy-TJPzoomoffsety+TJPzoomheight) > parseFloat(obj.style.height)) {
  clip3= TJPzoomoffsety - nowy + parseFloat(obj.style.height)
  nheight=TJPzoomoffsety - nowy + parseFloat(obj.style.height)+TJPborderthick;
 }
 stage.style.width=nwidth+'px';
 stage.style.height=nheight+'px';
 stage.style.clip='rect('+clip1+'px,'+clip2+'px,'+clip3+'px,'+clip4+'px)';
 stage.getElementsByTagName('div')[1].getElementsByTagName('img')[0].style.marginLeft=TJPzoomamount*(TJPzoomoffsetx-TJPzoomwidth/2-nowx)+TJPzoomwidth/2-TJPborderthick-TJPshadowthick+'px';
 stage.getElementsByTagName('div')[1].getElementsByTagName('img')[0].style.marginTop =TJPzoomamount*(TJPzoomoffsety-TJPzoomheight/2-nowy)+TJPzoomheight/2-TJPborderthick-TJPshadowthick+'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 TJPloading='<div style="background-color: #ffeb77; color: #333333; padding:2px; font-family: verdana,arial,helvetica; font-size: 10px;">Loading...</div>';

var TJPtransp='t.gif';
var TJPzoomwidth=160;
var TJPzoomheight=120;

var TJPzoomoffsetx=TJPzoomwidth/2;
var TJPzoomoffsety=TJPzoomheight/2;

var TJPzoomamount=4;
var TJPzoomamountmax=12;
var TJPzoomamountmin=1;

var TJPborderthick=2;
var TJPbordercolor='#cccccc';

var TJPshadowthick=8;
var TJPshadow='dropshadow/';

TJPinit();

// TJPzoom 3 * János Pál Tóth
// Docs @ http://valid.tjp.hu/tjpzoom/ 
// News @ http://tjpzoom.blogspot.com/
