var isFirstItem;

// mv.js
//
// Maakt een lijst met foldable kaarten.
// mv = middenvlak
//      ^     ^
// Kan alleen gebruikt worden in het middenvlak (vanwege breedte).
//
// [1] List:
//
//   mvBegin(bgcol)                                    initialisatie
//   mvEnd()                                           afsluiting
//   mvItem(itemText[, onclick])                       item
//   mvItemLink(itemText[, url])                       item link
//   mvAssignment(itemText, assignment)                assignment als item
//
// [2] Folds (zie ook fold.js):
//
//   mvFoldBegin(mark, header, id, expanded)           foldable mv-item initialisatie
//   mvFoldEnd(mark)                                   foldable mv-item afsluiting
//   mvFoldToetsen()                                   begin van eerste kolom
//   mvFoldOefenen()                                   begin van tweede kolom
//   mvFoldUitleg()                                    begin van derde kolom
//
// items:
//   mvFoldItem(icon, iconALt, itemText[, onclick])    item voor foldable mv-item
//   mvFoldItemLink(icon, iconALt, itemText[, url])    link voor foldable mv-item
//   mvFoldAssignment(icon, iconAlt, astText[, ast])   assignment
//   mvFoldItemToets(itemText[, ast])                  toets
//   mvFoldItemOefening(itemText[, ast])               oefening
//   mvFoldItemUitleg(itemText[, url])                 uitleg
//   mvFoldItemAux(itemText[, url])                    special voor score
//

//====================================================================================================

var mvDefaultBgColor = "#EEFFEE"//"#EBF7E5"; // pastel lichtgroen

// mvBegin([bgcol])
//
//  bgcol (optional)    achtergrondkleur als HTML kleurcode ("#******")
//                      default is pastel lichtgroen,  "#EBF7E5"
//
function mvBegin()
{ document.write(
    '<tr><td align="left" valign="top" width="619" height="5">' + 
    '<img src="images/spacer.gif" width="619" height="5" alt=""></td></tr>' +
    '<tr><td align="left" valign="top" width="619" height="18">' +
    '<table width="619" height="18" border="0" cellspacing="0" cellpadding="1">' +
    '<tr><td width="619" height="18" style="border-style:solid;border-color:#5EC02D;' +
    'border-left-width:1px;border-right-width:1px;border-top-width:1px;border-bottom-width:1px;" ' +
    'align="left" valign="middle" bgcolor="' +
    (arguments.length > 0 ? arguments[0] : mvDefaultBgColor) + '">' +
    '<table width="615" height="18" border="0" cellspacing="0" cellpadding="0">');
  isFirstItem = true;
}

function mvEnd()
{ document.write(
    '</table></td></tr></table></td></tr><tr>' +
    '<td align="left" valign="top" width="619" height="5">' +
    '<img src="images/spacer.gif" width="619" height="5" alt=""></td></tr>');
}

// mvVertSpace(height[, attribs]) 
//
//  height              aantal pixels vertikale ruimte
//  attribs (optional)  lijst attributen die aan <td>-tag wordt meegegeven
//
function mvVertSpace(height)
{ if (arguments.length > 1)
    attrib = ' ' + arguments[1];
  else
    attrib = '';
     
  document.write(
    '<tr><td align="left" valign="top" width="18" height="' + height + 
    '"' + attrib + '><img src="images/spacer.gif" ' +
    'width="18" height="' + height + '" alt=""></td><td align="left" valign="top" width="4" ' +
    'height="' + height + '"' + attrib + '><img src="images/spacer.gif" width="4" height="' +
    height + '" alt=""></td> ' + '<td align="left" valign="top" width="100%" height="' + height +
    '"' + attrib + '><img src="images/spacer.gif" width="100%" height="' + height +
    '" alt=""></td></tr>'
  );
}

