// START ================================================================
// General funktions for displaying/hiding of "display=none" rows of tables
// e.g. translation, romaji, bunpou.

// Existiert document.all? Wenn ja, dann kann man die Inhalte von Zeilen einer Tabelle
// beliebig neu setzen. Es wird nur eine einzige Tabelle angelegt, in der Kanji,
// Translation und romaji angezeigt werden.

//Test var bNavigator_DOM = (document.all != null) && location.href.indexOf("bNavigator_DOM=0")==-1 && false
//Test bNavigator_DOM = false
//Test var bNavigator_DOM = 1

var iTabellenAnzahl_MAX = 100

var aiTabelleNr_iItemKind2bDisplay = new Array(iTabellenAnzahl_MAX)
for (var iTabelleNr=0; iTabelleNr<iTabellenAnzahl_MAX; iTabelleNr++) {
 aiTabelleNr_iItemKind2bDisplay[iTabelleNr] = new Array(0,1) // iItemKind=0 = Bunpou display=0, iItemKind=1 = Romaji display=1
}


//if (bNavigator_DOM) {
// window.onLoad = "fn_hide_bunpou()"

// document.writeln("<style>")
// for (var iTabelleNr=0; iTabelleNr<iTabellenAnzahl; iTabelleNr++) {
//  document.writeln("#tr" + iTabelleNr + " {display:none}")
// }
// document.writeln("</style>")
//}



var abDisplayBunpou2sImgSrc = new Array("../Icons/open16x16.gif","../Icons/close16x16.gif")
var aiItemKind_bDisplay2sImgSrc = new Array(
 new Array("../Icons/open16x16.gif","../Icons/close16x16TR.gif"), // Bunpou
 new Array("../Icons/r_RTR.gif","../Icons/r_RnotTR.gif")  // Romaji
)


var abDisplay2sDisplay = new Array("none","")
var aiItemKind2sIdPrefix = new Array("tr","r") // "trXYZ"=Bunpou, "rXYZ"=Romaji


function fn_show_hide_DisplayItem(iTabelleNr, iItemKind, bDisplay) {
//alert("tr" + iTabelleNr + " " + (document.all["tr" + iTabelleNr].length > 0))
 if (bNavigator_DOM) {
  var sDisplay = abDisplay2sDisplay[bDisplay]
  var sId = aiItemKind2sIdPrefix[iItemKind] + iTabelleNr
//alert("Test: " + sId + " " + document.all[sId])
  if (bNavigator_Firefox) {
   var aoTableRows = document.getElementsByName(sId)
//alert(bNavigator_Firefox + " " + bNavigator_DOM + " X" + sId + 'X ' + aoTableRows + ' ' + aoTableRows.length)
  } else {
   var aoTableRows = document.all[sId]
   if (aoTableRows.length > 0) {
   } else {
    aoTableRows = new Array(document.all[sId])
   }
  }


  if (aoTableRows.length > 0) {
   // Es existieren mehrere Tabellen-Zeilen mit id=trX
   for (i=0; i<aoTableRows.length; i++) {
    aoTableRows[i].style.display = sDisplay
   }
  } else {
   // Es existiert genau eine Tabellen-Zeile (oder keine) mit id=trX
//   document.all[sId].style.display = sDisplay
  }

  var sIdIcon = aiItemKind2sIdPrefix[iItemKind] + "Icon" + iTabelleNr
  document.all[sIdIcon].src = aiItemKind_bDisplay2sImgSrc[iItemKind][bDisplay]
// document.all[sIdIcon].src = abDisplayBunpou2sImgSrc[aiItemKind2bDisplayAll[iItemKind]]
 }

 void(0)
}


function fn_onMouseOver_show_DisplayItem(iTabelleNr, iItemKind) {
 if (!aiTabelleNr_iItemKind2bDisplay[iTabelleNr][iItemKind]) {
  var bDisplay = 1
  fn_show_hide_DisplayItem(iTabelleNr, iItemKind, bDisplay)
 }
}


function fn_onMouseOut_hide_DisplayItem(iTabelleNr, iItemKind) {
 if (!aiTabelleNr_iItemKind2bDisplay[iTabelleNr][iItemKind]) {
  var bDisplay = 0
  fn_show_hide_DisplayItem(iTabelleNr, iItemKind, bDisplay)
 }
}


