//name, [speed (seconds),default height, default width,gallery] - gallery = [[image array], [text array]]
function thief()
{
	var args=arguments;
	with(this)
	{
		this.im=[];this.tx=[];
		this.name=args[0];window[name]=this;
		this.sp=args[1][0]?args[1][0]:1/25
		this.dh=args[1][1];
		this.dw=args[1][2];
		if(args[1][3]){im=[''].concat(args[1][3][0]);this.ic=im.length-1;if(args[1][3][1]){tx=[''].concat(args[1][3][1]);if(tx.length<=2){document.getElementById(name+'_thief_text').innerHTML=tx[1];tx=0;}}else{tx=0;}}
		this.ni=new Image();
		this.ph=0;
		this.build=function()
		{
			this.toph=30;this.rightw=10;this.baseh=10;this.leftw=10;this.isborder=0;
			this.ci=1;this.key=0;this.dir=1;this.nv="";
			var clear_thief_filter="document.getElementById('"+name+"_thief').style.filter='';";

			new fader(name+'_bg_in',['thief_bg',0,.8,.1]);new fader(name+'_thief_in',[name+'_thief',0,1,.1]);
			this.oB_st_pointer=new stepper(name+'_show_thief',[name+'_bg_in'],0,[name+'_thief_in'],0,[clear_thief_filter,';'],[name+'.nav(1)',';']);
			this.oB_ht_pointer=new stepper(name+'_hide_thief',['document.getElementById("'+name+'_thief_content").style.display="none"',';'],[name+'_thief_in','.trats()'],0,[name+'_bg_in','.trats()'],0,[name+'.set_default()',';']);
			this.oB_pointer=new stepper(name+'_oB_thief',0);
			this.oB_resize_pointer=0;this.oB_wait=0;
			this.oB_fade_pointer=new fader(name+'_fade_out',[name+'_thief_content',1,-1,sp]);
			if(document.getElementById(name+'_nav_forward')){document.getElementById(name+'_nav_forward').onclick=function(){eval(name+".nav(1);");};}
			if(document.getElementById(name+'_nav_backward')){document.getElementById(name+'_nav_backward').onclick=function(){eval(name+".nav(-1);");};}
			document.getElementById(name+'_nav_close').onclick=function(){eval(name+".hide_thief();");}
			with(document.getElementById(name+'_thief_canvas').style){top=toph+"px";left=leftw+"px";}
			with(document.getElementById(name+'_thief_content').style){top=(toph+isborder)+"px";left=(rightw+isborder)+"px"}
			with(document.getElementById(name+'_thief_top').style){height=toph+"px";top="-"+toph+"px";}
			with(document.getElementById(name+'_thief_right').style){width=rightw+"px";right="-"+rightw+"px";}
			with(document.getElementById(name+'_thief_base').style){height=baseh+"px";bottom="-"+baseh+"px";}
			with(document.getElementById(name+'_thief_left').style){width=leftw+"px";left="-"+leftw+"px";}
			with(document.getElementById(name+'_thief_corner_top_left').style){height=toph+"px";width=rightw+"px";top="-"+toph+"px";left="-"+leftw+"px";}
			with(document.getElementById(name+'_thief_corner_top_right').style){height=toph+"px";width=rightw+"px";top="-"+toph+"px";right="-"+rightw+"px";}
			with(document.getElementById(name+'_thief_corner_base_right').style){height=baseh+"px";width=rightw+"px";bottom="-"+baseh+"px";right="-"+rightw+"px";}
			with(document.getElementById(name+'_thief_corner_base_left').style){height=baseh+"px";width=rightw+"px";bottom="-"+baseh+"px";left="-"+leftw+"px";}
		}
		this.show_thief=function(image_file,xgal)
		{
			if(xgal){im=[''].concat(xgal[0]);this.ic=im.length-1;if(xgal[1]){tx=[''].concat(xgal[1]);if(tx.length<=2){document.getElementById(name+'_thief_text').innerHTML=tx[1];tx=0;}}else{tx=0;}}
			set_default();
			if(image_file){ci=parseInt(image_file);ci=r_i(ci,-1);}
			oB_st_pointer.start();
		}
		this.hide_thief=function()
		{
			if(oB_resize_pointer){oB_resize_pointer.halt();}if(oB_wait){oB_wait.halt();}
			oB_pointer.halt();
			if(document.getElementById(name+'_thief_ph')){with(document.getElementById(name+'_thief_ph').style){filter='';display='none';}}
			oB_ht_pointer.start();
			ni=new Image();ph=0;
			oB_resize_pointer=0;oB_wait=0;
			ci=1;key=0;dir=1;nv="";ht=0;wd=0;
		}
		this.create=function(aref)
		{
			var anc=document.anchors;var ai=0;
			for(iref in aref)
			{
				var ref=aref[iref];
				ai=1;
				for(i in anc)
				{
					if(anc[i].name==(ref+(ai)))
					{
						if(!window[ref+"_xbox"]){window[ref+"_xbox"]=[];window[ref+"_xbox"][0]=[];window[ref+"_xbox"][1]=[];}
						window[ref+"_xbox"][0].push(anc[i].href);window[ref+"_xbox"][1].push(((anc[i].title)?(anc[i].title):''));
						anc[i].href="javascript:xbox.show_thief("+ai+","+ref+"_xbox);";
						ai++;						
					}
				}
				var acheck=window[ref+"_xbox"][1].join();
				if (acheck.length==(ai-2)){window[ref+"_xbox"].pop()}
			}
		}
		this.set_default=function()
		{
			ph=-1;
			if(document.getElementById(name+'_thief_image')){with(document.getElementById(name+'_thief_image').style){height=dh+'px';width=dw+'px';}}
			with(document.getElementById(name+'_thief').style){height=(dh+toph+baseh)+'px';width=(dw+rightw+leftw)+'px';}
			with(document.getElementById(name+'_thief_canvas').style){height=dh+'px';width=dw+'px';}
			with(document.getElementById(name+'_thief_content').style){display='none';}
			if(document.getElementById(name+'_thief_ph')){with(document.getElementById(name+'_thief_ph').style){filter='';display='none';}}
			with(document.getElementById(name+'_thief').style){top='50%';left='50%';marginTop=(((dh+toph+baseh)/-2))+'px';marginLeft=(((dw+rightw+leftw)/-2))+'px';display='none';}			
			document.getElementById('thief_bg').style.display='none';
		}
		this.set_dimensions=function(img_no)
		{
			var ht=0;var wd=0;
			if(typeof(window.innerHeight)=='number')
				{ht=window.innerHeight;wd=window.innerWidth;}
			else if(document.documentElement&&(document.documentElement.clientWidth||document.documentElement.clientHeight))
				{ht=document.documentElement.clientHeight;wd=document.documentElement.clientWidth;}
			else
				{ht=document.body.clientHeight;wd=document.body.clientWidth;}
			with(document.getElementById(name+'_thief_image').style)
			{
				var v_diff=ni.height-parseFloat(height);
				var h_diff=ni.width-parseFloat(width);
				backgroundImage="url("+im[img_no?img_no:ci]+")";
				height=ni.height+"px";width=ni.width+"px";
			}
			if(tx){document.getElementById(name+'_thief_text').innerHTML=tx[img_no];}
			with(document.getElementById(name+'_thief')){var v_lim=(v_diff>=0)?(ht/2)+parseFloat(style.marginTop):Math.abs((parseFloat(((ni.height+toph+baseh)/2)+parseFloat(style.marginTop))));var h_lim=(h_diff>=0)?(wd/2)+parseFloat(style.marginLeft):Math.abs((parseFloat(((ni.width+rightw+leftw)/2)+parseFloat(style.marginLeft))));}
			new sizer(name+'_thief_sizer',[name+'_thief_canvas',0,v_diff,0,1,sp/2,'y'],[name+'_thief',0,v_diff,0,1,sp/2,'y',[name+'_thief',0,v_lim,'marginTop']],[name+'_thief_canvas',0,h_diff,0,1,sp/2,'x'],[name+'_thief',0,h_diff,0,1,sp/2,'x',[name+'_thief',0,h_lim,'marginLeft']]);
			var resize="document.getElementById('thief_bg').style.height='"+((ht<ni.height+toph+baseh+50)?((ni.height+toph+baseh+50)+"px'"):"100%'");
			oB_resize_pointer=new stepper(name+'_thief_resizer',[name+'_thief_sizer'],0,[resize,';'],[name+'_oB_thief']);oB_resize_pointer.start();
		}
		this.set_img=function(){ph=0;set_dimensions(ci);var temp_i1=new Image();temp_i1.src=im[r_i(ci,dir)];}
		this.next_img=function()
		{
			ni=new Image();ci=r_i(ci,dir);ni.src=im[ci];
			if(ph){ph=0;oB_pointer.sc+=2};oB_pointer.start();
		}
		this.check_loaded=function()
		{
			var notloaded=1;
			notloaded-=(ni.complete?1:(ni.complete==0?0:1));
			notloaded=1;;if(notloaded){wait(1);}else{oB_pointer.start();}
		}
		this.set_onload=function()
		{
			var notloaded=1;notloaded-=(ni.complete?1:(ni.complete==0?0:1));if(notloaded){eval(name+".ni.onload=function(){"+name+".wait(0)};")}else if(ph){wait(0);}else{oB_pointer.start();}
		}
		this.nav=function(dirv)
		{
			var clear_content_filter="with(document.getElementById('"+name+"_thief_content').style){display='none';filter='';}";

			if(!document.getElementById(name+'_thief_image'))
			{
				oB_fade_pointer.trats();
				return;
			}
			if((oB_fade_pointer.fading||ph)&&(dirv!=dir))
			{
				ni=new Image();var isrev=1;dir=dirv;oB_pointer.pause();if(ph){wait(-1);}else if(!oB_fade_pointer.rev){isrev=0;oB_fade_pointer.flip();ci=r_i(ci,dir);}
				with(oB_pointer){if(oB_pointer.el[paused]){oB_pointer.el.splice(paused,oB_pointer.el.length-paused);oB_pointer.ec=paused-1;}}
				if(isrev){nav(dir)};
			}
			else
			{
				if(oB_pointer.paused&&!oB_fade_pointer.fading){oB_pointer.halt()}
				var set_dir=name+".dir="+dirv+";";
				oB_pointer.add([set_dir,';'],[name,'.next_img()'],0,[name+'_fade_out'],0,[clear_content_filter,';'],[name+'.check_loaded()',';'],0,[name+'.set_onload()',';'],0,[name,'.set_img()'],0,[name+'_fade_out','.trats()'],0);
				!oB_pointer.stepping?oB_pointer.start():oB_pointer.resume();key++;			
			}			
		}
		this.wait=function(action)
		{
			this.oB_show_ph=new fader(name+'_show_ph',[name+'_thief_ph',0,1,sp/3]);
			switch(action)
			{
				case 0:
				oB_wait=new stepper(name+'_temp_st'+key,[name+'_show_ph','.trats()'],0,[name+'_oB_thief']);oB_wait.start();
				break;
				
				case 1:
				ph=1;oB_wait=new stepper(name+'_temp_st'+key,[name+'_show_ph'],0,[name+'_oB_thief']);oB_wait.start();
				break;
				
				case -1:
				oB_pointer.pause();if(!oB_show_ph.rev){oB_show_ph.flip();};ph=-1;
				break;
			}
		}
		this.r_i=function(ip,mv){return ip+mv<1?ip+mv+ic:(ip+mv>ic?ip+mv-ic:ip+mv);}
	}
}
/*name, [step, start (default) or actual code(1), nothing or pause time (seconds)] or 0 to stop until the event finishes*/
function stepper()
{
	var args=arguments;
	with (this)
	{
		this.ec=args.length-1;this.name=args[0];window[name]=this;
		this.el=[];this.be=[];
		for (var i=1;i<=ec;i++)
		{
			el[i]=args[i];
		}
		this.stepping=0;
		this.waiting=0;
		this.ending=0;
		this.paused=0;
		this.halted=0;
		this.sc=1;
		this.slink=0;
		this.build=function()
		{
			if(sc>ec)
			{
				be[sc]=[0,name];
				ending=1;
			}
			else if (el[sc])
			{
				be[sc]=[el[sc][0]+(el[sc][1]?(isNaN(el[sc][1])?el[sc][1]:'.start()'):'.start()'),(el[sc][1]?(isNaN(el[sc][1])?(el[sc][2]?el[sc][2]*1000:0):el[sc][1]*1000):0)];
				if(sc<ec)
				{
					if (!el[sc+1]&&(el[sc][1]?(el[sc][1]!=';'):1)){eval(el[sc][0]+".slink='"+name+"'");}
				}
				else
				{
					if ((el[sc][1]?(el[sc][1]!=';'):1))
					{
						eval(el[sc][0]+".slink='"+name+"'");
						waiting=1;
					}
					else{ending=1;}
				}
			}
			else{be[sc]=[0,name];}
		}
		this.step=function()
		{
			if(ending)
			{
				if(be[sc][0]){setTimeout(be[sc][0],be[sc][1])};
				stepping=0;sc=1;if(slink){var islink=slink;slink=0;eval(islink+".start()");}
				for(i=1;i<=ec;i++){if(el[i]){if ((el[i][1]?(el[i][1]!=';'):1)){eval(el[i][0]+".slink=0");}}}
			}
			else
			{
				be[sc][0]?setTimeout(be[sc][0],be[sc][1]):waiting=1;
				sc++;
			}
		}
		this.start=function()
		{
			resume();
			if(halted){sc=1;halted=0;}
			stepping=1;waiting=0;ending=0;
			while(!halted&&!waiting&!paused&&stepping){build();step();};
		}
		this.add=function()
		{
			if(!stepping){el.splice(1,el.length-1)}
			for (var i=0;i<arguments.length;i++){ec=el.push(arguments[i])-1;}
		}
		this.halt=function(){if(stepping){halted=1;stepping=0;paused=0;waiting=0;sc=0;for(i=1;i<=ec;i++){if(el[i]){if ((el[i][1]?(el[i][1]!=';'):1)){eval(el[i][0]+".slink=0");}}}}}
		this.pause=function(){if(waiting){paused=sc;}}
		this.resume=function(){if(paused){sc=paused;paused=0;}}
	}
}
/*	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;}
	}
}
/*	array: element, from (relative), axis('x' or 'y'), track (negative for left or up), accelerate, decelerate, speed (seconds)
	function: new mover([object name], [array])*/
