
fSILoaded = false;
var NL = "\n";
var goTrackingInfo = new Object();   
goTrackingInfo.currchapter   = -1; 
goTrackingInfo.currlesson    = -1; 
goTrackingInfo.currtopic     = -1; 
goTrackingInfo.ltrackingtext = "";
goTrackingInfo.trackingicon  = "spacer";
goTrackingInfo.trackingtxt  = "";
goTrackingInfo.currstate     = "";
function iUpdate_Tracking(aChapIdx,aLessIdx,aTopicIdx)
{
with (goTrackingInfo)
{
currchapter = aChapIdx;
currlesson  = aLessIdx;
currtopic   = aTopicIdx;
var cTitleImgName = currchapter>STARTLEVEL1_IDX ? "c"+currchapter : "spacer"; 
var cTitleName = currchapter>STARTLEVEL1_IDX ? currchapter : ""; 
var lTitleImgName = currchapter>STARTLEVEL1_IDX && currlesson!=-1 ? cTitleImgName+"l"+currlesson : "spacer";
var lTitleName = currchapter>STARTLEVEL1_IDX && currlesson!=-1 ? cTitleName+"."+currlesson : "";
var iconImgName   = currchapter>STARTLEVEL1_IDX ? cTitleImgName : "spacer";
var iconName   = currchapter>STARTLEVEL1_IDX ? cTitleName : "";
iconImgName   = currchapter>STARTLEVEL1_IDX && currlesson!=-1  ? lTitleImgName : iconImgName;
iconName   = currchapter>STARTLEVEL1_IDX && currlesson!=-1  ? lTitleName : iconName;
trackingicon = iconImgName;
trackingtxt = iconName;
ltrackingtext = currchapter!=-1 ? SHELL_BOOK_INFO.chaptertitles[currchapter] : "";
ltrackingtext = currtopic!=-1   ? SHELL_BOOK_INFO.chaptertitles[0] : ltrackingtext;
var thechap = currtopic!=-1 ? 0 : currchapter;
var theless = currtopic!=-1 ? currtopic : currlesson
ltrackingtext = currchapter!=-1 && currlesson!=-1  ? ltrackingtext+"<br>"+"<i>"+SHELL_BOOK_INFO.lessontitles[thechap][theless]+"</i>" : ltrackingtext;
}
}	
function iUpdate_Tracking_Icon(doc)
{
/*
if (goTrackingInfo.trackingicon != "" && goTrackingInfo.currchapter>0)
{
if(typeof doc != "undefined")
  doc.images["imgtrackingicon"].src = SHELL_TRACKING_PATH+goTrackingInfo.trackingicon+".gif";
else
  document.images["imgtrackingicon"].src = SHELL_TRACKING_PATH+goTrackingInfo.trackingicon+".gif";
}
else
{
  if(typeof doc != "undefined"){
    if (doc.images["imgtrackingicon"])
    doc.images["imgtrackingicon"].src = SHELL_IMAGE_PATH+"spacer.gif";
  }else{
    if (document.images["imgtrackingicon"])
    document.images["imgtrackingicon"].src = SHELL_IMAGE_PATH+"spacer.gif";
  }
}
*/
if (goTrackingInfo.trackingtxt != "" && goTrackingInfo.currchapter>0){
  if(typeof doc != "undefined"){
     iGetDiv("trackingtxt", doc).innerHTML = goTrackingInfo.trackingtxt;
  }else{
     iGetDiv("trackingtxt", document).innerHTML = goTrackingInfo.trackingtxt;
  }
}else{
  if(typeof doc != "undefined"){
     iGetDiv("trackingtxt", doc).innerHTML = "";
     iGetDiv("trackingcircle", doc).style.background = "url(images/tracking/spacer.gif)";
  }else{
     iGetDiv("trackingtxt", document).innerHTML = "";
     iGetDiv("trackingcircle", document).style.background = "url(images/tracking/spacer.gif)";
  }
}

}
function iUpdate_Breadcrumbs(aCode,aDestination,p)
{
var lRows      = BC_NAV_LAYOUT[aCode].split("|");
var htmlString = "&nbsp;";
for (var i=0; i < lRows.length; i++)
{
var iRow = lRows[i];
if (iRow!="")
{
var lCrumbs = iRow.split(" ");
for (var j=0; j < lCrumbs.length; j++)
{
var jCrumb = lCrumbs[j];
var aValidCrumb = jCrumb.indexOf("PREV")==-1 && jCrumb.indexOf("NEXT")==-1;		    
if (aValidCrumb)
{
var oBC = eval(jCrumb);
var theText = oBC.text;
if(typeof p != "undefined" && p )
  htmlString += "<a class=breadcrumb href=\"javascript:parent.SHELL_HANDLERS."+oBC.handler+"()\" onclick=\"\">"+theText+"</a>&nbsp;>&nbsp;";
else
  htmlString += "<a class=breadcrumb href=\"javascript:SHELL_HANDLERS."+oBC.handler+"()\" onclick=\"\">"+theText+"</a>&nbsp;>&nbsp;";
}
}
}
}
htmlString += BC_NAV_DESTINATIONS[aDestination];
return htmlString;
}
function iGetParams() 
{
var idx = window.location.href.indexOf('?');
var params = new Array();
if (idx != -1) 
{
var pairs = window.location.href.substring(idx+1, window.location.href.length).split('&');
for (var i=0; i<pairs.length; i++) 
{
nameVal = pairs[i].split('=');
params[nameVal[0]] = nameVal[1];
}
}
return params;
}
function iValidate_Integer_Input(aInteger)
{
aInteger.replace(/\s/gi,""); 
if (aInteger.match(/\D/gi))
return false;
return !(isNaN(parseInt(aInteger)));
}
function iValidate_Integer_Range(aInteger, aLow, aHigh)
{
return (aInteger >= aLow) && (aInteger <= aHigh);
}

