
function errmsg(msg, url, line) {
  var txt;
  txt = "Javascript error has occurred\n";
  txt += "Error message: " + msg + "\n";
  txt += "URL: " + url + "\n";
  txt += "Line #: " + line ;
  alert(txt);
  return true;
}


window.onerror=errmsg;



function build_ferr_menu(menu_num) {

  var title1     = ["Introduction", "Stylistic Elements", "Suggested Reading", "Key to Analyses", "The Author"];
  var title2     = ["Contact the Author"];  // No longer used
  var title3     = ["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22"];
  var title4     = ["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23"];
  var link1      = ["ferrabosco_intro.html", "ferrabosco_style.html", "ferrabosco_readings.html", 
                   "ferrabosco_key.html", "ferrabosco_author.html"];
  var link2      = ["ferrabosco_contact.html"];
  var link3      = ["ferrabosco_01.html","ferrabosco_02.html","ferrabosco_03.html","ferrabosco_04.html","ferrabosco_05.html",
		   "ferrabosco_06.html","ferrabosco_07.html","ferrabosco_08.html","ferrabosco_09.html","ferrabosco_10.html",
		   "ferrabosco_11.html","ferrabosco_12.html","ferrabosco_13.html","ferrabosco_14.html","ferrabosco_15.html",
		   "ferrabosco_16.html","ferrabosco_17.html","ferrabosco_18.html","ferrabosco_19.html","ferrabosco_20.html",
		   "ferrabosco_21.html","ferrabosco_22.html"];
  var link4      = ["ferrabosco_16.html","ferrabosco_14.html","ferrabosco_08.html","ferrabosco_04.html","ferrabosco_02.html",
		   "ferrabosco_03.html","ferrabosco_07.html","ferrabosco_06.html","ferrabosco_05.html","ferrabosco_22.html",
		   "ferrabosco_22.html","ferrabosco_10.html","ferrabosco_15.html","ferrabosco_12.html","ferrabosco_21.html",
		   "ferrabosco_13.html","ferrabosco_09.html","ferrabosco_17.html","ferrabosco_18.html","ferrabosco_19.html",
		   "ferrabosco_11.html","ferrabosco_20.html","ferrabosco_01.html"];
  build_first_line  (   title1, link1, menu_num);
  build_other_lines (1, title3, link3, title1.length, menu_num);
  build_other_lines (2, title4, link4, title1.length, menu_num);  
}


function build_first_line(title, link, menu_num) {
  // Builds first menu line
  var n_items = title.length;
  var item_num;
  var class1, class2, class3;
  if (menu_num === 0) {
    class2 = "class=\"tmSelected\"";
  } else {
    class2 = ""
  }
  document.writeln();
  document.writeln('      <div id="top_menu_background_1">');
  document.writeln('        <ul class="top_menu_left">');
  document.writeln('          <li ' + class2 + '><a href=' + link[0] + '>' + title[0] + '</a></li>');
  document.writeln('        </ul>');
  document.writeln('        <ul class="top_menu_right">');
  for (item_num=1; item_num<n_items; item_num++) {
    class1 = "";
    class2 = "";
    if (item_num === 1)       {class1 = "rmi";}
    if (menu_num == item_num) {class2 = "tmSelected";}
    class3 = class1 + ' ' + class2;
    if (class3.length > 1) {class3 = "class=\"" + class3 + "\"";}
    document.writeln('          <li ', class3, '><a href="', link[item_num], '">',  
      title[item_num],  '</a></li>');
  }
  document.writeln('        </ul>  <!-- end of top_menu -->');
  document.writeln('        <div style="clear:both"></div>');
  document.writeln('      </div> <!-- end top_menu_background_1 -->');

}  // end of build_first_line



// Second line used to be for contacting the author (now deceased)
function build_second_line(title, link, menu_num_adj, menu_num) {
  // Builds second menu line
  var n_items = title.length;
  var item_num;
  var class1, class2, class3;
  document.writeln();
  document.writeln('      <div id="top_menu_background_2">');
  document.writeln('        <ul class="top_menu_right">');
  for (item_num=0; item_num<n_items; item_num++) {
    class1 = "";
    class2 = "";
    if (item_num === 0)       {class1 = "rmi";}
    if (menu_num-menu_num_adj == item_num) {class2 = "tmSelected";}
    class3 = class1 + ' ' + class2;
    if (class3.length > 1) {class3 = "class=\"" + class3 + "\"";}
    document.writeln('          <li ', class3, '><a href="', link[item_num], '">',  
      title[item_num],  '</a></li>');
  }
  document.writeln('        </ul>  <!-- end of top_menu -->');
  document.writeln('        <div style="clear:both"></div>');
  document.writeln('      </div> <!-- end top_menu_background_1 -->');

}  // end of build_second_line



function build_other_lines(linenum, title, link, menu_num_adj, menu_num) {
  // builds third and fourth menu lines
  var n_items = title.length;
  var item_num;
  var curr_line;
  var submenu;
  var linetitle  = [" ", "Fantasias by Musica Britannica #", "Fantasias by Meyer #"];
  var meyer      = [22,4,5,3,8,7,6,2,16,11,20,13,15,1,12,0,17,18,19,21,14,9];
  var class1, class2, class3;
  document.writeln();
  document.writeln('      <div class="menu_label">', linetitle[linenum],'</div>');
  document.writeln('      <div id="top_menu_background_1">');
  document.writeln('        <ul class="ferr_tml">');
  curr_line = 0;
  submenu = menu_num;
  if (menu_num >= menu_num_adj) { submenu = menu_num - menu_num_adj; curr_line = 1;}
  for (item_num=0; item_num<n_items; item_num++) {
    class1 = "";
    class2 = "";
    if (menu_num-menu_num_adj == item_num && curr_line == linenum) {class2 = "tmSelected";}
    class3 = class1 + ' ' + class2;
    if (class3.length > 1) {class3 = "class=\"" + class3 + "\"";}
    if ((submenu == item_num && curr_line == linenum) || 
        (linenum == 2 && menu_num > 4 && item_num == meyer[submenu]) ||
        (linenum == 2 && submenu == 21 && item_num == 10)) {
      class1 = "tmSelected";
    } else {
      class1 = "";
    }
    class3 = class1 + ' ' + class2;
    if (class3.length > 1) {class3 = "class=\"" + class3 + "\"";}
    document.writeln('          <li ', class3, '><a href="', link[item_num], '">',  
      title[item_num],  '</a></li>');
  }
  document.writeln('        </ul>  <!-- end of top_menu -->');
  document.writeln('        <div style="clear:both"></div>');
  document.writeln('      </div> <!-- end top_menu_background_1 -->');

} // end of build_other_lines