function mover()
{
	var args=arguments;
	with(this)
	{
		this.el=[];this.fr=[];this.og=[];this.ax=[];this.tr=[];this.ac=[];this.dc=[];this.sp=[];this.dr=[];this.ic=[];this.ps=[];
		this._el=[];this._ax=[];this._fr=[];this._dr=[];this._tr=[];this._sp=[];
		this.ec=args.length-1;
		this.name=args[0];window[name]=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];
			ax[i]=args[i][2];_ax[i]=ax[i]=="x"?"left":"top";
			tr[i]=args[i][3];
			ac[i]=args[i][4];
			dc[i]=args[i][5];
			sp[i]=isNaN(args[i][6])?args[i][6]:(args[i][6]?args[i][6]:1/25);
			dr[i]=(tr[i]>=0?1:-1);
			tr[i]=(tr[i]*dr[i]);
			ps[i]=0;
		}
		this.fm=1;this._fm=0;this.ct=0;//frames (deafult 1), continuous movement (default no)
		this.built=0;
		this.hold=0;this.held=0;this.holding=0;
		this.slink=0;
		this.rev=1;
		this.fl=0;
		this.moving=0;
		this._dc=0;
		this.build=function()
		{
			if(!built)
			{
				for (var i=1;i<=ec;i++)
				{
					og[i]=parseInt(eval("_el[i]."+_ax[i]),10)+fr[i];
					_fr[i]=og[i];
					_dr[i]=(1-(2*rev))*dr[i];
					_tr[i]=tr[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]));
					_tr[i]=(-1*(_dr[i]))*(_fr[i]-og[i])+tr[i];
				}
				held=0;
			}
			for (var i=1;i<=ec;i++){ps[i]=0;}fl=0;
		}
		this.move=function()
		{
			moving=1;
			if(fl){_dc=0;!ct?slink=0:{};for (var i=1;i<=ec;i++){_tr[i]=ps[i]}}
			else if(hold){for (i=1;i<=ec;i++){held=1;holding=1;if(ac&&(ps[i]<(_tr[i]/3))){_tr[i]=ps[i]*1.1;}else if(dc&&(_tr[i]-ps[i]>(.1*(_tr[i]/3)))){_dc=1;_tr[i]=ps[i]+(_tr[i]/3)*.1}else{_tr[i]=ps[i]}}};
			for (i=1;i<=ec;i++)
			{
				if (ps[i]!=_tr[i])
				{
					//thirds
					ps[i]=((ps[i]<(_tr[i]/3))&&ac[i])?ic[i]/10+ps[i]+(ic[i]*(ps[i]/(_tr[i]/3))):(((ps[i]>(_tr[i]-(_tr[i]/3)))&&dc[i])?ic[i]/10+ps[i]+(ic[i]*((_tr[i]-ps[i])/(_tr[i]/3))):ps[i]+ic[i]*1.1);
					//halves
					//ps[i]=((ps[i]<(_tr[i]/3))&&ac[i])?ic[i]/10+ps[i]+(ic[i]*(ps[i]/(_tr[i]/2))):(((ps[i]>(_tr[i]-(_tr[i]/3)))&&dc[i])?ic[i]/10+ps[i]+(ic[i]*((_tr[i]-ps[i])/(_tr[i]/2))):1+ps[i]+ic[i]*1.1);
					ps[i]=ps[i]>_tr[i]?_tr[i]:ps[i];
					eval("_el[i]."+_ax[i]+"=(_dr[i]*ps[i])+_fr[i]+'px'");
				}
			}
			hold=0;var kg=0;for(i=1;i<=ec;i++){kg+=!(ps[i]==_tr[i]);}
			if(kg||fl){if(fl){build();}setTimeout(name+".move()",40);}else{_dc=0;moving=0;holding=0;built=held;if(((!held&&_fm==fm)||ct)&&slink){var islink=slink;slink=0;eval(islink+".start()");}}
		}
		this.start=function(){if(moving&&rev){flip();}else if(!held&&!moving&&((_fm<fm)||ct)){rev=0;build();_fm++;move();}else if(held&&!moving){_fm+=rev;rev=0;build();move();}}
		this.halt=function(){if(!held&&moving){hold=1;}}
		this.trats=function(){if(moving&&!rev){flip();}else if(!held&&!moving&&((_fm>0)||ct)){rev=1;build();_fm--;move();}else if(held&&!moving){_fm+=(rev-1);rev=1;build();move();}}
		this.flip=function(){held=1;rev=!rev;fl=1;if(rev){_fm--}else{_fm++}}
	}
}
//	array: element, track length, button size, moving div length, axis ('x' or 'y', container size, speed of scrolling
function slider()
{
	var args=arguments;
	with(this)
	{
		this.name=args[0];window[name]=this;
		this.el=args[1][0];
		this.tr=args[1][1];
		this.bs=args[1][2];
		this.dl=args[1][3];
		this.ax=args[1][4];this._ax=ax=="x"?"left":"top";
		this.cs=args[1][5];
		this.sp=args[1][6];
		this.build=function()
		{
			this.sl=tr-bs;
			this.cdo=dl-cs;
			this.ss=0;this._ss=0;
			this.ds=0;this._ds=0;
			this.ix=-1;this.axed=0;
			this.mp1='ix='+(ax=='x'?'e.clientX':'e.clientY');
			this.mp2='wx='+(ax=='x'?'e.clientX':'e.clientY');
			eval(el+"_oB_slider_jump_div=0;");eval(el+"_oB_slider_scroller=0;");
			if(bs){var button_mover=bs?[el+'_slider_button',0,'y',sl,1,1,(sl/cdo)*sp+'c']:0;document.getElementById(el+'_slider_button').onmousedown=eval(name+".slide");document.getElementById(el+'_slider_bar').onclick=eval(name+".jump");}
			if(sp){var div_mover=[el+'_slider',0,'y',-1*cdo,1,1,sp+'c'];eval("new mover(el+'_oB_slider_scroller',div_mover"+(bs?',button_mover':'')+")");document.getElementById(el+'_slider_scroll_up').onmouseover=function(){eval(name+".slide_scroll('trats')")};document.getElementById(el+'_slider_scroll_up').onmouseout=function(){eval(name+".halt()")};document.getElementById(el+'_slider_scroll_down').onmouseover=function(){eval(name+".slide_scroll('start')")};document.getElementById(el+'_slider_scroll_down').onmouseout=function(){eval(name+".halt()")};}
		}
		this.slide=function(e)
		{
			var ixi=0;eval("if("+el+"_oB_slider_jump_div){ixi="+el+"_oB_slider_jump_div.moving}");eval("if("+el+"_oB_slider_scroller){ixi+="+el+"_oB_slider_scroller.moving}");
			if(!ixi)
			{
				(!e)?e=window.event:e;eval(mp1);eval("if("+el+"_oB_slider_scroller){with("+el+"_oB_slider_scroller){if(!built){rev=!rev;_fm+=(1-2*rev);build();held=1;}}}");
				with(document.body){onmousemove=eval(name+".move");onmouseup=function(){eval(name+".end()")};}
			}
		}
		this.move=function(e)
		{	
			(!e)?e=window.event:e; 
			if(ix>=0)
			{
				eval(mp2);
				dnp=ds-((cdo*(wx-ix))/sl);_ds=(dnp>0)?0:((dnp<(-1*cdo))?(-1*cdo):dnp);eval("document.getElementById(el+'_slider').style."+_ax+"=_ds + 'px'");
				snp=ss+(wx-ix);_ss=(snp<0)?0:((snp>sl)?sl:snp);eval("document.getElementById(el+'_slider_button').style."+_ax+"=_ss + 'px'");
			}
		}
		this.end=function()
		{
			if(ix>=0)
			{
				ds=_ds;ss=_ss;setTimeout(name+'.ix=-1',100);with(document.body){onmousemove='';onmouseup='';}
			}
		}
		this.jump=function(e)
		{
			var ixi=0;eval("if("+el+"_oB_slider_jump_div){ixi="+el+"_oB_slider_jump_div.moving}");eval("if("+el+"_oB_slider_scroller){ixi+="+el+"_oB_slider_scroller.moving}");
			if(ix<0&&!ixi)
			{
				(!e)?e=window.event:e;eval("if("+el+"_oB_slider_scroller){with("+el+"_oB_slider_scroller){if(!built){rev=!rev;_fm+=(1-2*rev);build();held=1;}}}");
				var cx=e.layerX?'e.layer':'e.offset';
				wx=eval(cx+ax.toUpperCase());wx=wx>sl?sl:(wx<=(0.5*bs)?0:wx-(0.5*bs));
				snp=wx;dnp=ds-((cdo*(wx-ss))/sl);
				new mover(el+'_oB_slider_jump_div',[el+'_slider_button',0,ax,(wx-ss),0,1,.5],[el+'_slider',0,ax,-1*(cdo*(wx-ss))/sl,0,1,.5]).start();
				ss=snp<0?0:(snp>sl?sl:snp);ds=dnp>0?0:(dnp<-cdo?-cdo:dnp);_ds=ds;_ss=ss;
			}
		}
		this.slide_scroll=function(action)
		{
			var ixi=0;eval("if("+el+"_oB_slider_jump_div){ixi="+el+"_oB_slider_jump_div.moving}");
			if(ix<0&&!ixi)
			{
				eval(el+"_oB_slider_scroller."+action+"()");
			}
		}
		this.halt=function()
		{
			eval(el+"_oB_slider_scroller.halt();");
			dnp=parseInt(eval("document.getElementById(el+'_slider').style."+_ax),10);ds=dnp>0?0:(dnp<-cdo?-cdo:dnp);
			if(bs){snp=parseInt(eval("document.getElementById(el+'_slider_button').style."+_ax),10);ss=snp<0?0:(snp>sl?sl:snp);}
		}
	}
}
/*	array: element, from (relative), to (relative), speed (seconds)
	function: new fader([object name], [array name])*/