function iStart_RandomProblem(){

  // Check if a chapter and lesson are passed on the URL, if not, default it to 1
  var params = iGetParams();
  var chapter = unescape(params["chapter"]);
  var topic  = unescape(params["topic"]);
  var lesson  = unescape(params["lesson"]);
  var type  = unescape(params["type"]);
                                                                                                                                 
  var isChapterValid = false;
  var isLessonValid = false;
  var isTopicValid = false;
                                                                                                                                 
  var xChapters = SHELL_BOOK_INFO.chaptertitles.length-1;
  var xLessons;
  var xTopics = SHELL_BOOK_INFO.prebooktitles.length;
        
  var theURL;
  var queryString;                                                                                                                         
  isChapterValid = iValidate_Integer_Input(chapter);
  isChapterValid = isChapterValid ? iValidate_Integer_Range(chapter, STARTLEVEL1_IDX, xChapters) : isChapterValid;
  if (isChapterValid)
  {
    xLessons = SHELL_BOOK_INFO.lessontitles[chapter].length-1;
    isLessonValid = iValidate_Integer_Input(lesson);
    isLessonValid = isLessonValid ? iValidate_Integer_Range(lesson, STARTLEVEL2_IDX, xLessons) : isLessonValid;
  }
  if( typeof params["topic"] !="undefined" ){
                                                                                                                                 
    isTopicValid = iValidate_Integer_Input(topic);
    isTopicValid = isTopicValid ? iValidate_Integer_Range(topic, STARTLEVELPREBOOK_IDX, xTopics) : isTopicValid;
                                                                                                                                 
  }
  // Update Tracking Information
  if (isChapterValid && (type == "T-POST" || type == "S-SEC")){
    if(type == "T-POST"){
      iUpdate_Tracking(chapter,-1,-1);
    }else if(type == "S-SEC"){
      if (isChapterValid && isLessonValid && isTopicValid)
        iUpdate_Tracking(chapter,lesson,topic);
      else if (isChapterValid && isLessonValid && !isTopicValid)
        if (chapter==0)
          iUpdate_Tracking(chapter,lesson,lesson);
        else
          iUpdate_Tracking(chapter,lesson,-1);
      else
        iUpdate_Tracking(1,1,-1);
    }
  }else if(type=="S-SELF"){
    iUpdate_Tracking(-1,-1,-1);
  }else{
    document.location = SHELL_CONTENT_PATH+"chaptermenu.htm?chapter=1";
  }

  //write top banner title and breadcrumb
    rand_title.document.open();
    rand_title.document.write("<html>"+NL+
    "<head>"+NL+
    "<link rel=stylesheet href='shell_styles.css' type='text/css'>"+NL+
    "</head>"+NL+
    "<body class=\"randomproblem\" margintop=\"0\" marginleft=\"0\" marginheight=\"0\" marginwidth=\"0\">"+NL+
    "<!-- Title -->");

    rand_title.document.write(iShellTitleHTML());

    rand_title.document.write("<!-- Navigation (breadcrumb trail) -->"+NL+
    "<table>"+NL+
    "<tr>"+NL+
    "  <td class=breadcrumb>");

    if (type == "T-POST"){
       rand_title.document.write(iUpdate_Breadcrumbs('LNM','CHAPTERTEST',true));
    }else if(type=="S-SELF"){
       rand_title.document.write(iUpdate_Breadcrumbs('CNM','SELFTEST',true));
    }else if( typeof params["standard"] !="undefined" ){
       var sl_state = goTrackingInfo.currstate;
       var sl_standard = params["standard"];
       if(typeof Standards_Number[sl_state][sl_standard] != "undefined")
           BC_STANDARDSLESSON.text = Standards_Number[sl_state][sl_standard];
       if(typeof params["topic"] !="undefined")
          rand_title.document.write(iUpdate_Breadcrumbs('LSTEX','LESSONEXERCISES',true));
       else
          rand_title.document.write(iUpdate_Breadcrumbs('LSEX','LESSONEXERCISES',true));
    }else{
       if(chapter==0)
         rand_title.document.write(iUpdate_Breadcrumbs('TEX','LESSONEXERCISES',true));
       else if (isTopicValid)
         rand_title.document.write(iUpdate_Breadcrumbs('TCNMII','LESSONEXERCISES',true));
       else
         rand_title.document.write(iUpdate_Breadcrumbs('LEX','LESSONEXERCISES',true));
    }
 
    rand_title.document.write("  </td>"+NL+
    "</tr>"+NL+
    "</table>");

    if (type == "T-POST"){
       rand_title.document.write("<table class=randomproblem align=center border=0>"+NL+
       "<tr>"+NL+
       "  <td width=60 valign=\"middle\">"+NL+
       "    <table width=60 height=60><tr><td class=\"shelltracking\" id=\"trackingcircle\"><div class=\"shelltracking\" id=\"trackingtxt\"></div></td></tr></table>"+NL+
       "  </td>"+NL+
       "  <td><h3><br><span class=chaptermenu_header>Chapter "+ chapter + " - Chapter Test</span><br>"+
       goTrackingInfo.ltrackingtext+"</h3></td>"+NL+
       "</tr></table>");
       theURL = SHELL_TEMPLATES_PATH + "viewer/standalone.html?type=T-POST&book="+SHELL_BOOK_INFO["bookcode"]+"&chapter="+chapter;
    }else if(type=="S-SELF"){
       var title = "SELF-TEST";
       if (typeof SHELL_BOOK_INFO["linktext"].MM_SELFTEST != "undefined" )
       title = SHELL_BOOK_INFO["linktext"].MM_SELFTEST;
       rand_title.document.write( "<table border=0 align=center class=selftestmenu>"+
    "<tr><td style=\"padding-top:10\"><h3><span class='selftestmenu_header'>"+title+"</span></h3></td></tr>"+
    "</table>");
       theURL = SHELL_TEMPLATES_PATH + "viewer/standalone.html?type=S-SELF&book="+SHELL_BOOK_INFO["bookcode"]+"&chapsect="+params["chapsect"];
    }else if(type == "S-SEC"){
       var theHeading = chapter==0 ? "Topic "+lesson : "Lesson "+chapter+"."+lesson;
       var nTopic   = goTrackingInfo.currtopic;
       theHeading = nTopic > -1 ? "Topic "+nTopic  : theHeading;

       rand_title.document.write("<table class=randomproblem align=center border=0>"+NL+
       "<tr>"+NL+
       "  <td width=60 valign=\"middle\">"+NL+
       "    <table width=60 height=60><tr><td class=\"shelltracking\" id=\"trackingcircle\"><div class=\"shelltracking\" id=\"trackingtxt\"></div></td></tr></table>"+NL+
       "  </td>"+NL+
       "  <td height=10><br><h3><span class=lessonmenu_header>"+theHeading+" - Practice</span><br>"+
       goTrackingInfo.ltrackingtext+"</h3></td>"+NL+
       "</tr>"+NL+
       "</table>");   
       queryString = nTopic > -1 ? "&chapter=0&section="+nTopic : "&chapter="+chapter+"&section="+lesson;
       theURL = SHELL_TEMPLATES_PATH + "viewer/standalone.html?type=S-SEC&book="+SHELL_BOOK_INFO["bookcode"]+queryString;                                                                                                                                 
    }

    if(type!="S-SELF"){
       rand_title.document.write("<script language=\"JavaScript\">"+NL+
    "// update the tracking icon"+NL+
    " parent.iUpdate_Tracking_Icon(document);"+NL+
    "</script>"+NL+
    "</body></html>");
    }

    rand_title.document.close();

/*
    rand_content.document.open();
    rand_content.document.write("<html>"+NL+
    "<head>"+NL+
    "<link rel=stylesheet href='shell_styles.css' type='text/css'>"+NL+
    "</head>"+NL+
    "<body class=\"randomproblem\" margintop=\"0\" marginleft=\"0\" marginheight=\"0\" marginwidth=\"0\">"+NL+
    "<table align=center>"+NL+
    "<tr>"+NL+
    "<td align=\"center\">"+NL+
    "<IFRAME SRC=\""+ theURL + "\" NAME=\"viewer\" ID=\"viewer\" TITLE=\"Bernoulli Viewer\" width=\"" + SHELL_VIEWER_IFRAME_WIDTH +NL+
    "\" height=\"" + SHELL_VIEWER_IFRAME_HEIGHT + "\" frameborder=\"0\" marginwidth=\"1\" marginheight=\"1\">"+NL+
    "    <!-- Alternate content for non-supporting browsers -->"+NL+
    "    The Bernoulli Viewer"+NL+
    "</IFRAME>"+NL+
    "</td>"+NL+
    "</tr>"+NL+
    "</table>"+NL+
    "</body></html>");

    rand_content.document.close();
*/
    setTimeout("rand_content.location.replace('"+ theURL + "');",500);
}
var report_page_html;

