/*	sakurai.js
	copyleft Thomas Baspeyras 2005

requires:
	dom.js
	unicode.js
	perikura.js
	kanji_base.js
	multiple_answers.js
	external_dictionaries.js

index:
	Sakurai()
*/

function Sakurai() {
/*	prototype of professor Sakurai
	prototype du professeur Sakurai
*/
	var numberOfAnswers = 50;

	var perikura;
	var options;
	var questionNode;
	var marksGauge;
	var mainButton;
	var answers;

	addLoadEvent(
		function() {
		/*	creates professor Sakurai's interface
			créé l'interface du professeur Sakurai
		*/
			perikura = new Perikura("sakurai", "onizuka");
			perikura.addTeacherInitialChat("Le lycée Musashi Seirin a besoin de vous.", "Ne me décevez pas, Onizuka-sensei");
			perikura.addOnizukaInitialChat("Comptez-sur moi Mme la Directrice !", "Je vais sauver ce bahut et mon boulot.");
			perikura.addGoodComments("Je savais que vous étiez plus qu'une paire de bras musclés.", "Vous me chatouillez Mme la Directrice.");
			perikura.addGoodComments("Je vois que vous avez des Lettres, professeur Onizuka.", "Bah ouais, des factures et de la pub.");
			perikura.addGoodComments("Ah, si nous avions davantage de professeurs comme vous.", "J'ai plein de potes dans mon genre qui cherchent du boulot.");
			perikura.addBadComments("C'est sans doute moi qui vous distrait.", "C'est vachement difficile ce truc.");
			perikura.addBadComments("Professeur Onizuka, qu'allons-nous faire de vous\u00A0?", "Laissez-moi encore une chance.");
			perikura.addBadComments("Je vais devoir réduire votre salaire de moitié.", "Encore\u00A0? Mais il ne va plus me rester un yen\u00A0!");
			perikura.addPerikura();

			k.addKanjiRange("kanjiRange", newQuestion);

			addTo("options", textNode("questionner par "));
			options = new Options("le kanji", "la lecture on")
			options.addOptions("options", newQuestion);

			/*	opera hack : "" does not work, using "?"
				astuce pour opera : "" ne marche pas, utiliser "?"
			*/
			questionNode = textNode("?");
			questionCopyPaste = button("cc", copyPaste);
			questionCopyPaste.forTextNode = questionNode;
			questionCopyPaste.title = "Copier-coller vers le dictionnaire des kanji et JDIC (au bas de la page)";
			questionCopyPaste.className = "optionalButton";
			addTo("question", questionCopyPaste, questionNode);

			marksGauge = new Gauge("jauge_", ".gif", 3);
			marksGauge.addGauge("marksGauge");

			mainButton = button("Correction");
			mainButton.onclick = pushMainButton;
			addTo("mainButton", mainButton);

			answers = new MultipleAnswers(numberOfAnswers);
			answers.addMultipleAnswers("header", new Array("answersCol1", "answersCol2", "answersCol3", "answersCol4", "answersCol5"), "cc", copyPaste, questionCopyPaste.title);

			/*	used by 'jump-forms' to kanji dictionnary and JDIC
				utilisé par les formulaires vers le dictionnaire des kanji et JDIC
			*/
			pasteTarget = document.getElementById("ksrchkey");
		}
	);

	function makeNewOnReadingQuestion() {
	/*	create new on reading question and kanji answers
		créé de nouvelles question (lecture on) et réponses (kanji)
	*/
		answers.setTitle("Kanji ?");
		/*	question and right answers
			question et réponses justes
		*/
		var question = k.randomOnReading();
		questionNode.data = question.reading;
		for (var i = 0; i < question.kanjis.length; i++) if (k.indexInRange(question.kanjis[i].index)) answers.randomAdd(question.kanjis[i].character, true);
		/*	other answers
			autres réponses
		*/
		for (var i = 0; i <= numberOfAnswers; i++) if (!answers.randomAdd(k.randomKanji().character, false)) break;
	}

	function makeNewKanjiQuestion() {
	/*	create new kanji question and on reading answers
		créé de nouvelles question (kanji) et réponses (lectures on)
	*/
		answers.setTitle("Lectures on ?");
		/*	question and right answers
			question et réponses justes
		*/
		var question = k.randomKanji();
		questionNode.data = question.character;
		for (var i = 0; i < question.onReadings.length; i++) if (k.inRange(question.onReadings[i])) answers.randomAdd(question.onReadings[i].reading, true);
		/*	other answers
			autres réponses
		*/
		for (var i = 0; i <= numberOfAnswers; i++) if (!answers.randomAdd(k.randomOnReading().reading, false)) break;
	}

	function newQuestion() {
		answers.clear();
		switch (options.random()) {
			case 0: makeNewKanjiQuestion(); break;
			case 1: makeNewOnReadingQuestion(); break;
		}
		mainButton.value = "Correction";
	}

	function pushMainButton() {
		if (mainButton.value == "Correction") {
			var marks = answers.mark();
			marksGauge.sum(marks["right"], marks["missing"], marks["wrong"]);
			perikura.commentMarks(marks);
			mainButton.value = "Question Suivante";
		}
		else newQuestion();
	}

	addLoadEvent(newQuestion);
}

sakurai = Sakurai();

/*	kanji files come after this one and depends on this :
	les fichiers de kanji viennent après celui-ci et dépendent de ceci :
*/
k = new KanjiBase();
