var ui = {
	
	notes: [],
	
	questionSetId: -1,
	
	answerDescriptions: [],
	
	userAnswers: [], // 0 = unanswered, 1 = wrong, 2 = correct
	
	init: function() {
		
		ui.initNote();
		
		// Get sets.
		var sets = jQuery('#questions div');
		
		// Get random set.
		var setId = Math.floor(sets.length * Math.random());
		var chosenSet = sets[setId];
		
		// Get all questions.
		var titles = jQuery(chosenSet).children('h1');
		
		// Get all answers.
		var answers = jQuery(chosenSet).children('ul');
		
		// Get all answer descriptions.
		ui.answerDescriptions = jQuery(chosenSet).children('p');
		
		// Create elements.
		for (var i = 0; i < titles.length; i++)
		{
			
			var set = jQuery('<div class="question-set clearfix">');
			set.append('<div id="quiz-question" class="clearfix">' + titles[i].innerHTML + '</div>');
			
			var questions = jQuery(answers[i]).children('li');
			
			for (var k = 0; k < questions.length; k++)
			{

				var id = 'question-' + i + "-" + k;
				var correctClass = (jQuery(questions[k]).hasClass('correct') ? ' correct' : '');
				set.append('<div class="input-row clearfix"><div class="checkbox checkbox-idle ' + correctClass + '"></div><div class="label">' + questions[k].innerHTML + '</div></div>');
			}
			
			jQuery('#questions').append(set);
			
			jQuery('#quiz-counter').append('<span>' + (i + 1) + '</span>');

			jQuery('#quiz .input-row').click(this.answer);
			
			// Reset answers.
			this.userAnswers[i] = 0;
			
		}
		
		// Show first question.
		this.nextQuestion();
		
	},
	
	nextQuestion: function() 
	{
		
		// Hide current question.
		if (ui.questionSetId >= 0 && ui.questionSetId + 1 != jQuery('.question-set').length)
		{
			jQuery(jQuery('.question-set')[ui.questionSetId]).hide();
		}
		
		ui.questionSetId++;

		// Show next question.
		if (ui.questionSetId < jQuery('.question-set').length)
		{
			jQuery(jQuery('.question-set')[ui.questionSetId]).show();
			jQuery('#quiz-answer').fadeOut();
		}
		
		// Set progress marker.
		if (ui.questionSetId < jQuery('#quiz-counter span').length)
		{
			jQuery('#quiz-counter span').removeClass('selected');
			jQuery(jQuery('#quiz-counter span')[ui.questionSetId]).addClass('selected');
		}

		ui.disableButton();
		
		
	},
	
	answer: function(e) 
	{

		var target = jQuery(e.target);
		if (!jQuery(target).hasClass('checkbox'))
		{
			target = jQuery(target).prev();
		}
		
		// Quit if disabled.
		if (jQuery(target).hasClass('checkbox-disabled'))
		{
			return false;
		}

		// Disable all visible checkboxes.
		jQuery('.question-set:visible .checkbox').addClass('checkbox-idle');
		jQuery('.question-set:visible .checkbox').removeClass('checkbox-checked');
		jQuery(target).addClass('checkbox-checked');
		
		// Hide answer.
		jQuery('#quiz-answer').fadeOut(200);
		
		ui.enableAnswerButton();
		
	},
	
	checkAnswer: function() 
	{
		
		// Selected checkbox.
		var answer = jQuery('.question-set:visible .checkbox-checked');
		
		if (jQuery(answer).hasClass('correct'))
		{
			// Mark as right answer, if question is unanswered.
			if (ui.userAnswers[ui.questionSetId] == 0)
			{
				ui.userAnswers[ui.questionSetId] = 2;
			}
			jQuery('#quiz-answer').html('<span class="correct">Oikein!</span> ' + jQuery(ui.answerDescriptions[ui.questionSetId]).html());
			
			// Quiz is over.
			if (ui.questionSetId + 1 == ui.userAnswers.length)
			{
				ui.finalize();
			} else {
				ui.enableNextButton();
			}
			
		} else {
			// Mark as wrong answer.
			ui.userAnswers[ui.questionSetId] = 1;
			jQuery('#quiz-answer').html('<span class="wrong">Väärin!</span>');
			jQuery(answer).removeClass('checkbox-checked');
			jQuery(answer).addClass('checkbox-disabled');
			jQuery(answer).next().addClass('label-disabled');
			//ui.disableNextButton();
		}
		
		jQuery('#quiz-answer').fadeIn(200);
		
	},
	
	finalize: function()
	{
		
		ui.disableButton();
		
		// Count wrong answers.
		var wrongAnswers = 0;
		for (var i = 0; i < ui.userAnswers.length; i++)
		{
			if (ui.userAnswers[i] == 1)
			{
				wrongAnswers++;
			}
		}
		
		// More than 2 wrong answers => fail
		if (wrongAnswers > 2)
		{
			jQuery('#quiz-answer').append("<br /><br />Voisi mennä paremminkin! Ota yhteyttä ammattiliittoosi työsuhdeturvan tarkistusta varten.");
		} else {
			jQuery('#quiz-answer').append("<br /><br />Olet hyvin perillä työsuhdeturvasta.");
		}
		
	},
	
	disableButton: function()
	{
		jQuery('#quiz-next').removeClass('quiz-next-enabled');
		jQuery('#quiz-next').addClass('quiz-next-disabled');
		jQuery('#quiz-next').unbind('click', ui.nextQuestion);
		jQuery('#quiz-next').unbind('click', ui.checkAnswer);
	},

	enableNextButton: function()
	{
		// Disable events.
		jQuery('#quiz-next').unbind('click', ui.nextQuestion);
		jQuery('#quiz-next').unbind('click', ui.checkAnswer);

		jQuery('#quiz-next').removeClass('quiz-next-disabled');
		jQuery('#quiz-next').addClass('quiz-next-enabled');
		jQuery('#quiz-next').attr('value', 'Seuraava');
		// Timeout to avoid IE to fire this event too early.
		setTimeout(function(){
			jQuery('#quiz-next').click(ui.nextQuestion);
		}, 100);
	},

	enableAnswerButton: function()
	{
		// Disable events.
		jQuery('#quiz-next').unbind('click', ui.nextQuestion);
		jQuery('#quiz-next').unbind('click', ui.checkAnswer);

		jQuery('#quiz-next').removeClass('quiz-next-disabled');
		jQuery('#quiz-next').addClass('quiz-next-enabled');
		jQuery('#quiz-next').attr('value', 'Vastaa');
		// Timeout to avoid IE to fire this event too early.
		setTimeout(function(){
			jQuery('#quiz-next').click(ui.checkAnswer);
		}, 100);
	},
	
	initNote: function()
	{
		
		// Get links.
		var links = jQuery('a[href=Muistilappu], a[href=muistilappu]');

		// Add click events.
		for (var i = 0; i < links.length; i++)
		{

			// Add content to list.
			ui.notes.push(jQuery(links[i]).attr('title'));

			// Set id.
			var id = ui.notes.length - 1;
			//jQuery(links[i]).attr('id', 'note-' + i);
			
			// Set action.
			jQuery(links[i]).attr('href', 'javascript:ui.openNote(' + id + ')');
			
			// Reset a-tag's title.
			jQuery(links[i]).attr('title', '');
			
			//jQuery(links[i]).attr('href', 'javascript:void(0)').click(ui.openNote);
		}
		
		jQuery('#note').click(function(e) { jQuery('#note').hide(); });
		
	},
	
	openNote: function(id)
	{
		
		var content = ui.notes[id];
		var elements = content.split(':');

		if (elements.length == 2)
		{
			jQuery('#note-padding').html('<h1>' + elements[0] + '</h1><p>' + elements[1] + '</p>');
		} else {
			jQuery('#note-padding').html(content);
		}
		
		jQuery('#note').css('left', jQuery(window).width() / 2 - jQuery('#note').width() / 2);
		jQuery('#note').css('top', jQuery(window).height() / 2 - jQuery('#note').height() / 2);
		
		jQuery('#note').show();

	}
	
};