function iCheck_STchapter(form, ch) {
  var starts = STARTLEVEL2_IDX;
  var ends = NSECTIONS[ch];
  var cname,csname;
  var s;
  cname = "c"+ch;
  if(form.elements[cname].checked || iAllsub_checked(form, ch)){  
    for (s=starts; s<=ends; s++){
       csname = "c"+ch+"s"+s;
       if ( SHELL_BOOK_INFO["ntemplates"][ch][s] && SHELL_BOOK_INFO["ntemplates"][ch][s] > 0 )
          form.elements[csname].checked = form.elements[cname].checked;
    }
  }
}

function iAllsub_checked(form,ch){

  var starts = STARTLEVEL2_IDX;
  var ends = NSECTIONS[ch];
  var csname;
  var s;
  for (s=starts; s<=ends; s++){
     csname = "c"+ch+"s"+s;
     if ( SHELL_BOOK_INFO["ntemplates"][ch][s] && SHELL_BOOK_INFO["ntemplates"][ch][s] > 0 && 
          form.elements[csname].checked == false ) return false;
  }
  return true;
}

function iCheck_STsection(form, ch){

  var cname = "c"+ch;
  if( iAllsub_checked(form, ch)) {
     form.elements[cname].checked = true;
  }else{
     form.elements[cname].checked = false;
  }

}

