var img_change=0;
new fader('img_fader',['img_init',1,-1,.7],['img_swap',0,1,.7]);
function xfade(img_def)
{
	if(!img_fader.fading)
	{
		if(img_def!=img_current)
		{
			var img_set="img_change=0;img_current='"+img_def+"';document.getElementById('img_swap_img').src='"+img_list[img_def][0]+"';document.getElementById('img_swap_p').innerHTML='"+img_list[img_def][1]+"';";
			var img_swap_var="document.getElementById('img_init_img').src='"+img_list[img_def][0]+"';document.getElementById('img_init_p').innerHTML='"+img_list[img_def][1]+"';";
			img_swap_var+=";if(img_change){xfade(img_change);}";
			new stepper('img_xfader',[img_set,';'],['img_fader'],0,[img_swap_var,';']);
			img_xfader.start();
		}
	}
	else{img_change=img_def;}
}
/*	array: element, from (relative), to (relative), accelerate, decelerate, speed (seconds), axis (x or y), [property name, centre (0) or right align (1), pixels at which to stop])
	function: new sizer([object name], [array name])*/
function sizer()
{
	var args=arguments;
	with(this)
	{
		this.el=[];this.fr=[];this.tr=[];this.dr=[];this.ac=[];this.dc=[];this.sp=[];this.ax=[];this.cr=[];this.ic=[];this.st=[];this.og=[];this.ps=[];
		this._el=[];this._fr=[];this._tr=[];this._sp=[];this._dr=[];this._ax=[];
		this.ec=args.length-1;
		this.name=args[0];window[args[0]]=this;
		for (var i=1;i<=ec;i++)
		{
			el[i]=args[i][0];_el[i]=document.getElementById(el[i]).style;
			fr[i]=args[i][1];
			tr[i]=args[i][2];
			ac[i]=args[i][3];
			dc[i]=args[i][4];
			sp[i]=args[i][5]?args[i][5]:1/25;
			ax[i]=args[i][6];_ax[i]=(ax[i]=="x"?"width":"height");
			cr[i]=args[i][7]?[args[i][7][0],(args[i][7][1]?1:.5),(!args[i][7][1]?(args[i][7][2]?args[i][7][2]:0):0),args[i][7][3]]:[0,0,0,0];
			dr[i]=(tr[i]>=0?1:-1);
			tr[i]=(tr[i]*dr[i]);
			st[i]=0;
			ps[i]=0;
		}
		this.built=0;
		this.hold=0;this.held=0;this.holding=0;
		this.slink=0;
		this.rev=0;
		this.fl=0;
		this.sizing=0;	
		this._dc=0;
		this.build=function()
		{
			if(!built)
			{
				for (var i=1;i<=ec;i++)
				{
					og[i]=parseFloat(eval("_el[i]."+_ax[i]))+fr[i];
					if(cr[i][0]){ps[i]=parseFloat(eval("document.getElementById('"+cr[i][0]+"').style."+cr[i][3]))};
					_fr[i]=og[i];
					_dr[i]=(1-(2*rev))*dr[i];
					_tr[i]=tr[i];
					ic[i]=_tr[i]/(25*sp[i]);
					//thirds
					_sp[i]=isNaN(sp[i])?parseInt(sp[i])/100:(_tr[i]/(25*sp[i]));
					//thirds
					ic[i]=((ac[i]&&dc[i]))?_sp[i]*2:(((ac[i]||dc[i]))?_sp[i]*1.4:_sp[i]);
					//halves
					//ic[i]=((ac[i]&&dc[i]))?_sp[i]*4.5:(((ac[i]||dc[i]))?_sp[i]*2.5:_sp[i]);
					_el[i].display="block";
				}
				built=1;

			}
			if(held)
			{
				for (var i=1;i<=ec;i++)
				{
					if((_dr[i]==dr[i])==rev){og[i]=og[i]+(_dr[i]*(tr[i]));_dr[i]*=-1;}
					_fr[i]=parseFloat(eval("_el[i]."+_ax[i]));
					if(cr[i][0]){ps[i]=parseFloat(eval("document.getElementById('"+cr[i][0]+"').style."+cr[i][3]))};
					_tr[i]=(-1*(_dr[i]))*(_fr[i]-og[i])+tr[i];
				}
				held=0;
			}
			for (var i=1;i<=ec;i++){st[i]=0;};fl=0;
		}
		this.size=function()
		{
			sizing=1;
			if(fl){_dc=0;for (var i=1;i<=ec;i++){_tr[i]=st[i]}}
			else if(hold){for (i=1;i<=ec;i++){held=1;holding=1;if(ac&&(st[i]<(_tr[i]/3))){_tr[i]=st[i]*1.1;}else if(dc&&(_tr[i]-st[i]>(.1*(_tr[i]/3)))){_dc=1;_tr[i]=st[i]+(_tr[i]/3)*.1}else{_tr[i]=st[i]}}};
			for (i=1;i<=ec;i++)
			{
				if (st[i]!=_tr[i])
				{
					//thirds
					st[i]=((st[i]<(_tr[i]/3))&&ac[i])?ic[i]/10+st[i]+(ic[i]*(st[i]/(_tr[i]/3))):(((st[i]>(_tr[i]-(_tr[i]/3)))&&dc[i])?ic[i]/10+st[i]+(ic[i]*((_tr[i]-st[i])/(_tr[i]/3))):st[i]+ic[i]*1.1);
					//halves
					//st[i]=((st[i]<(_tr[i]/3))&&ac[i])?ic[i]/10+st[i]+(ic[i]*(st[i]/(_tr[i]/2))):(((st[i]>(_tr[i]-(_tr[i]/3)))&&dc[i])?ic[i]/10+st[i]+(ic[i]*((_tr[i]-st[i])/(_tr[i]/2))):1+st[i]+ic[i]*1.1);
					st[i]=st[i]>_tr[i]?_tr[i]:st[i];
					eval("_el[i]."+_ax[i]+"=(_dr[i]*st[i])+_fr[i]+'px'");
					if(cr[i][0]){eval("document.getElementById('"+cr[i][0]+"').style."+cr[i][3]+"='"+((-1*((cr[i][2]<(cr[i][1]*st[i]))?cr[i][2]:cr[i][1]*st[i])*_dr[i])+ps[i])+"px'");}
				}
			}
			hold=0;var kg=0;for(i=1;i<=ec;i++){kg+=!(st[i]==_tr[i]);}
			if(kg||fl){if(fl){build();}setTimeout(name+".size()",40);}else{sizing=0;holding=0;built=held;if(!held&&slink){var islink=slink;slink=0;eval(islink+".start()");}}
		}
		this.start=function(){if(sizing&&rev){flip();}else if(!sizing){rev=0;build();size();}}
		this.halt=function(){if(!held&&sizing){hold=1;}}
		this.trats=function(){if(sizing&&!rev){flip();}else if(!sizing){rev=1;build();size();}}
		this.flip=function(){fl=1;rev=!rev;held=1;}
	}
}
