/* dynlite path class
 * version: 2.1.1/2005-04-25
 */

/* class constructor */
function trans(id)
{	this.id=id;
	this.steps=20;
	this.time=30;
	this.interval=0;
	this.cords=[];
	this.i=0;
}
tp=trans.prototype;
/* private methods */
tp._calc=function(start,end)//original source of bezier method- http://astronomy.swin.edu.au/~pbourke/curves/bezier/
{	var cords=[];
	for(var i=this.steps;i>=0;i--)
	{	var mu=i/this.steps;
		var mu2=mu*mu;
		var mum1=1-mu;
		var mum12=mum1*mum1;
		cords[i]=Math.round(start*mum12+2*end*mum1*mu+end*mu2);
	}
return cords;
}
tp._step=function()
{	this.i+=this.dir;
	this.evoke('ontrans');
	if(!this.i||this.i>=this.steps)
	{	clearInterval(this.interval);
		this.evoke((this.dir==1)? 'ontransin':'ontransout');
	}
}
/* public methods */
tp.evoke=function(evt,e)
{	if(this[evt]) this[evt](e);
}
tp.go=function(dir)
{	clearInterval(this.interval);
	this.dir=dir||1;
	this.evoke('ontransstart');
	this.interval=setInterval(this.id+"._step()",this.time);
}
tp.stop=function()
{	clearInterval(this.interval);
	this.evoke('ontransstop');
}


/* big image zoom class */
function zoom(id)
{	this.id=id;
	this.bussy=0;
	this.maxsize=600;
	this.mintop=0;
	this.minleft=0;
}
zp=zoom.prototype=new trans;
zp.enlarge=function(image)
{	if(this.bussy) return;
	if(this.dir&&this.dir==1) this.go(-1);
	else
	{	this.image=obj(image);
		this.image.style.zIndex='20';
		this.larger=(this.image.height>this.image.width)? this.image.height:this.image.width;
		this.ratio=this.larger/this.image.width;
		this.vals=this._calc(this.image.width,parseInt(this.maxsize/this.ratio));
		//this.pos=this._calc(this.image.offsetLeft,this.minleft);
		this.left=this._calc(this.image.offsetLeft,this.minleft);
		this.top=this._calc(this.image.offsetTop,this.mintop);
		this.i=0;
		this.go(1);
		//this.image.style.cursor="url('img/bullit.cur')";
		this.image.cursor.hidden;
	}
}
/* custom event handlers */
zp.ontransstart=function()
{	this.bussy=1;
	if(this.dir==1)
	{	this.rimage=new Image();
		this.rimage.src=this.image.src.replace(/(TMB)/,'');
		//this.rimage.src=this.image.src.replace(/(BIG)?\.(\w+)$/,'BIG.$2');
	}

}
zp.ontrans=function()
{	this.image.width=this.vals[this.i];
	//this.image.style.left=this.pos[this.i];
	this.image.width=this.vals[this.i];
	this.image.style.left=this.left[this.i];
	this.image.style.top=this.top[this.i];
}
zp.ontransin=function()
{	this.image.src=this.rimage.src;
	this.bussy=0;
}
zp.ontransout=function()
{	this.bussy=0;
	this.image.style.zIndex='2';
/* shows materials select box */
	if(document.getElementById('colorsandmaterials'))
	{	obj('colorsandmaterials').style.visibility="visible";
	}

}
/* creation of the actual object */
z=new zoom('z');