var checklist_str = "";
function iGenerate_SelftestChecklist(){

  var startc = STARTLEVEL1_IDX;
  var endc = STARTLEVEL1_IDX == 0 ? NCHAPTERS - 1 : NCHAPTERS;
  var cbname;
  var starts = STARTLEVEL2_IDX;
  var ends;
  var c,s;   
  for (c=startc; c<=endc; c++){
      cbname = "c"+c;
      checklist_str += "<input name=\""+cbname+"\" type=\"checkbox\"" + 
                       " onClick=\"parent.iCheck_STchapter(this.form,"+c+")\">&nbsp;<b>";
      if (c>0){
          checklist_str += SHELL_BOOK_INFO["levels"][1] + "&nbsp;"+c+"&nbsp;&nbsp;"+
                   SHELL_BOOK_INFO["chaptertitles"][c]+"</b>"+NL;
      }else{
          checklist_str += SHELL_BOOK_INFO["chaptertitles"][c]+"</b>"+NL;
      }
      checklist_str += "<blockquote>"+NL;
      ends = NSECTIONS[c];
      for (s=starts; s<=ends; s++){
          cbname = "c"+c+"s"+s;
          if ((SHELL_BOOK_INFO["ntemplates"][c]!=null)&&(SHELL_BOOK_INFO["ntemplates"][c][s])&&
              (SHELL_BOOK_INFO["ntemplates"][c][s] > 0))
              checklist_str += "<input name=\""+cbname+"\" type=\"checkbox\"" +
                            " onClick=\"parent.iCheck_STsection(this.form,"+c+")\">" + NL;
          else
              checklist_str += "<input name=\""+cbname+"\" type=\"checkbox\" disabled>" +NL;

          if (c>0){
              checklist_str += "&nbsp;" + SHELL_BOOK_INFO["levels"][2] + "&nbsp;"+s+"&nbsp;&nbsp;"+
                     SHELL_BOOK_INFO["lessontitles"][c][s]+"<br>"+NL;
          }else{ 
              checklist_str += "&nbsp;" + SHELL_BOOK_INFO["levels"][3] + "&nbsp;"+s+"&nbsp;&nbsp;"+
                     SHELL_BOOK_INFO["lessontitles"][c][s]+"<br>"+NL;
          }
      }
      checklist_str += "<\/blockquote>"+NL;
  }
}

function iWrite_SelftestChecklist(){
  st_list.document.open();
  st_list.document.write("<html>"+NL+
    "<head>"+NL+
    "<script language='Javascript'>"+NL+
    "var fSelfLoaded = false;"+NL+
    "</script>"+NL+
    "<link rel=stylesheet href='shell_styles.css' type='text/css'>"+NL+
    "</head>"+NL+
    "<body class=\"selftestmenu\" leftmargin=0 topmargin=0 marginwidth=0 marginheight=0>"+NL+
    "<form name='st_form' onSubmit='return false;'>"+NL+
    "<table border=0 cellpadding=0 cellspacing=0 align=center>"+NL+
    "<tr><td>"+
    checklist_str +
    "</td></tr>"+
    "</table>"+
    "</form>"+
    "<script language='JavaScript'>"+NL+
    "fSelfTestLoaded = true;"+NL+
    "</script>"+NL+
    "</body>"+NL+"</html>");
    st_list.document.close();

}

