var QuizMod=Class.create({initialize:function(c,b,a){this.id=c;this.nextHash=b;this.nextTs=a;this.questions={};this.index=0;this.answers={};this.test="foo!";this.cb=null},get:function(a){return $(a+this.id)},loadScoreCount:function(){this.request({action:"loadScoreCount"},function(a){this.get("loadingScoreCount").innerHTML=a.html}.bind(this))},loadSocialBurst:function(){this.request({action:"loadSocialBurst"},function(a){this.get("mod_head_right_").innerHTML=a.html;this.get("mod_head_right_").toggle();this.get("mod_head_right_").addClassName("ss_quiz")}.bind(this))},loadFrontEnd:function(){this.viewWait(true);this.get("quiz").innerHTML="";this.request({action:"loadFrontEnd"},function(a){jQuery("#quiz"+this.id).html(a.html);this.viewWait(false);if(a.ready){this.questions=a.questions;this.get("questionList").setStyle({width:(590*this.countQuestions())+"px"});jQuery("#quiz"+this.id).easySlider2();this.index=0}}.bind(this))},loadStats:function(){this.formWait(true);this.request({action:"averages",bgcolor:"F7F7F7",width:500,height:175},function(a){this.get("stats").innerHTML=a.averages.graphImg;this.formWait(false)}.bind(this))},loadBackEnd:function(a){if(a){this.cb=a}this.request({action:"loadBackEnd"},function(b){this.get("questions").innerHTML=b.html;if(this.cb){this.cb()}this.questions=b.questions;this.get("questionCount").setValue(this.countQuestions());this.formWait(false);this.loadStats()}.bind(this))},countQuestions:function(){if(this.questions.length===0){return 0}else{return new Hash(this.questions).keys().length}},nextSort:function(){return this.countQuestions()},request:function(a,c,b){if(!a){a={action:"default"}}if(!b){b="get"}a.hash=this.nextHash;a.ts=this.nextTs;a.lens_module_id=this.id;new Ajax.Request("/utility/module/quiz",{method:b,parameters:a,onSuccess:function(e){var d=e.responseJSON;this.nextHash=d.nextHash;this.nextTs=d.nextTs;if(d.error){this.onError(a.action,e)}else{if(d.debug){console.debug(d.html)}else{if(c){c(d)}}}}.bind(this),onFailure:this.onError.bind(this,a.action)})},viewWait:function(a){(a?this.get("loadingView").show():this.get("loadingView").hide())},formWait:function(a){(a?this.get("loadingForm").show():this.get("loadingForm").hide())},onError:function(b,c){var a=c.responseJSON},onFailure:function(a,b){alert(b.responseText)},addAnother:function(){this.saveQuestion(function(){this.get("theQuestion").focus()}.bind(this))},addNewQuestion:function(){if(!this.sorting){this.editing=true;this.get("addNewQuestion").toggle();this.get("editQuestion").toggle();this.get("sort").setValue(this.nextSort());this.get("theQuestion").focus()}},doneAdding:function(){this.scrollToQs();this.saveQuestion(function(){this.get("editQuestion").toggle();this.get("addNewQuestion").toggle();this.editing=false}.bind(this))},removeQuestion:function(a){if(a&&confirm("Are you sure you want to remove this question?")){params={action:"removeQuestion",id:a};this.request(params,function(b){this.get("questions").innerHTML="<p><b>Question deleted!</b></p>";this.loadBackEnd()}.bind(this))}},removeQuestions:function(){if(confirm("Are you sure you want to remove all questions?")){params={action:"removeQuestions"};this.request(params,function(a){this.get("questions").innerHTML="<p><b>All questions deleted!</b></p>";this.loadBackEnd()}.bind(this))}},cancelEdit:function(){this.clearEditQuestion();this.get("editQuestion").toggle();this.get("addNewQuestion").toggle();this.editing=false;this.scrollToQs()},scrollToQs:function(){var a=jQuery("#questions"+this.id);var b=a.offset();var c=b.top-0;jQuery("html,body").animate({scrollTop:c},250)},reorder:function(){this.sorting=true;if(this.get("questionEditList")!=null){Sortable.create("questionEditList"+this.id);this.get("btnReorder").hide();this.get("btnAddAnother").hide();this.get("btnSaveOrder").show();this.get("questionEditList").addClassName("reorder")}},saveOrder:function(){if(this.get("questionEditList")!=null&&!this.savingOrder){this.savingOrder=true;this.get("questionEditList").childElements().each(function(b,c){this.questions[b.firstDescendant().getValue()].sort=c}.bind(this));var a=[];new Hash(this.questions).keys().each(function(b){a.push({id:b,sort:this.questions[b].sort})}.bind(this));params={action:"saveOrder",questions:a.toJSON()};this.formWait(true);this.request(params,function(b){Sortable.destroy("questionEditList"+this.id);this.get("btnSaveOrder").hide();this.get("btnAddAnother").show();this.get("btnReorder").show();this.sorting=false;this.formWait(false);this.savingOrder=false;this.get("questionEditList").removeClassName("reorder")}.bind(this))}},editQuestion:function(b,a){if(a){this.editing=false}if(!this.sorting&&!this.editing){this.editing=true;this.get("questionId").setValue(b);this.get("theQuestion").setValue(this.questions[b].the_question);this.get("theAnswers[0]").setValue(this.questions[b].answer_0);this.get("theAnswers[1]").setValue(this.questions[b].answer_1);this.get("theAnswers[2]").setValue(this.questions[b].answer_2);this.get("theAnswers[3]").setValue(this.questions[b].answer_3);this.get("theAnswers[4]").setValue(this.questions[b].answer_4);this.get("theCorrectAnswer").setValue(this.questions[b].correct);this.get("sort").setValue(this.questions[b].sort);this.get("addNewQuestion").show();this.get("editQuestion").show();this.get("theQuestion").focus()}},saveQuestion:function(c){if(!this.get("theQuestion").getValue()){alert("Well come on now, ask a question.");return false}var b=0;for(i=0;i<5;i++){if(this.get("theAnswers["+i+"]").getValue()){b++}if(b==2){break}}if(b<2){alert("You have to provide at least two answers, otherwise it's not any fun.");return false}var a=this.get("theCorrectAnswer").getValue();if(!this.get("theAnswers["+a+"]").getValue()){alert("The correct answer must not be blank. Those poor quiz takers of yours, how will they ever pass?");return false}params={action:"saveQuestion",id:this.get("questionId").getValue(),the_question:this.get("theQuestion").getValue(),answer_0:this.get("theAnswers[0]").getValue(),answer_1:this.get("theAnswers[1]").getValue(),answer_2:this.get("theAnswers[2]").getValue(),answer_3:this.get("theAnswers[3]").getValue(),answer_4:this.get("theAnswers[4]").getValue(),correct:this.get("theCorrectAnswer").getValue(),sort:this.get("sort").getValue()};this.formWait(true);this.request(params,function(d){this.clearEditQuestion();this.get("questions").innerHTML="<p><b>Question saved!</b></p>";setTimeout(function(){this.loadBackEnd()}.bind(this),2500);c()}.bind(this));return true},clearEditQuestion:function(){this.get("questionId").setValue("");this.get("theQuestion").setValue("");for(i=0;i<5;i++){this.get("theAnswers["+i+"]").setValue("")}this.get("theCorrectAnswer").setValue(0);this.get("sort").setValue("")},getSelectedAnswer:function(){var c=this.questions[this.index].id;var b=this.get("quizmod").elements["question"+c];for(var a=0;a<b.length;a++){if(b[a].checked){return b[a].value}}return false},next:function(){if(!this.evaluating){this.evaluating=true;var a=this.getSelectedAnswer();if(a){this.answers[this.questions[this.index].id]=a;jQuery("#questionList"+this.id+" li.question:first").remove();this.index++}else{alert("Please choose an answer.")}this.evaluating=false}},finish:function(){if(!this.finishing){var a=this.getSelectedAnswer();if(a){this.answers[this.questions[this.index].id]=a;this.get("loadingFinish").show();var b={action:"finish",answers:new Hash(this.answers).toJSON()};this.finishing=true;this.request(b,function(c){jQuery("#quiz"+this.id).html(c.html);this.finishing=false;this.request({action:"averages",highlightRange:c.range},function(d){if(d.averages.total<=1){this.get("averageScores").innerHTML="You're the first take the quiz!";this.get("graph").innerHTML=""}else{this.get("averageScores").innerHTML=d.averages.averageScore+"%";this.get("graph").innerHTML=d.averages.graphImg}}.bind(this))}.bind(this))}else{alert("Please choose an answer.")}}},resetDomain:function(){if(confirm("Are you sure you want to reset the domain?  This will delete all data stored there.")){this.formWait(true);this.request({action:"resetDomain"},function(a){if(!a.error){alert("Domain reset.")}else{alert(a.message)}this.formWait(false)}.bind(this))}},clearStats:function(){if(confirm("Are you sure you want to clear all recorded scores?")){this.formWait(true);this.request({action:"clearStats"},function(a){if(!a.error){this.loadStats();alert("Stats cleared.")}else{alert(a.message);this.formWait(false)}}.bind(this))}},averages:function(){this.formWait(true);this.request({action:"averages"},function(a){if(!a.error){alert(new Hash(a.averages).toJSON())}else{alert(a.message)}this.formWait(false)}.bind(this))},sendEmail:function(){var elementsBody="";this.get("recommend_errors").innerHTML="";try{var theForm=this.get("recommend_email_form_");$$("#recommend_email_form_"+this.id+" input[type=text]").each(function(element){elementsBody+=$(element).value+","})}catch(err){alert(err)}var postForm=eval("document.recommend_email_form_"+this.id);if(!postForm._squidcap_i){alert("Please enter the email address and security word before continuing");return false}var params={action:"email",from:this.get("from").value,recipient_emails:elementsBody,message:this.get("message").value,_squidcap_i:postForm._squidcap_i.value,_squidcap_e:postForm._squidcap_e.value};this.request(params,function(json){this.get("recommend_email_").innerHTML=json.html}.bind(this),"post")},addRecipient:function(){var c=this.get("recommend_email_insert_pt_");var b=document.createElement("input");var a=c.parentNode;b.type="text";b.size="50";a.insertBefore(b,c)}});QuizModFactory=Class.create({instances:new Hash(),get:function(c,d,b){if(c){var a="quizmod-"+c;if(this.instances.keys().indexOf(a)==-1){return this.instances.set(a,new QuizMod(c,d,b))}else{return this.instances.get(a)}}}});QuizModFactory=Class.create({instances:new Hash(),get:function(c,d,b){if(c){var a="quizmod-"+c;if(this.instances.keys().indexOf(a)==-1){return this.instances.set(a,new QuizMod(c,d,b))}else{return this.instances.get(a)}}}});quizModFactory=new QuizModFactory();
