
﻿var mumus=new Array();var conversations=new Array();var mumuLimit=20;var lLimit=120,rLimit=820,tLimit=70,bLimit=500;var turnLimit=40;var mover;var moveSpeed=2;var evilscore=0;var goodscore=0;$(function(){$("#mumuSearch").jSuggest({url:"services/autocompleteservice.aspx",type:"GET",data:"searchQuery",autoChange:true,delay:10,opacity:0.8,minchar:1});$("#mumuTeach").jSuggest({url:"services/autocompleteservice.aspx",type:"GET",data:"searchQuery",autoChange:true,delay:10,opacity:0.8,minchar:1});$("#mumuTeach").keydown(function(evt){if(evt.keyCode==13){getMumuEdit($(this).val());}});$("#mumuSearch").keydown(function(evt){if(evt.keyCode==13){getMumu($(this).val());}});$("#mumuRandom").keydown(function(evt){if(evt.keyCode==13){getRandomMumus($(this).val());}});$("#divCommands :input").tooltip({position:"center right",offset:[-2,10],effect:"fade",opacity:0.7,tip:'.tooltip'});getRandomMumus(Math.ceil(5*Math.random()));mover=setInterval(moveAllMumus,100);});function Question(text,id){this.id=id;this.text=text;this.isAsked=false;this.isAnswered=false;}
function Answer(text,qid){this.qid=qid;this.text=text;}
function Conversation(mumuid1,mumuid2){this.mumuid1=mumuid1;this.mumuid2=mumuid2;}
function moveAllMumus(){for(var i=mumus.length;i--;){if(mumus[i].isMoving)
mumus[i].move();}}
function Mumu(element,name,mumuid,index,x,y,hp,str,speed){this.mumuid=mumuid;this.index=index;this.element=element;this.img=null;this.lvl=0;this.hp=hp;this.maxHp=hp;this.hpdisplay=$(element).find("span.hp");this.dmgbox=$(element).find("div.dmgbox");this.str=str;this.ctrl=$(element).find("div.divCtrl");this.talkbox=$(element).find("div.talkbox");this.say=$(element).find("div.talkbox blockquote p");this.name=name;this.greeting;this.bye;this.isTalking=false;this.talkingTo=null;this.isMoving=false;this.isResting=false;this.isFighting=false;this.isDead=false;this.opponents=new Array();this.x=x;this.y=y;this.speed=speed;this.direction;this.turn=0;this.answers=new Array();this.questions=new Array();this.timeout=null;this.isAnswering=false;this.isAsking=false;this.alignment=0;}
Mumu.prototype.changeDirection=function(){var newDirection=getDirection();if(newDirection===this.direction){this.changeDirection();}
this.direction=newDirection;}
Mumu.prototype.move=function(){switch(this.direction){case 1:this.x+=moveSpeed;if(this.x>rLimit){this.changeDirection();this.x=rLimit;this.move();}
$(this.element).css({"left":this.x});break;case 2:this.x-=moveSpeed;if(this.x<lLimit){this.x=lLimit;this.changeDirection();this.move();}
$(this.element).css({"left":this.x});break;case 3:this.y+=moveSpeed;if(this.y>bLimit){this.y=bLimit;this.changeDirection();this.move();}
$(this.element).css({"top":this.y});break;case 4:this.y-=moveSpeed;if(this.y<tLimit){this.y=tLimit;this.changeDirection();this.move();}
$(this.element).css({"top":this.y});break;}
this.turn++;if(this.isMoving&&this.turn>turnLimit&&this.turn%3==0){this.checkAction();}}
function HasUnfinishedQuestions(questions){for(var i=0;i<questions.length;i++){if(!questions[i].isAsked||!questions[i].isAnswered){return true;}}
return false;}
Mumu.prototype.talk=function(){var text;if(this.isDead){console.log(this.name+" "+this.mumuid+" is DEAD!");}
$(this.talkbox).show("normal");if(this.turn===0){text=this.greeting;this.turn++;}
else if(this.talkingTo.isTalking&&this.isAsking&&HasUnfinishedQuestions(this.questions)){if(this.talkingTo.turn>0&&this.questions.length>0){for(var i=0;i<this.questions.length;i++){if(!this.questions[i].isAsked){text=this.questions[i].text;this.questions[i].isAsked=true;}
if(this.questions[i].isAsked&&!this.questions[i].isAnswered){break;}}}}
else if(this.talkingTo.isTalking&&this.isAnswering&&HasUnfinishedQuestions(this.talkingTo.questions)){if(this.talkingTo.questions.length>0&&this.answers.length>0){for(i=0;i<this.talkingTo.questions.length;i++){if(this.talkingTo.questions[i].isAsked&&!this.talkingTo.questions[i].isAnswered){for(var j=0;j<this.answers.length;j++){if(this.talkingTo.questions[i].id===this.answers[j].qid){text=this.answers[j].text;this.talkingTo.questions[i].isAnswered=true;break;}}}}}}
else{text=this.bye;this.turn=0;this.isMoving=true;this.isTalking=false;$(this.talkbox).hide(2000);this.changeDirection();}
$(this.say).text(text);this.timeout=setTimeout("executeAction("+this.index+")",this.speed+1500);}
Mumu.prototype.checkAction=function(){if(this.hp<10){this.isMoving=false;this.isResting=true;this.rest();return;}
for(var i=0;i<mumus.length;i++){if(i!==this.index&&!mumus[i].isDead){if(isClose(this.x,mumus[i].x,this.y,mumus[i].y)){if(mumus[i].isTalking||(mumus[i].isResting&&(this.alignment===mumus[i].alignment))){this.changeDirection();this.turn=0;return;}
else if(this.alignment!=mumus[i].alignment){startFight(this,mumus[i]);return;}
else if(mumus[i].turn>turnLimit&&!hasTalked(this.mumuid,mumus[i].mumuid)){startTalk(this,mumus[i]);return;}
else{this.changeDirection();this.turn=0;return;}}}}}
Mumu.prototype.fight=function(){if(this.hp<=10){}
var damage;var hitrate;var luck;var who=Math.ceil(this.opponents.length*Math.random())-1;var opponent=this.opponents[who];if(!opponent.isFighting){this.opponents.splice(who,1);}
else{damage=Math.ceil(10*Math.random())+this.str;hitrate=opponent.lvl-this.lvl;luck=Math.ceil(10*Math.random());if(hitrate<luck){$(this.dmgbox).text(damage).effect("puff",{percent:250},1500);opponent.hp-=damage;opponent.hpdisplay.text(opponent.hp);$(opponent.hpdisplay).effect("pulsate",{times:1});if(opponent.hp<=0){$(opponent.element).effect("explode",1000);opponent.isDead=true;this.str++;this.maxHp=this.maxHp+5;this.opponents.splice(who,1);if(this.alignment===1){goodscore++;$("#spnGood").text(goodscore).effect("pulsate");}
else{evilscore++;$("#spnEvil").text(evilscore).effect("pulsate");}
mumuRemove(opponent.index);}}}
if(this.opponents.length===0){this.isFighting=false;this.isMoving=true;}
this.timeout=setTimeout("executeAction("+this.index+")",this.speed+2000);}
Mumu.prototype.rest=function(){var hpGain=Math.ceil(10*Math.random());$(this.dmgbox).text('Zzz').effect("puff",{percent:250},1000);if((this.hp+hpGain)<=this.maxHp){this.hp+=hpGain;this.hpdisplay.text(this.hp);}
else{this.isResting=false;this.isMoving=true;}
this.timeout=setTimeout("executeAction("+this.index+")",this.speed+2000);}
Mumu.prototype.action=function(){window.clearTimeout(this.timeout);if(this.isDead){return;}
if(this.isTalking){this.talk();}
else if(this.isFighting){this.fight();}
else if(this.isResting){this.rest();}}
function startFight(mumu1,mumu2){$(mumu1.ctrl).hide();$(mumu2.ctrl).hide();mumu1.isMoving=false;mumu2.isMoving=false;mumu1.isFighting=true;mumu2.isFighting=true;mumu1.turn=0;mumu2.turn=0;mumu1.opponents.push(mumu2);mumu2.opponents.push(mumu1);mumu1.fight();mumu2.fight();}
function startTalk(mumu1,mumu2){$(mumu1.ctrl).hide();$(mumu2.ctrl).hide();mumu1.isMoving=false;mumu2.isMoving=false;mumu1.isTalking=true;mumu2.isTalking=true;mumu1.turn=0;mumu2.turn=0;mumu1.talkingTo=mumu2;mumu2.talkingTo=mumu1;mumu1.isAsking=true;mumu1.isAnswering=false;mumu2.isAsking=false;mumu2.isAnswering=true;var conversation=new Conversation(mumu1.mumuid,mumu2.mumuid);conversations.push(conversation);if(mumu1.x<mumu2.x){$(mumu1.talkbox).find("cite").css({"margin-left":"90px"});$(mumu1.talkbox).css({"margin-left":"-90px"}).show();$(mumu2.talkbox).css({"margin-left":"0px"}).show();$(mumu2.talkbox).find("cite").css({"margin-left":"5px"});}
else{$(mumu2.talkbox).find("cite").css({"margin-left":"90px"});$(mumu2.talkbox).css({"margin-left":"-90px"}).show();$(mumu1.talkbox).css({"margin-left":"0px"}).show();$(mumu1.talkbox).find("cite").css({"margin-left":"5px"});}
getConversation(mumu1,mumu2);mumu1.talk();mumu2.talk();}
function getConversation(mumu1,mumu2){var jsonText=JSON.stringify({mumuId1:mumu1.mumuid,mumuId2:mumu2.mumuid});$.ajax({type:"POST",url:"services/qnaservice.asmx/GetConversation",contentType:"application/json; charset=utf-8",data:jsonText,dataType:"json",success:function(response){var conversation=response.d;var q;var a;mumu1.answers=[];mumu1.questions=[];mumu2.answers=[];mumu2.questions=[];for(var j=0;j<conversation.Questions.length;j++){q=new Question(conversation.Questions[j].Qtext,conversation.Questions[j].QuestionId);mumu1.questions.push(q);}
for(j=0;j<conversation.Answers.length;j++){a=new Answer(conversation.Answers[j].Atext,conversation.Answers[j].QuestionId);mumu2.answers.push(a);}}});}
function hasTalked(mumuid1,mumuid2){for(var i=0;i<conversations.length;i++){if(conversations[i].mumuid1==mumuid1&&conversations[i].mumuid2==mumuid2){return true;}}
return false;}
function getDirection(){return Math.ceil(4*Math.random());}
function executeAction(index){mumus[index].action();}
function mumuChangeDirection(index){mumus[index].changeDirection();}
function mumuRest(index){$(mumus[index].ctrl).hide();mumus[index].isMoving=false;mumus[index].isResting=true;mumus[index].rest();}
function mumuRemove(index){window.clearTimeout(mumus[index].timeout);mumus[index].isMoving=false;mumus[index].isTalking=false;mumus[index].isFighting=false;mumus[index].isResting=false;mumus[index].x=-9999;mumus[index].y=-9999;mumus[index].mumuid=0;mumuLimit++;$(mumus[index].element).remove();}
function isClose(x,x1,y,y1){var min=30;var xr=x+50;var yb=y+50;var x1r=x1+50;var y1b=y1+50;var d1=Math.abs(x-x1r);var d2=Math.abs(y-y1);if(d1<min&&d2<min){return true;}
d2=Math.abs(y-y1b);if(d1<min&&d2<min){return true;}
d2=Math.abs(yb-y1);if(d1<min&&d2<min){return true;}
d2=Math.abs(yb-y1b);if(d1<min&&d2<min){return true;}
d1=Math.abs(x1-xr);d2=Math.abs(y1-y);if(d1<min&&d2<min){return true;}
d2=Math.abs(y1-yb);if(d1<min&&d2<min){return true;}
d2=Math.abs(y1b-y);if(d1<min&&d2<min){return true;}
d2=Math.abs(y1b-yb);if(d1<min&&d2<min){return true;}
d1=Math.abs(x-x1);d2=Math.abs(y-y1b);if(d1<min&&d2<min){return true;}
d2=Math.abs(yb-y1);if(d1<min&&d2<min){return true;}
return false;}
function isInMumus(mumuid){for(var i=0;i<mumus.length;i++){if(mumus[i].mumuid===mumuid){return true;}}
return false;}
function setX(index){return lLimit+Math.ceil(rLimit*Math.random());}
function setY(index){return tLimit+Math.ceil(bLimit*Math.random());}
function getMumu(name){if(mumus.length>=mumuLimit){alert("no more mumus for you");return;}
var jsonText=JSON.stringify({name:name});$.ajax({type:"POST",url:"services/mumuservice.asmx/GetMumu",contentType:"application/json; charset=utf-8",data:jsonText,dataType:"json",success:function(response){var data=response.d;if(isInMumus(data.MumuId)){return;}
loadMumu(data);}});}
function getRandomMumus(take){if(mumus.length===mumuLimit){alert("no more mumus for you");return;}
var amount=mumus.length+take;if(amount>=mumuLimit)
{take=mumuLimit-mumus.length;}
var jsonText=JSON.stringify({take:take});$.ajax({type:"POST",url:"services/mumuservice.asmx/GetRandomMumus",contentType:"application/json; charset=utf-8",data:jsonText,dataType:"json",success:function(response){var dataMumus=response.d;for(var i=0;i<dataMumus.length;i++){if(!isInMumus(dataMumus[i].MumuId)){loadMumu(dataMumus[i]);}}}});}
function loadMumu(mumuData){var index=mumus.length;var html="<div id='mumu"+mumuData.MumuId+"' class='mumu' ondblclick='showMumuControl("+index+")'><div class='talkbox'><blockquote><p></p></blockquote><cite>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</cite></div><br /><img src='"+mumuData.Image+"' />";html+="<div class='divCtrl'><table cellspacing='0' cellpadding='0' class='tblCtrl'> <tr><td></td><td align='center'> <a href='javascript:mumuCtrlChangeDirection("+index+",4)'><img src='images/moveup.png' /></a></td><td></td></tr>";html+="<tr><td><a href='javascript:mumuCtrlChangeDirection("+index+",2)'><img src='images/moveleft.png' /></a></td><td align='center'></td><td><a href='javascript:mumuCtrlChangeDirection("+index+",1)'><img src='images/moveright.png' /></a></td></tr>";html+="<tr><td></td><td align='center'><a href='javascript:mumuCtrlChangeDirection("+index+",3)'><img src='images/movedown.png' /></a></td><td></td></tr></table><br /><a href=\"javascript:mumuRest("+index+")\" title='Rest for a while'>Rest</a></div>";html+="";if(mumuData.Alignment===1){html+="<div class='dmgbox good'></div><div class='divStats'><span class='good'>"+mumuData.Name+"</span>";}
else{html+="<div class='dmgbox evil'></div><div class='divStats'><span class='evil'>"+mumuData.Name+"</span>";}
html+="<br />Hp: <span class='hp'>"+mumuData.Hp+"</span></div></div>";$("#divMumuLand").prepend(html);var element=$("#mumu"+mumuData.MumuId);var x=setX(index);var y=setY(index);$(element).css({"top":y,"left":x}).find(".talkbox").css({"opacity":0.75});var mumu=new Mumu(element,mumuData.Name,mumuData.MumuId,index,x,y,mumuData.Hp,mumuData.Str,mumuData.Speed);mumu.greeting=mumuData.Greeting;mumu.bye=mumuData.Bye;mumu.direction=getDirection();mumu.img=mumuData.Image;mumu.lvl=mumuData.Lvl;mumu.alignment=mumuData.Alignment;mumus.push(mumu);mumu.isMoving=true;mumu.action();}
function addAnswer(mumuid,questionid,text){var jsonText=JSON.stringify({mumuId:mumuid,questionId:questionid,aText:text});$.ajax({type:"POST",url:"services/qnaservice.asmx/AddAnswer",contentType:"application/json; charset=utf-8",data:jsonText,dataType:"json",success:function(response){}});}
function getMumuEdit(name){$("#divEditAnswers").html("");var jsonText=JSON.stringify({name:name});$.ajax({type:"POST",url:"services/mumuservice.asmx/GetMumuEdit",contentType:"application/json; charset=utf-8",data:jsonText,dataType:"json",success:function(response){$("#divEditResponse").html(response.d);}});}
function newQuestion(mumuid){var qText=$("#newQuestion").val();if(qText.length>140||qText.length==0){alert("Question text to long or empty");return;}
var jsonText=JSON.stringify({qText:qText,mumuId:mumuid});$.ajax({type:"POST",url:"services/qnaservice.asmx/AddQuestion",contentType:"application/json; charset=utf-8",data:jsonText,dataType:"json",success:function(response){var id=response.d;if(id!=0){addAnswer(mumuid,id,$("#newAnswer").val());$("#divStatus").html("Question added");setTimeout("$('#divStatus').html('')",2000);}
else{$("#divStatus").html("You have to level up before you can add another question");setTimeout("$('#divStatus').html('')",2000);}}});}
function getMumuEditPassword(){var jsonText=JSON.stringify({name:$("#mumuTeach").val(),password:$("#enterPassword").val()});$.ajax({type:"POST",url:"services/mumuservice.asmx/GetMumuEditPassword",contentType:"application/json; charset=utf-8",data:jsonText,dataType:"json",success:function(response){$("#divEditResponse").html(response.d);}});}
function getQnA(mumuid,page){var jsonText=JSON.stringify({mumuId:mumuid,page:page});$.ajax({type:"POST",url:"services/qnaservice.asmx/GetQnA",contentType:"application/json; charset=utf-8",data:jsonText,dataType:"json",success:function(response){$("#divEditAnswers").html(response.d);}});}
var beforeText;function startAnswerEdit(ta){beforeText=$(ta).val();}
function answerEditSave(ta,id){var afterText=$(ta).val();if(beforeText==afterText){return;}
if(afterText.length>140){alert("To long text");return;}
var jsonText=JSON.stringify({answerId:id,aText:afterText});$.ajax({type:"POST",url:"services/qnaservice.asmx/AnswerEditSave",contentType:"application/json; charset=utf-8",data:jsonText,dataType:"json",success:function(response){$(ta).css({"background":"#D9FAA0"});},error:function(msg){$(ta).css({"background":"red"});}});}
function enterPassword(e){if(e.keyCode==13){getMumuEditPassword();}}
function showFeedback(){$("#taFeedBack").css({"width":"130px"});$("#liFeedBack").show("slow");}
function sendFeedback(){$.get("services/autocompleteservice.aspx",{feedback:$("#taFeedBack").val(),name:$("#txtName").val()},function(){$("#liFeedBack").hide("slow");});}
function getMumuSong(){$.get("services/mumuinfo.aspx",{mumusong:'yeah'},function(response){$("#liSong").html('<a href="javascript:hideDiv(\'liSong\')">Hide</a><br />'+response).show("slow");});}
function hideDiv(idtext){$("#"+idtext).hide("slow");}
function showMumuControl(index){$(mumus[index].ctrl).toggle("slow");}
function mumuCtrlChangeDirection(index,direction){mumus[index].direction=direction;}