function iSelftestStart(){
  iGenerate_SelftestChecklist();
  setTimeout("iWrite_SelftestTitle()", 50);
  setTimeout("iWrite_SelftestChecklist()", 100);
  setTimeout("iCheckSelfTestReadyState()", 200);
}

function iWrite_SelftestTitle(){

    var title = "SELF-TEST";
    if (typeof SHELL_BOOK_INFO["linktext"].MM_SELFTEST != "undefined" ) 
    title = SHELL_BOOK_INFO["linktext"].MM_SELFTEST;
    st_title.document.open();
    st_title.document.write("<html>"+NL+
    "<head>"+NL+
    "<link rel=stylesheet href='shell_styles.css' type='text/css'>"+NL+
    "</head>"+NL+
    "<body class=selftestmenu leftmargin=0 topmargin=0 marginwidth=0 marginheight=0>"+ NL +
    "<!-- Title -->");

    st_title.document.write(iShellTitleHTML());                                                                                                             
    st_title.document.write("<!-- Navigation (breadcrumb trail) -->"+NL+
    "<table>"+NL+
    "<tr>"+NL+
    "  <td class=breadcrumb>");
    st_title.document.write(iUpdate_Breadcrumbs('CNM','SELFTEST',true));
    st_title.document.write("  </td>"+NL+
    "</tr>"+NL+
    "</table>"+NL+
    "<table border=0 align=center class=selftestmenu>"+
    "<tr><td style=\"padding-top:10\"><h3><span class='selftestmenu_header'>"+
    title + "</span></h3></td></tr>"+
    "<tr><td>"+
    "<div id=\"st_instruction\">Select " + SHELL_BOOK_INFO["levels"][1].toLowerCase() +"s and " + 
    SHELL_BOOK_INFO["levels"][2].toLowerCase() + "s below. " +
    "Then click the \"Start Self-Test\" button.</div>"+
    "</td></tr>"+
    "</table>"+NL+"</body>"+NL+"</html>");
    st_title.document.close();

}

var nSFSafetyNet = 10;
var nSFWaitTries = 0;
var SelfTestFixTmr;
function iCheckSelfTestReadyState(){
  if ((typeof st_list.fSelfTestLoaded!="undefined" && 
    st_list.fSelfTestLoaded) || nSFWaitTries==nSFSafetyNet){
    if (nSFWaitTries<=nSFSafetyNet){
       iSelftest_Buttons();
       clearTimeout(SelfTestFixTmr);
    }
  }else{
    SelfTestFixTmr = setTimeout("iCheckSelfTestReadyState()",300);
    nSFWaitTries++;
  }
}
function iSelftest_Buttons(){
    st_button.document.open();
    st_button.document.write("<html>"+NL+
    "<head>"+NL+
    "<link rel=stylesheet href='shell_styles.css' type='text/css'>"+NL+
    "</head>"+NL+
    "<body class=\"selftestmenu\" leftmargin=0 topmargin=0 marginwidth=0 marginheight=0>"+NL+
    "<table border=0 cellpadding=0 cellspacing=0 height=100% width=100% "+
    "align=center>"+
    "<tr><td class='selftestmenu_bottom' valign='middle' align='center' height='45'>"+NL+
    "<a class=\"chaptermenu\" href=\"javascript:parent.SHELL_HANDLERS.STMcreatselftest();\">"+NL+
    "<img name='st_start' src='images/navbtns/startselftest_off.gif' alt='Start Self-Test' " +
    "onMouseOver='this.src=\"images/navbtns/startselftest_on.gif\";window.status=\"Start Self-Test\";return true;' "+
    "onMouseOut='this.src=\"images/navbtns/startselftest_off.gif\";window.status=\"\"' "+
    "border='0'></a>"+
    "</td></tr>"+
    "</table>"+NL+
    "</body>"+NL+"</html>");
    st_button.document.close();
}

function iNo_STLesson_checked(form){

  var startc = STARTLEVEL1_IDX;
  var endc = STARTLEVEL1_IDX == 0 ? NCHAPTERS - 1 : NCHAPTERS;
  var cbname;
  var starts = STARTLEVEL2_IDX;
  var ends;
  var c,s;
  for (c=startc; c<=endc; c++){
      cbname = "c"+c;
      if(form.elements[cbname].checked) {
        return false;
      }         
      ends = NSECTIONS[c];    
      for(s=starts;s<=ends;s++){    
        cbname = "c"+c+"s"+s;
        if ( SHELL_BOOK_INFO["ntemplates"][c][s] && SHELL_BOOK_INFO["ntemplates"][c][s] > 0 &&
             form.elements[cbname].checked ) {
          return false;
        }
      }                                                                                                                  
  }
  return true;
}

