Number.prototype.money = function(fixed, decimalDelim, breakDelim){
	var n = this, 
	fixed = isNaN(fixed = Math.abs(fixed)) ? 2 : fixed, 
	decimalDelim = decimalDelim == undefined ? "," : decimalDelim, 
	breakDelim = breakDelim == undefined ? "." : breakDelim, 
	negative = n < 0 ? "-" : "", 
	i = parseInt(n = Math.abs(+n || 0).toFixed(fixed)) + "", 
	j = (j = i.length) > 3 ? j % 3 : 0;

	console.log(negative + (j ? i.substring(0, j) +
	breakDelim : "") + i.substring(j).replace(/(\d{3})(?=\d)/g, "$1" + breakDelim) +
	 (fixed ? decimalDelim + Math.abs(n - i).toFixed(fixed).slice(2) : ""));
	return negative + (j ? i.substring(0, j) +
		 breakDelim : "") + i.substring(j).replace(/(\d{3})(?=\d)/g, "$1" + breakDelim) +
		  (fixed ? decimalDelim + Math.abs(n - i).toFixed(fixed).slice(2) : "");
}

startSound = function(id, loop) {
	soundHandle = document.getElementById(id);
	if(loop)
		soundHandle.setAttribute('loop', loop);
	soundHandle.play();
}

var MillionaireModel = function(data) {
	var self = this;

    this.questions = data.questions;
    this.transitioning = false;
 	this.money = new ko.observable(0);
 	this.level = new ko.observable(1);
 	this.usedFifty = new ko.observable(false);
 	this.usedPhone = new ko.observable(false);
 	this.usedAudience = new ko.observable(false);

 	self.getQuestionText = function() {
 		return self.questions[self.level() - 1].question;
 	}

 	self.getAnswerText = function(index) {
		window.scrollTo(0, document.body.scrollHeight);
 		return self.questions[self.level() - 1].content[index];
 	}

 	self.fifty = function(item, event) {
 		if(self.transitioning)
 			return;
 		$(event.target).fadeOut('slow');
 		var correct = this.questions[self.level() - 1].correct;
 		var first = (correct + 1) % 4;
 		var second = (first + 1) % 4;
 		if(first == 0 || second == 0) {
 			$("#answer-one").fadeOut('slow');
 		}
 		if(first == 1 || second == 1) {
 			$("#answer-two").fadeOut('slow');
 		}
 		if(first == 2 || second == 2) {
 			$("#answer-three").fadeOut('slow');
 		}
 		if(first == 3 || second == 3) {
 			$("#answer-four").fadeOut('slow');
 		}
 	}

 	self.fadeOutOption = function(item, event) {
 		if(self.transitioning)
 			return;
 		$(event.target).fadeOut('slow');
 	}

 	self.answerQuestion = function(index, elm) {
 		if(self.transitioning)
 			return;
 		self.transitioning = true;
 		if(self.questions[self.level() - 1].correct == index) {
 			self.rightAnswer(elm);
 		} else {
 			self.wrongAnswer(elm);
 		}
 	}

 	self.rightAnswer = function(elm) {
 		$("#" + elm).slideUp('slow', function() {
 			//startSound('rightsound', false);
 			$("#" + elm).css('background', 'green').slideDown('slow', function() {
 				self.money($(".active").data('amt'));
				console.log(self.level());
 				if(self.level() + 1 > 9) {
	 				$("#game").fadeOut('slow', function() {
	 					$("#game-over").html('Συγχαρητήρια, κερδίσατε!');
	 					$("#game-over").fadeIn('slow');
	 				});
 				} else {
 					self.level(self.level() + 1);
 					$("#" + elm).css('background', 'none');
			 		$("#answer-one").show();
			 		$("#answer-two").show();
			 		$("#answer-three").show();
			 		$("#answer-four").show();
			 		self.transitioning = false;
 				}
 			});
 		});
 	}

 	self.wrongAnswer = function(elm) {
 		$("#" + elm).slideUp('slow', function() {
 			//startSound('wrongsound', false);
 			$("#" + elm).css('background', 'red').slideDown('slow', function() {
 				$("#game").fadeOut('slow', function() {
 					$("#game-over").html('Τέλος παιχνιδιού!');
 					$("#game-over").fadeIn('slow');
 					self.transitioning = false;
 				});
 			});
 		});
 	}

 	self.formatMoney = function() {
	    return self.money().money(2, ',', '.');
	}
};

