
function Questions(){
    var index = 0;
    var answers = {};
    var answered_questions = {};
    var f = {a: 0,
	    b: 1,
	    c: 2};
   
    var question_list = [
	{
	    question: "Varför krävs det licens?",
	    a: "För att vara försäkrad som förare.",
	    b: "För att bilen ska vara försäkrad.",
	    c: "För att svenska polisen kräver det.",
	    facit: f.a
	},
	{
	    question: "Vad innebär gul flagga?",
	    a: "Hinder på banan som innebär omkörningsförbud.",
	    b: "Halt på banan.",
	    c: "Tävlingen avbryts, åk till bandepån för vidare information.",
	    facit: f.a
	},
	{
	    question: "Vad krävs för att få köra en biltävling?",
	    a: "Godkänd och betald licens av Länsstyrelsen",
	    b: "Godkänd och betald licens av Polisen.",
	    c: "Godkänd och betald licens av SMA eller SBF.",
	    facit: f.c
	},
	{
	    question: "Vad innebär röd flagga?",
	    a: "Omkörningsförbud",
	    b: "Tävlingen avbryts, åk till bandepån för vidare information.",
	    c: "Tekniskt fel på bilen",
	    facit: f.b
	},
	{
	    question: "Vad innebär vit flagga?",
	    a: "Tekniskt fel på bilen",
	    b: "Tjänstebil eller långsamtgående fordon på detta banavsnitt.",
	    c: "Snabbare bil kommer bakom dig, släpp förbi.",
	    facit: f.b
	},{
	    question: "Vad bör du uppvisa för sekretariatet?",
	    a: "Licens och körkort om det krävs",
	    b: "Kreditkort.",
	    c: "Hjälm och föraroverall.",
	    facit: f.a
	},{
	    question: "Vad innebär blå flagga?",
	    a: "Tjänstebil eller långsamtgående fordon på detta banavsnitt.",
	    b: "Det kommer att börja regna och bli halt",
	    c: "Snabbare bil kommer bakom dig, släpp förbi",
	    facit: f.c
	},{
	    question: "Vad innebär röd/gul flagga?",
	    a: "Det finns stillastående officiella fordon på banan.",
	    b: "Det kommer att börja regna och bli halt.",
	    c: "Olja eller sand eller något annat som gör detta banavsnitt betydligt halare än normalt",
	    facit: f.c
	},{
	    question: "Vilken utrustning krävs för att få köra en biltävling?",
	    a: "Bara hjälm",
	    b: "Säkerhetsutrustning som grenen kräver typ hjälm, overall etc.",
	    c: "Egen bil",
	    facit: f.b
	},{
	    question: "Vilka fordon förutom tävlingsbilar äger tillträde till banan vid en biltävling?",
	    a: "Endast ambulans",
	    b: "Endast arrangörens bilar såsom bärgare, safteybilar och ambulans.",
	    c: "Publikens",
	    facit: f.b
	},{
	    question: "Vad innebär lila flagga med siffrorna 60 på?",
	    a: "Det är 60 sekunder kvar till start.",
	    b: "Den bilden kör för långsamt.",
	    c: "Alla tävlande skall hålla 60km/h för att arrangören skall göra något på banan.",
	    facit: f.c
	},{
	    question: "Vilken hastighetsgräns råder i depåområdet?",
	    a: "Gånghastighet",
	    b: "50 km/h",
	    c: "Fri fart",
	    facit: f.a
	},{
	    question: "Vid vilken ålder kan du börja tävlingsköra?",
	    a: "Beroende på klass och gren. Enklaste bilklasserna från 15 år och uppåt",
	    b: "18 år.",
	    c: "21 år",
	    facit: f.a
	},{
	    question: "Vad har du för skyldigheter gentemot andra förare?",
	    a: "Köra enligt sportgrenens regler",
	    b: "Vara hänsynsfull.",
	    c: "Hjälpa till vid problem",
	    facit: f.a
	},{
	    question: "Vad innebär svart/vit diagonalt flagga, som visas tillsammans med startnummer?",
	    a: "Den föraren har en halvskadad bil, åtgärda senare",
	    b: "Start på tävlingen.",
	    c: "Den föraren har en varning för något regelbrott, gör inte om det",
	    facit: f.c
	},{
	    question: "Vad innebär svart flagga med orange prick på, som visas tillsammans med startnummer?",
	    a: "Den bilen kör långsamt.",
	    b: "Den bilen har något tekniskt fel som måste åtgärdas direkt, kom in i depån.",
	    c: "Den föraren har en trasig bil och skall fixa det senare",
	    facit: f.b
	},{
	    question: "Är det tillåtet att köra om arrangörens officiella fordon under tävling?",
	    a: "Nej, då det skapar farligheter.",
	    b: "Ja, under försiktighet och så länge det inte är en Pacecar som är ute för att stoppa upp fältet.",
	    c: "Ja, men bara på höger sida.",
	    facit: f.b
	},{
	    question: "Vad innebär svart flagga, som visas tillsammans med startnummer?",
	    a: "Den föraren har gjort något regelfel, kom in i depån omedelbart och få ett straff.",
	    b: "Den föraren har en trasig bil och skall fixa det senare.",
	    c: "Den bilen kör för långsamt",
	    facit: f.a
	},{
	    question: "Vad blir påföljden om du inte lyder en funktionär?",
	    a: "Du får tidstillägg",
	    b: "Du kan bli avstängd från tävlingen eller annat lämpligt straff.",
	    c: "Du får en varningsdekal på bilen",
	    facit: f.b
	},{
	    question: "Vad innebär schack-rutig svart och vit flagga?",
	    a: "Du får tidstillägg",
	    b: "Start på tävlingen.",
	    c: "Mål på tävlingen.",
	    facit: f.c
	},{
	    question: "Vad innebär nationsflaggan?",
	    a: "Du får tidstillägg.",
	    b: "Mål på tävlingen.",
	    c: "Start på tävlingen.",
	    facit: f.c
	},{
	    question: "Vad menas med rullande start?",
	    a: "Bilarna åker sakta framåt i jämn fart på två led och startar på kommando från startern.",
	    b: "Bilarna åker sakta bakåt på två led och startar på kommando från startern.",
	    c: "Bilarna rullar fram till startlinjen för uppställning inför starten",
	    facit: f.a
	},{
	    question: "Vad innebär grön flagga?",
	    a: "Start på tävlingen",
	    b: "Att banan är klar från och med denna postering.",
	    c: "Att banan har hinder.",
	    facit: f.b
	}
	
    ];
    
    
    this.next_question = function(){
	if(index == question_list.length - 1) {
	    this.show_results(); 
	}else {
	    index = index + 1;
	    this.render_question();
	}
    };
    this.count_correct = function(){
	var correct = [];
	var incorrect = [];
	var nonanswer = false;
	for( i in question_list) {
	    var quest = question_list[i];
	    var answer = answers[i];
	    if( quest.facit == answer)
		correct.push( i );
	    else{
		if(answer == -1)
		    nonanswer=true;
		incorrect.push( parseInt(i) + 1);
	    }
	    
	}
	var results = {
	    incorrect: incorrect,
	    count: correct.length,
	    nonanswer: nonanswer
	};
	this.res = results;
    };

    this.previous_question = function(){
	index = index - 1;
	this.render_question();
    };
    this.click_next = function(){
	answers[index] = this.checked_boxes();
	this.next_question();
    };
    this.click_previous = function(){
	answers[index] = this.checked_boxes();
	this.previous_question();
    };
    var qtitle = document.getElementById('qtitle');
    var qbody = document.getElementById('qbody');
    var a = document.getElementById('a');
    var b = document.getElementById('b');
    var c = document.getElementById('c');
    var checks =[ document.getElementById('c0'),
		  document.getElementById('c1'),
		  document.getElementById('c2')];

    this.checked_boxes = function(){
	for(var i=0;i<=2;i=i+1){
	    if( checks[i].checked )
		return i; 
	};
	return -1;
    };

    this.get_wrong_answers = function (){
	var retstr = "";
	for(var i in this.res.incorrect){
	    var inc = this.res.incorrect[i];
	    retstr = retstr + " " + inc;
	}
	return retstr;
    };
    this.show_results = function(){
	this.count_correct();
	if (this.res.nonanswer) {
	    alert("Du har inte svarat på alla frågorna.");
	    return;
	}
	var bfinish = document.getElementById('bfinish');
	var header_element=document.getElementById('hhead'); 
	var txt_element=document.getElementById('hbody') ;
	document.getElementById('questions').style.visibility = 'hidden';
	var newtext;
	if(this.res.count != question_list.length){
	    bfinish.innerHTML = 'Börja om testet';
	    header_element.innerHTML= 'Vi beklagar men du klarade inte testet';
	    newtext = 'Tyvärr har du inte klarat samtliga frågor i testet kring motorsport <br/>och säkerhet. Du har uppgivit fel svarsalternativ på följande frågor:<br /><br />' + 
		this.get_wrong_answers() +
		'<br/>Genom att stänga denna popup-ruta kommer du automatiskt att komma till början av testet. Du kan göra om testet så många gånger du önskar. Vill du göra om testet vid ett senare tillfälle, stänger du ned webbfönstret eller väljer att gå till någon annan sida i menyraden. Observera att ingen information från tidigare tester kommer att sparas.';
	  
	} else {
	    bfinish.innerHTML = 'Gå vidare med registreringen';
	    newtext = 'Du har klarat samtliga frågor i testet kring motorsport och\
	säkerhet.<br/><br/>  För att teckna licensförsäkringen behöver\
	du endast fylla i de kunduppgifter som du kommer till genom\
	att stänga denna popup-ruta.<br/><br/>  Vill du ha information\
	om försäkringen kan du efter att du fyllt i uppgifterna gå in\
	under information i menyraden och läsa produktblad och\
	villkor. Tänk på att försäkringen är personlig och gäller\
	under 1 år.<br/><br/>  Lycka till!';
	    header_element.innerHTML= 'Grattis';
	}
	txt_element.innerHTML= newtext;
	bfinish.style.visibility = 'visible';
    };
    this.finish = function(){
	if(this.res.count == question_list.length){
	    document.location = "http://simplesignup.se/private_event/1486/12f56eb79b";
	} else {
	   window.location.reload();
	}
    };

    this.handle_last = function(){
	var b2 = document.getElementById('b2');
	b2.innerHTML = 'Slutresultat';
    };
    this.render_question = function(){
	var set_answers = function(){
	    var answer = answers[index];
	    checks[0].checked = false;
	    checks[1].checked = false;
	    checks[2].checked = false;
	    if((answer == 0 || answer) && checks[answer]){
	       checks[answer].checked = true;
	   }
	};
	qtitle.innerHTML = "Fråga " + (index + 1) ;
	qbody.innerHTML = question_list[index].question;
	a.innerHTML = question_list[index].a;
	b.innerHTML = question_list[index].b;
	c.innerHTML = question_list[index].c;
	set_answers();
	document.getElementById('b1').disabled=false;
	if(index == 0){document.getElementById('b1').disabled=true;};
	document.getElementById('b2').innerHTML = 'Nästa Fråga';
	if(index == (question_list.length - 1)){document.getElementById('b2').innerHTML = 'Slutresultat';}
    };
    this.clear = function(ind){
	for(var i=0;i<=2;i=i+1){
	    if(ind != i)
		checks[i].checked  = false;
	}
    };
};
var q;
function init_questions(){
    q = new Questions();
    q.render_question();
};