function iGetDiv(id, doc){
     var mydiv;
    if( doc == null) doc= this.document;
    if(document.all && !document.getElementById){
      mydiv = doc.all[id];
    }else if(document.getElementById){
      mydiv = doc.getElementById(id);
    }
    return mydiv;
}

function iShellTitleHTML(){

var htmlString = ""+
"<table cellpadding=0 cellspacing=0 border=0 width=100% background=\""+SHELL_IMAGE_PATH+"top/bgnd.gif\">"+NL+
"<tr>"+NL+
"  <td background=\""+SHELL_IMAGE_PATH+"top/bgnd.gif\"><nobr>&nbsp;<img src=\""+SHELL_IMAGE_PATH+
"top/left.gif\" alt=\"\" border=0 ></nobr></td>"+NL+
"  <td background=\""+SHELL_IMAGE_PATH+"top/bgnd.gif\" width=\"100%\">&nbsp;</td>"+NL+
"  <td background=\""+SHELL_IMAGE_PATH+"top/bgnd.gif\"><nobr><img src=\""+SHELL_IMAGE_PATH+
"top/right.gif\" alt=\"\" border=0 >&nbsp;</nobr></td>"+NL+
"</tr>"+NL+
"</table>";

return htmlString;
}

function iUpdate_State_Tracking(){
   var parms = iGetParams();
   var page = document.location.href;
   if( typeof parms["state"] != "undefined" ){
     goTrackingInfo.currstate = parms["state"]; 
     q_state = "?state=" + parms["state"];
     a_state = "&state=" + parms["state"];
   }else if(page.indexOf("mainmenu.htm") > -1 || page.indexOf("chaptermenu.htm") > -1){
     var st = iGet_state_cookie();
     if( st != "undefined" && st != null && st !="" ){
       goTrackingInfo.currstate = st; 
       q_state = "?state=" + st;
       a_state = "&state=" + st;
     }else{
       //force to map    
       //document.location = SHELL_CONTENT_PATH+"usmap.htm";
       //iUpdate_Tracking(-1,-1,-1); 
       //this is for CA only
       st = "CA";
       iSet_state_cookie(st);
       goTrackingInfo.currstate = st; 
       q_state = "?state=" + st;
       a_state = "&state=" + st;
     } 
   }
   if( SHELL_IS_FROMCD && goTrackingInfo.currstate != "undefined" && goTrackingInfo.currstate != ""){
     var sp = iGet_statestandard_cookie(goTrackingInfo.currstate);
     if(sp!= "undefined" && sp != null && sp !="") state_standard_file = sp;   
   } 
}

var q_state = "";
var a_state = "";
var state_standard_file = "default";

iUpdate_State_Tracking();

function iInclude_State_Standard(doc){
  var st = goTrackingInfo.currstate;
  if( st != "undefined" && st != null && st !=""){
   var std = '<script language="JavaScript" src="helpers/content/jslib/state_standards_' + st + '.js"></script>';
   if(state_standard_file != "default"){
     std = '<script language="JavaScript" src="' + state_standard_file + '"></script>';
   }
   //alert("state standard file:"+std);
   doc.write(std);
  }
}

function iInclude_Online_State_Standard(doc){
  var st = goTrackingInfo.currstate;
  if( st != "undefined" && st != null && st !=""){
   var std;
   if( SHELL_ONLINE_STANDARD_URL != "undefined"){
     std = '<script language="JavaScript" src="' + SHELL_ONLINE_STANDARD_URL + 'state_standards_' + st + '.js"></script>';
   }
//   alert("iInclude_Online_State_Standard st="+st + " write:"+std);
   doc.write(std);
  }
}

function iInclude_Installed_State_Standard(doc){
   var file = Installed_Standard_File.indexOf("file:///") > -1 ? "" : "file:///";
   var std = '<script language="JavaScript" src="' + file + Installed_Standard_File + '"></script>';
//   alert("iInclude_Installed_State_Standard write:"+std);
   doc.write(std);
}

function iIs_State_Standard_File(f){
//alert(f);
 var dot = f.indexOf(".js");
 var ss = f.indexOf("state_standards_");
//alert("ss="+ss+"  dot="+dot);
 if( ss < 0 || dot < 0 ){
   Install_Standard_Win.alert("This is not a correct state standard file.");
   return false;
 }else{
   var sti = dot - 2;
   st = f.substring(sti,dot);
//   alert("state is:"+st);
   Installed_Standard_State = st;
   return true;
 }
}

function iSet_state_cookie(state){
  var today = new Date();
  var expires_date = new Date(today.getTime() + (365 * 86400000));
  var name = "MLCD_" + SHELL_BOOK_INFO["bookcode"] + "_state";
  iSet_Cookie(name,state,expires_date);
}