// mvItem(itemText[, onclick])
//
//  itemText            text in mv-rij 
//  onclick (optional)  script dat wordt uitgevoerd als op mv-item wordt geklikt;
//                      indien onclick == "" wordt geen script uitgevoerd, en wordt
//                      het item gedimd weergegegeven;
//                      LET OP: geen dubbel-quotes in onclick gebruiken!
//
function mvItem(itemText)
{ if (isFirstItem)
    isFirstItem = false;
  else
    mvVertSpace(1);

  document.write('<tr');
  if (arguments.length > 1 && arguments[1].length > 0)
  document.write(' OnClick="' + arguments[1] + '" style="cursor:pointer;"');
  document.write('><td width="18" height="18">');

  if (arguments.length > 1 && arguments[1].length == 0)
    document.write('<img src="images/pijlrechtslicht.gif" width="18" height="18" alt="">');
  else
    document.write('<img src="images/pijlrechts.gif" width="18" height="18" alt="">');
      
  document.write(
    '</td><td width="8" height="18">' +
    '<img src="images/spacer.gif" width="8" height="18" alt=""></td>' +
    '<td width="100%" height="18" class="mv');

  if (arguments.length > 1 && arguments[1].length == 0)
    document.write('pass');
  else
    document.write('act');

  document.write(
    'ive" align="left" valign="middle">' +
    itemText +
    '</td></tr>'
  );
}

// mvItemLink(linkText[[, url], atts...])
//
//  linkText            text in mv-rij 
//  url (optional)      link;
//                      LET OP: geen dubbel-quotes in url gebruiken!
//  atts.. (optional)   extra attributen voor link (voorbeeld: 'target="_blank"')
//
function mvItemLink(linkText)
{ if (arguments.length > 1)
    if (arguments[1].length > 0)
    { var str = '<a href="' + arguments[1] + '" class="linkblauwvet"';
      for (var i = 2; i < arguments.length; i++)
        str += " " + arguments[i];             
      mvItem(str + '>' + linkText + '</a>')
    }
    else  
      mvItem(linkText, "");
  else  
    mvItem(linkText);
}

// mvItemMailTo(person[, adr])
// mvItemMailTo(person[, name, dom[1],..,dom[n])
//
//  person              naam van persoon in mv-rij 
//  adr (optional)      mail adres;
//  name                geadresseerde
//  dom[i]              deel van maildomein
//                      LET OP: geen dubbel-quotes in url gebruiken!
//
// Anti spam: het mailadres wordt als volgt samengesteld:
//   name@dim[1].dom[2]. .. .dom[n]
// Voorbeelden:
//  mvItemMailtTo("Jan Klaassen", "j.klaassen@math.utwente.nl")
//  mvItemMailtTo("Jan Klaassen", "j.klaassen", "math.utwente.nl")
//  mvItemMailtTo("Jan Klaassen", "j.klaassen", "math", "utwente", "nl")
//
function mvItemMailTo(person)
{ if (arguments.length > 1)
    if (arguments[1].length > 0)
    { var addr = arguments[1];
      if (arguments.length > 2)
      { addr += "@";
        for (var i = 2; i < arguments.length; i++)
        { addr += arguments[i];
          if (i < arguments.length - 1)
            addr += ".";
        }
      }
      mvItemLink(person + '&nbsp;&nbsp;&nbsp;&nbsp;<img src="images/mail.gif" ' +
                  'width="18" height="10" border="0" alt="">&nbsp;<i>' + addr + '</i>',
                 "mailto:" + addr);
    }
    else  
      mvItem(person, "");
  else  
    mvItem(person);
}

// mvAssignment(astText[, ast[, class]])
//  Link naar Maple T.A. assignment. Als tweede argument ontbreekt of als
//  dit gelijk is aan "" wordt alleen de assignment titel getoond (inactieve link).
//
//  astText             text in mv-rij 
//  ast (optional)      Maple T.A. assignment;
//                      LET OP: geen dubbel-quotes in ast gebruiken!
//  class (optional)    Maple T.A. class (default is "MathMatch")
//
function mvAssignment(astText)
{ if (arguments.length > 1)
    if (arguments[1].length > 0)
      mvItem(astText, "javascript:doAssignment('" + arguments[1] + "'" +
                      (arguments.length > 2 ? ",'" +  arguments[2] + "'" : "") + ")");
    else  
      mvItem(astText, "");
  else  
    mvItem(astText);
}