function fader()
{
	var args=arguments;
	with(this)
	{
		this.el=[];this.fr=[];this.tr=[];this.dr=[];this.sp=[];this.ic=[];this.st=[];this.og=[];
		this._el=[];this._fr=[];this._tr=[];this._dr=[];
		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]);
			fr[i]=args[i][1];
			tr[i]=args[i][2];
			sp[i]=args[i][3]?args[i][3]:1/25;
			dr[i]=(tr[i]>=0?1:-1);
			tr[i]=(tr[i]*dr[i]);
			st[i]=0;
		}
		this.built=0;
		this.hold=0;this.held=0;this.holding=0;
		this.slink=0;
		this.rev=1;
		this.fl=0;
		this.fading=0;
		this.build=function()
		{
			if(!built)
			{
				for (var i=1;i<=ec;i++)
				{
					og[i]=fr[i]+(rev*dr[i]*tr[i]);_fr[i]=og[i];
					_dr[i]=(1-(2*rev))*dr[i];
					_tr[i]=tr[i];
					ic[i]=_tr[i]/(25*sp[i]);
					_el[i].style.display="block";
					if (el[i]=='xbox_viewer_thief_fad'){_el[i].style.display="inline";}
				}
				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]=_el[i].style.opacity?parseFloat(_el[i].style.opacity,10):((parseFloat(_el[i].filters.item("DXImageTransform.Microsoft.Alpha").opacity,10))/100);
					_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.fade=function()
		{
			fading=1;
			for (var i=1;i<=ec;i++)
			{
				if(fl){_tr[i]=st[i]}else if(hold){held=1;holding=1;_tr[i]=st[i]};
				if (st[i]!=_tr[i])
				{
					st[i]=st[i]+ic[i];
					st[i]=st[i]>_tr[i]?_tr[i]:st[i];
					with (_el[i].style){opacity=((_dr[i]*st[i])+_fr[i]);filter="progid:DXImageTransform.Microsoft.Alpha(opacity="+((_dr[i]*100*st[i])+(100*_fr[i]))+")"}
				}
			}
			hold=0;var kg=0;for (i=1;i<=ec;i++){kg+=!(st[i]==_tr[i]);}
			if(kg||fl){if(fl){build();}setTimeout(name+".fade()",40);}else{fading=0;holding=0;built=held;if(!held&&slink){var islink=slink;slink=0;eval(islink+".start()");}}
		}
		this.start=function(){if(fading&&rev){flip();}else{rev=0;build();fade();}}
		this.halt=function(){if(!held&&fading){hold=1;}}
		this.trats=function(){if(fading&&!rev){flip();}else{rev=1;build();fade();}}
		this.flip=function(){fl=1;rev=!rev;held=1;}
	}
}
/*field, alert, value (optional - default null; form eg: value>6")*/
function validator()
{
	var args=arguments;
	with(this)
	{
		this.fd=[];this.al=[];this.vl=[];
		this.ec=args.length-1;
		this.name=document.getElementById(args[0]);
		for (var i=1;i<=ec;i++)
		{
			fd[i]=name.elements[args[i][0]];
			al[i]=args[i][1];
			vl[i]=args[i][2]?args[i][2]:"value!=null&&value!=''";
		}
		this.start=function()
		{
			for (var i=1;i<=ec;i++){with (fd[i]){if (!eval(vl[i])){alert(al[i]);return false;break;}}}
			return true;
		}
	}
}
var menu_list=['home','news','shows','education','about','links','contact'];var menu_depth=5;var bg_fader=0;
var bg_list=[];var shows_to,education_to,about_to,bg_to,bg_change,bg_reset,bg_default,bg_current;
bg_list['home']='blue';
bg_list['news']='orange';
bg_list['shows']='green';
bg_list['education']='purple';
bg_list['about']='red';
bg_list['links']='yellow';
bg_list['contact']='grey';
new fader('bg_fader',['wallpaper',1,-1,.3],['content_bg_swap',0,1,.3]);
function menu_init()
{
	document.getElementById('div_menu_mover').style.visibility="visible";
	bg_default=document.getElementById('wallpaper').className;bg_current=bg_default;
	new mover('shows_d',['shows_1',0,'y',41,0,1,.3],['shows_2',0,'y',82,0,1,.4],['shows_3',0,'y',123,0,1,.5],['shows_4',0,'y',164,0,1,.6]);
	new mover('education_d',['education_1',0,'y',41,0,1,.3],['education_2',0,'y',82,0,1,.4]);
	//new mover('education_d',['education_1',0,'y',41,0,1,.3],['education_2',0,'y',82,0,1,.4],['education_3',0,'y',123,0,1,.5],['education_4',0,'y',164,0,1,.6],['education_5',0,'y',205,0,1,.7]);
	new mover('about_d',['about_1',0,'y',41,0,1,.3],['about_2',0,'y',82,0,1,.4],['about_3',0,'y',123,0,1,.5],['about_4',0,'y',164,0,1,.6],['about_5',0,'y',205,0,1,.7]);
	
	for (var i=0;i<menu_list.length;i++)
	{
		with(document.getElementById('menu_'+menu_list[i]))
		{
			switch(menu_list[i])
			{
				case 'shows':case 'education': case 'about':
				eval("onmouseover=function(){xfade('"+menu_list[i]+"');reveal_menus('"+menu_list[i]+"');};");
				eval("onmouseout=function(){bg_xfade();conceal_menus('"+menu_list[i]+"');};");
				for (var j=1;j<=menu_depth;j++)
				{
					if(!document.getElementById(menu_list[i]+'_'+j)){break;};
					with(document.getElementById(menu_list[i]+'_'+j))
					{
						eval("onmouseover=function(){xfade('"+menu_list[i]+"');reveal_menus('"+menu_list[i]+"');};");
						eval("onmouseout=function(){bg_xfade();conceal_menus('"+menu_list[i]+"');};");
					}
				}
				break;
				
				case 'home':case 'news': case 'links': case 'contact':
				eval("onmouseover=function(){xfade('"+menu_list[i]+"');};");
				eval("onmouseout=function(){bg_xfade();};");break;
			}
		}
		
	}
}
	