function iGet_state_cookie(){
  var name = "MLCD_" + SHELL_BOOK_INFO["bookcode"] + "_state";
  var sck = iGet_Cookie(name);
  return sck;
}

function iSet_statestandard_cookie(state, path){
  var today = new Date();
  var expires_date = new Date(today.getTime() + (365 * 86400000));
  var name = "MLCD_" + SHELL_BOOK_INFO["bookcode"] + "_state_standard_" + state;
//alert("set standard cookie name="+name+"   value="+path);
  iSet_Cookie(name,path,expires_date);
}
                                                                                                                                          
function iGet_statestandard_cookie(state){
  var name = "MLCD_" + SHELL_BOOK_INFO["bookcode"] + "_state_standard_" + state;
  var stck = iGet_Cookie(name);
//alert("get standard cookie:"+stck);
  return stck;
}
      
function iDelete_statestandard_cookie(state){
  var name = "MLCD_" + SHELL_BOOK_INFO["bookcode"] + "_state_standard_" + state;
  iDelete_Cookie(name);
}
                                                                                                                        
function iGet_Cookie(name) {
    var start = document.cookie.indexOf(name+"=");
    var len = start+name.length+1;
    if ((!start) && (name != document.cookie.substring(0,name.length)))
                return null;
    if (start == -1) return null;
    var end = document.cookie.indexOf(";",len);
    if (end == -1) end = document.cookie.length;
    return unescape(document.cookie.substring(len,end));
}
                                                                                                                              
function iSet_Cookie(name, value, expires) {
    document.cookie = name + "=" +escape(value) +
        ( (expires) ? ";expires=" + expires.toGMTString() : "" ) ;
}

function iDelete_Cookie(name,path,domain) {
    if (iGet_Cookie(name)) document.cookie = name + "=" +
       ( (path) ? ";path=" + path : "") +
       ( (domain) ? ";domain=" + domain : "") +
       ";expires=Thu, 01-Jan-70 00:00:01 GMT";
}

function iValidate_State_Standard_File(){
    var st = goTrackingInfo.currstate;
//alert("state="+st);
    if(typeof sub_mainmenu.State_Standards_Name != "undefined" && typeof sub_mainmenu.State_Standards_Name[st] != "undefined" ){
//      alert("local file found, File_Update_Number=" + sub_mainmenu.File_Update_Number);
    }else{
//      alert("local file not found");
      iDelete_statestandard_cookie(st); 
    }
}

function iCheck_For_Update(){
//alert("Coming soon.");
   //sub_standardmenu.location.href = "sub_standardmenu.htm"+q_state;
   setTimeout("iCompare_State_Standard_File()",1500);
}

function iCompare_State_Standard_File(){
    var st = goTrackingInfo.currstate;
//alert("state="+st);
    if(typeof sub_standardmenu.State_Standards_Name != "undefined" && typeof sub_standardmenu.State_Standards_Name[st] != "undefined" ){
//      alert("online file found");
      SHELL_ONLINE_STANDARD_FOUND = true;
      if(sub_standardmenu.File_Update_Number > File_Update_Number ) SHELL_ONLINE_STANDARD_UPDATED = true;
    }else{
//      alert("online file not found");
    }

    if(SHELL_ONLINE_STANDARD_UPDATED){
       var st = goTrackingInfo.currstate;
       var url = SHELL_ONLINE_STANDARD_URL + 'state_standards_' + st + '.js';
       var upd_win = window.open("", "upd_win", "top=200,left=200,width=400,height=200,menubar=no,scrollbars=no,resizable=no");
       upd_win.document.open();
       upd_win.document.write(
'<html><head>'+
'<title>Cehck for Updates</title>'+
'<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">'+
'</head>'+
'<body bgcolor="#FFFFFF" text="#000000">'+
'<center>'+
'<form>'+
'<table border="0" cellpadding="5">'+
'<tr><td align="center"><h3><b>Standard Updates</b></h3>'+
'</td></tr>'+
'<tr><td>'+
'Standard update is available, please click <a href="'+url+'">here</a> to save the standard file to your computer.'+
'</td></tr>'+
'<tr><td align="center" height="25">&nbsp;'+
'</td></tr>'+
'<tr><td align="center" height="25">'+
'<input type="button" value="Close" onClick="window.close(self);" style="width:80">'+
'</td></tr>'+
'</table>'+
'</form>'+
'</center>'+
'</body>'+
'</html>'
      );
      upd_win.document.close();
      upd_win.focus();
       
    }else{
       if(SHELL_ONLINE_STANDARD_FOUND)
         alert("The Standards are current.");
       else
         alert("Couldn't find the online standard file, please make sure the internet connection is available.");
    }
}

