(function () { var timeout = 1000; waitForGenex(); function waitForGenex() { if (typeof(genex) !== "undefined" && genex) { genex.onInjectionDone("genex"); } else { setTimeout(function() { waitForGenex(); }, timeout); } } // NOTE: // Genex uses 8 global functions, all prefixed with genex: // 6 are exported from GWT: // genexSetDefaultDNASequence // genexSetDNASequence // genexGetDNASequence // genexSetClickEvent // genexSetKeyEvent // genexSetProblemNumber // // It calls genexIsReady with a deferred command when it has finished // initialization and has drawn itself // genexStoreAnswer(answer) is called each time the DNA sequence changes // through user interaction //Genex does not call the following function genexGetInputField = function() { var problem = $('#genex_container').parents('.problem'); return problem.find('input[type="hidden"][name!="genex_dna_sequence"][name!="genex_problem_number"]'); }; genexIsReady = function() { var input_field = genexGetInputField(); var genex_saved_state = input_field.val(); var genex_default_dna_sequence; var genex_dna_sequence; //Get the DNA sequence from xml file genex_default_dna_sequence = $('#genex_dna_sequence').val(); //Set the default DNA genexSetDefaultDNASequence(genex_default_dna_sequence); //Now load problem var genex_problem_number = $('#genex_problem_number').val(); genexSetProblemNumber(genex_problem_number); //Set the DNA sequence that is displayed if (genex_saved_state === '') { //Load DNA sequence from xml file genex_dna_sequence = genex_default_dna_sequence; } else { //Load DNA sequence from saved value genex_saved_state = JSON.parse(genex_saved_state); genex_dna_sequence = genex_saved_state.genex_dna_sequence; } genexSetDNASequence(genex_dna_sequence); //Now load mouse and keyboard handlers genexSetClickEvent(); genexSetKeyEvent(); }; genexStoreAnswer = function(answer) { var input_field = genexGetInputField(); var value = {'genex_dna_sequence': genexGetDNASequence(), 'genex_answer': answer}; input_field.val(JSON.stringify(value)); }; }).call(this);