function fn_toggle_show_hide_DisplayItem(iTabelleNr, iItemKind) {
 var bDisplay = 1 - aiTabelleNr_iItemKind2bDisplay[iTabelleNr][iItemKind]
 fn_show_hide_DisplayItem(iTabelleNr, iItemKind, bDisplay)
 aiTabelleNr_iItemKind2bDisplay[iTabelleNr][iItemKind] = bDisplay

 void(0)
}


var aiItemKind2bDisplayAll = new Array(0,1) // iItemKind=0 Bunpou, iItemKind=1 Romaji


function fn_toggle_show_hide_DisplayItem_all(iItemKind) {
 var bDisplay = 1 - aiItemKind2bDisplayAll[iItemKind]
 for (var iTabelleNr=0; iTabelleNr<iTabellenAnzahl; iTabelleNr++) {
  fn_show_hide_DisplayItem(iTabelleNr, iItemKind, bDisplay)
  aiTabelleNr_iItemKind2bDisplay[iTabelleNr][iItemKind] = bDisplay
 }
 aiItemKind2bDisplayAll[iItemKind] = bDisplay

 var sIdIcon = aiItemKind2sIdPrefix[iItemKind] + "Icon" + "All"
 document.all[sIdIcon].src = aiItemKind_bDisplay2sImgSrc[iItemKind][aiItemKind2bDisplayAll[iItemKind]]

 void(0)
}

// General funktions for displaying/hiding of "display=none" rows of tables
// e.g. translation, romaji, bunpou.
// END =================================================================


// START ================================================================
// Bunpou specific functions
// Funktionen zum Bauen der Bunpou-Tabellen


asRowType2sRowTypeName = new Array()
asRowType2sRowTypeName['T'] = 'Title'
asRowType2sRowTypeName['D'] = 'Definition'
asRowType2sRowTypeName['E'] = 'Example'
asRowType2sRowTypeName['W'] = 'Wrong'




// uses global asRowType2sRowTypeName
function fn_hRow(aArray, iTableNr, hRow_Id_Style) {
 var sRowType = aArray[0]
 var ahRow = new Array()

 switch(sRowType) {
  case "T":

   var sTitleKanji = sMixedSentence_sKanjiWriting_SpaceSeparated2hMixedSentence_KanjiWriting(aArray[1])
   var sTitleRomaji = sRomaji2hRomaji(aArray[2], iTableNr)
   var sTitleTranslation = aArray[3]

   ahRow[ahRow.length] = '   <!-- title -->'
   ahRow[ahRow.length] = '   <tr>'
   ahRow[ahRow.length] = '    <td colspan=3 class="tableTitle"><table width="100%" cellpadding=0>'
   ahRow[ahRow.length] = '     <tr>'
   if (bNavigator_DOM) {
     ahRow[ahRow.length] = '      <td valign="top" class="tableTitle" width="50">'
     ahRow[ahRow.length] = '<a href="javascript:fn_toggle_show_hide_DisplayItem(' + iTableNr + ',0);"><img id="trIcon' + iTableNr + '" src="../Icons/open16x16.gif" width=16 height=16 border=0 onMouseOver="fn_onMouseOver_show_DisplayItem(' + iTableNr + ',0)" onMouseOut="fn_onMouseOut_hide_DisplayItem(' + iTableNr + ',0)"></a> &nbsp;'
     ahRow[ahRow.length] = '<a href="javascript:fn_toggle_show_hide_DisplayItem(' + iTableNr + ',1);"><img id="rIcon'  + iTableNr + '" src="../Icons/r_RnotTR.gif"  width=17 height=17 border=0 onMouseOver="fn_onMouseOver_show_DisplayItem(' + iTableNr + ',1)" onMouseOut="fn_onMouseOut_hide_DisplayItem(' + iTableNr + ',1)"></a>'
     ahRow[ahRow.length] = '      </td>'
   }
   ahRow[ahRow.length] = '      <td valign="top" class="tableTitle">' + sTitleKanji + "<br>" + sTitleRomaji + '</td>'
   ahRow[ahRow.length] = '      <td valign="top" align=left class="tableTitle" width="35%">' + sTitleTranslation + '</td>'
   ahRow[ahRow.length] = '     </tr>'
   ahRow[ahRow.length] = '    </table></td>'
   ahRow[ahRow.length] = '   </tr>'

   break


  case "D":
   var sDefinition = sMixedSentence_sRomaji_SpaceSeparated2hMixedSentence_hRomaji(aArray[1], iTableNr)
   sDefinition = sMixedSentence_sKanjiWriting_SpaceSeparated2hMixedSentence_KanjiWriting(sDefinition)

   ahRow[ahRow.length] = '   <!-- definition -->'
   ahRow[ahRow.length] = '   <tr' + hRow_Id_Style + '>'
   ahRow[ahRow.length] = '    <td colspan=3 class="lightHead">' + sDefinition + '</td>'
   ahRow[ahRow.length] = '   </tr>'

   break


  case "E":
  case "W":
   sClassName = sRowType=="E"?"darkGrey":"wrongExample"

   var sExampleKanji = sMixedSentence_sKanjiWriting_SpaceSeparated2hMixedSentence_KanjiWriting(aArray[1])
   var sExampleRomaji = sRomaji2hRomaji(aArray[2], iTableNr)
   var sExampleTranslation = aArray[3]

   ahRow[ahRow.length] = '   <!-- ' + asRowType2sRowTypeName[sRowType] + ' -->'
   ahRow[ahRow.length] = '   <tr' + hRow_Id_Style + '>'
   ahRow[ahRow.length] = '    <td valign="top" class="' + sClassName + '" width=" 5%">' + asRowType2sRowTypeName[sRowType] + '&nbsp;</td>'
   ahRow[ahRow.length] = '    <td valign="top" class="' + sClassName + '" width="60%">' + sExampleKanji + "<br>" + sExampleRomaji + '</td>'
   ahRow[ahRow.length] = '    <td valign="top" class="' + sClassName + '" width="35%">' + sExampleTranslation + '</td>'
   ahRow[ahRow.length] = '   </tr>'

   break


  default:
   ahRow[ahRow.length] = "   <tr><td colspan=3>kenne ich nicht</td></tr>"

   break
 }

 var hRow = ahRow.join('')
 return hRow
}


