„Szerkesztő:Palotasb/common.js” változatai közötti eltérés

Palotasb (vitalap | szerkesztései)
version 2013.02.06. v1
Palotasb (vitalap | szerkesztései)
Kvíz currentCodeID = "2013.02.07. v1";
26. sor: 26. sor:


(function (mw, $) {
(function (mw, $) {
    /*
    Egy anonim függvényobjektumot hozunk létre, amit rögtön végre is hajtunk.
    Mivel a függvény külön névtérben van, ezért a globális névteret (window)
    nem szennyezzük a lokális változókkal, függvényekkel.
    */


     var questions = [],
     var questions = [],
34. sor: 39. sor:
         stats = new StatObject(),
         stats = new StatObject(),
         defaultScoringMethod = +1,
         defaultScoringMethod = +1,
         currentCodeID = "2013.02.06 v1";
         currentCodeID = "2013.02.07. v1";


     if (init())
     return init();
        return true;
    else
        return false;


    /*
    Inicializáló függvény. Eldönti, hogy kvízoldalról va szó, és ha igen, akkor
    értelmezi és úgy alakítja át az oldalt, hogy interaktív kvízként működjön.
    */
     function init() {
     function init() {
         if (!shouldLoadQuiz()) {
         if (!shouldLoadQuiz()) {
             return false;
             return false;
         }
         }
         getDefaultScoringMethod();
         getDefaultScoringMethod(); // A kérdések parse-olása előtt kell legyen
         parseQuestionsInDocument();
         parseQuestionsInDocument(); // Kérdések feldolgozása
         parseAnswerGroupsInQuestions();
         parseAnswerGroupsInQuestions(); // Kérdéseken belül a válaszlehetőségek
         uiCreateQuizInterface();
         uiCreateQuizInterface(); // Interfész (infobox) inicializása
         uiPopulateQuizInterace();
         uiPopulateQuizInterace(); // Interfészelemek létrehozása
         uiReset();
         uiReset(); // Reset, hogy rögtön mehessen a kvíz
         return true;
         return true;
     }
     }


    /*
    A kvíz alapbeállított pontozási módszerét tölti be az oldalról.
    */
     function getDefaultScoringMethod() {
     function getDefaultScoringMethod() {
         var defScorMethText = $('#vw-quiz-defaultscoringmethod').text();
         var defScorMethText = $('#vw-quiz-defaultscoringmethod').text();
62. sor: 71. sor:
     }
     }


    /*
    Eldönti, hogy be kell-e tölteni a kódot, kvízzé kell-e alakítani az oldalt.
    */
     function shouldLoadQuiz() {
     function shouldLoadQuiz() {
         if ($('#vw-quiz-canvas').length !== 1)
         if ($('#vw-quiz-canvas').length !== 1)
             return false;
             return false; // Ha nincs Kvízoldal sablon, vagy több is van -> NEM
         if (wgAction !== 'view' && wgAction !== 'submit')
         if (mw.config.values.wgAction !== 'view' &&
             return false;
            mw.config.values.wgAction !== 'submit')
         if ($.cookie('vw-config-loadcodeid') && $.cookie('vw-config-loadcodeid') != currentCodeID)
             return false; // Ha nem megtekintjük a kész oldalt, vagy nem
             return false;
                          // előnézetben vagyunk az oldal mentésekor -> NEM
         return true;
         if ($.cookie('vw-quiz-conf-loadcodeid') &&
            $.cookie('vw-quiz-conf-loadcodeid') != currentCodeID)
             return false; // Ha cookieval le van tiltva a kód -> NEM
         return true;     // Minden egyéb esetben IGEN
     }
     }


    /*
    Az infoboxban frissíti a statisztikákat.
    */
     function uiUpdateStats() {
     function uiUpdateStats() {
        // Átlagteljesítmény, százalékosan
         uiControlElements.uiStatAverageText.text(  
         uiControlElements.uiStatAverageText.text(  
             stats.totalAnswers != 0 ? Math.round(stats.getRunningAverage() * 100).toString() + '%' : '' );
             stats.totalAnswers != 0 ?
         uiControlElements.uiStatAllQuestionsText.text( stats.totalAnswers.toString() );
            Math.round(stats.getRunningAverage() * 100).toString() + '%' :
         uiControlElements.uiStatGoodAnswersText.text( (Math.round(stats.totalPercentage * 100) / 100).toString() );
            ''
        );
        // Kérdések száma
         uiControlElements.uiStatAllQuestionsText.text(
            stats.totalAnswers.toString()
        );
        // Pontok száma két tizedesjegyre
         uiControlElements.uiStatGoodAnswersText.text(
            (Math.round(stats.totalPercentage * 100) / 100).toString()
        );
     }
     }


    /*
    Feldolozza a kérdéseket a dokumentumban.
    Egy kérdés az első <H2> tagtől a következőig tart. Egy <HR> (horizontal
    rule) tag a kérdéssor végét jelöli (wikiszintexissal ez négy kötőjel ----),
    így lehet megjegyzéseket beszúrni a kérdéssor elé és mögé.
    */
     function parseQuestionsInDocument() {
     function parseQuestionsInDocument() {
         var CQ_UNINITIATED = -1;
         var CQ_UNINITIATED = -1;
         var CQ_EXIT = -2;
         var CQ_EXIT = -2;


        // A tartalomrész felsőszintű elemei.
         var uiContentElements = $('#mw-content-text > *');
         var uiContentElements = $('#mw-content-text > *');
        // Az első <H2>-ig mindent ignorálunk.
        // Onnantól kezdve a megfelelő QuestionObjectbe beletoljuk az összes alá
        // tartozó elemet
         var questionId = CQ_UNINITIATED;
         var questionId = CQ_UNINITIATED;
         for (var i = 0; i != uiContentElements.length && questionId != CQ_EXIT; i++) {
         for (var i = 0; i != uiContentElements.length && questionId != CQ_EXIT; i++) {
             if (uiContentElements[i].nodeName === 'H2') {
             if (uiContentElements[i].nodeName === 'H2') {
                // H2 -> start of quizquestions
                 questionId++ ;
                 questionId++ ;
                 questions.push(new QuestionObject(questionId));
                 questions.push(new QuestionObject(questionId));
                 questions[questionId].uiElements.push( $(uiContentElements[i]).detach()[0] );
                 questions[questionId].uiElements.push( $(uiContentElements[i]).detach()[0] );
             } else if (uiContentElements[i].nodeName === 'HR') {
             } else if (uiContentElements[i].nodeName === 'HR') {
                // <HR/> -> abort mission
                 questionId = CQ_EXIT;
                 questionId = CQ_EXIT;
             } else if (questionId > CQ_UNINITIATED) {
             } else if (questionId > CQ_UNINITIATED) {
99. sor: 138. sor:
     }
     }


    /*
    A QuestionObject-ekbe betöltött HTML-elemeket végignézve feldolgozza a
    válaszcsoportokat.
    */
     function parseAnswerGroupsInQuestions() {
     function parseAnswerGroupsInQuestions() {
         for (var i = 0; i != questions.length; i++) {
         for (var i = 0; i != questions.length; i++) {
105. sor: 148. sor:
     }
     }


    /*
    Létrehozza a kvizinterfészt. Bizonyos HTML-elemeket betölti egy-egy
    változóba a gyors elérésé érdekében.
    */
     function uiCreateQuizInterface() {
     function uiCreateQuizInterface() {
         uiContentElement = $('#vw-quiz-content');
         uiContentElement = $('#vw-quiz-content');


         $('#toc').remove();
         $('#toc').remove(); // tartalomjegyzék törléseaz oldalról, ha van


        // Infobox stílusának beállítása
         var uiInfoboxElement = $('#vw-quiz-infobox');
         var uiInfoboxElement = $('#vw-quiz-infobox');
         uiInfoboxElement.css( {
         uiInfoboxElement.css( {
119. sor: 167. sor:
         $('#mw-content-text').css('min-height', uiInfoboxElement.height().toString() + 'px');
         $('#mw-content-text').css('min-height', uiInfoboxElement.height().toString() + 'px');


        // Infobox pozicionálása (hogy mindig látszódjon, ha görgetünk is)
         var setInfoboxPosition = function() {
         var setInfoboxPosition = function() {
             var relTop = $('#vw-quiz-content').offset().top - $(window).scrollTop();
             var relTop = $('#vw-quiz-content').offset().top - $(window).scrollTop();
129. sor: 178. sor:
     }
     }


    /*
    Az infobox (interfész) feltöltése a gombokkal és ezek exportálása egy
    változóba (uiControlElements) a gyors elérés érdekében.
    */
     function uiPopulateQuizInterace() {
     function uiPopulateQuizInterace() {
         var uiStatAverageText      = $('#vw-quiz-stat-average');
         var uiStatAverageText      = $('#vw-quiz-stat-average');
167. sor: 220. sor:
     }
     }


    /*
    Randomizálja a megjelenített kérdések sorrendjét
    */
     function randomizeDisplayOrder() {
     function randomizeDisplayOrder() {
         var ArrayShuffle = function(a) {
         var ArrayShuffle = function(a) {
184. sor: 240. sor:
     }
     }
      
      
    /*
    A [Minden válasz ellenőrzése]/[Minden kérdés mutatása] gomb eseménykezelője
    */
     function uiCheckAll() {
     function uiCheckAll() {
         if (config.showAll) {
         if (config.showAll) {
            // Ha minden látszik, akkor mindent ellenőrzünk
             $(':button.vw-quiz-check-btn').click();
             $(':button.vw-quiz-check-btn').click();
         } else {
         } else {
            // Ha nem minden kérdés látszik, akkor beállítjuk, hogy látszódjon,
            // és resetelünk
             uiControlElements.showAllCheckbox.prop('checked', true);
             uiControlElements.showAllCheckbox.prop('checked', true);
             uiReset();
             uiReset();
193. sor: 255. sor:
     }
     }


    /*
    A beállítások betöltése az infoboxból.
    */
     function configSet() {
     function configSet() {
         config.setRandomOrder(uiControlElements.randomCheckbox.prop('checked'));
         config.setRandomOrder(uiControlElements.randomCheckbox.prop('checked'));
198. sor: 263. sor:
     }
     }


    /*
    Újrakezdés. Az [Újrakezdés] gomb eseménykezelője is.
    */
     function uiReset() {
     function uiReset() {
         configSet();
         configSet();
205. sor: 273. sor:
     }
     }


    /*
    Újrakezdéskor visszaállítja a válaszadások közben megváltoztatott dolgokat.
    */
     function reset() {
     function reset() {
        // Megjelenített kérdések listáját töröljük
         shownQuestionIds = [];
         shownQuestionIds = [];
        // Hogy érkezett-e válasz a kérdésre, azt is alaphelyzetbe állítjuk,
        // majd a kérdést újra hozzáadjuk a megjelenített kérdések listájához.
         for (var i = 0; i != questions.length; i++) {
         for (var i = 0; i != questions.length; i++) {
             questions[i].submitted = false;
             questions[i].submitted = false;
            questions[i].uiResetAnswers();
             shownQuestionIds.push(i);
             shownQuestionIds.push(i);
         }
         }
        // Ha kell, randomizáljuk a sorrendet.
         if (config.randomOrder) {
         if (config.randomOrder) {
             randomizeDisplayOrder();
             randomizeDisplayOrder();
         }
         }
        // Mást csinál a gomb, ha minden kérdés látszik, és mást, ha csak 1.
         if (!config.showAll) {
         if (!config.showAll) {
             uiControlElements.checkAllButton.val('Minden kérdés mutatása');
             uiControlElements.checkAllButton.val('Minden kérdés mutatása');
219. sor: 296. sor:
             uiControlElements.checkAllButton.val('Minden válasz ellenőrzése');
             uiControlElements.checkAllButton.val('Minden válasz ellenőrzése');
         }
         }
        // Statisztikák visszaállítása.
         stats.reset();
         stats.reset();
     }
     }


    /*
    Újrakezdéskor megjeleníti a kérdéseket a megfelelő sorrendben az oldalon.
    */
     function uiShowQuestions() {
     function uiShowQuestions() {
         uiContentElement.children().detach();
         uiContentElement.children().detach();
         for (var i = 0; i != shownQuestionIds.length; i++) {
         for (var i = 0; i != shownQuestionIds.length; i++) {
            questions[ shownQuestionIds[i] ].uiResetAnswers();
             questions[ shownQuestionIds[i] ].uiParentElement.appendTo(uiContentElement);
             questions[ shownQuestionIds[i] ].uiParentElement.appendTo(uiContentElement);
            // Ha nem minden kell látszódjon, akkor elrejtjük a többi kérdést.
             if (!config.showAll && i != 0) {
             if (!config.showAll && i != 0) {
                 questions[ shownQuestionIds[i] ].uiParentElement.css('display', 'none');
                 questions[ shownQuestionIds[i] ].uiParentElement.css('display', 'none');
236. sor: 317. sor:
     }
     }


    /*
    Egy adott kérdés bejelölt válaszainak ellenőrzése, eredmény mutatása stb.
    */
     function checkAnswer(question) {
     function checkAnswer(question) {
        // Amit már ellenőriztünk, azt nem ellenőrizzük újra.
         if (question.submitted) {
         if (question.submitted) {
             return false;
             return false;
242. sor: 327. sor:
         question.submitted = true;
         question.submitted = true;


        // Válaszellenőrzés
         var result = question.checkAnswer();
         var result = question.checkAnswer();
         stats.totalAnswers += result.totalAnswers;
         stats.totalAnswers += result.totalAnswers;
247. sor: 333. sor:
         uiUpdateStats();
         uiUpdateStats();


        // Következő kérdés mutatása, ha nem mind látszik
         if (!config.showAll) {
         if (!config.showAll) {
             uiHidePreviousQuestion(question);
             uiHidePreviousQuestion(question);
253. sor: 340. sor:
     }
     }


    /*
    Egy kérdés válaszainak ellenőrzése után az előző kérdést elrejti.
    */
     function uiHidePreviousQuestion(question) {
     function uiHidePreviousQuestion(question) {
         var prevQuestion = getPreviousQuestion(question);
         var prevQuestion = getPreviousQuestion(question);
263. sor: 353. sor:
     }
     }


    /*
    Egy kérdés válaszainak ellenőrzése után a következő kérdést megjeleníti.
    */
     function uiShowNextQuestion(question) {
     function uiShowNextQuestion(question) {
         var nextQuestion = getNextQuestion(question);
         var nextQuestion = getNextQuestion(question);
         if (nextQuestion == null) {
         if (nextQuestion == null) {
            // Ha nincs több kérdés, akkor ezt külön üzenettel jelzi.
             var uiEndOfQuizMessage = $('<p></p>').text('A kvíz véget ért.');
             var uiEndOfQuizMessage = $('<p></p>').text('A kvíz véget ért.');
             uiEndOfQuizMessage.css({
             uiEndOfQuizMessage.css({
285. sor: 379. sor:
     }
     }


    /*
    Visszatér a megjelenítési sorrend szerint az előző kérdéssel.
    */
     function getPreviousQuestion(question) {
     function getPreviousQuestion(question) {
         for (var i = 0; i != shownQuestionIds.length; i++) {
         for (var i = 0; i != shownQuestionIds.length; i++) {
294. sor: 391. sor:
     }
     }


    /*
    Visszatér a megjelenítési sorrend szerint a következő kérdéssel.
    */
     function getNextQuestion(question) {
     function getNextQuestion(question) {
         for (var i = 0; i != shownQuestionIds.length; i++) {
         for (var i = 0; i != shownQuestionIds.length; i++) {
305. sor: 405. sor:
/* ------------------------------------------------------- */
/* ------------------------------------------------------- */


 
/*
Egy kérdés adatai tartalmazó objektum.
Kezdetnek csak egy azonosítót kell megadni.
*/
function QuestionObject(id) {
function QuestionObject(id) {
     this.id = id;
     this.id = id;
313. sor: 416. sor:
     this.submitted = false;
     this.submitted = false;


    /*
    A kérdésben a betöltött HTML-elemeket nézve kiolvassa a kérdésre a különböző
    válaszcsoportokban adható válaszokat.
    */
     this.parseAnswerGroups = function(defaultScoringMethod, answerCheckingFunction) {
     this.parseAnswerGroups = function(defaultScoringMethod, answerCheckingFunction) {
         for (var j = 1; j < this.uiElements.length; j++) {
         for (var j = 1; j < this.uiElements.length; j++) {
318. sor: 425. sor:
             var previousElement = this.uiElements[j - 1];
             var previousElement = this.uiElements[j - 1];


            /*
            Egy válaszcsoport mindig egy <OL> rendezett listában van (#
            szintaxis), ha az előző elemben megtalálható a "vw-quiz-meta"
            osztályú elemet tartalmazó sablon, amely a helyes válaszok listáját,
            a kérdés és a pontozás típusát tartalmazza.
            */
             if (currentElement.nodeName === "OL"
             if (currentElement.nodeName === "OL"
                 && $('.vw-quiz-meta', previousElement).length !== 0
                 && $('.vw-quiz-meta', previousElement).length !== 0
331. sor: 444. sor:
                     defaultScoringMethod
                     defaultScoringMethod
                 ));
                 ));
                 $(previousElement).css('display', 'none');
                 $(previousElement).css('display', 'none'); // Meta elrejtése
             }
             }
         }
         }
        // Válaszgomb hozzáadása
         this.uiAddAnswerButton(answerCheckingFunction);
         this.uiAddAnswerButton(answerCheckingFunction);
        // Egy darab tartalmazó <div> hozzáadása
         this.uiAddParentElement();
         this.uiAddParentElement();
     };
     };


    /*
    Egy darab a teljes kvízkérdést tartalmazó <div> létrehozása.
    */
     this.uiAddParentElement = function() {
     this.uiAddParentElement = function() {
         this.uiParentElement = $('<div></div>').addClass('vw-quiz-container').append(this.uiElements);
         this.uiParentElement = $('<div></div>').addClass('vw-quiz-container').append(this.uiElements);
347. sor: 465. sor:
     };
     };


    /*
    Válaszgomb hozzáadása a kérdés legvégéhez. Az answerCheckingFunction a
    függvény, amit a gomb megnyomásakor meg kell hívni a válasz ellenőrzéséhez
    (a teljes kvízhez tartozik egy ilyen függvény, amit paraméterként átadunk).
    */
     this.uiAddAnswerButton = function(answerCheckingFunction) {
     this.uiAddAnswerButton = function(answerCheckingFunction) {
         var button = $('<input type="button" />').val('Ellenőrzés').addClass("vw-quiz-check-btn");
         var button = $('<input type="button" />').val('Ellenőrzés').addClass("vw-quiz-check-btn");
361. sor: 484. sor:
     };
     };


    /*
    Válaszok visszaállítása alaphelyzetbe (kitöltetlen és jelöletlen).
    */
     this.uiResetAnswers = function () {
     this.uiResetAnswers = function () {
         var answerElements = $('.vw-quiz-question > li', this.uiParentElement);
         var answerElements = $('.vw-quiz-question > li', this.uiParentElement);
374. sor: 500. sor:
     };
     };


    /*
    A válaszok ellenőrzése egy adott kérdés esetén. Visszatér a kérdés
    pontértékével és az elért pontokkal.
    */
     this.checkAnswer = function() {
     this.checkAnswer = function() {
        // A pontszámok, amiket a felhasználó kap.
         var result = {
         var result = {
             totalAnswers: 0,
             totalAnswers: 0,
380. sor: 511. sor:
         };
         };
         for (var i = 0; i != this.answers.length; i++) {
         for (var i = 0; i != this.answers.length; i++) {
            // interfész: válaszadás letiltása az ellenőrzéssel.
             $('input', this.uiParentElement).prop('disabled', true);
             $('input', this.uiParentElement).prop('disabled', true);
             $('input, .vw-quiz-question > li', this.uiParentElement).css('cursor', 'default')
             $('input, .vw-quiz-question > li', this.uiParentElement).css('cursor', 'default')
386. sor: 518. sor:
             var ans = this.answers[i];
             var ans = this.answers[i];
             if (ans.type === 1) {
             if (ans.type === 1) {
                // Egyválaszos (radio button) kérdéstípus
                 result.totalAnswers++;
                 result.totalAnswers++;
                // A jó válasz kivételével az összes elhalványítása
                 $('li:not(:nth-of-type(' + (ans.answer + 1).toString() + '))', ans.uiElement).not("li li").css({
                 $('li:not(:nth-of-type(' + (ans.answer + 1).toString() + '))', ans.uiElement).not("li li").css({
                     'opacity': '0.5'
                     'opacity': '0.5'
421. sor: 555. sor:
                 }
                 }
             } else if (ans.type === 2) {
             } else if (ans.type === 2) {
                // Többválaszos (checkbox) kérdéstípus
                 result.totalAnswers++;
                 result.totalAnswers++;
                 var uiAnswerElements = $('li', ans.uiElement).not('li li');
                 var uiAnswerElements = $('li', ans.uiElement).not('li li');
                 var partialPoints = 0;
                 var partialPoints = 0;
                // Végigmegyünk az összes válaszlehetőségen
                 for (var j = 0; j != uiAnswerElements.length; j++) {
                 for (var j = 0; j != uiAnswerElements.length; j++) {
                     var currentAnswerElement = $(uiAnswerElements[j]);
                     var currentAnswerElement = $(uiAnswerElements[j]);
438. sor: 575. sor:
                             partialPoints++;
                             partialPoints++;
                         } else {
                         } else {
                             // Nincs
                             // Nincs, hibás válasz
                             currentAnswerElement.css({
                             currentAnswerElement.css({
                                 'border-color': '#aa2',
                                 'border-color': '#aa2',
449. sor: 586. sor:
                         // Nem kéne bejelölve legyen
                         // Nem kéne bejelölve legyen
                         if (checkbox.prop('checked')) {
                         if (checkbox.prop('checked')) {
                             // De mégis be van
                             // De mégis be van, hibás válasz
                             currentAnswerElement.css({
                             currentAnswerElement.css({
                                 'border-color': '#a00',
                                 'border-color': '#a00',
458. sor: 595. sor:
                                 partialPoints--;
                                 partialPoints--;
                         } else {
                         } else {
                             // És nincs is
                             // És nincs is, ezzel látszólag nem foglalkozunk,
                            // mert csak zavaró, de pontot adunk rá.
                             currentAnswerElement.css({
                             currentAnswerElement.css({
                                 'opacity': '0.5'
                                 'opacity': '0.5'
476. sor: 614. sor:
/* ------------------------------------------------------- */
/* ------------------------------------------------------- */


/*
Egy válaszcsoportot szimbolizáló objektum.
*/
function AnswerGroupObject(
    typeText,          // A válaszcsoport típusát leíró szöveg a wikioldalról
    correctAnswerText,  // A jó választ leíró szöveg a wikioldalról
    scoringMethodText,  // A pontozást leíró szöveg a wikioldalról
    numberOfOptions,    // A válaszlehetőségek száma
    uiElement,          // A válaszcsoporthoz tartozó HTML <OL> listaelem
    questionId,        // Kérdésazonosító
    answerId,          // Válaszcsoportazonosító
    defaultScoringMethod // Alap pontozási módszer
) {
    // Inicializálás


function AnswerGroupObject(typeText, correctAnswerText, scoringMethodText, numberOfOptions, uiElement, questionId, answerId, defaultScoringMethod) {
    // Választípus megállapítása
     this.type = 1; // A default az egyválaszos (radio)
     this.type = 1; // A default az egyválaszos (radio)
     if ($.trim(typeText) === "egy")
     if ($.trim(typeText) === "egy")
486. sor: 638. sor:
     this.answer = null;
     this.answer = null;


    // Pontozás megállapítása
     this.scoringMethod = defaultScoringMethod;
     this.scoringMethod = defaultScoringMethod;
     if ($.trim(scoringMethodText) === "-")
     if ($.trim(scoringMethodText) === "-")
492. sor: 645. sor:
         this.scoringMethod = +1;
         this.scoringMethod = +1;


    // Egyebek
     this.numberOfOptions = numberOfOptions;
     this.numberOfOptions = numberOfOptions;
     this.uiElement = $(uiElement);
     this.uiElement = $(uiElement);
500. sor: 654. sor:
     addAnswerControls.call(this);
     addAnswerControls.call(this);


    // Válasz megállapítása és stílus beállítása
     function init() {
     function init() {
         if (this.type === 1) {
         if (this.type === 1) {
520. sor: 675. sor:
     }
     }


    // Válaszadásra lehetőséget adó ineraktív elemek (radio button, checkbox)
    // hozzáadása a válaszlehetőségekhez
     function addAnswerControls() {
     function addAnswerControls() {
         this.uiElement.addClass('vw-quiz-question');
         this.uiElement.addClass('vw-quiz-question');
530. sor: 687. sor:
                         .prop('name', idString)
                         .prop('name', idString)
                         .data('answer-id', i);
                         .data('answer-id', i);
                // A listaelemre kattintás olyan, mintha rákattintanék a gombra
                 $(answerOptionElements[i]).prepend(uiRadiobutton).click(uiRadiobutton, function(eventObject) {
                 $(answerOptionElements[i]).prepend(uiRadiobutton).click(uiRadiobutton, function(eventObject) {
                     if (eventObject.target.nodeName == "INPUT") {
                     if (eventObject.target.nodeName == "INPUT") {
544. sor: 702. sor:
                         .prop('name', idString)
                         .prop('name', idString)
                         .data('answer-id', i);
                         .data('answer-id', i);
                // A listaelemre kattintás olyan, mintha rákattintanék a pipára
                 $(answerOptionElements[i]).prepend(uiCheckbox).click(uiCheckbox, function(eventObject) {
                 $(answerOptionElements[i]).prepend(uiCheckbox).click(uiCheckbox, function(eventObject) {
                     if (eventObject.target.nodeName == "INPUT") {
                     if (eventObject.target.nodeName == "INPUT") {
560. sor: 719. sor:
/* ------------------------------------------------------- */
/* ------------------------------------------------------- */


 
/*
Statisztikát számon tartó objektum.
*/
function StatObject() {
function StatObject() {
     this.totalAnswers =      0;
     this.totalAnswers =      0;
571. sor: 732. sor:
/* ------------------------------------------------------- */
/* ------------------------------------------------------- */


 
/*
Felhasználói beállításokat számon tartó objektum.
*/
function ConfObject(showAllDefault, randomOrderDefault) {
function ConfObject(showAllDefault, randomOrderDefault) {
     this.showAll = showAllDefault;
     this.showAll = showAllDefault;
     if ($.cookie('vw-config-showall') == 'showall') {
     if ($.cookie('vw-quiz-conf-showall') == 'showall') {
         this.showAll = true;
         this.showAll = true;
     }
     }
     if ($.cookie('vw-config-showall') == 'showone') {
     if ($.cookie('vw-quiz-conf-showall') == 'showone') {
         this.showAll = false;
         this.showAll = false;
     }
     }
     this.randomOrder = randomOrderDefault;
     this.randomOrder = randomOrderDefault;
     if ($.cookie('vw-config-ordering') == 'random') {
     if ($.cookie('vw-quiz-conf-ordering') == 'random') {
         this.randomOrder = true;
         this.randomOrder = true;
     }
     }
     if ($.cookie('vw-config-ordering') == 'inorder') {
     if ($.cookie('vw-quiz-conf-ordering') == 'inorder') {
         this.randomOrder = false;
         this.randomOrder = false;
     }
     }


    // Véletlenszerú sorrend mentése cookie-ba
     this.setRandomOrder = function(value) {
     this.setRandomOrder = function(value) {
         this.randomOrder = value;
         this.randomOrder = value;
         $.cookie('vw-config-ordering', value ? 'random' : 'inorder');
         $.cookie('vw-quiz-conf-ordering', value ? 'random' : 'inorder');
     };
     };


    // "Minden kérdés látszik" mentése cookie-ba
     this.setShowAll = function(value) {
     this.setShowAll = function(value) {
         this.showAll = value;
         this.showAll = value;
         $.cookie('vw-config-showall', value ? 'showall' : 'showone');
         $.cookie('vw-quiz-conf-showall', value ? 'showall' : 'showone');
     };
     };
}
}