﻿kysymys = 0;
kanta = "elaintesti";		
paluusivu = "http://www2.hs.fi/extrat/hsfi/omaelama/elaintesti/tulos.html";
vanha_kysymys = 0;				//	Tätä muuttujaa käytetään kysymysten selailussa.
kysymysten_maara = 13;		
voittajaelaimet = new Array();	//	Eläimet, jotka saivat korkeimmat pisteet.
aika = new Date();				//	Kellonaikaa käytetään ratkaisemaan, mikä tasapisteet
								//	saaneista voittajaeläimistä lopulta voittaa.
elain = new Array();			//	Kunkin eläimen pisteet, eriteltynä alla:
elain[0] = 0;					//		Hauki
elain[1] = 0;					//		Kyhmyjoutsen
elain[2] = 0;					//		Käki
elain[3] = 0;					//		Siili
elain[4] = 0;					//		Orava
elain[5] = 0;					//		Rotta
elain[6] = 0;					//		Metsäjänis
elain[7] = 0;					//		Susi
elain[8] = 0;					//		Karhu
elain[9] = 0;					//		Saimaannorppa
elain[10] = 0;					//		Saukko
elain[11] = 0;					//		Lumikko
elain[12] = 0;					//		Majava

elain_total = new Array();		//	Kunkin eläimen maksimipisteet.
for (i=0; i<13; i++) {
	elain_total[i] = 0;			//	Annetaan aluksi kullekin maksimipisteiksi nolla.
}

elain_prosentti = new Array(),	//	Kunkin eläimen prosenttimäärä.

elain_nimi = new Array();		//	Näitä tarvitaan, kun tallennetaan tulos kantaan.
elain_nimi[0] = "hauki";
elain_nimi[1] = "joutsen";
elain_nimi[2] = "kaki";
elain_nimi[3] = "siili";
elain_nimi[4] = "orava";
elain_nimi[5] = "rotta";
elain_nimi[6] = "janis";
elain_nimi[7] = "susi";
elain_nimi[8] = "karhu";
elain_nimi[9] = "norppa";
elain_nimi[10] = "saukko";
elain_nimi[11] = "lumikko";
elain_nimi[12] = "majava";

///////////////////////////////
///////////////////////////////


// Tämä funktio kutsutaan, kun siirrytään eteenpäin testissä. Myös heti testin alussa.
function seuraava() {
	if (kysymys >= 1) {
		vanha_kysymys = kysymys;
		document.getElementById("nappi_jatka").style.display = "none";
		kysymys++;
		document.getElementById('kysymys'+kysymys).style.display = 'block';
		window.scrollTo(0,0);
		siirtyma();
	} else {
		document.getElementById("ratkaisu").disabled = false;
		document.getElementById("edellinennappi").disabled = true;
		document.getElementById("edellinennappi3").disabled = true;
		document.getElementById("kysymys1").style.display = "block";
		document.getElementById("nappi_jatka").style.display = "block";
		kysymys++;
	}
}

// Tämä funktio kutsutaan, kun siirrytään eteenpäin testissä, seuraava()-funktion jälkimainingeissa.
function siirtyma() {
	if(kysymys == kysymysten_maara) {
		document.getElementById("nappi_jatka").style.display = "none";
		document.getElementById("nappi_seuraava").style.display = "none";
		document.getElementById("nappi_lopputulos").style.display = "block";
	} else {
		document.getElementById("nappi_seuraava").style.display = "none";
		document.getElementById("nappi_jatka").style.display = "block";
	}
	if (kysymys >= 1) {
		document.getElementById("edellinennappi").disabled = false;
		document.getElementById("edellinennappi3").disabled = false;
	}
	if(kysymys > 1) document.getElementById('kysymys'+Number(kysymys-1)).style.display = 'none';
}

// Tämä funktio kutsutaan, kun siirrytään taaksepäin testissä.
function edellinen() {

	document.getElementById("kysymys"+kysymys).style.display = "none";
	document.getElementById("nappi_lopputulos").style.display = "none";
	document.getElementById("nappi_jatka").style.display = "block";
	kysymys--;

	window.scrollTo(0,0);
	document.getElementById("kysymys"+kysymys).style.display = "block";
	document.getElementById("nappi_seuraava").style.display = "none";
	if(kysymys <= 1) {
		document.getElementById("edellinennappi").disabled = true;
		document.getElementById("edellinennappi3").disabled = true;
	}
}