function fn_hTable(oTable, iTableNr) {
 var ahTable = new Array()

 if (bNavigator_DOM) {
  var sId = "tr" + iTableNr
  var hRow_Id_Style = ' id="' + sId + '" name="' + sId + '" style="display:none"'
//alert("bNavigator_DOM=" + bNavigator_DOM + " " + hRow_Id_Style)
 } else {
  var hRow_Id_Style = ''
 }

 ahTable[ahTable.length] = '<table align=center class=frame border=0 cellpadding=0 cellspacing=0 width=95%>'
 ahTable[ahTable.length] = ' <tr>'
 ahTable[ahTable.length] = '  <td><table border=0 cellpadding=3 cellspacing=1 width=100%>'

 for (var i=0; i<oTable.length; i++) {
  ahTable[ahTable.length] = fn_hRow(oTable[i], iTableNr, hRow_Id_Style)
 }
 ahTable[ahTable.length] = '  </table></td>'
 ahTable[ahTable.length] = ' </tr>'
 ahTable[ahTable.length] = '</table>'

 // Zwischenraum zwischen zwei Tabellen:
 ahTable[ahTable.length] = '<table><tr' + hRow_Id_Style + '><td>&nbsp;</td></tr></table>'

 var hTable = ahTable.join('\n')
 return hTable
}


var aoTable = new Array()


// uses and creates global oTable
function new_oTable_in_aoTable(aoTable) {
 oTable = new Array()
 aoTable[aoTable.length] = oTable
}

function insert_a_new_title_in_last_oTable_in_aoTable(oTable, sKanjiWriting, sRomajiWriting, sTranslation) {
 oTable[oTable.length] = new Array("T", sKanjiWriting, sRomajiWriting, sTranslation)
}

function insert_a_new_definition_in_last_oTable_in_aoTable(oTable, sDefinition) {
 oTable[oTable.length] = new Array("D", sDefinition)
}

function insert_a_new_example_in_last_oTable_in_aoTable(oTable, sKanjiWriting, sRomajiWriting, sTranslation) {
 oTable[oTable.length] = new Array("E", sKanjiWriting, sRomajiWriting, sTranslation)
}

function insert_a_new_wrong_example_in_last_oTable_in_aoTable(oTable, sKanjiWriting, sRomajiWriting, sTranslation) {
 oTable[oTable.length] = new Array("W", sKanjiWriting, sRomajiWriting, sTranslation)
}


// uses global oTable and aoTable
function N() {
 new_oTable_in_aoTable(aoTable)
}

