From 580f9d9b9c487e8fa15bceaea331533f4f66b76c Mon Sep 17 00:00:00 2001
From: YourFriendlyNeighborhoodDealer <qminer@2girls1dj.com>
Date: Wed, 13 Mar 2019 13:36:15 +0100
Subject: [PATCH] Fix of invalid .this usage, fix for question getting with no
 answers shown, basic assert add

---
 main.js | 34 +++++++++++++++++++++++-----------
 1 file changed, 23 insertions(+), 11 deletions(-)

diff --git a/main.js b/main.js
index 2b6b518..78b372f 100644
--- a/main.js
+++ b/main.js
@@ -27,7 +27,7 @@ const serverAdress = "https://qmining.tk/";
 
 // forcing pages for testing. unless you test, do not set these to true!
 // only one of these should be true for testing
-const forceTestPage = true;
+const forceTestPage = false;
 const forceResultPage = false;
 const forceDefaultPage = false;
 const logElementGetting = false;
@@ -535,32 +535,32 @@ class ResultsPageModell {
 
 		// the basic type of getting answers
 		fun.push(function TryGet0(i) {
-			var temp = this.GetRightAnswerIfCorrectShown(i); // getting risht answer
+			var temp = RPM.GetRightAnswerIfCorrectShown(i); // getting risht answer
 			if (temp.length > 0) // if the rightanswer element is not 0 length
 				return temp[0].innerText; // adding the answer to curr question as .a
 		});
 
 		// if there is dropdown list in the current question
 		fun.push(function TryGet1(i) {
-			if (this.GetDropboxes(i).length > 0)
-				return this.GetCurrentAnswer(i);
+			if (RPM.GetDropboxes(i).length > 0)
+				return RPM.GetCurrentAnswer(i);
 		});
 
 		// if the correct answers are not shown, and the selected answer
 		// is correct
 		fun.push(function TryGet2(i) {
-			return this.GetRightAnswerIfCorrectNotShown(i);
+			return RPM.GetRightAnswerIfCorrectNotShown(i);
 		});
 
 		// if there is dropbox in the question
 		fun.push(function TryGet3(i) {
-			return this.GetSelectAnswer();
+			return RPM.GetSelectAnswer();
 		});
 
 		// if the correct answers are not shown, and the selected answer
 		// is incorrect, and there are only 2 options
 		fun.push(function TryGet4(i) {
-			var possibleAnswers = this.GetPossibleAnswers(i);
+			var possibleAnswers = RPM.GetPossibleAnswers(i);
 			if (possibleAnswers.length == 2) {
 				for (var k = 0; k < possibleAnswers.length; k++)
 					if (possibleAnswers[k].iscorrect == undefined)
@@ -691,7 +691,8 @@ function Main() {
 	console.timeEnd('main');
 
 	if (forceTestPage || forceResultPage || forceDefaultPage)
-		document.getElementById("scriptMessage").style.background = "green";
+		if (document.getElementById("scriptMessage"))
+			document.getElementById("scriptMessage").style.background = "green";
 }
 //: }}}
 
@@ -1383,14 +1384,16 @@ function GetQuiz() {
 			var img = GetImageFormResult(i);
 			question.i = img;
 
-			q = ReplaceCharsWithSpace(q, "\n");
-			a = ReplaceCharsWithSpace(a, "\n");
+			if (q != undefined)
+				q = ReplaceCharsWithSpace(q, "\n");
+			if (a != undefined)
+				a = ReplaceCharsWithSpace(a, "\n");
 
 			if (question.a != undefined) // adding only if has question
 			{
 				quiz.push(new Question(question.q, question.a, question.i)); // adding current question to quiz
 			} else {
-				Log("error getting queston, or its incorrect");
+				Log("error getting queston, no correct answer given, or its incorrect");
 				Log(question);
 			}
 		}
@@ -2186,6 +2189,10 @@ function CreateNodeWithText(to, text, type) {
 }
 
 function ReplaceCharsWithSpace(val, char) {
+
+	assert(val);
+	assert(char);
+
 	toremove = NormalizeSpaces(val);
 
 	var regex = new RegExp(char, "g");
@@ -2243,6 +2250,11 @@ function SendXHRMessage(message) {
 	});
 }
 
+var assert = (val) => {
+	if (!val)
+		throw new Error("Assertion failed");
+};
+
 //: }}}
 
 //: Help {{{