//======= Folds ======================================================================================

// mvHeader(header, isDeployed, bgcol)
//  Hulpfunctie t.b.v. mvFoldBegin(). Produceert twee verschillende soorten headers afhankelijk
//  van de waarde van 'isDeployed'.
//
//  header              tekst in header van fold
//  isDeployed          selectieboolean
//  bgcol               achtergrondkleur als HTML kleurcode ("#******")
//
function mvHeader(header, isDeployed, bgcol)
{ return '<table width="619" height="18" border="0" cellspacing="0" cellpadding="0">' +
  '<tr OnClick="javascript:' +
  (isDeployed ? 'hide(' : 'deploy(') + nrOfFolds +
  ')" style="cursor:pointer;"><td width="619" height="18" ' + 
  mvBoxBorderStyle(true, true, true, true) +
  ' align="left" valign="middle" bgcolor="' + bgcol + '">' +
  '<table width="615" height="18" border="0" cellspacing="0" cellpadding="1">' +
  '<tr><td width="18" height="18"><img src="images/pijlom' +
  (isDeployed ? 'hoog' : 'laag') + '.gif" width="18" height="18" ' +
  ');" alt=""></td><td width="4" height="18"><img src="images/spacer.gif" width="4" height="18" ' +
  'alt=""></td><td width="100%" height="18" class="mvactive" align="left" valign="middle">' +
  header + '</td></tr></table>' + 
  (isDeployed ?
    '</td></tr><tr><td width="619"' +
    'align="left" valign="middle" bgcolor="#FFFFFF"><table width="619" ' +
    'border="0" cellspacing="0" cellpadding="1">' :
    ''
  );
}

// mvBoxBorderStyle(right, top, left, bottom)
//
//  right               tekent rechterkantlijn indien true
//  top                 tekent bovenkantlijn indien true
//  left                tekent linkerkantlijn indien true
//  bottom              tekent onderkantlijn indien true
function mvBoxBorderStyle(right, top, left, bottom)
{ if (right && top && left && bottom)
    return 'style="border-style:solid;border-color:#5EC02D;border-width:1px;"';
  else
    return 'style="border-style:solid;border-color:#5EC02D;' +
           'border-right-width:' + (right ? '1' : '0') +
           'px;border-top-width:' + (top ? '1' : '0') + 
           'px;border-left-width:' + (left ? '1' : '0') +
           'px;border-bottom-width:' + (bottom ? '1' : '0') + 'px;"';
}

// mvFoldBegin(mark, header, isDeployed[, bgcol])
//
//  mark                fold mark (string; zie fold.js)
//  header              tekst in header van fold
//  isDeployed          deploys fold indien 'true'
//  bgcol (optional)    achtergrondkleur als HTML kleurcode ("#******")
//                      default is pastel lichtgroen,  "#EBF7E5"
//
function mvFoldBegin(mark, header, isDeployed)
{ document.write('<tr><td align="left" valign="top" width="619">');
  var bgcol = (arguments.length > 3 ? arguments[3] : mvDefaultBgColor);
  foldOpen(mark, mvHeader(header, false, bgcol), mvHeader(header, true, bgcol), isDeployed);
  isFirstItem = true;
}

// mvFoldEnd(mark)
//
//  mark                fold mark (string; zie fold.js)
//
function mvFoldEnd(mark)
{ mvBoxEnd();
  foldAdd('</td></tr></table></td></tr></table>');
  foldClose(mark);
  document.write(
    '</td></tr><tr><td align="left" valign="top" width="619" height="5"><img src="images/spacer.gif" ' +
    'width="619" height="5" alt=""></td></tr>'
  );
}

var SpbWidth = 20;
var BoxWidth = 140;//195;

// mvFoldToetsen()
//  Opent de kolom met toetsen
//  
function mvFoldDocs()
{ foldAdd(
    '<tr><td width="' + SpbWidth + '" height="100%" valign="top" ' +
    mvBoxBorderStyle(true, false, false, false) +
    '><img src="images/spacer.gif" width="' + SpbWidth + '" height="100%" alt="">' +
    '</td><td width="' + 3*BoxWidth + '" valign="top" ' +
    mvBoxBorderStyle(true, false, false, true) +            
    '>');
    mvBoxBegin(3*BoxWidth);
    mvBoxVertSpace(3);
}