// uses global oTable
function T(sKanjiWriting, sRomajiWriting, sTranslation) {
 insert_a_new_title_in_last_oTable_in_aoTable(oTable, sKanjiWriting, sRomajiWriting, sTranslation)
}

// uses global oTable
function D(sDefinition) {
 insert_a_new_definition_in_last_oTable_in_aoTable(oTable, sDefinition)
}

// uses global oTable
function E(sKanjiWriting, sRomajiWriting, sTranslation) {
 insert_a_new_example_in_last_oTable_in_aoTable(oTable, sKanjiWriting, sRomajiWriting, sTranslation)
}

// uses global oTable
function W(sKanjiWriting, sRomajiWriting, sTranslation) {
 insert_a_new_wrong_example_in_last_oTable_in_aoTable(oTable, sKanjiWriting, sRomajiWriting, sTranslation)
}



function fn_get_hTables() {
 var ahTable = new Array()
 //document.writeln("aoTable.length=" + aoTable.length)
 for (var iTableNr=0; iTableNr<aoTable.length; iTableNr++) {
/*
  document.writeln("<pre>")
  document.writeln("aoTable[" + iTableNr + "]=" + aoTable[iTableNr])
  document.writeln(fn_hTable(aoTable[iTableNr], iTableNr).replace(/</g,'\&lt;'))
  document.writeln("</pre>")
*/

 //OK 
  ahTable[ahTable.length] = fn_hTable(aoTable[iTableNr], iTableNr)
 }

 return ahTable.join("")
}


// glob var bUserRegistered aus cookie.js
function fn_writeln_hBunpouTables(iLessonNr) {
 // Die Lektionen 1-3 sind frei
//Test document.writeln("bUserRegistered=" + bUserRegistered+ "<br>")
//Test document.writeln("iLessonNr=" + iLessonNr + "<br>")
 if (bUserRegistered || iLessonNr<=3) {

  if (bNavigator_DOM) {
   document.writeln(fn_get_hButtonsTable_toggleGrammarRomaji())
  }
  document.writeln(fn_get_hTables())
  fn_set_iTabellenAnzahl()

 } else {
  document.writeln('<center><h2><font color=red>The grammar files for the lessons 1 - 3 are free.</font></h2></center>')
  document.writeln('<center><h2><font color=red>The grammar files for the lessons 4 - 8 are available for registered and logged in users only!</font></h2></center>')
 }
 if (!bUserRegistered || iLessonNr>8) {
  document.writeln('<center><h2><font color=red>The grammar files for the lessons 9 - 34 are not implemented yet.</font></h2></center>')
 }
}


// Bunpou specific functions
// Funktionen zum Bauen der Bunpou-Tabellen
// END ==================================================================




function fn_get_hButtonsTable_toggleGrammarRomaji() {
 var hButtonsTable_toggleGrammarRomaji = ''
 hButtonsTable_toggleGrammarRomaji = hButtonsTable_toggleGrammarRomaji + '<table align="center" width="95%"><tr><td>'
 hButtonsTable_toggleGrammarRomaji = hButtonsTable_toggleGrammarRomaji + '<a href="javascript:fn_toggle_show_hide_DisplayItem_all(0);"><img id="trIconAll" src="../Icons/open16x16.gif" width=16 height=16 border=0> Display/hide all grammar items</a> &nbsp;'
 hButtonsTable_toggleGrammarRomaji = hButtonsTable_toggleGrammarRomaji + '<a href="javascript:fn_toggle_show_hide_DisplayItem_all(1);"><img id="rIconAll" src="../Icons/r_RnotTR.gif" width=17 height=17 border=0> Display/hide romaji</a> &nbsp;'
 hButtonsTable_toggleGrammarRomaji = hButtonsTable_toggleGrammarRomaji + '</td></tr></table>'

 return hButtonsTable_toggleGrammarRomaji
}



// Die Anzahl der Bunpou-Tabellen bestimmen
function fn_set_iTabellenAnzahl() {
 if (bNavigator_DOM) {
  for (iTabellenAnzahl=0;iTabellenAnzahl<iTabellenAnzahl_MAX; iTabellenAnzahl++) {
   if (!document.all["trIcon" + iTabellenAnzahl])
    break
  }
//Test  document.writeln("iTabellenAnzahl=" + iTabellenAnzahl)
 }

 void(0)
}
