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) {
 		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 > 13) {
	 				$("#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":2},{"question":"Η Πολυξένη φονεύθηκε στον τάφο του","content":["Αχιλλέα","Αίαντα","Έκτορα","Πριάμου"],"correct":0},{"question":"Ο Ταλθύβιος εμφανίζεται ………………. όταν ανακοινώνει τον επικείμενο θάνατο του Αστυάνακτα.","content":["οργισμένος","διστακτικός","χαιρέκακος","ειρωνικός"],"correct":1},{"question":"Τι από τα παρακάτω δεν ισχύει για την Ανδρομάχη;","content":["δεν έβγαινε μόνη της έξω","δε θεωρεί ότι ένας δεύτερος γάμος είναι απαγορευτικός","θεωρεί τη σιωπή μπροστά στον άντρα αρετή","δεν της αρέσει το κουτσομπολιό "],"correct":1},{"question":"Ποιο από τα παρακάτω πιστεύει η Εκάβη;","content":["καλύτερα να είσαι ζωντανός παρά νεκρός καθώς στη ζωή υπάρχει ελπίδα","καλύτερος είναι ο θάνατος παρά μια ανυπόφορη ζωή","η Ανδρομάχη πρέπει να αντισταθεί στον νέο της αφέντη","η Ανδρομάχη πρέπει να δραπετεύσει"],"correct":0},{"question":"Πώς ονομάζεται ο γιος του Έκτορα και της Ανδρομάχης;","content":["Νεοπτόλεμος","Λαομέδων","Αστυάναξ","Πέλοπας"],"correct":2},{"correct":3,"question":"Ο Ταλθύβιος ………………………… την απόφαση του φόνου του Αστυάνακτα.","content":["επικροτεί","επιδοκιμάζει","εναντιώνεται στην","δυσανασχετεί με"]},{"correct":0,"question":"Η Ανδρομάχη υπακούει στις συμβουλές του Ταλθύβιου.","content":["Σωστό","Λάθος","",""]},{"correct":1,"question":"Η Ανδρομάχη τελικά ………………. το παιδί της.","content":["απαγάγει","παραδίδει","σκοτώνει","κρύβει"]},{"correct":0,"question":"Η Ανδρομάχη λειτουργεί ως σύμβολο της κάθε μητέρας που χάνει το παιδί της και της κάθε προσφυγοπούλας που βιώνει τα δεινά του πολέμου.","content":["Σωστό","Λάθος","",""]},{"correct":3,"question":"Η Ανδρομάχη κατηγορεί για τα δεινά της","content":["τον Δία","την Αθηνά","τον Μενέλαο","την Ελένη"]},{"correct":2,"question":"Ποια πρόσωπα βρίσκονται στη σκηνή;","content":["η Ανδρομάχη και η Εκάβη","η Ανδρομάχη, η Εκάβη και ο Ταλθύβιος","η Ανδρομάχη, η Εκάβη, ο Ταλθύβιος, ο μικρός Αστυάνακτας (βουβό πρόσωπο) και η Κορυφαία του Χορού","Η Ανδρομάχη, η Εκάβη, ο Ταλθύβιος, ο μικρός Αστυάνακτας"]},{"correct":1,"question":"Πώς χαρακτηρίζει η Ανδρομάχη τους Έλληνες;","content":["βάρβαρους","βάρβαρους εφευρέτες βασάνων","σιχαμένους","βάρβαρους υποκριτές"]}]}]}';
	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');
		});
	});
});