Perwoll.Quiz = function() {
	
	var Event = YAHOO.util.Event;
	var Dom = YAHOO.util.Dom;
	
	var qTextEl = Dom.get("question-text").firstChild;
	var answersEls = Dom.get("fashion-quiz-answers").getElementsByTagName("a");
	var imageEl = Dom.get("fashion-quiz-image").firstChild;
	
	var isActive = true;
	var selectedAnswer = -1;
	var correctAnswers = 0;
	var curQuestionNum = -1;
	var curQuestion = null;
	
	function disableQuestions()
    {
        answersEls[0].parentNode.parentNode.className = "";
		isActive = false;
    }
	
	function enableQuestions()
	{
		answersEls[0].parentNode.parentNode.className = "active";
		isActive = true;
	}
	
	function isLastQuestion() {
		return (curQuestionNum < questions.length - 1);
	}
	
	function setQuestion(n)
	{
		curQuestionNum = n;
		curQuestion = questions[n];
		
		selectedAnswer = -1;
		
		qTextEl.src = curQuestion.questionImage.filename;
		qTextEl.width = curQuestion.questionImage.width;
		qTextEl.height = curQuestion.questionImage.height;
		qTextEl.title = curQuestion.question.replace("|", " ");
		
		imageEl.src = curQuestion.image;
		imageEl.width = curQuestion.imageSize[0];
		imageEl.height = curQuestion.imageSize[1];
		
		for(var i = 0; i < answersEls.length; i++)
		{
			var ind = (i + 1);
			answersEls[i].innerHTML = curQuestion["answer" + ind];
			Dom.removeClass(answersEls[i], "checked");
		}
		
		Dom.setStyle("fashion-quiz-check-answer-btn", "display", "block");
		Dom.setStyle("fashion-quiz-next-btn", "display", "none");
		Dom.setStyle("fashion-quiz-results-btn", "display", "none");
		Dom.setStyle("question-result-incorrect", "display", "none");
		Dom.setStyle("question-result-correct", "display", "none");
	}
	
	setQuestion(0);
	
	function stopEvt()
	{
		var e = Event.getEvent();
		Event.stopEvent(e);
	}
	
	return {
		checkAnswer : function(n) 
		{
			stopEvt();
			
			if(selectedAnswer == -1)
			{
				alert("Bitte wählen Sie eine Antwort aus.");
				return;
			}
			
			disableQuestions();
			
			// Checking if answer is correct
			var isCorrect = (selectedAnswer == curQuestion.correct_answer - 1);
			
			var elId = (isCorrect) ? "question-result-correct" : "question-result-incorrect";
			var el = Dom.get(elId);
			Dom.setStyle(el, "display", "block");
			
			el.lastChild.firstChild.src = curQuestion.answerTextImage.filename;
			el.lastChild.firstChild.width = curQuestion.answerTextImage.width;
			el.lastChild.firstChild.height = curQuestion.answerTextImage.height;
			
			Dom.setStyle("fashion-quiz-check-answer-btn", "display", "none");
			var nextBtn = isLastQuestion() ? "fashion-quiz-next-btn" : "fashion-quiz-results-btn";
			
			Dom.setStyle(nextBtn, "display", "block");
			
			if(isCorrect)
			{
				correctAnswers++;
			}
			
			
			
			
			
		},
		nextQuestion : function() {
			curQuestionNum++;
			enableQuestions();
			setQuestion(curQuestionNum);
		},
		setCheckBox : function(id) 
		{
		    
			
			stopEvt();
			
			if(!isActive)
			{
				return;
			}
			
			for(var i = 0; i < answersEls.length; i++)
            {
                if(answersEls[i].id == "fashion-quiz-answer" + id)
                {
                    Dom.addClass(answersEls[i], "checked");
                }
                else
                {
                    Dom.removeClass(answersEls[i], "checked");
                }
            }
            
            selectedAnswer = id;			  
		},
		showResults : function() {
			stopEvt();
			Dom.setStyle("fashion-quiz-questions", "display", "none");
			Dom.setStyle("fashion-quiz-finish", "display", "block");
			
			var resultId = 1;
			
			switch (correctAnswers) {
				case 0:
				case 1:
					resultId = 1;
					break;
					
				case 2:
					resultId = 2;
					break;
					
				case 3:
					resultId = 3;
					break;
			}
			
			var title = quizTexts['result' + resultId + "Title"];
			Dom.get("quiz-result-title").innerHTML = '<img src="' +  title.filename + '" width="' + title.width + '" height="' + title.height + '" />';
			
			var text = quizTexts['result' + resultId];
			Dom.get("quiz-result-text").innerHTML = '<img src="' +  text.filename + '" width="' + text.width + '" height="' + text.height + '" />';
			
			var answerCountTxt = quizTexts['answerCount' + correctAnswers];
			Dom.get("fashion-quiz-result-answer-count").innerHTML = '<img src="' +  answerCountTxt.filename + '" width="' + answerCountTxt.width + '" height="' + answerCountTxt.height + '" />';;
		},
		start : function() {
			stopEvt();
			setQuestion(0);
			isActive = true;
			
			Dom.setStyle("fashion-quiz-start", "display", "none");
			Dom.setStyle("fashion-quiz-questions", "display", "block");
		},
		restart : function() {
			stopEvt();
			correctAnswers = 0;
			enableQuestions();
			Dom.setStyle("fashion-quiz-start", "display", "block");
            Dom.setStyle("fashion-quiz-questions", "display", "none");
			Dom.setStyle("fashion-quiz-finish", "display", "none");			
		}
	};
	
}();
