var oldAdvId = null;
var EVENT_1 = 0x00000001; //Note A01-01
var EVENT_2 = 0x00000002; //Note A01-02
var EVENT_3 = 0x00000004; //Note A01-03
var EVENT_4 = 0x00000008; //Note A01-04
var EVENT_5 = 0x00000010; //retired
var EVENT_6 = 0x00000020; //Note A01-06
var EVENT_7 = 0x00000040; //Note A01-07
var EVENT_8 = 0x00000080; //Note A01-08, A01-08B, A01-08P, A01-10, A01-11
var EVENT_9 = 0x00000100; //Note A01-12
var EVENT_10 = 0x00000200; //Note A01-13
var EVENT_11 = 0x00000400; //Note A01-15
var EVENT_12 = 0x00000800; //Note A01-16
var EVENT_13 = 0x00001000; //retired
var EVENT_14 = 0x00002000; //Note EX-18
var EVENT_15 = 0x00004000; //Note EX-19
var EVENT_16 = 0x00008000; //Note EX-20
var EVENT_17 = 0x00010000; //Note EX-21
var EVENT_18 = 0x00020000; //Note EX-23
var EVENT_19 = 0x00040000; //Note EX-24
var EVENT_20 = 0x00080000; //AdventureQuest Start Note
var EVENT_21 = 0x00100000; //AdventureQuest End Tier 1
var EVENT_22 = 0x00200000; //AdventureQuest End Tier 2
var EVENT_23 = 0x00400000; //AdventureQuest End Tier 3
var EVENT_24 = 0x00800000; //AdventureQuest End Tier 4
var EVENT_25 = 0x01000000;
var EVENT_26 = 0x02000000;
var EVENT_27 = 0x04000000;
var EVENT_28 = 0x08000000;
var EVENT_29 = 0x10000000;
var EVENT_30 = 0x20000000;
var EVENT_31 = 0x40000000;
var EVENT_32 = 0x80000000;
var GRAMMAR = 218046;
var VOCABULARY = 218047;
var EXPRESSIONS = 218048;
var REVIEW = 221847;
var SPEAKING = 221471;
var skillArray = new Array(GRAMMAR,VOCABULARY,EXPRESSIONS,REVIEW,SPEAKING);
function getWordText(wordObj)
{
return (wordObj.Phrase) ? wordObj.Phrase.Txt : wordObj.Txt;
}
function getWordImg(wordObj)
{
return (wordObj.Pair) ? wordObj.Pair[0].Img : wordObj.Swf;
}
function getWordAud(wordObj)
{
return (wordObj.Pair) ? wordObj.Pair[0].Aud : (wordObj.Phrase && wordObj.Phrase.Aud) ? wordObj.Phrase.Aud : (wordObj.Word) ? wordObj.Word.Aud : wordObj.Aud;
}
function getWordOmits(wordObj)
{
if (wordObj.Omit)
return wordObj.Omit;
else if (wordObj.NumOmissions) {
var omitStr = "";
var omissions = wordObj.Omission;
for (var i = 0; i < omissions.length; i++) {
omitStr += omissions[i].Index;
if (i < omissions.length - 1)
omitStr += " ";
}
return omitStr;
}
return -1;
}
function getWordDistractors(wordObj)
{
var omitStr = "";
var omissions = wordObj.Omission;
if (omissions) {
for (var i = 0; i < omissions.length; i++) {
omitStr += omissions[i].Distractor;
if (i < omissions.length - 1)
omitStr += " ";
}
return omitStr;
}
return -1;
}
function getGroupingData(wordObj)
{
return (wordObj.Sequence) ? wordObj.Sequence : "0";
}
function launchSystemCheck(popSrc){
var url=serverPath()+"templates/bin/systemcheck.asp?";
if (User.Id != -1)
url += "lang="+lang+"&";
if(popSrc) url += "returnUrl="+serverPath()+"templates/bin/template.asp?ClassId=204&ObjectId=221821";
else url += "returnUrl=" + escape(document.location.href);
sysCheck=1;
if(popSrc) opener.document.location=url;
else document.location=url;
}
function stripPunct(str){
if(str=='' || typeof str!='string') return str;
var len=str.length, s="";
for(var i=0; i<len; i++){
var c=str.charAt(i);
var add=true;
var punctStr = ".,?!";
for (var j = 0; j < punctStr.length; j++) {
var punct = punctStr.charAt(j);
if (c == punct)
add = false;
}
if(add) s+=c;
}
return s;
}
function randomizeList(listLength, numWords, groupStr)
{
var alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
var letterAr = new Array();
var groupArray = new Array();
if (groupStr != null) {
groupArray = groupStr.split("|");
for (var i = 0; i < groupArray.length; i++) {
var grpValue = groupArray[i];
if (grpValue != "0") {
var grpNum = getGrpNum(grpValue);
var grpLet = getGrpLet(grpValue);
var letterNum = alphabet.indexOf(grpLet);
if (!letterAr[letterNum])
letterAr[letterNum] = new Array();
letterAr[letterNum][grpNum - 1] = i;
}
}
}
if (!numWords)
numWords = listLength;
var orderArray = new Array()
var numArray = new Array();
for (var i = 0; i < listLength; i++)
numArray[i] = i;
for (var i = 0; i < numWords; i++) {
var index = Math.floor(Math.random() * (numArray.length - 1));
var orderIndex = numArray[index];
if (groupStr != null) {
var groupValue = groupArray[orderIndex];
if (groupValue != "0") {
var grpLet = getGrpLet(groupValue);
var letterNum = alphabet.indexOf(grpLet);
var simGrpArray = letterAr[letterNum];
var startIndex = 0;
if (i + simGrpArray.length - 1 >= numWords) {
var diff = i + simGrpArray.length - numWords;
startIndex = Math.floor(Math.random() * diff);
}
for (var j = startIndex; j < simGrpArray.length && i < numWords; j++) {
orderArray[i] = simGrpArray[j];
numArray = removeIndex(numArray, simGrpArray[j]);
if (j < simGrpArray.length - 1)
i++
}
} else {
orderArray[i] = orderIndex;
numArray[index] = numArray[numArray.length - 1];
numArray.length = numArray.length - 1;
}
} else {
orderArray[i] = orderIndex;
numArray[index] = numArray[numArray.length - 1];
numArray.length = numArray.length - 1;
}
}
return orderArray;
}
function getGrpNum(groupValue)
{
return parseInt(groupValue.substring(1, groupValue.length));
}
function getGrpLet(groupValue)
{
return groupValue.charAt(0);
}
function removeIndex(arr, index)
{
for (var i = 0; i < arr.length; i++) {
if(index == arr[i]) {
arr[i] = arr[arr.length - 1];
arr.length = arr.length - 1;
}
}
return arr;
}
function getURLParam(str,toEnd){
var loc=this.location.href.toLowerCase(),url=unescape(loc);
var i=url.toLowerCase().indexOf(str.toLowerCase()+"=");
if(i >= 0){
var u=unescape(location.href);
u=u.substring(i+str.length+1, u.length);
i=u.indexOf("&");
var param=(i >= 0 && !toEnd)? u.substring(0,i): u;
}
return param;
}
function setGoalCookie() {
setCookie("ShowGoals","1",1);
}
function getNoteData(clipPath)
{
var s = "<?xml version='1.0' encoding='utf-8' ?>";
s += "<expresscomm>";
s += "<translations>";
s += "<newMessage>" + frame.newMessage + "</newMessage>";
s += "<myMessage>" + frame.myMessage + "</myMessage>";
s += "<noMessage>" + frame.noMessage + "</noMessage>";	
s += "</translations>";
s += "<inbox ntype='array'>";
var inbox = getInbox();
if (inbox) {
for (var i = 0; i < inbox.length; i++) {
var note = inbox[i];
s += "<note stat='" + note.stat + "' notetype='" + note.type + "' id='" + note.id + "'>";
s += "<subject>" + note.sub + "</subject>"
s += "</note>";
}
}
s += "</inbox>";
s += "<goals>";
s += "<id>" + User.Goals.Id + "</id>";
s += "<complete>" + User.Goals.Status + "</complete>";
var showGoals = parseInt(getCookie("ShowGoals"));
showGoals = (showGoals == 0) ? false : true;
if (showGoals)
setCookie("ShowGoals","0",1);
s += "<goalDisplayed>" + showGoals + "</goalDisplayed>";
s += "<review><![CDATA[" + frame.reviewGoal + "]]></review>";
s += "<todaysGoalsTxt>" + frame.todaysGoalsTxt + "</todaysGoalsTxt>";
s += "<goalDoneTxt>" + frame.goalDoneTxt + "</goalDoneTxt>";
s += "<spaceshipTxt>" + frame.goalEndAdv + "</spaceshipTxt>";
s += "</goals>";
s += "</expresscomm>";
//alert("xmlStr: "+s);
setFlashVar("xmlStr",s,"_level9.expressComm");
var jsonStr = JSON.stringify(KidsActTitles);
setFlashVar("ActTitles",jsonStr,"_level9.expressComm");
if (clipPath)
flashLabel("initComm",clipPath);
else if (!waitForNotes)
flashLabel("inboxSent","_level9.expressComm");
}
function checkNoteSent(nEvent, waitFlag)
{
if (!isAdmin) {
var newNote = startNoteEvent & nEvent;
if (newNote == 0 && !fromBack) {
if (waitFlag)
waitForNotes = true;
setNoteEvent(nEvent);
}
}
}
function setNoteEvent(nEvent)
{
noteValue |= nEvent;
Obj.UNoteEvent.Value = noteValue;
}
function sendNoteEvent(aspData, sendNote)
{
if (noteValue > 0 || sendNote) {
setReturnValue("noteSent");
if (waitForNotes)
setTimeout('setNoteFlag()', 5000);
}
noteValue = 0;
saveState("", aspData);
}
function stopClientSounds()
{
if (asfIsPlaying())
asfStop();
}
function ACELPDone()
{
var tDiv = document.all.testdiv;
if (tDiv && isIE5_0) {
tDiv.focus();
}
if (document.flash)
setFlashVar("soundPlaying","false","_level0");
}
function doTimer()
{
if (!isPage(DAILY_SPEAKING) && !reportTool) {
var Ext = (isRZAct()) ? "RZ" : (inStation()) ? "SS" : "";
var tNow= new Date();
var tDiff= tNow - sTimer;
eval("tGap = (Obj.UStatus" + Ext + ".Value == 0) ? 1200000 : 900000;")
tDiff = (tDiff < tGap) ? tDiff : tGap; //take lesser time
tDiff = Math.ceil(tDiff);
eval("	Obj.UTime" + Ext + ".Value = Math.ceil(tDiff/1000);")
sTimer = tNow; //restart timer
}
}
function cheatSave ()
{
setTimeout ('mapLink()', 2000);
saveState();
}
function rzState()
{
return ((uGoto().Tier == 5) || (cid == 0 && tiercheat >= 5));
}
function gotoIsDone(actObj)
{
return (actObj.Id == myGoto().Id && actObj.UStatus.Value == 2)
}
function changeGoto(nextGoto)
{
var propstr = "";
if (nextGoto) {
var gotoObj = nextGoto.split(";");
var gotoStr = gotoObj.join(",");
if ((parseInt(gotoObj[0]) == 0 && Obj.UStatus.Value >= 1) || parseInt(gotoObj[0]) != 0) {
propstr = (!oldAdv() && myGoto().Tier < 4) ? setGoto(gotoStr) : "";
if (cid != 0)
Obj.PrevGoto = Obj.Id;
}
}
return propstr;
}
function getUStat(value)
{
var ustat = "";
var metaArray = Obj.MetaTags;
for (var k = 0; k < skillArray.length; k++) {
for (var j = 0; j < metaArray.length; j++) {
if (skillArray[k] == metaArray[j]) {
if (ustat.length > 0)
ustat += ";";
ustat += skillArray[k] + "," + Math.round(value) + ",100,100";
}
}
}
if (ustat == "")
ustat = "999999," + Math.round(value) + ",100,100";
return ustat;
}
function saveState(stateStr, extraprops)
{
var propstr = "";
var tokens = 0;
if (!stateStr)
stateStr = "";
var stateAr = stateStr.split(",");
for (var i = 0; i < stateAr.length; i++) {
var state_value = stateAr[i].split("=");
var state = state_value[0];
var value = state_value[1];
switch(state) {
case "score" :
var bestScore = parseInt(Obj.UBest.Value);
var prevScore = (cid==13 && bestScore==0) ? 10000 : (bestScore==0) ? 0 : bestScore;
if ((cid==13 && parseInt(value) < prevScore) || (parseInt(value) > prevScore)) {
Obj.UBest.Value = parseInt(value);
document.flash.SetVariable("_level0:bestScore", value);
}
break;
case "etokens" :
var tokValue = parseInt(value);
if (isPage(WORD_WIZ)) {
tokens = tokValue;
propstr += "&action=updateprop&pstr=" + Obj.AdvId + ",1801," + Obj.Tier;	
} else if (inAdv() && Obj.UTokens) {
var TOKEN_CAP = isRZAct() ? 8 : 24;
var TOK_REQUIRED = isRZAct() ? 6 : 8;
var uTokenObj = isRZAct() ? Obj.UTokensRZ : Obj.UTokens;
uTokenValue = parseInt(uTokenObj.Value);
var uStatusObj = isRZAct() ? Obj.UStatusRZ : Obj.UStatus;
if (uTokenValue < TOKEN_CAP) {
uTokenObj.Value = uTokenValue + tokValue;
if (uTokenObj.Value > TOKEN_CAP) {
tokens = uTokenObj.Value - TOKEN_CAP;
uTokenObj.Value = TOKEN_CAP;
} else
tokens = tokValue;
if (uTokenObj.Value >= TOK_REQUIRED && uStatusObj.Value != 2)
uStatusObj.Value = 2;
else if (uStatusObj.Value == 0)
uStatusObj.Value = 1;
propstr += changeGoto(Obj.NextGoTo);
if (isRPAct()) {
var rp = parseInt(Obj.From.charAt(2));
if (rp > Obj.UPitStatus.Value)
Obj.UPitStatus.Value = rp;
}
} else
tokens = 0;
} else if (inStation())
Obj.UStatusSS.Value = 2;
else
tokens = tokValue;
break;
case "tokens" :
case "token" :
if (!isPage(WORD_WIZ) && (inAdv() || inStation()) && !isPage(DAILY_SPEAKING)) {
var ustat = getUStat(value);
if (isRZAct()) {
Obj.UStatRZ.OldValue = "";
Obj.UStatRZ.Value = ustat;
} else if (inStation()) {
Obj.UStatSS.OldValue = "";
Obj.UStatSS.Value = ustat;
} else {
Obj.UStat.OldValue = "";
Obj.UStat.Value = ustat;
}
if (User && !User.dSpeak && w.recordAct)
propstr += "&dailyspeak=true";
}
break;
case "lastset" :
Obj.ULastSet.Value = parseInt(value);
break;
case "tier" :
var bustThrough = (value.charAt(value.length - 1) == "x")
if (bustThrough) {
UPageState.Value = 0;
value = value.substring(0,value.length - 1);
propstr += (value >= 5) ? "&action=endofadventure" : "&tier=" + value;
propstr += "&thruwall=1";
}
tierVal = parseInt(value);
if (value < 5) {
utier = tierVal;
Obj.UTier.Value = tierVal;
}
maptier = (utier > 3) ? 3 : utier;
if (utier == 4 && value < 5) {
var tTest = Obj.Task[Obj.Task.length - 1];
Obj.NextGoTo = tTest.ClassId + ";" + tTest.Id + ";4";
} else if (utier < 5) {
var sequence = Obj.Tier[utier - 1].Sequence;
var activity = Obj.Task[parseInt(sequence[0]) - 1];
Obj.NextGoTo = activity.ClassId + ";" + activity.Id + ";" + utier;
}
propstr += changeGoto(Obj.NextGoTo);
break;
case "time" :
if (value == "")
value = 120;
var Ext = (isRZAct()) ? "RZ" : (inStation()) ? "SS" : "";
eval("Obj.UTime" + Ext + ".Value = parseInt(value);");
break;
case "date" :
millisecs = value;
propstr += "&date=" + millisecs;
break;
}
}
var uStr = SaveUStr();
if (uStr.length)
propstr += "&PropValue=" + uStr;
if (tokens) {
propstr += "&tokenArray=4," + tokens;
setCookie("tokenEarned", 1, 1);
tokens = 0;
if (isRZAct())
propstr += "&rzAct=1";
}
if (extraprops)
propstr += extraprops;
if (propstr.length) {
var oid2 = !inAdv() ? -1 : oid;
propstr += "&activityid=" + oid2;
callFlashAsp(propstr);
}
}
function setGoto(gotoStr)
{
var gotoAr = gotoStr.split(",");
var newGotoTier = parseInt(gotoAr[2]);
var oldGotoTier = uGoto().Tier;
if(!w.tiercheat && ((newGotoTier && (newGotoTier < oldGotoTier)) || (newGotoTier == 0 && ((uGoto().Tier < 4 && uGoto().ANum <= 3) || (uGoto().Tier < 5 && uGoto().ANum > 3))))) {
var msgStr = "setGoto() function is trying to set users goto to a teir that is less than the current goto tier.";
msgStr += " Old goto value = " + oldGotoTier + ", new goto value = " + newGotoTier;
wrtErrAlrt(msgStr);
} else {
oldAdvId = new Object();
oldAdvId.Id = gotoAr[1];
uGoto().ClassId = gotoAr[0];
uGoto().Id = gotoAr[1];
if (gotoAr.length > 2)
uGoto().Tier = gotoAr[2];
return "&goto=" + gotoStr;
}
}
function resetUValues(uValues)
{
var newValues = uValues.replace(/U\(/g, "updateU(");
eval(newValues);
var uTokens = isRZAct() ? Obj.UTokensRZ : Obj.UTokens;
document.flash.SetVariable("_level1:tokensCollected", uTokens.Value);
}
function getActTokReq(cid)
{
return ((cid == 0 && reviewZone) || (cid != 0 && isRZAct())) ? 6 : 8;
}
function getStarTokens()
{
return getNumTokens(4);
}
function wrtErrMsg(msgStr)
{
e = { m: msgStr, u: document.location.href, l:-1 }
wrtErr(e);
}
function wrtErrAlrt(msg)
{
msg = msg.replace(/,/g,";");
wrtErrMsg(msg);
if (Ini.SiteViewMode)
alert(msg);
}
function getTranslations(clipPath)
{
var transObj;
switch (cid) {
case (14):
transObj = Obj.Lyric;
break;
case (15):
transObj = dataObj.Balloons;
break;
case (31):
transObj = Obj.Conversation.Balloons;
break;
case (20):
transObj = dataObj.Line;
break;
case (32):
transObj = Obj.Storybook.Line;
break;
}
var s = "<?xml version='1.0' encoding='utf-8' ?>";
s += "<transbox>";
s += "<translations ntype='array'>";
for (var i = 0; i < transObj.length; i++)
s += "<trans>" + transObj[i].Xlt + "</trans>";
s += "</translations>";
s += "</transbox>";
setFlashVar("transXMLStr",s,"_level9");
}
function demoDone()
{
if (sampleAct) {
var demoStr = getCookie("demoState");
if (demoStr.length)
demoStr += ",";
demoStr += cid;
setCookie("demoState", demoStr)
}
if (w.demoDone2)
demoDone2();
}
function mapLink()
{
if (!sampleAct) {
if(!inAdv())
history.go(-1);
else if (Obj.Assign && Obj.Assign.ClassId != null) {
var propStr = "FromAct=" + oid;
if (isRZAct()) {
propStr += ",IsReview=true";
Obj.Assign.Id = parseInt(Obj.ReviewAct);
}
tm(Obj.Assign.ClassId, Obj.Assign.Id, null, propStr);
} else if (isPage(WORD_WIZ))
tm(0, Obj.AdvId,null,"FromAct=" + oid);
else {
var msgStr = "mapLink() called and Obj.Assign.ClassId is undefined";
if (isPage(DAILY_SPEAKING))
msgStr += " curIndex = " + curIndex;
wrtErrAlrt(msgStr);
}
}
}
function hasQswf(cid)
{
return (cid == 15 || cid == 20);
}
function constructMainFlash (mainFlash, versionB)
{
var ids = new Array ("15","C","18","D","19","V","20","S","23","X","31","C","32","S");
var c = "";
for (i=0; i<ids.length; i+=2) {
if (""+cid == ids[i])
c = ids[i+1];
}
if (mainFlash == "K" || mainFlash == "E" || mainFlash == "I")
c = mainFlash;
if (c != "") {
var actObj = (cid == 31) ? Obj.Conversation : (cid == 32) ? Obj.Storybook : Obj;
var mStr = "course" + actObj.LNum + "/adventure" + actObj.ANum + "/";
mStr += "KC" + actObj.LNum + "A"
if (actObj.ANum < 10)
mStr += "0";
mStr += actObj.ANum + "a";
if (actObj.TNum < 10)
mStr += "0";
mStr += actObj.TNum;
var nSWF = "";
if (hasQswf(cid)) {
var l = (cid == 15) ? "R" : "Q";
nSWF = mStr + l;
if (versionB)
nSWF += "VB";
nSWF += ".swf";
}
mStr += c;
if (versionB)
mStr += "VB";
mStr += ".swf";
if (nSWF != "")
mStr += "&nextScene=" + gekoPath(VerNum.ActFileVer[1]) + nSWF;
mainFlash = mStr;
}
return mainFlash;
}
function getPrintPopupDimensions()
{//returns width and height of pop-up depending on screen resolution
var h = 728; //max size
var w = 490;
var r = screen.availHeight < 800 ? (screen.availHeight < 700 ? .75 : .85) : 1;
h = Math.floor(h*r);
w = Math.floor(w*r);
return {ratio:r, height:h, width:w};
}
function drawPrintPopupHeader()
{
var s= "";
var s = "<table cellspacing=0 cellpadding=0 border=0 width=100%>";
s+="<tr bgcolor=#0066CC><td width=12 height=20>"+tSpacer(12,20)+"</td><td><font class='whitebld12'>"+print.oePrintCenter+"</font></td><td><div align=right><a href=javascript:closeActivity()><font class='white12'>"+print.close+" </font>";
s+=GImg("printCenterCloseButton.gif");
s+=tSpacer(10,1) + "</div></td></tr>";
s+="<tr><td colspan=3 height=1></td></tr></table>";
return s;
}
function makeGotoString()
{
var s= print.courseAndAdventureNum;
s=s.replace(/<num>/, Obj.LNum);
s=s.replace(/<num>/, Obj.ANum);
return s;
}
function closeActivity()
{
window.close();
}
//Shabeer on 24-May-2010 : Issue#: 120 - START 
//Sridharan - changes made for Issie #120
function evalUnicode(str){try{if ( null == str.match(/\\u/) )return str;str = str.replace(/[\r\n]/g,"") // this line added just to correct some old notes that weren't being unicoded correctly.eval("var s = '" + str + "';")return s}catch(err){return str;}}  
//Shabeer on 24-May-2010 : Issue#: 120 - END
_V="3.0";
