/*	Javascript-tapahtumankäsittelijät sjoitetaan html-koodin alkuun, koska niihin viitataan html-olioissa. Ei haittaa, vaikka osa Javascript-muuttujista määritelläänkin 
    myöhemmin "konstruktorissa". Koodia ei käännetä, vaan tulkataan rivi kerrallaan vasta jonkin tapahtuman laukaistessa siihen litetyn käsittelijän.
    Siinä vaiheessa konstruktorikin on jo ehditty esitellä ja puuttuvat muuttujat määritellä.
	 
	Globaaleja muuttujia voidaan määrittää tässä: */
	var
		N_OUT = new Number(0),
		N_OVER = new Number(1),
		N_DOWN = new Number(2),
		N_UP = new Number(3),
		N_CLEAR_ALL = new Number(99),
		N_CLEAR_OUT = new Number(0);

//---------------------------------------------------------------------------------------------------------------------------------------------------------------
/*	Päivitä painikkeen kuvake ja tila */ 
	function update_btn(btn, nstate)
	{
		var i = Number(btn.id);
		btn.src=tilakuvat[i] [nstate].src;
/*		Korostustila ei lyö laudalta valittutilaa */
		if (nstate > painiketilat[i])
			painiketilat[i] = nstate;

		painikkeet[i].src = tilakuvat[i] [nstate].src;
	} 
//---------------------------------------------------------------------------------------------------------------------------------------------------------------
/*	Nappuloiden tilat nollataan */ 
	function initialize_btns(nflag)
	{
		var i = 0;
		while (i < painiketilat.length)
		{
			if (nflag == N_CLEAR_ALL || ((nflag == N_CLEAR_OUT) && (painiketilat[i] != N_UP)))
			{
				painiketilat[i] = 0;
				painikkeet[i].src = tilakuvat[i] [N_OUT].src;
			}
			i = i + 1;
		} 
	} 
//---------------------------------------------------------------------------------------------------------------------------------------------------------------
/*	Hiiri painikkeen yllä */ 
	function mouseover_btn(btn)
	{
		initialize_btns(N_CLEAR_OUT);
		update_btn(btn, N_OVER);
	} 
//---------------------------------------------------------------------------------------------------------------------------------------------------------------
/*   Hiiri poistuu painikkeen yltä */ 
	function mouseout_btn(btn)
	{
		initialize_btns(N_CLEAR_OUT);
		var i = Number(btn.id);
		i = painiketilat[i];
		update_btn(btn, i);
	} 
//---------------------------------------------------------------------------------------------------------------------------------------------------------------
/*	Hiiri painetaan alas */ 
	function mousedown_btn(btn)
	{
		initialize_btns(N_CLEAR_ALL);
		update_btn(btn, N_DOWN);
	} 

//---------------------------------------------------------------------------------------------------------------------------------------------------------------
/*	Hiiren painike ylös */ 
	function mouseup_btn(btn)
	{
		update_btn(btn, N_UP);
	} 

//---------------------------------------------------------------------------------------------------------------------------------------------------------------
/*   Kootaan painiketilojen kuvat kaksiuloitteiseen taulukkoon. */
	function alustatilakuvat()
	{
		var
			i = new Number(0),
			x = new Number(0),
			y = new Number(0);

		x=0;
		while (x < tilakuvat.length)  
		{
			painiketilat[x] = 0;
			tilakuvat[x] = new Array(4);  // Jokainen tilakuvajonon alkio sisältää 4-soluisen jonon, johon taltioidaan kunkin nappulan 4 tilaa vastaavat kuvat
			y=0;
			while (y < 4)  
			{
				tilakuvat[x] [y] = new Image(painikkeet[x].width, painikkeet[x].height);
				tilakuvat[x] [y].src="img/btn" + painikkeet[x].name + y.toString(10) + ".gif";
				//tilakuvat[x] [y].src="img/" + x.toString(10) + "btn" + y.toString(10) + ".gif";
				y = y + 1;
			}	
			x = x + 1;          
		}   
	}  