$(document).ready(function() {

	const jsonData = '{"games":[{"questions":[{"question":"Τι έκανε ο Αχιλλέας όταν η Θέτιδα τον βρήκε στη σκηνή του;","content":["Φρόντιζε το σώμα του Πάτροκλου","Θρηνούσε μαζί με άλλους Αχαιούς τον χαμό του φίλου του","Ήταν οργισμένος με τη Βρισηίδα","Κοιμόταν"],"correct":1},{"question":"Τι έσταξε η Θέτιδα στα ρουθούνια του Πάτροκλου;","content":["Νερό θαλασσινό","Αίμα ζώου","Κρασί και αμβροσία","Λάδι"],"correct":2},{"question":"Η Θέτιδα συμβουλεύει τον Αχιλλέα:","content":["να καλέσει σε σύνοδο τους Αχαιούς, να αποκηρύξει τον θυμό του και να συμφιλιωθεί με τον Αγαμέμνονα","να ριχτεί στη μάχη χωρίς καθυστέρηση","όλα τα παραπάνω","να θάψει τον νεκρό Πάτροκλο"],"correct":2},{"question":"Στην συνέλευση που συγκάλεσε  Αχιλλέας","content":["Πήγαν όλοι οι Αχαιοί","Πήγαν μόνο οι αρχηγοί του στρατεύματος","Πήγαν μόνο οι Μυρμιδόνες","Δεν πήγε κανείς"],"correct":0},{"question":"Η Άτη τυφλώνει","content":["Το νου θεών και ανθρώπων","Το νου ανθρώπων και ζώων","Το νου των θεών","Το νου και την καρδιά των ανθρώπων"],"correct":1},{"correct":0,"question":"Ο Αγαμέμνονας αναφέρει πως από την Άτη τυφλώθηκε και;","content":["Ο Δίας","Η Θέτιδα","Η Ήρα","Ο Ποσειδώνας"]},{"correct":2,"question":"Ο Αχιλλέας σχετικά με τα δώρα που του υποσχέθηκε ο Αγαμέμνονας αναφέρει","content":["Πως θέλει μόνο τη Βρισηίδα","Πως τα περιμένει με αγωνία","Πως δεν τον ενδιαφέρουν κι αν θέλει ο Αγαμέμνονας να τα κρατήσει","Πως έπρεπε ήδη να έχει στείλει στρατιώτες να του τα φέρουν"]},{"correct":1,"content":["Είναι καλή ιδέα. Χρειαζόμαστε ξεκούραση","Αυτή την ώρα πρέπει να σκεφτούμε τη μάχη και όχι το φαγητό και την ξεκούραση","Εγώ έχω το νου μου στα δώρα","Δεν θέλω να φάω."],"question":"Ο Οδυσσέας προτείνει να ξεκουραστεί το στράτευμα, να φάει και να πιει. Τι απαντά ο Αχιλλέας;"},{"correct":0,"content":["Ο πόθος για εκδίκηση για τον θάνατο του Πάτροκλου ","Να αποκτήσει φήμη σκοτώνοντας πολλούς Τρώες","Να καταλάβουν την Τροία για να πάρει το χρυσάφι των Τρώων","Να αποδείξει στον Αγαμέμνονα ότι είναι ανώτερος του."],"question":"Αφού τέλειωσε ο θυμός του Αχιλλέα τι είναι εκείνο που οδηγεί τις ενέργειές του;"}]}]}';
	const data = JSON.parse(jsonData);
	for(var i = 1; i <= data.games.length; i++) {
		$("#problem-set").append('<option value="' + i + '">' + i + '</option>');
	}
	$("#pre-start").show();
	$("#start").click(function() {
		var index = $('#problem-set').find(":selected").val() - 1;
		ko.applyBindings(new MillionaireModel(data.games[index]));
		$("#pre-start").fadeOut('slow', function() {
			$("#game").fadeIn('slow');
		});
	});
});