// mvFoldToetsen()
//  Opent de kolom met toetsen
//  
function mvFoldToetsen()
{ foldAdd(
    '<tr><td width="' + SpbWidth + '" height="100%" valign="top" ' +
    mvBoxBorderStyle(true, false, false, false) +
    '><img src="images/spacer.gif" width="' + SpbWidth + '" height="100%" alt="">' +
    '</td><td width="' + BoxWidth + '" valign="top" ' +
    mvBoxBorderStyle(true, false, false, true) +            
    '>');
    mvBoxBegin();
    mvBoxHead('Toetsen');
}

// mvFoldOefenen()
//  Opent de kolom met oefeningen
//  
function mvFoldOefenen()
{ mvBoxEnd();
  foldAdd(
    '</td><td width="' + BoxWidth + '" valign="top" ' +
    mvBoxBorderStyle(true, false, false, true) +            
    '>');
  mvBoxBegin();
  mvBoxHead('Oefeningen');
}

// mvFoldUitleg()
//  Opent de kolom met uitleg
//  
function mvFoldUitleg()
{ mvBoxEnd();
  foldAdd(
    '</td><td width="' + BoxWidth + '" valign="top" ' +
    mvBoxBorderStyle(true, false, false, true) +            
    '>');
  mvBoxBegin();
  mvBoxHead('Uitleg');
}

//
// Een box is een van de drie kolommen. Ieder box is geimplementeerd
// als table met drie kolommen met breedte 18, 4, en 100%.

// mvBoxBegin()
//
function mvBoxBegin()
{ var BBoxW = BoxWidth;
  if (arguments.length > 0) BBoxW = arguments[0];
  foldAdd('<table width="' + BBoxW + '" border="0" cellspacing="0" cellpadding="0">');
}

// mvBoxEnd()
//
function mvBoxEnd()
{ foldAdd('</table>');
}

// mvBoxVertSpace(height[, attribs]) 
//
//  height              aantal pixels vertikale ruimte
//  attribs (optional)  lijst attributen die aan <td>-tag wordt meegegeven
//
function mvBoxVertSpace(height)
{ if (arguments.length > 1)
    attrib = ' ' + arguments[1];
  else
    attrib = '';
     
  foldAdd(
    '<tr><td align="left" valign="top" width="18" height="' + height + 
    '"' + attrib + '><img src="images/spacer.gif" ' +
    'width="18" height="' + height + '" alt=""></td><td align="left" valign="top" width="4" ' +
    'height="' + height + '"' + attrib + '><img src="images/spacer.gif" width="4" height="' +
    height + '" alt=""></td> ' + '<td align="left" valign="top" width="100%" height="' + height +
    '"' + attrib + '><img src="images/spacer.gif" width="100%" height="' + height +
    '" alt=""></td></tr>'
  );
}

// mvBoxHead(head)
//
//  head                text in kop van box
//
function mvBoxHead(head)
{ foldAdd(
    '<tr><td align="left" valign="top" width="18" height="18"><img src="images/spacer.gif" ' +
    'width="18" height="18" alt=""></td>' +
    '<td align="left" valign="top" width="4" height="18"><img src="images/spacer.gif" ' +
    'width="4" height="18" alt=""></td>' +
    '<td align="left" valign="top" width="100%" height="18" ' +
    'class="foldhead">' + head +
    '</td></tr>'
  );
  mvBoxVertSpace(3)
}

// mvBoxHead(head)
//
//  text                paragraaf text in box
//
function mvBoxPar(text)
{ foldAdd(
    '<tr><td align="left" valign="top" width="18" height="18"><img src="images/spacer.gif" ' +
    'width="18" height="18" alt=""></td>' +
    '<td align="left" valign="top" width="4" height="18"><img src="images/spacer.gif" ' +
    'width="4" height="18" alt=""></td>' +
    '<td align="left" valign="top" width="100%" height="18" ' +
    'class="tekstblauw">' + text +
    '</td></tr>'
  );
  mvBoxVertSpace(3)
}