function reveal_menus(menu_name)
{
	eval("clearTimeout("+menu_name+"_to);");
	if(eval(menu_name+"_d.rev")){eval(menu_name+"_d.start()");}
}

function conceal_menus(menu_name)
{
	eval("clearTimeout("+menu_name+"_to);");eval(menu_name+"_to=setTimeout('"+menu_name+"_d.trats()',700)");
}

function xfade(menu_name)
{
	clearTimeout(bg_to);
	if(!bg_fader.fading)
	{
		if(bg_current!=bg_list[menu_name])
		{
			var bg_set="bg_change=0;bg_reset=0;bg_current='"+bg_list[menu_name]+"';document.getElementById('content_bg_swap').style.backgroundImage='url(/images/bg/"+bg_list[menu_name]+".jpg)';";
			new fader('bg_fader',['wallpaper',1,-1,.3],['content_bg_swap',0,1,.3]);
			var bg_swap="with(document.getElementById('wallpaper').style){backgroundImage='url(/images/bg/"+bg_list[menu_name]+".jpg)';opacity='';filter='';}with(document.getElementById('content_bg_swap').style){opacity='';filter='';display='none';}";
			bg_swap+=";if(bg_change){xfade(bg_change);}else if(bg_reset){bg_xfade();}";
			new stepper('bg_xfader',[bg_set,';'],['bg_fader'],0,[bg_swap,';']);
			bg_xfader.start();
		}
	}else{bg_change=menu_name;bg_reset=0;}
}