// Tämä funktio laskee loppupisteet.
function laske_tulos() {

//	Avataan pieni apuikkuna debug-tarkoituksiin.
//	Kommentoi tämä kohta koodia piiloon, kun testi on julkaisuvalmis.

//	debuggeri = window.open('','Testausikkuna','toolbar=yes,scrollbars=yes,width=300,height=500'); 
//	debuggeri.document.open("text/html");
//	debuggeri.document.write("Eläimet saivat pisteitä seuraavasti:<br><br>");

//	Kerrotaan käyttäjälle, että jottai ny tapahtu ni ma gauhiast.
//	Samalla kytketään tulosnappi ei-aktiiviseksi.

	document.getElementById("ratkaisu").value = "Pieni hetki...";
	document.getElementById("ratkaisu").disabled = true;
	
	var vastatut_kysymykset = 0;
	for(i=1; i<=kysymysten_maara; i++) {

//		Poimitaan formista valittujen vastausten arvot ja lisätään
//		ne kullekin eläimelle.

		if (i != 4) {

		//	Allaolevalla koodinpätkällä kerätään tiedot kysymyksistä,
		//	joissa voi valita vain yhden vaihtoehdon (radio button -kysymykset).

			var valitut_elaimet = multichoice(document.formi.elements['Vastaus'+i]);
			var valitut_elaimet = valitut_elaimet.split(",");
			
			for (n=0; n<vaihtoehto_total.length; n++) {
				var vaihtoehdon_elaimet_total = vaihtoehto_total[n].split(",");
				for (g=0; g<vaihtoehdon_elaimet_total.length; g++) {
					elain_total[g] = elain_total[g] + Number(vaihtoehdon_elaimet_total[g]);
				}
			}
			
			if (valitut_elaimet != "ei_valintaa") {
				for (n=0; n<13 ;n++) {
					elain[n] = elain[n] + Number(valitut_elaimet[n]);
				}
				vastatut_kysymykset++;
			}
			
		//	Allaolevalla koodinpätkällä kerätään tiedot kysymyksistä,
		//	joissa voi valita useita vaihtoehtoja (checkbox-kysymykset).

		} else {
			var jotain_vastattu = 0;
			for(n=1; n<15; n++) {
				if (document.formi.elements['Vastaus'+i+'.'+n] == undefined) break;
				else {
					var vaihtoehdon_elaimet = document.formi.elements['Vastaus'+i+'.'+n].value.split(",");
					if (document.formi.elements['Vastaus'+i+'.'+n].checked) {
						jotain_vastattu = 1;
						for (g=0;g<13;g++) {
							elain[g] = elain[g] + Number(vaihtoehdon_elaimet[g]);
						}
					}
					for (g=0; g<13; g++) {
						elain_total[g] = elain_total[g] + Number(vaihtoehdon_elaimet[g]);
					}
					if (jotain_vastattu) vastatut_kysymykset++;
				}
			}
		}
	}
	
//	Lasketaan prosentit.
	for (i=0; i<13; i++) {
		elain_prosentti[i] = (elain[i] / elain_total[i]) * 100;	
	}


//	Tsekataan, mikä eläin voitti. (Prosenttimäärän mukaan.)
	for (i=0;i<13;i++) {

		// Debug-koodia. Kommentoi piiloon ennen julkaisua:
//		var pikkuprosentti = Math.round(elain_prosentti[i] * 100);
//		var pikkuprosentti = pikkuprosentti / 100;
//		debuggeri.document.write(elain_nimi[i] + ": " + elain[i] + " / " + elain_total[i] + " ( " + pikkuprosentti + "% )<br>");

		// /Debug-koodi päättyy.
		
		var suurempi = new Array();
		for (n=0;n<13;n++) {
			if (elain_prosentti[i] >= elain_prosentti[n]) {
				suurempi.push(n);
			}
		}
		if (suurempi.length == 13) voittajaelaimet.push(i);
	}

	// Debug-koodia. Kommentoi piiloon ennen julkaisua:

//	debuggeri.document.write("<br><font size=\"2\">(Debug-ikkuna. Poistetaan ennen julkaisua.)</font>");
//	debuggeri.document.close();
//	debuggeri.focus();

	// /Debug-koodi päättyy.
		
	if (vastatut_kysymykset == 0) {

	//	Jos käyttäjä ei ole vastannut mihinkään kysymykseen, hän saa tulokseksi vain
	//	kehoituksen vastata edes yhteen kysymykseen.

		lopullinen_voittaja = -1;

	} else {

	//	Jos voittajaeläimiä on useampia, valitaan yksi sen mukaan, mitä kello sattuu olemaan.
	//	Tämä on parempi vaihtoehto kuin satunnaisluku, sillä jos käyttäjä kokeilee testiä
	//	välittömästi uudestaan täysin samoin vastausvaihtoehdoin, hän saa uudestaan saman lopputuloksen.
	
		vertausluku = aika.getHours();

		if (voittajaelaimet.length > 1) {
			var etaisyys = new Array();
			for (i=0; i<voittajaelaimet.length; i++) {
				etaisyys[i] = Math.abs(voittajaelaimet[i] * 2 - vertausluku);
			}
			for (i=0; i<voittajaelaimet.length; i++) {
				for (n=0; n<voittajaelaimet.length; n++) {
					if (etaisyys[i] < etaisyys[n]) var suurin = i;
				}
			}
			lopullinen_voittaja = voittajaelaimet[suurin];
		} else {
			lopullinen_voittaja = voittajaelaimet[0];	
		}
		
	}
	
	
	// Numero, joka kirjoitetaan tulos.html-sivun perään. Tulossivun eläinnumerointi
	// alkaa ykkösestä. Nollatulos tuo näkyviin virheilmoituksen.
	
	var tulossivu = lopullinen_voittaja + 1;   
	
//	Lähetetään tulos kantaan. Tähän käytetään pientä flash-palikkaa, sillä
//	kanta sijaitsee eri serverillä kuin testi, eikä XMLhttpRequest-metodia
//	voida siksi käyttää.

	try {
		//	Jos käyttäjällä on Flash selaimessaan,
		//	lähetetään pluginin avulla tulos kantaan.
//		alert("Fläääässssi löytyy koneesta.\ntulossivu = " + tulossivu + "\npaluusivu = " + paluusivu);
		document.getElementById("kannatin").SetVariable("/:paluusivu", paluusivu);		
		document.getElementById("kannatin").SetVariable("/:kanta", kanta);		
		document.getElementById("kannatin").SetVariable("/:elukka", elain_nimi[lopullinen_voittaja]);
		document.getElementById("kannatin").SetVariable("/:tulos", tulossivu);
		document.getElementById("kannatin").GotoFrame(1);   // Frame 1 = oikeasti kakkosframe, sillä laskenta alkaa nollasta.
	} catch(err) {
		//	Jos käyttäjällä ei ole Flashia,
		//	mennään suoraan tulossivulle
		//	kulkematta tietokannan kautta.
//		alert("Ei löytyny fläääässssiä koneesta.\ntulossivu = " + tulossivu + "\npaluusivu = " + paluusivu);
		window.location = paluusivu + "?" + tulossivu;
	}


}