// mvFoldItem(icon, iconAlt, itemText[, onclick])
//
//  icon                filename van gebruikt icon (relatief pad)
//  iconAlt             filename van alternatief icon (relatief pad)
//  itemText            text in mv-rij 
//  onclick (optional)  script dat wordt uitgevoerd als op mv-item wordt geklikt;
//                      indien onclick == "" wordt geen script uitgevoerd, wordt
//                      het item gedimd weergegegeven, en wordt het alternatieve icon
//                      gebruikt;
//                      LET OP: geen dubbel-quotes in onclick gebruiken!
//
function mvFoldItem(icon, iconAlt, itemText)
{ if (isFirstItem)
    isFirstItem = false;
  else
    mvBoxVertSpace(1);
   
  foldAdd(
    '<tr' +
    (arguments.length > 3 && arguments[3].length > 0 ?
     ' OnClick="javascript:' + arguments[3] + '" style="cursor:pointer;"' :
     ''
    ) +
    '><td width="18" height="18" valign="top"><img src="' +
    (arguments.length > 3 && arguments[3].length == 0 ? iconAlt : icon) +
    '" width="18" height="18" ' +
    'alt=""></td><td width="4" height="18"><img src="images/spacer.gif" width="4" height="18" ' +
    'alt=""></td><td width="100%" height="18" class="mv' +
    (arguments.length > 3 && arguments[3].length == 0 ? 'pass' : 'act') +
    'ive" align="left" ' +
    'valign="middle">' + itemText + '</td></tr>'
  );
}

// mvFoldItemLink(icon, iconALt, itemText[, url])
//
//  icon                filename van gebruikt icon (relatief pad)
//  iconAlt             filename van alternatief icon (relatief pad)
//  itemText            text in mv-rij 
//  url (optional)      link;
//                      LET OP: geen dubbel-quotes in url gebruiken!
//
function mvFoldItemLink(icon, iconAlt, linkText)
{ if (arguments.length > 3)
    if (arguments[3].length > 0)
      mvFoldItem(icon, iconAlt, linkText, "document.location.href='" + arguments[3] + "'");
    else
      mvFoldItem(icon, iconAlt, linkText, "");
  else
    mvFoldItem(icon, iconAlt, linkText);
}



// mvFoldAssignment(icon, iconAlt, astText[, ast])
//
//  icon                filename van gebruikt icon (relatief pad)
//  iconAlt             filename van alternatief icon (relatief pad)
//  ast (optional)      Maple T.A. assignment;
//                      LET OP: geen dubbel-quotes in ast gebruiken!
//
function mvFoldAssignment(icon, iconAlt, astText)
{ if (arguments.length > 3)
    if (arguments[3].length > 0)
      mvFoldItem(icon, iconAlt, astText, "doAssignment('" + arguments[3] + "')");
    else  
      mvFoldItem(icon, iconAlt, astText, "");
  else  
    mvFoldItem(icon, iconAlt, astText);
}

// mvFoldItemToets(itemText[, ast])
//
//  itemText            text in mv-rij 
//  ast (optional)      Maple T.A. assignment;
//                      LET OP: geen dubbel-quotes in ast gebruiken!
//
function mvFoldItemToets(itemText)
{ if (arguments.length > 1)
    mvFoldAssignment('images/pijlrechtslicht.gif', 'images/none.gif', itemText, arguments[1]);
  else
    mvFoldAssignment('images/pijlrechtslicht.gif', 'images/none.gif', itemText);
}

// mvFoldItemOefening(itemText[, ast])
//
//  itemText            text in mv-rij 
//  ast (optional)      Maple T.A. assignment;
//                      LET OP: geen dubbel-quotes in ast gebruiken!
//
function mvFoldItemOefening(itemText)
{ if (arguments.length > 1)
    mvFoldAssignment('images/pijlrechtslicht.gif', 'images/none.gif', itemText, arguments[1]);
  else
    mvFoldAssignment('images/pijlrechtslicht.gif', 'images/none.gif', itemText);
}

