<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML xmlns="http://www.w3.org/TR/REC-html40" xmlns:v = 
"urn:schemas-microsoft-com:vml" xmlns:o = 
"urn:schemas-microsoft-com:office:office" xmlns:w = 
"urn:schemas-microsoft-com:office:word" xmlns:m = 
"http://schemas.microsoft.com/office/2004/12/omml"><HEAD><TITLE>Having problems duplicating nodes</TITLE>
<META http-equiv=Content-Type content="text/html; charset=us-ascii">
<META content="MSHTML 6.00.6000.16735" name=GENERATOR><!--[if !mso]>
<STYLE>v\:* {
        BEHAVIOR: url(#default#VML)
}
o\:* {
        BEHAVIOR: url(#default#VML)
}
w\:* {
        BEHAVIOR: url(#default#VML)
}
.shape {
        BEHAVIOR: url(#default#VML)
}
</STYLE>
<![endif]-->
<STYLE>@font-face {
        font-family: SimSun;
}
@font-face {
        font-family: SimSun;
}
@font-face {
        font-family: Calibri;
}
@font-face {
        font-family: Tahoma;
}
@font-face {
        font-family: Verdana;
}
@font-face {
        font-family: @SimSun;
}
@page Section1 {size: 612.0pt 792.0pt; margin: 72.0pt 72.0pt 72.0pt 72.0pt; }
P.MsoNormal {
        FONT-SIZE: 12pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman","serif"
}
LI.MsoNormal {
        FONT-SIZE: 12pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman","serif"
}
DIV.MsoNormal {
        FONT-SIZE: 12pt; MARGIN: 0cm 0cm 0pt; FONT-FAMILY: "Times New Roman","serif"
}
A:link {
        COLOR: blue; TEXT-DECORATION: underline; mso-style-priority: 99
}
SPAN.MsoHyperlink {
        COLOR: blue; TEXT-DECORATION: underline; mso-style-priority: 99
}
A:visited {
        COLOR: purple; TEXT-DECORATION: underline; mso-style-priority: 99
}
SPAN.MsoHyperlinkFollowed {
        COLOR: purple; TEXT-DECORATION: underline; mso-style-priority: 99
}
SPAN.EmailStyle17 {
        COLOR: #1f497d; FONT-FAMILY: "Calibri","sans-serif"; mso-style-type: personal-reply
}
.MsoChpDefault {
        FONT-SIZE: 10pt; mso-style-type: export-only
}
DIV.Section1 {
        page: Section1
}
</STYLE>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1" />
 </o:shapelayout></xml><![endif]--></HEAD>
<BODY lang=EN-GB vLink=purple link=blue>
<DIV dir=ltr align=left><SPAN class=980191719-04122008><FONT face=Verdana 
color=#0000ff size=2>I think the problem is where I take the quiz part of 
templateData and assign it to quizData:</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=980191719-04122008><FONT face=Verdana 
color=#0000ff size=2></FONT></SPAN>&nbsp;</DIV>
<DIV dir=ltr align=left><SPAN class=980191719-04122008><FONT face="Courier New" 
size=2>quizData = templateData.quiz[0]; // non-randomized 
questions</FONT></SPAN></DIV>
<DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
<DIV dir=ltr align=left><SPAN class=980191719-04122008><FONT face=Verdana 
size=2><FONT face="Courier New">randomQuizData = templateData.quiz[0]; // for 
randomized questions<BR>randomQuizData.question.randomize(); // randomize the 
list of questions</FONT>.<BR></FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=980191719-04122008><FONT face=Verdana 
color=#0000ff size=2>All of the questions are between the &lt;quiz&gt; 
&lt;/quiz&gt; tags, and there is only one set of those. To indicate which lesson 
the question is for, I have an attribute for the &lt;question&gt; tag 
(lesson="1", lesson="2", etc.). Then I try to get just the lesson 1 questions 
with:</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=980191719-04122008><FONT face=Verdana 
color=#0000ff size=2></FONT></SPAN>&nbsp;</DIV>
<DIV dir=ltr align=left><SPAN class=980191719-04122008><FONT face="Courier New" 
size=2>// create arrays for lesson 1 quiz<BR>lesson1quiz = new Array 
();<BR>wrapupQbuilt = new Array (); // for questions<BR>wrapupBuilt = new Array 
(); // for question answers<BR>wrapupTracking = new Array ();<BR>wrapupAnswers = 
new Array ();</FONT></SPAN></DIV>
<DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
<DIV dir=ltr align=left><SPAN class=980191719-04122008><FONT face="Courier New" 
size=2>lesson1Counter = 0; // counter for number of 
questions</FONT></SPAN></DIV>
<DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
<DIV dir=ltr align=left><SPAN class=980191719-04122008><FONT face="Courier New" 
size=2>// loop through all questions to get lesson 1<BR>for (i = 0; i &lt; 
quizData.question.length; i++) {</FONT></SPAN></DIV>
<DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
<DIV dir=ltr align=left><SPAN class=980191719-04122008><FONT face="Courier New" 
size=2>&nbsp; if (quizData.question[i].lesson == '1') {<BR>&nbsp; 
<BR>&nbsp;&nbsp;&nbsp; lesson1quiz[lesson1Counter].question = 
quizData.question[i];<BR>&nbsp;&nbsp;&nbsp; 
lesson1Counter++;</FONT></SPAN></DIV>
<DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
<DIV dir=ltr align=left><SPAN class=980191719-04122008><FONT face="Courier New" 
size=2>&nbsp; } // end of quizData.question[i] conditional</FONT></SPAN></DIV>
<DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
<DIV dir=ltr align=left><SPAN class=980191719-04122008><FONT face="Courier New" 
size=2>&nbsp; myCounter = i + 1;</FONT></SPAN></DIV>
<DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
<DIV dir=ltr align=left><SPAN class=980191719-04122008><FONT face="Courier New" 
size=2>} // end of for loop</FONT></SPAN></DIV>
<DIV><FONT face="Courier New"></FONT>&nbsp;</DIV>
<DIV dir=ltr align=left><SPAN class=980191719-04122008><FONT face="Courier New" 
size=2>// create the right number of questions<BR>if 
(wrapupQbuilt[lesson1Counter] != 'true') {<BR>&nbsp; 
icon.nextSibling.childNodes[6].childNodes[0].childNodes[2].childNodes[0].childNodes[1].duplicate(lesson1Counter-1);<BR>}<BR>wrapupQbuilt[lesson1Counter] 
= 'true';</FONT></SPAN></DIV>
<DIV><SPAN class=980191719-04122008><FONT face=Verdana color=#0000ff 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=980191719-04122008><FONT face=Verdana color=#0000ff size=2>But 
when I print lesson1quiz.length for debugging purposes, it prints 0, I was 
expecting it to print 2. Yet if I hard code the index of the lesson1quiz to get 
a question, it does appear. Hard code 0 and it pulls the second question, hard 
code 1 and it prints the first question (backwards from what I expected, but the 
order isn't important), so there must be something in the lesson1quiz 
array.</FONT></SPAN></DIV>
<DIV><SPAN class=980191719-04122008><FONT face=Verdana color=#0000ff 
size=2></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN class=980191719-04122008><FONT face=Verdana color=#0000ff 
size=2>Paul</DIV>
<DIV dir=ltr align=left><BR></DIV></FONT></SPAN><BR>
<BLOCKQUOTE dir=ltr 
style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #0000ff 2px solid; MARGIN-RIGHT: 0px">
  <DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left>
  <HR tabIndex=-1>
  <FONT face=Tahoma size=2><B>From:</B> xerte-bounces@lists.nottingham.ac.uk 
  [mailto:xerte-bounces@lists.nottingham.ac.uk] <B>On Behalf Of </B>Julian 
  Tenney<BR><B>Sent:</B> Thursday, December 04, 2008 12:58 AM<BR><B>To:</B> 
  Xerte discussion list<BR><B>Subject:</B> RE: [Xerte] Having problems 
  duplicating nodes<BR></FONT><BR></DIV>
  <DIV></DIV>
  <DIV class=Section1>
  <P class=MsoNormal><SPAN 
  style="FONT-SIZE: 11pt; COLOR: #1f497d; FONT-FAMILY: 'Calibri','sans-serif'">What 
  you describe sounds right. I think the index is correct (and that&#8217; backed up 
  by the fact you use the same var to display the current page number to the 
  user).<o:p></o:p></SPAN></P>
  <P class=MsoNormal><SPAN 
  style="FONT-SIZE: 11pt; COLOR: #1f497d; FONT-FAMILY: 'Calibri','sans-serif'"><o:p>&nbsp;</o:p></SPAN></P>
  <P class=MsoNormal><SPAN 
  style="FONT-SIZE: 11pt; COLOR: #1f497d; FONT-FAMILY: 'Calibri','sans-serif'">So 
  if that is indeed correct, then it must be an issue with reading the data out 
  of the xml data. Are you using th index in the right part of the templateData 
  path?<o:p></o:p></SPAN></P>
  <P class=MsoNormal><SPAN 
  style="FONT-SIZE: 11pt; COLOR: #1f497d; FONT-FAMILY: 'Calibri','sans-serif'"><o:p>&nbsp;</o:p></SPAN></P>
  <DIV>
  <DIV 
  style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0cm; BORDER-TOP: #b5c4df 1pt solid; PADDING-LEFT: 0cm; PADDING-BOTTOM: 0cm; BORDER-LEFT: medium none; PADDING-TOP: 3pt; BORDER-BOTTOM: medium none">
  <P class=MsoNormal style="MARGIN-LEFT: 36pt"><B><SPAN lang=EN-US 
  style="FONT-SIZE: 10pt; FONT-FAMILY: 'Tahoma','sans-serif'">From:</SPAN></B><SPAN 
  lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Tahoma','sans-serif'"> 
  xerte-bounces@lists.nottingham.ac.uk 
  [mailto:xerte-bounces@lists.nottingham.ac.uk] <B>On Behalf Of </B>Paul 
  Swanson<BR><B>Sent:</B> Wednesday, December 03, 2008 10:04 PM<BR><B>To:</B> 
  Xerte discussion list<BR><B>Subject:</B> RE: [Xerte] Having problems 
  duplicating nodes<o:p></o:p></SPAN></P></DIV></DIV>
  <P class=MsoNormal style="MARGIN-LEFT: 36pt"><o:p>&nbsp;</o:p></P>
  <P class=MsoNormal style="MARGIN-LEFT: 36pt"><SPAN 
  style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'">Well, 
  apparently I was. I had the duplicate code in the entry frame of lesson 1, so 
  I guess it was executing each time I moved from page to page in lesson 1? I 
  moved the code to just above the interface icon (so it can only run once), 
  made the necessary changes to the childNodes structure, and it was still 
  acting funny. I then found that I had both a variable and an icon id of 
  'lesson1Counter' so it's no wonder it was acting inconsistently. ;o)&nbsp; I 
  fixed that and now I'm consistently getting the correct number of question 
  nodes.</SPAN><o:p></o:p></P>
  <P class=MsoNormal style="MARGIN-LEFT: 36pt">&nbsp;<o:p></o:p></P>
  <P class=MsoNormal style="MARGIN-LEFT: 36pt"><SPAN 
  style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'">I 
  still have one problem though: it only displays one question. When I get to 
  the first question node, it displays the question correctly, the second node 
  displays the same question, and if I back up to the first question node, it's 
  blank.&nbsp; Here is the code where I get the question 
  number:</SPAN><o:p></o:p></P>
  <P class=MsoNormal style="MARGIN-LEFT: 36pt">&nbsp;<o:p></o:p></P>
  <P class=MsoNormal style="MARGIN-LEFT: 36pt"><SPAN 
  style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'">questIndex = 
  icon.parentNode.index() - 1;</SPAN><o:p></o:p></P>
  <P class=MsoNormal style="MARGIN-LEFT: 36pt">&nbsp;<o:p></o:p></P>
  <P class=MsoNormal style="MARGIN-LEFT: 36pt"><SPAN 
  style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'">The 
  script icon with this code is the first icon in the proto Wrap Up page (what I 
  was calling the question node above), and the proto Wrap Up page is&nbsp;the 
  second&nbsp;child of the wrap up framework (the Entry Frame being the first 
  child), so questIndex should be 0 for the first question, and 1 for the next, 
  right? I'm using questIndex+1 for a page counter, and that is correctly 
  displaying 1 for question 1 and 2 for question 2, but the questions don't 
  change. Any insight on that?</SPAN><o:p></o:p></P>
  <P class=MsoNormal style="MARGIN-LEFT: 36pt">&nbsp;<o:p></o:p></P>
  <P class=MsoNormal style="MARGIN-LEFT: 36pt"><SPAN 
  style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'">Thanks 
  for all your help!</SPAN><o:p></o:p></P>
  <P class=MsoNormal style="MARGIN-LEFT: 36pt">&nbsp;<o:p></o:p></P>
  <P class=MsoNormal style="MARGIN-LEFT: 36pt"><SPAN 
  style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Verdana','sans-serif'">P</SPAN><o:p></o:p></P>
  <BLOCKQUOTE 
  style="BORDER-RIGHT: medium none; PADDING-RIGHT: 0cm; BORDER-TOP: medium none; PADDING-LEFT: 4pt; PADDING-BOTTOM: 0cm; MARGIN: 5pt 0cm 5pt 3.75pt; BORDER-LEFT: blue 1.5pt solid; PADDING-TOP: 0cm; BORDER-BOTTOM: medium none">
    <P class=MsoNormal style="MARGIN-LEFT: 36pt"><o:p>&nbsp;</o:p></P>
    <DIV class=MsoNormal style="MARGIN-LEFT: 36pt; TEXT-ALIGN: center" 
    align=center><SPAN lang=EN-US>
    <HR align=center width="100%" SIZE=2>
    </SPAN></DIV>
    <P class=MsoNormal 
    style="MARGIN-BOTTOM: 12pt; MARGIN-LEFT: 36pt; MARGIN-RIGHT: 0cm; mso-margin-top-alt: 0cm"><B><SPAN 
    lang=EN-US 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Tahoma','sans-serif'">From:</SPAN></B><SPAN 
    lang=EN-US style="FONT-SIZE: 10pt; FONT-FAMILY: 'Tahoma','sans-serif'"> 
    xerte-bounces@lists.nottingham.ac.uk 
    [mailto:xerte-bounces@lists.nottingham.ac.uk] <B>On Behalf Of </B>Julian 
    Tenney<BR><B>Sent:</B> Wednesday, December 03, 2008 12:45 PM<BR><B>To:</B> 
    Xerte discussion list<BR><B>Subject:</B> RE: [Xerte] Having problems 
    duplicating nodes</SPAN><SPAN lang=EN-US><o:p></o:p></SPAN></P>
    <DIV id=idOWAReplyText71498>
    <DIV>
    <P class=MsoNormal style="MARGIN-LEFT: 36pt"><SPAN 
    style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Arial','sans-serif'">You're 
    not duplicating icons more than once are you? When you call duplicate, you 
    are manipulatingthe xml in the rlo file:</SPAN><o:p></o:p></P></DIV>
    <DIV>
    <P class=MsoNormal style="MARGIN-LEFT: 36pt">&nbsp;<o:p></o:p></P></DIV>
    <DIV>
    <P class=MsoNormal style="MARGIN-LEFT: 36pt"><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">//this makes n + 
    1 children on icon.nextSibling:</SPAN><o:p></o:p></P></DIV>
    <DIV>
    <P class=MsoNormal style="MARGIN-LEFT: 36pt"><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">icon.nextSibling.firstChild.duplicate(n);</SPAN><o:p></o:p></P></DIV>
    <DIV>
    <P class=MsoNormal style="MARGIN-LEFT: 36pt">&nbsp;<o:p></o:p></P></DIV>
    <DIV>
    <P class=MsoNormal style="MARGIN-LEFT: 36pt"><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">//call it again 
    (perhaps because we revisit this page):</SPAN><o:p></o:p></P></DIV>
    <DIV>
    <P class=MsoNormal style="MARGIN-LEFT: 36pt"><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">icon.nextSibling.firstChild.duplicate(n);</SPAN><o:p></o:p></P></DIV>
    <DIV>
    <P class=MsoNormal style="MARGIN-LEFT: 36pt">&nbsp;<o:p></o:p></P></DIV>
    <DIV>
    <P class=MsoNormal style="MARGIN-LEFT: 36pt"><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">//how many 
    children?</SPAN><o:p></o:p></P></DIV>
    <DIV>
    <P class=MsoNormal style="MARGIN-LEFT: 36pt"><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">debug(icon.nextSibling.childNodes.length); 
    //duh. Twice as many as I needed.</SPAN><o:p></o:p></P></DIV>
    <DIV>
    <P class=MsoNormal style="MARGIN-LEFT: 36pt">&nbsp;<o:p></o:p></P></DIV>
    <DIV>
    <P class=MsoNormal style="MARGIN-LEFT: 36pt"><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">//so, only let 
    the duplicate run once, 'cos if we revisit a page, we'll end up with too 
    many xml nodes...</SPAN><o:p></o:p></P></DIV>
    <DIV>
    <P class=MsoNormal style="MARGIN-LEFT: 36pt"><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">if (someFlag != 
    true){</SPAN><o:p></o:p></P></DIV>
    <DIV>
    <P class=MsoNormal style="MARGIN-LEFT: 36pt"><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">&nbsp; 
    duplicate(....make icons here...);</SPAN><o:p></o:p></P></DIV>
    <DIV>
    <P class=MsoNormal style="MARGIN-LEFT: 36pt"><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">&nbsp; someFlag = 
    true;</SPAN><o:p></o:p></P></DIV>
    <DIV>
    <P class=MsoNormal style="MARGIN-LEFT: 36pt"><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">}</SPAN><o:p></o:p></P></DIV>
    <DIV>
    <P class=MsoNormal style="MARGIN-LEFT: 36pt">&nbsp;<o:p></o:p></P></DIV>
    <DIV>
    <P class=MsoNormal style="MARGIN-LEFT: 36pt"><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">//i tend to do it 
    like this, so duplicate code in icon will only ever run 
    once:</SPAN><o:p></o:p></P></DIV>
    <DIV>
    <P class=MsoNormal style="MARGIN-LEFT: 36pt"><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">if 
    (icon.attributes.built != 'true'){</SPAN><o:p></o:p></P></DIV>
    <DIV>
    <P class=MsoNormal style="MARGIN-LEFT: 36pt"><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">&nbsp; 
    //duplicate and other logic here</SPAN><o:p></o:p></P></DIV>
    <DIV>
    <P class=MsoNormal style="MARGIN-LEFT: 36pt"><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">&nbsp; 
    icon.attributes.built = 'true';</SPAN><o:p></o:p></P></DIV>
    <DIV>
    <P class=MsoNormal style="MARGIN-LEFT: 36pt"><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">}</SPAN><o:p></o:p></P></DIV>
    <DIV>
    <P class=MsoNormal style="MARGIN-LEFT: 36pt">&nbsp;<o:p></o:p></P></DIV>
    <DIV>
    <P class=MsoNormal style="MARGIN-LEFT: 36pt"><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">sort that out and 
    the see if you've got any issues left. The thing is that 'icon' refers to 
    the underlying xml node - that is key to understanding what's happening with 
    duplicate(); make sure the code that builds the piece only runs 
    once.</SPAN><o:p></o:p></P></DIV>
    <DIV>
    <P class=MsoNormal style="MARGIN-LEFT: 36pt">&nbsp;<o:p></o:p></P></DIV>
    <DIV>
    <P class=MsoNormal style="MARGIN-LEFT: 36pt"><SPAN 
    style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'">J</SPAN><o:p></o:p></P></DIV></DIV>
    <DIV>
    <P class=MsoNormal 
  style="MARGIN-LEFT: 36pt">&nbsp;<o:p></o:p></P></DIV></BLOCKQUOTE></DIV></BLOCKQUOTE></BODY></HTML>