function iInstall_Update(){
//alert("Coming soon.");
//return;
    Install_Standard_Win = window.open("", "iu_win", "top=200,left=200,width=400,height=260,menubar=no,scrollbars=no,resizable=no");
    Install_Standard_Win.document.open();
    Install_Standard_Win.document.write(
'<html><head>'+
'<title>Find Updates</title>'+
'<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">'+
'</head>'+
'<body bgcolor="#FFFFFF" text="#000000">'+
'<center>'+
'<form name="install_update_form">'+
'<table border="0" cellpadding="5">'+
'<tr><td align="center"><h3><b>Find Standard Updates</b></h3>'+
'</td></tr>'+
'<tr><td>'+
'Use "Browse" to locate and select the standard file saved on your computer, then click the "Select" button.'+
'</td></tr>'+
'<tr><td align="center">'+
'<input type="file" name="standard_file">'+NL+
'</td></tr>'+
'<tr><td align="center" height="5">&nbsp;'+
'</td></tr>'+
'<tr><td align="center">'+
'<input type="button" value="Select" onClick="opener.iInstall_Standard_Update(this.form);" style="width:80">'+
'&nbsp;&nbsp;<input type="button" value="Cancel" onClick="window.close(self);" style="width:80">'+
'</td></tr>'+
'</table>'+
'</form>'+
'</center>'+
'</body>'+
'</html>'
      );
      Install_Standard_Win.document.close();
      Install_Standard_Win.focus();
}

var Install_Standard_Win;
var Installed_Standard_State = "";
var Installed_Standard_File = "";
function iInstall_Standard_Update(fm){
      var uf = fm.standard_file.value;
//alert("iInstall_Standard_Update uf="+uf);
      if(uf == ""){
         Install_Standard_Win.alert("Please locate the file first.");
         return;
      }
      var st = goTrackingInfo.currstate;
      if(iIs_State_Standard_File(uf)){
          var save = false;
          if(Installed_Standard_State != st){
            save = Install_Standard_Win.confirm("The standard file is the " + State_Name[Installed_Standard_State] + 
              " state standard file" + ", the currently selected state is " + State_Name[st] + ", do you still want to install?");
            if(save){
               iComplete_Install_standard(Installed_Standard_State, uf);             
            }else{
               Install_Standard_Win.focus();
            }
          }else{
            Installed_Standard_File = uf;
            sub_installstandard.location.href = "sub_installstandard.htm"+q_state;
            //setTimeout("iCompare_Installed_Standard()",1500);
          }      
      }else{
          Install_Standard_Win.focus();
      }
}     

function iCompare_Installed_Standard(){
    var st = goTrackingInfo.currstate;
    var uf = Installed_Standard_File;
//alert("iCompare_Installed_Standard st="+st + "  uf="+uf);
    var save = false;
//alert( "ifr loc="+ sub_installstandard.location.href + " sn=" + sub_installstandard.State_Standards_Name[st] );
    if(typeof sub_installstandard.State_Standards_Name != "undefined" && 
       typeof sub_installstandard.State_Standards_Name[st] != "undefined" ){
     // alert("installed file found, i number="+sub_installstandard.File_Update_Number+"  num="+File_Update_Number);
      if(sub_installstandard.File_Update_Number < File_Update_Number ){
         save = Install_Standard_Win.confirm("The standard file is older than current standard file, do you still want to install?");
      }else if(sub_installstandard.File_Update_Number == File_Update_Number){
         save = Install_Standard_Win.confirm("The standard file is same as current standard file, do you still want to install?");
      }else{
        save = true;
      }
      if(save){
         iComplete_Install_standard(st,uf);
         window.location.reload();
         Install_Standard_Win.focus();
      }
    }else{
      //alert("installed file not found");
    }      
}

function iComplete_Install_standard(st,uf){ 
         iSet_statestandard_cookie(st, uf);
         Install_Standard_Win.document.open();
         Install_Standard_Win.document.clear();
         Install_Standard_Win.document.write(
'<html><head>'+
'<title>Install Updates</title>'+
'<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">'+
'</head>'+
'<body bgcolor="#FFFFFF" text="#000000">'+
'<center>'+
'<form name="install_update_form">'+
'<table border="0" cellpadding="5">'+
'<tr><td align="center"><h3><b>Install Standard Updates</b></h3>'+
'</td></tr>'+
'<tr><td>'+
'The Standards of State ' + State_Name[st] + ' have been successfully installed.'+
'</td></tr>'+
'<tr><td align="center" height="15">&nbsp;'+
'</td></tr>'+
'<tr><td align="center">'+
'<input type="button" value="Close" onClick="window.close(self);" style="width:80">'+
'</td></tr>'+
'</table>'+
'</form>'+
'</center>'+
'</body>'+
'</html>'
      );

         Install_Standard_Win.document.close();
         Install_Standard_Win.focus();
}

fSILoaded = true;