// mvFoldItemUitleg(itemText[, url])
// mvFoldItemUitleg(itemText[, blz])
//
// Als het tweede argument een getal is wordt een verwijzing naar een pagina gegenereerd.
// Ondanks dat er geen links worden geplaatst wordt de tekst toch in de 'active' kleur
// (#083973) weergegeven.
// Als het tweede argument een string is wordt deze string als url gebruikt voor een
// verwijzing naar een pdf document (een lege string genereert een gedimde tekst).
//
//  itemText            text in mv-rij 
//  url (optional)      link;
//                      LET OP: geen dubbel-quotes in url gebruiken!
//  blz (optional)      paginanummer;
//                      LET OP: geen leading 0-s in blz gebruiken!
//
function mvFoldItemUitleg(itemText)
{ if (arguments.length > 1)
  { if ("" + parseInt(arguments[1]) == arguments[1])
      mvFoldItem('images/icon3licht.gif', 'images/icon3licht.gif',
                 '<span style="color:#083973">Pagina ' + arguments[1] + ": " + itemText + "</span>", "");
    else
    { if (arguments[1].length > 0)
        mvFoldItem('images/pijlrechtslicht.gif', 'images/none.gif', itemText, "showMaterial('" + arguments[1] + "')");
      else  
        mvFoldItem('images/pijlrechtslicht.gif', 'images/none.gif', itemText, "");
    }
  }
  else  
    mvFoldItem('images/pijlrechtslicht.gif', 'images/none.gif', itemText);
}

// mvFoldItemViewScore(text)
//
//  itemText            text in mv-rij 
//
function mvFoldItemViewScore(text)
{ mvFoldItem('images/icon1licht.gif', 'images/pijlrechtslicht.gif', text, "doViewRecord()");
}

function mvFoldItemDoc(docText, url)
{ mvFoldItem('images/pijlrechtslicht.gif', 'images/none.gif', docText, "showMaterial('./projectdocs/"+ url + "')");
}

// mvItemMailTo(person[, adr])
// mvItemMailTo(person[, name, dom[1],..,dom[n])
//
//  person              naam van persoon in mv-rij 
//  adr (optional)      mail adres;
//  name                geadresseerde
//  dom[i]              deel van maildomein
//                      LET OP: geen dubbel-quotes in url gebruiken!
//
// Anti spam: het mailadres wordt als volgt samengesteld:
//   name@dim[1].dom[2]. .. .dom[n]
// Voorbeelden:
//  mvItemMailtTo("Jan Klaassen", "j.klaassen@math.utwente.nl")
//  mvItemMailtTo("Jan Klaassen", "j.klaassen", "math.utwente.nl")
//  mvItemMailtTo("Jan Klaassen", "j.klaassen", "math", "utwente", "nl")
//
function mvFoldItemMailTo(person)
{ if (arguments.length > 1)
    if (arguments[1].length > 0)
    { var addr = arguments[1];
      if (arguments.length > 2)
      { addr += "@";
        for (var i = 2; i < arguments.length; i++)
        { addr += arguments[i];
          if (i < arguments.length - 1)
            addr += ".";
        }
      }
      mvFoldItemLink('images/pijlrechtslicht.gif', 'images/none.gif', 
                '<a href="mailto:'+addr+'" style="color: #083973; text-decoration:none;">' +
                person + '&nbsp;&nbsp;&nbsp;&nbsp;<img src="images/blauwebrief.gif" ' +
                'width="15" height="8" border="0" alt="">&nbsp;&nbsp;&nbsp;&nbsp;<i>' + 
                addr + '</i></a>',
                 "mailto:" + addr);
//      mvFoldItemLink('images/pijlrechtslicht.gif', 'images/none.gif', 
//                person + '&nbsp;&nbsp;&nbsp;&nbsp;<img src="images/mail.gif" ' +
//                'width="18" height="10" border="0" alt="">&nbsp;<i>' + addr + '</i>',
//                 "mailto:" + addr);
    }
    else  
      mvFoldItem('images/pijlrechtslicht.gif', 'images/none.gif', person);
  else  
    mvFoldItem('images/pijlrechtslicht.gif', 'images/none.gif', person);
}


