<?xml version="1.0" encoding="UTF-8"?>
<Module>
  <ModulePrefs 
    height="235"
    title="Bible Reader"
    description="Share your love and your Christian faith through this beloved book of gospel and truth. Read the words of Jesus Christ, the stories of the Old Testament, and the revelations of prophecy. Perfect for church or youth ministry websites as well as personal blogs. The Bible (KJV, 1611)."
    author="Barry Welch"
    author_email="btwelchy@gmail.com"
    thumbnail="http://bibleapps3.appspot.com/images/biblereader_screen.jpg"
    screenshot="http://bibleapps3.appspot.com/images/biblereader_screen.jpg">
    <Require feature="opensocial-0.8" />
    <Require feature="views" />
    <Require feature="dynamic-height" />
    <Require feature="skins" />
  </ModulePrefs>

<Content type="html" preferred_width="300" preferred_height="235">
<![CDATA[

<style type="text/css">
 {
   font-family: arial,sans-serif;
   overflow-y: hidden;
   overflow-x: hidden;
 }
 .verysmalltext{
   font-size: 9px;
 }
 .smalltext{
   font-size: 10px;
 }
 .medsmalltext{
   font-size: 11px;
 }
 .medtext{
   font-size: 14px;
 }
 .largetext{
   font-size: 17px;
 }

 a:link {
   color: #2A5DB0;
 }
 a:visited {
   color: #2A5DB0;
 }
 a:hover {
   color: #2A5DB0;
   text-decoration: none;
 }
 a:active {
   color: #2A5DB0;
 }
 table td{
   vertical-align: top;
 }
 .middle{
   vertical-align: middle;
 }
 </style>

<div id='app_wide' style='height: 225px; overflow: hidden; border: 1px solid #ccc;'>
  <div id="canvas_app">
    <div class='medtext' style='background-color: #e0ecff; border-bottom: 1px solid #ccc; height: 40px;'>
      <div style='overflow: hidden; font-weight: bold;'>
        <table cellspacing=0 cellpadding=0 style='width: 100%;'>
          <tr>
            <td id='app_title' class='medsmalltext' style='text-align: left; width: 60%; padding: 2px 2px 2px 2px;'>

            </td>
          </tr>
        </table>
      </div>
    </div>

    <div id='list_view' style='border-bottom: 1px solid #ccc; height: 160px;'>
      <div id='content' class='medtext' style='background-color: white; overflow: auto; height: 160px;'>
        <table cellspacing=0 cellpadding=0 style='width: 100%; margin-top: 20px;'>
          <tr>
            <td class='medsmalltext' style='text-align: center;' valign='top'>
              Loading Bible Reader
              <br/>
              <span id='loading_image'></span>
            </td>
          </tr>
        </table>
      </div>
    </div>

    <div class='medsmalltext' style='background-color: #e0ecff; height: 25px;'>
      <div id='paging_controls' style='overflow: hidden; padding: 3px 4px 4px 6px;'>
        <table cellspacing=0 cellpadding=0 style='width: 100%;'>
          <tr>
            <td id='about_link' class='medsmalltext' style='text-align: left; width: 50%'>
              <!-- <a href="#" target="_blank">About</a> -->
              <a href="Javascript:void(0)" onclick="renderNoAutoStart(); return false;">About</a>
            </td>
            <td id='next_previous_links' class='medsmalltext' style='text-align: right; width: 50%'>
            </td>
          </tr>
        </table>
      </div>
    </div>
  </div>
</div>

<script type='text/javascript'>
  var gadget_height = 225;
  document.getElementById('app_wide').style.height=gadget_height+'px';
  
  var countdown_seconds = 5;
  var current_chapter = null;
  var base_url = "http://bibleapps3.appspot.com/";
  var manual = false;
  var caller_url = null;

  var collections = [["The Old Testament", [["Gen", [31,25,24,26,32,22,24,22,29,32,32,20,18,24,21,16,27,33,38,18,34,24,20,67,34,35,46,22,35,43,55,32,20,31,29,43,36,30,23,23,57,38,34,34,28,34,31,22,33,26]],["Exo", [22,25,22,31,23,30,25,32,35,29,10,51,22,31,27,36,16,27,25,26,36,31,33,18,40,37,21,43,46,38,18,35,23,35,35,38,29,31,43,38]],["Lev", [17,16,17,35,19,30,38,36,24,20,47,8,59,57,33,34,16,30,37,27,24,33,44,23,55,46,34]],["Num", [54,34,51,49,31,27,89,26,23,36,35,16,33,45,41,50,13,32,22,29,35,41,30,25,18,65,23,31,40,16,54,42,56,29,34,13]],["Deut", [46,37,29,49,33,25,26,20,29,22,32,32,18,29,23,22,20,22,21,20,23,30,25,22,19,19,26,68,29,20,30,52,29,12]],["Josh", [18,24,17,24,15,27,26,35,27,43,23,24,33,15,63,10,18,28,51,9,45,34,16,33]],["Judg", [36,23,31,24,31,40,25,35,57,18,40,15,25,20,20,31,13,31,30,48,25]],["Ruth", [22,23,18,22]],["1 Sam", [28,36,21,22,12,21,17,22,27,27,15,25,23,52,35,23,58,30,24,42,15,23,29,22,44,25,12,25,11,31,13]],["2 Sam", [27,32,39,12,25,23,29,18,13,19,27,31,39,33,37,23,29,33,43,26,22,51,39,25]],["1 Kgs", [53,46,28,34,18,38,51,66,28,29,43,33,34,31,34,34,24,46,21,43,29,53]],["2 Kgs", [18,25,27,44,27,33,20,29,37,36,21,21,25,29,38,20,41,37,37,21,26,20,37,20,30]],["1 Chron", [54,55,24,43,26,81,40,40,44,14,47,40,14,17,29,43,27,17,19,8,30,19,32,31,31,32,34,21,30]],["2 Chrons", [17,18,17,22,14,42,22,18,31,19,23,16,22,15,19,14,19,34,11,37,20,12,21,27,28,23,9,27,36,27,21,33,25,33,27,23]],["Ezra", [11,70,13,24,17,22,28,36,15,44]],["Neh", [11,20,32,23,19,19,73,18,38,39,36,47,31]],["Esth", [22,23,15,17,14,14,10,17,32,3]],["Job", [22,13,26,21,27,30,21,22,35,22,20,25,28,22,35,22,16,21,29,29,34,30,17,25,6,14,23,28,25,31,40,22,33,37,16,33,24,41,30,24,34,17]],["Psalm", [6,12,8,8,12,10,17,9,20,18,7,8,6,7,5,11,15,50,14,9,13,31,6,10,22,12,14,9,11,12,24,11,22,22,28,12,40,22,13,17,13,11,5,26,17,11,9,14,20,23,19,9,6,7,23,13,11,11,17,12,8,12,11,10,13,20,7,35,36,5,24,20,28,23,10,12,20,72,13,19,16,8,18,12,13,17,7,18,52,17,16,15,5,23,11,13,12,9,9,5,8,28,22,35,45,48,43,13,31,7,10,10,9,8,18,19,2,29,0,7,8,9,4,8,5,6,5,6,8,8,3,18,3,3,21,26,9,8,24,13,10,7,12,15,21,10,20,14,9,6]],["Prov", [33,22,35,27,23,35,27,36,18,32,31,28,25,35,33,33,28,24,29,30,31,29,35,34,28,28,27,28,27,33,31]],["Eccles", [18,26,22,16,20,12,29,17,18,20,10,14]],["Song", [17,17,11,16,16,13,13,14]],["Isa", [31,22,26,6,30,13,25,22,21,34,16,6,22,32,9,14,14,7,25,6,17,25,18,23,12,21,13,29,24,33,9,20,24,17,10,22,38,22,8,31,29,25,28,28,25,13,15,22,26,11,23,15,12,17,13,12,21,14,21,22,11,12,19,12,25,24]],["Jer", [19,37,25,31,31,30,34,22,26,25,23,17,27,22,21,21,27,23,15,18,14,30,40,10,38,24,22,17,32,24,40,44,26,22,19,32,21,28,18,16,18,22,13,30,5,28,7,47,39,46,64,34]],["Lam", [22,22,66,22,22]],["Ezek", [28,10,27,17,17,14,27,18,11,22,25,28,23,23,8,63,24,32,14,49,32,31,49,27,17,21,36,26,21,26,18,32,33,31,15,38,28,23,29,49,26,20,27,31,25,24,23,35]],["Dan", [21,49,30,37,31,28,28,27,27,21,45,13]],["Hos", [11,23,5,19,15,11,16,14,17,15,12,14,16,9]],["Joel", [20,32,21]],["Amos", [15,16,15,13,27,14,17,14,15]],["Obad", [21]],["Jonah", [17,10,10,11]],["Micah", [16,13,12,13,15,16,20]],["Nahum", [15,13,19]],["Hab", [17,20,19]],["Zeph", [18,15,20]],["Haggai", [15,23]],["Zech", [21,13,10,14,11,15,14,23,17,12,17,14,9,21]],["Mal", [14,17,18,6]]]],["The New Testament", [["Matt", 
[25,23,17,25,48,34,29,34,38,42,30,50,58,36,39,28,27,35,30,34,46,46,39,51,46,75,66,20]],["Mark", [45,28,35,41,43,56,37,38,50,52,33,44,37,72,47,20]],["Luke", [80,52,38,44,39,49,50,56,62,42,54,59,35,35,32,31,37,43,48,47,38,71,56,53]],["John", [51,25,36,54,47,71,53,59,41,42,57,50,38,31,27,33,26,40,42,31,25]],["Acts", [26,47,26,37,42,15,60,40,43,48,30,25,52,28,41,40,34,28,41,38,40,30,35,27,27,32,44,31]],["Rom", [32,29,31,25,21,23,25,39,33,21,36,21,14,23,33,27]],["1 Cor", [31,16,23,21,13,20,40,13,27,33,34,31,13,40,58,24]],["2 Cor", [24,17,18,18,21,18,16,24,15,18,33,21,14]],["Gal", [24,21,29,31,26,18]],["Ephes", [23,22,21,32,33,24]],["Phil", [30,30,21,23]],["Col", [29,23,25,18]],["1 Thess", [10,20,13,18,28]],["2 Thess", [12,17,18]],["1 Tim", [20,15,16,16,25,21]],["2 Tim", [18,26,17,22]],["Titus", [16,15,15]],["Philem", [25]],["Heb", [14,18,19,16,14,20,28,13,28,39,40,29,25]],["James", [27,26,18,17,20]],["1 Pet", [25,25,22,19,14]],["2 Pet", [21,22,18]],["1 John", [10,29,24,21,21]],["2 John", [13]],["3 John", [14]],["Jude", [25]],["Rev", [20,29,22,11,14,17,17,13,21,11,19,17,18,20,8,21,18,24,21,15,27,21]]]]];

  var req_params = {};
  req_params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.DOM;
  req_params[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.GET;
  req_params[gadgets.io.RequestParameters.AUTHORIZATION] = gadgets.io.AuthorizationType.NONE;

  function Chapter(_book_title, _chapter_num, _verses){
    this.book_title = _book_title;
    this.chapter_num = _chapter_num;
    this.verses = _verses;
  }

  function Verse(_verse_num, _text){
    this.verse_num = _verse_num;
    this.text = _text;
  }

  function getRandomChapter(){
    var collection_num = Math.floor(Math.random()*2+1);
    var book_num = Math.floor(Math.random()*getBooks(collection_num).length+1);
    var chapter_num = Math.floor(Math.random()*getChapters(collection_num, book_num).length+1);

    getElem('collections').selectedIndex = (collection_num-1);
    populate_books_for_selected_collection();
    getElem('books').selectedIndex = (book_num-1);
    populate_chapters_for_selected_book();
    getElem('chapters').selectedIndex = (chapter_num-1);
  
    getNewChapterAndStartReading(collection_num, book_num, chapter_num);
  }
  
  function getChapterForSelection(start_countdown){
    getElem('countdown_clock').innerHTML="<span class='verysmalltext'>Stopped | <a href='Javascript:void(0)' onclick=\"manual=false; nextVerse(0)\">Start</a></span>";
    if(start_countdown){
      manual = false;
    } else {
      manual = true;
    }
  
    var collection_num = getElem('collections').selectedIndex+1;
    var book_num = getElem('books').selectedIndex+1;
    var chapter_num = getElem('chapters').selectedIndex+1;
  
    getNewChapterAndStartReading(collection_num, book_num, chapter_num);
  }

  function getNewChapterAndStartReading(collection_num, book_num, chapter_num){  
    var url = base_url+"/mfa/fetch_chapter?n="+Math.random()+"&collection_num="+collection_num+"&book_num="+book_num+"&chapter_num="+chapter_num+"&url="+escape(caller_url);
    gadgets.io.makeRequest(url, function(xmlData){
       xmlData = xmlData.data;

       var verse_schema = ["num", "txt"];
       var verses = get_objects_from_xml(xmlData.getElementsByTagName('verse'), verse_schema);
       
       var book_title = get_book_name(collection_num, book_num);
       var chapter_verses = new Array();
       
       // Set the current chapter
       for(var i=0; i<verses.length; i++){
         var verse = verses[i];
         var num = verse[0];
         var txt = verse[1];

         chapter_verses.push(new Verse(num, txt));
       }
       
       // Set the current chapter object and run the reader
       current_chapter = new Chapter(book_title, chapter_num, chapter_verses);
       
       startReader();
    }, req_params);
  }

  function nextVerse(verse_index){
    if(verse_index < current_chapter.verses.length){
      renderVerses(verse_index);
      
      if(!manual){
        startCountdownTimer(getSecondsForVerseLength(verse_index), verse_index);
      }

    } else if(verse_index == current_chapter.verses.length){
      renderComplete();

      getElem('countdown_clock').innerHTML="";
      getElem('next_previous_links').innerHTML="";
    }
  }

  function sameVerse(verse_index){
    if(verse_index < current_chapter.verses.length){
      renderVerses(verse_index);
      
      if(!manual){
        startCountdownTimer(getSecondsForVerseLength(verse_index), verse_index);
      }

    } else if(verse_index == current_chapter.verses.length){
      renderComplete();

      getElem('countdown_clock').innerHTML="";
      getElem('next_previous_links').innerHTML="";
    }
  }
  
  function manualPreviousVerse(verse_index){
    manual = true;
    getElem('countdown_clock').innerHTML="<span class='verysmalltext'>Stopped | <a href='Javascript:void(0)' onclick=\"manual=false; nextVerse("+(verse_index)+")\">Start</a></span>";
    nextVerse(verse_index);
  }

  function manualNextVerse(verse_index){
    manual = true;
    getElem('countdown_clock').innerHTML="<span class='verysmalltext'>Stopped | <a href='Javascript:void(0)' onclick=\"manual=false; nextVerse("+(verse_index)+")\">Start</a></span>";
    nextVerse(verse_index);
  }

  function stop(verse_index){
    manual = true;
    getElem('countdown_clock').innerHTML="<span class='verysmalltext'>Stopped | <a href='Javascript:void(0)' onclick=\"manual=false; nextVerse("+(verse_index)+")\">Start</a></span>";
  }

  function getSecondsForVerseLength(verse_index){
    var return_val = 5;
    var len = current_chapter.verses[verse_index].length;
    
    if(len > 120){
      return_val = 10;
    } else if(len > 80){
      return_val = 8;
    } else if(len > 40){
      return_val = 5;
    } else {
      return_val = 4;
    }

    return return_val;
  }

  function startCountdownTimer(secs, verse_index){
    countdown(secs, secs, verse_index);
  }

  function countdown(original_seconds, seconds_remaining, verse_index){
    if(manual){
      // do nothing
    } else {
      if(seconds_remaining == 0){
        getElem('countdown_clock').innerHTML="";
        nextVerse((verse_index+1));

      } else {
        var expired = (seconds_remaining / original_seconds) * 100;
        var remain = 100 - expired;

        getElem('countdown_clock').innerHTML="next in <b>"+seconds_remaining+"</b>s&nbsp;&nbsp;<a href='Javascript:void(0)' onclick=\"stop("+verse_index+");\">Stop</a>";
        setTimeout("countdown("+original_seconds+","+(seconds_remaining-1)+","+verse_index+")", 1000);
      }
    }
  }

  function renderVerses(verse_index){
    var previous_verse = current_chapter.verses[(verse_index-1)];
    var current_verse = current_chapter.verses[verse_index];
    var next_verse = current_chapter.verses[(verse_index+1)];
    
    var html = new Array();
    
    html.push("<div>");
    html.push("  <table class='verses' cellspacing=0 cellpadding=3 style='width: 100%; table-layout: fixed;'>");
    if(previous_verse == null){
      html.push("    <tr>");
      html.push("      <td class='medsmalltext middle' style='text-align: center;  height: 30px; width: 15px; color: gray; background-color: #DDD; overflow: hidden;'>");
      html.push("        --");
      html.push("      </td>");
      html.push("      <td class='medsmalltext middle' style='text-align: left; height: 30px; width: 99%; color: gray; background-color: #EAEAEA; overflow: hidden;'>");
      html.push("        --------------");
      html.push("      </td>");
      html.push("    </tr>");

    } else {
      html.push("    <tr>");
      html.push("      <td class='medsmalltext middle' style='text-align: center; height: 30px; width: 15px; color: gray; background-color: #DDD; overflow: hidden;'>");
      html.push("        <b>"+previous_verse.verse_num+"</b>");
      html.push("      </td>");
      html.push("      <td class='medsmalltext middle' style='text-align: left; height: 30px; width: 99%; color: gray; background-color: #EAEAEA; overflow: hidden;'>");
      html.push("        "+previous_verse.text.substring(0, 17)+" <b>...</b>");
      html.push("      </td>");
      html.push("    </tr>");
    }

    html.push("    <tr>");
    html.push("      <td class='medsmalltext' style='text-align: center; background-color: #e0ecff; height: 100px; width: 15px; overflow: hidden;'>");
    html.push("        <b>"+current_verse.verse_num+"</b>");
    html.push("      </td>");
    html.push("      <td class='medsmalltext' style='text-align: left; height: 100px; width: 99%; overflow: hidden;'>");
    html.push("        "+current_verse.text);
    html.push("      </td>");
    html.push("    </tr>");
    
    if(next_verse == null){
      html.push("    <tr>");
      html.push("      <td class='medsmalltext middle' style='text-align: center; height: 30px; width: 15px; color: gray; background-color: #DDD; overflow: hidden;'>");
      html.push("        --");
      html.push("      </td>");
      html.push("      <td class='medsmalltext middle' style='text-align: left;  height: 30px; width: 99%; color: gray; background-color: #EAEAEA; overflow: hidden;'>");
      html.push("        --------------");
      html.push("      </td>");
      html.push("    </tr>");

    } else {
      html.push("    <tr>");
      html.push("      <td class='medsmalltext middle' style='text-align: center; height: 30px; width: 15px; color: gray; background-color: #DDD; overflow: hidden;'>");
      html.push("        <b>"+next_verse.verse_num+"</b>");
      html.push("      </td>");
      html.push("      <td class='medsmalltext middle' style='text-align: left;  height: 30px; width: 99%; color: gray; background-color: #EAEAEA; overflow: hidden;'>");
      html.push("        "+next_verse.text.substring(0, 17)+" <b>...</b>");
      html.push("      </td>");
      html.push("    </tr>");
    }
    html.push("  </table>");
    html.push("</div>");

    var content = getElem('content');
    content.innerHTML=html.join("");
    
    var navHTML = new Array();
    if(verse_index>0){
      navHTML.push("<a href='Javascript:void(0)' onclick=\"manualPreviousVerse("+(verse_index-1)+")\">« Prev</a>");
    } else {
      navHTML.push("« Prev");
    }
    navHTML.push("&nbsp;");
    navHTML.push("<a href='Javascript:void(0)' onclick=\"manualNextVerse("+(verse_index+1)+")\">Next »</a>");

    getElem('next_previous_links').innerHTML=navHTML.join("");
    
    adjh();
  }

  function adjh(){
    gadgets.window.adjustHeight(gadget_height);
  }

  function renderComplete(){
    var content = getElem('content');
    
    var html = new Array();
    
    html.push("<div class='smalltext' style='padding: 0px;'>");
    html.push("  <div class='medtext' style='text-align: center;'>");
    html.push("    You read the whole chapter...<br/>");
    html.push("    <b>"+getRandomEncouragement()+"</b>");
    html.push("  </div>");
    html.push("  <div style='text-align: center; margin-top: 8px;'>");
    html.push("    <input type='button' onclick=\"manual=false; nextChapter(); return false;\" value='Next Chapter' class='medtext' />");
    html.push("    <br/>");
    html.push("    <input type='button' onclick=\"manual=false; startReader(); return false;\" value='Same Chapter' class='medtext' />");
    html.push("    <br/>");
    html.push("    <input type='button' onclick=\"manual=false; getRandomChapter(); return false;\" value='Random' class='medtext' />");
    html.push("  </div>");
    html.push("  <div style='text-align: center; margin-top: 8px;'>");
    html.push("    <a id='crdlink' href='Javascript:void(0)' onclick=\"getElem('crdlink').style.display='none';getElem('mailtolink').style.display='';return false;\">Comments / Requests / Donate</a><a id='mailtolink' href='mailto:mailto:halim.label@gmail.com' style='display:none;'>halim.label@gmail.com</a>");
    html.push("  </div>");
    html.push("</div>");
    
    content.innerHTML=html.join("");
  }

  function renderNoAutoStart(){
    stop(0);
    
    var content = getElem('content');
    
    var html = new Array();
    
    html.push("<div class='smalltext' style='padding: 0px;'>");
    html.push("  <div class='medtext' style='text-align: center; margin-top: 8px;'>");
    html.push("    <b>Bible Reader</b><br/>");
    html.push("    Select a book/chapter above or...<br/>");
    html.push("  </div>");
    html.push("  <div style='text-align: center; margin-top: 4px;'>");
    html.push("    <input type='button' onclick=\"manual=false; getRandomChapter(); return false;\" value='Random Chapter' class='medtext' />");
    html.push("  </div>");
    html.push("  <div style='text-align: center; margin-top: 4px;'>");
    html.push("    <input type='button' onclick=\"manual=false; jump_to(2, 6, 8); return false;\" value='Romans 8' class='medtext' />");
    html.push("  </div>");
    //html.push("  <div style='text-align: center; margin-top: 4px;'>");
    //html.push("    <input type='button' onclick=\"manual=false; jump_to(1, 20, 1); return false;\" value='Proverbs' class='medtext' />");
    //html.push("  </div>");
    html.push("  <div style='text-align: center; margin-top: 4px;'>");
    html.push("    by <a id='mailtolink' href='mailto:halim.label@gmail.com'>halim.label</a> (for hire)");
    html.push("    <br/><br/>Get more gadgets at:<br/><a href='#' target='_blank'>http://tvlokalind.blogspot.com</a>");
    html.push("  </div>");
    html.push("</div>");
    
    content.innerHTML=html.join("");

    collection_select= getElem("collections");
    book_select = getElem("books");
    chapter_select = getElem("chapters");

    collection_select.selectedIndex = 0;

    populate_books_for_selected_collection();
    book_select.selectedIndex = 0;

    populate_chapters_for_selected_book();
    chapter_select.selectedIndex = 0;
    
    adjh();
  }

  
  function getRandomEncouragement(){
    var msg = '';
    var which = Math.floor(Math.random()*10+1);
    if(which == 1){
      msg = "Good Job!";
    } else if(which == 2){
      msg = "Wow! Great!";
    } else if(which == 3){
      msg = "Are you sure you read it? :)";
    } else if(which == 4){
      msg = "That was fast!";
    } else if(which == 5){
      msg = "Wow! What did you learn?";
    } else if(which == 6){
      msg = "Great! You should do this daily!";
    } else if(which == 7){
      msg = "What was your favorite part?";
    } else if(which == 8){
      msg = "Great! What will you read next?";
    } else if(which == 9){
      msg = "Super! Did you memorize that?";
    } else if(which == 10){
      msg = "Terrific! Want to read it again?";
    }

    return msg;
  }

  function nextChapter(){
    collection_select= getElem("collections");
    book_select = getElem("books");
    chapter_select = getElem("chapters");

    // If at the very end of the text
    if(collection_select.selectedIndex == collection_select.options.length-1 &&
       book_select.selectedIndex == book_select.options.length-1 &&
       chapter_select.selectedIndex == chapter_select.options.length-1){

       collection_select.selectedIndex = 0;

       populate_books_for_selected_collection();
       book_select.selectedIndex = 0;

       populate_chapters_for_selected_book();
       chapter_select.selectedIndex = 0;
 
    // If at the end of the collection
    } else if(book_select.selectedIndex == book_select.options.length-1 &&
              chapter_select.selectedIndex == chapter_select.options.length-1){

       collection_select.selectedIndex += 1;

       populate_books_for_selected_collection();
       book_select.selectedIndex = 0;

       populate_chapters_for_selected_book();
       chapter_select.selectedIndex = 0;

    // If at the end of the book
    } else if(chapter_select.selectedIndex == chapter_select.options.length-1){
       book_select.selectedIndex += 1;

       populate_chapters_for_selected_book();
       chapter_select.selectedIndex = 0;
      
    } else {
       chapter_select.selectedIndex += 1;
    }

    getChapterForSelection(true);
  }

  function startReader(){
    nextVerse(0);
  }
  
  function getElem(id){
    return document.getElementById(id);
  }

  function sortByFirstName(a, b) {
    var x = a[1].toLowerCase();
    var y = b[1].toLowerCase();
    return ((x < y) ? -1 : ((x > y) ? 1 : 0));
  }

  function get_objects_from_xml(recordNodes, schema_info){
    var records = new Array;

    for (var i=0; i<recordNodes.length; i++){
      var columnList = recordNodes.item(i).childNodes;

      // Create an array for each record
      records[i] = new Array;

      for(var k=0; k<schema_info.length; k++){

        if(typeof(schema_info[k]) == "string"){
          for(var j=0; j<columnList.length; j++){
            var columnName = columnList.item(j).nodeName;

            if(columnName == schema_info[k]){
               if(columnList.item(j).firstChild != null){
                 records[i][k] = columnList.item(j).firstChild.nodeValue;
               } else {
                 records[i][k] = "";
               }
            }
          }
        } else if(typeof(schema_info[k]) == "object"){
          for(var j=0; j<columnList.length; j++){
            var columnName = columnList.item(j).nodeName;

            if(columnName == schema_info[k][0]){
              var subschema_info = schema_info[k][2]; // Index 2 = Actual array of column elements
              var subrecord_nodes = columnList.item(j).getElementsByTagName(schema_info[k][1]) // Index 1 = Tag name
              records[i][k] = get_objects_from_xml(subrecord_nodes, subschema_info);
            }
          }
        }
      }
    }

    return records;
  }

  function get_book_name(collection_num, book_num){
    return collections[collection_num-1][1][book_num-1][0];
  } 

  function getChapters(collection_num, book_num){
    ch = collections[collection_num-1][1][book_num-1][1];
    return ch;
  }

  function getBooks(collection_num){
    return collections[collection_num-1][1];
  }

  function change_collection(){
    populate_books_for_selected_collection();
    populate_chapters_for_selected_book();
    getChapterForSelection(false);
  }

  function change_book(){
    populate_chapters_for_selected_book();
    getChapterForSelection(false);
  }

  function change_chapter(){
    getChapterForSelection(false);
  }

  function populate_books_for_selected_collection(){
    collection_select= getElem("collections");

    book_select= getElem("books");
    book_select.length=0;

    var books = getBooks(collection_select.options[collection_select.selectedIndex].value);
    for(var i=0; i<books.length; i++){
      var bk_title = books[i][0];
      book_select.options[book_select.options.length]=new Option(bk_title, i+1, false, false);
    }
  }

  function populate_chapters_for_selected_book(){
    collection_select= getElem("collections");
    book_select= getElem("books");

    chapter_select = getElem("chapters");
    chapter_select.length=0;

    // Select the first chapter
    var chapters = getChapters(collection_select.options[collection_select.selectedIndex].value, book_select.options[book_select.selectedIndex].value);
    for(var i=0; i<chapters.length; i++){
      var ch_title = ''+(i+1);
      chapter_select.options[chapter_select.options.length]=new Option(ch_title, i+1, false, false);
    }
  }

 function get_caller_url(){
   var returl = document.referrer;
   return returl;
 }
 
 function jump_to(collection_num, book_num, chapter_num){
    stop(0);
      
    getElem('collections').selectedIndex = (collection_num-1);
    populate_books_for_selected_collection();
    getElem('books').selectedIndex = (book_num-1);
    populate_chapters_for_selected_book();
    getElem('chapters').selectedIndex = (chapter_num-1);
  
    getNewChapterAndStartReading(collection_num, book_num, chapter_num);
 }

  _IG_RegisterOnloadHandler(function() {
    getElem('loading_image').innerHTML="<img src='"+gadgets.io.getProxyUrl('http://bibleapps3.appspot.com/images/bible_anim.gif')+"' />";
    caller_url = get_caller_url();
  
    var html = new Array();
    html.push("<table cellspacing=0 cellpadding=0 style='width: 100%;'>");
    html.push("  <tr>");
    html.push("    <td valign='middle' style='width: 1%;'>");
    html.push("      <select id='collections' class='verysmalltext' name='collection' onchange=\"change_collection();\" style='width: 45px;'>");
    html.push("        <option value='1'>Old Tst.</option>");
    html.push("        <option value='2'>New Tst.</option>");
    html.push("      </select>");
    html.push("      <select id='books' class='verysmalltext' onchange=\"change_book();\" style='width: 56px;' /></select>");
    html.push("      <select id='chapters' class='verysmalltext' onchange=\"change_chapter();\" style='width: 34px;'></select>");
    html.push("    </td>");
    html.push("  </tr>");
    html.push("  <tr>");
    html.push("    <td class='verysmalltext' valign='middle' style='width: 100%; text-align: left; padding: 2px;'>");
    html.push("      <span id='countdown_clock' class='verysmalltext'></span>");
    html.push("    </td>");
    html.push("  </tr>");
    html.push("</table>");
    getElem('app_title').innerHTML=html.join("");

    //getRandomChapter();
    renderNoAutoStart();
  });
</script>

<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("UA--1");
pageTracker._trackPageview();
} catch(err) {}</script>

]]>
</Content>
</Module>