/*
Koppelt standaard gedrag voor een knop aan een element
Via classes kunnen de verschillende stati worden opgemaakt (.Knop, .KnopOver, .KnopNeer, .KnopUit)
ZetStijl accepteert meerdere namen die worden 'samengevoegd'
*/
function Knop(knop,Aan)
{
	if (!knop) return false;
	knop.mouseover=false;
	knop.mousedown=false;
	knop.toString=function(){return knop.outerHTML};
	var StijlStatus=function(Status){return knop.Stijl.join(Status+' ')+Status};
	knop.RenderStijl=function() //Nog stijlen toevoegen voor Aan (in route) en Actief (hoogste in route)
	{
		knop.className=StijlStatus('');
		if (knop.disabled) knop.className+=' '+StijlStatus('_Uit');
		else
		{
			if (knop.mousedown) knop.className+=' '+StijlStatus('_Neer');
			else
			{
				if (knop.mouseover) knop.className+=' '+StijlStatus('_Over');
			}
		}
	}
	knop.ZetStijl=function()
	{
		//if (arguments.length==0) arguments=knop.className.split('_');
		var classes=knop.className.split(' ');
		knop.Stijl=[];
		for (var x=0;x<classes.length;x++)
		{
			var multiclass=classes[x].split('_');
			var tmp=[multiclass[0]];
			for (y=1;y<multiclass.length;y++){tmp[y]=tmp[y-1]+'_'+multiclass[y]}
			knop.Stijl=knop.Stijl.concat(tmp);
		}
		knop.RenderStijl();
	}
	knop.MouseOver=new Reactie(knop,'mouseover',function()
	{
		var knop=this.Object;
		knop.mouseover=true;
		knop.RenderStijl();
		this.Stop();
	});
	knop.MouseOut=new Reactie(knop,'mouseout',function()
	{
		var knop=this.Object;
		knop.mouseover=false;
		knop.mousedown=false;
		knop.RenderStijl();
		knop.MouseOver.Start();
	});
	knop.MouseDown=new Reactie(knop,'mousedown',function()
	{
		var knop=this.Object;
		knop.mousedown=true;
		knop.RenderStijl();
	});
	knop.MouseUp=new Reactie(knop,'mouseup',function()
	{
		if (document.selection) document.selection.empty();
		var knop=this.Object;
		knop.mousedown=false;
		knop.RenderStijl();
	});
	knop.Aan=function()
	{
		knop.disabled=false;
		knop.RenderStijl();
		knop.MouseOver.Start();
		knop.MouseOut.Start();
		knop.MouseDown.Start();
		knop.MouseUp.Start();
	}
	knop.Uit=function()
	{
		knop.disabled=true;
		knop.RenderStijl();
		knop.MouseOver.Stop();
		knop.MouseOut.Stop();
		knop.MouseDown.Stop();
		knop.MouseUp.Stop();
	}
	knop.ZetStijl();
	if (Aan==undefined || Aan) knop.Aan();
	else knop.Uit();
	return knop;
}