// Tämä funktio näyttää testin tuloksen tulossivulla (tulos.html).
function nayta_tulos() {
	var kaveriteksti = new Array();
	kaveriteksti[1] = "Olen hauki! Viihdyn parhaiten omissa oloissani ilman muiden seuraa. En ole erityisen vaatelias ruoan tai asuinpaikan suhteen. Minulla on taipumusta pienempien kiusaamiseen, tuittuiluun ja mököttämiseen.";
	kaveriteksti[2] = "Olen joutsen! Viihdyn parhaiten oman puolisoni kanssa, enkä mieluusti reissaa paikasta toiseen. Olen parisuhdekeskeinen, ja rauhallinen ja tavallinen perhe-elämä on minua varten. ";
	kaveriteksti[3] = "Olen käki! Käytän kerkeästi hyväksi kanssaihmisiäni. Irtosuhteet ja levottomuus kuvaavat elämäntyyliäni. Toisaalta voin olla bileiden odotettu kunkku, joka tietää miten elämästä otetaan kaikki irti. ";
	kaveriteksti[4] = "Olen siili! Herätän muissa sympatioita, vaikka minulla onkin joitain outoja tapoja. Viihdyn mieluiten yksin ja hemmottelen itseäni hyvällä ruoalla.";
	kaveriteksti[5] = "Olen orava! Vaikka olen taipuvainen kiivailuun ja jossain määrin toisten hyväksikäyttämiseen, monet silti pitävät tarmokkuudestani. Minun voi olla vaikea päästää irti vanhoista tavaroista.";
	kaveriteksti[6] = "Olen rotta! Nirsoilen kaiken uuden edessä, mutta toisaalta sopeudun halutessani tilanteeseen kuin tilanteeseen. Käytän röyhkeästi hyväksi muita, enkä ole kovinkaan pidetty tyyppi.";
	kaveriteksti[7] = "Olen metsäjänis! En malta pysyä paikallani, mutta toisaalta säikyn helposti uusissa ja uhkaavissa tilanteissa. Jaan helposti toisten mielipiteet kahtia, etenkin kun minulla voi olla omituisia tapoja.";
	kaveriteksti[8] = "Olen susi! Sosiaalisuus ja vaatimattomuus ovat parhaita puoliani. Toisaalta jotkut saattavat pitää käytöstäni joskus arvaamattomana ja pelottavana. Olen kova puhumaan ja viihdyn hyvin missä vain, kunhan minulla on seuraa.";
	kaveriteksti[9] = "Olen karhu! Ulkoiselta olemukseltani saatan olla hyvinkin sympaattinen, mutta tarvittaessa osaan hurjistua. Olen elämän rennosti ottava, ja mielipuuhaani onkin nukkuminen. ";
	kaveriteksti[10] = "Olen saimaannorppa! Useimmat pitävät minua hellyttävän sympaattisena tyyppinä. Olen melko rauhallinen ja herkkä, enkä ole kovinkaan kiinnostunut matkustelusta.";
	kaveriteksti[11] = "Olen saukko! En ota elämää turhan vakavasti ja leikkisyyteni huvittaa ja riemastuttaa muita. Minua ei myöskään saa pysymään pitkää aikaa aloillani, vaan olen mieluusti aina menossa.";
	kaveriteksti[12] = "Olen lumikko! Pieni ja pippurinen, ainakin henkisesti, kuvaa hyvin luonteenlaatuani. Olen eläväinen ja vilkas, mutta suuttuessani voin äityä väkivaltaiseksi.";
	kaveriteksti[13] = "Olen majava! Ahkeruus ja perhekeskeisyys ovat erottamaton osa minua. Autan mielelläni muita, ja pieni nikkarointi sujuukin minulta leikiten.";
	
	var urli = window.location.search;
	var tulos = Number(urli.substring(1));
	document.getElementById("vastaus"+tulos).style.display = "block";
	if (tulos != 0) {
		document.getElementById("kaverille").style.display = "block";
		document.kaveriformi.vastterv.value = kaveriteksti[tulos];
	}


}


// Tämä funktio poimii valitun vaihtoehdon arvon radio button -vastauksissa.
function multichoice(_object) {
	vaihtoehto_total = new Array();
	var loyto = "ei_valintaa";	// Annetaan arvoksi "ei_valintaa", jos mitään ei ole valittu.
	for(var i=0;i<_object.length;i++) {
		vaihtoehto_total.push(_object[i].value);
		if(_object[i].checked==true) {
			var loyto = _object[i].value;
		}
	}
	return loyto;
}


// Tämä funktio kutsutaan tulossivun Kerro kaverille -formista.
// Jos lähettäjän tai vastaanottajan sähköpostiosoitteesta puuttuu
// @-merkki, maristaan asiasta.
function checkValues(form) {
	var missing = null;
	if(form.vastmail.value.indexOf("@") == -1) { missing="Vastaanottajan sähköpostiosoite "; }
	else if(form.lahmail.value.indexOf("@") == -1) { missing="Lähettäjän sähköpostiosoite "; }		

	if(missing != null) {
		alert(missing + "on väärin muotoiltu.");
		return false; 
	} else {
		return true;
	}
	return false;
}