function bg_xfade()
{
	if(!bg_fader.fading)
	{
		if(bg_current!=bg_default)
		{
			var bg_set="bg_current='"+bg_default+"';document.getElementById('content_bg_swap').style.backgroundImage='url(/images/bg/"+bg_default+".jpg)';";
			new fader('bg_fader',['wallpaper',1,-1,1],['content_bg_swap',0,1,1]);
			var bg_swap="with(document.getElementById('wallpaper').style){backgroundImage='url(/images/bg/"+bg_default+".jpg)';opacity='';filter='';}with(document.getElementById('content_bg_swap').style){opacity='';filter='';display='';}";
			new stepper('bg_xfader',[bg_set,';'],['bg_fader'],0,[bg_swap,';']);
			bg_to=setTimeout('bg_xfader.start()',200);
		}
	}else{bg_change=0;bg_reset=1;}
}
var close_form=0;
var join_val=0;
var clear_first="if(this.value=='First name'){this.value='';}";
var clear_last="if(this.value=='Last name'){this.value='';}";
var clear_email="if(this.value=='Email address'){this.value='';}";
var clear_postcode="if(this.value=='Post code'){this.value='';}";
function join_init()
{
	join_val=new validator('mail_subscription',['FirstName','Please supply a first name or organisation.',"value!=null&&value!=''&&value!='First name'"],['EmailAddress','Please supply an email address.',"value!=null&&value!=''&&value!='Email address'"]);
}
function submit_form()
{
	close_form=join_val.start();
	with(document.forms.mail_subscription)
	{
		LastName=='Last name'?LastName='':{}
		PostCode=='Post code'?PostCode='':{}
	}
	if(close_form){join.hide_thief();}
}
function content_scroll_init()
{
	var content_h=parseInt(document.getElementById('content_slider').offsetHeight,10);
	if(content_h<=238)
	{
		document.getElementById('scroller_bar').style.backgroundColor="#ffffff";
		document.getElementById('content_slider_scroll_up').style.cursor="default";
		document.getElementById('content_slider_scroll_down').style.cursor="default";
		document.getElementById('content_slider_bar').style.display="none";
		document.getElementById('content_slider_button').style.display="none";
	}
	else
	{
		new slider('content_slide',['content',176,10,content_h,'y',228,500]).build();
	}
}
function image_scroll_init()
{
	var	images_HTML_str='';
	for (var i=1;i<=thumbnail_array.length-1;i++)
	{
		images_HTML_str+="<a class='athumbnail' name='main_gallery"+i+"' href='"+fullsize_array[i-1]+"' style=\"background-image:url("+thumbnail_array[i]+")\"></a>";
	}
	document.getElementById('thumb_slider').innerHTML=images_HTML_str;
	var image_h=(parseInt(thumbnail_array.length-1,10)*66)+4;
	if(image_h>199)
	{
		document.getElementById('thumb_slider_scroll_up').style.visibility="visible";
		document.getElementById('thumb_slider_scroll_down').style.visibility="visible";
		new slider('thumb_slide',['thumb',0,0,1056,'y',199,300]).build();
	}
}
function xbox_init()
{
	xbox.create(['main_gallery']);;
}