function hasClass(ele,cls)
{
  return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));
}

function addClass(ele,cls)
{
  if (!this.hasClass(ele,cls))
    ele.className += " "+cls;
}

function removeClass(ele,cls)
{
  var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)');
  ele.className=ele.className.replace(reg,' ');
}

function getElementsByNameClass(basenode, elementname, classname)
{
  var baseset = basenode.getElementsByTagName(elementname);
  var finalset=[];
  for (var i=0;i<baseset.length;++i)
    if(hasClass(baseset[i], classname))
      finalset.push(baseset[i]);
  return finalset;
}

/* SPC */
function parseURLArgs()
{
  if (window.location.search == '')
    return {};

  var argstring = window.location.search;
  var URLargs = argstring.substring(1).split("&");

  var args = {};

  for ( var paramCount = 0 ; paramCount < URLargs.length ; paramCount++ )
  {
    var argCombo = URLargs[ paramCount ].split("=");
    args[ unescape(argCombo[0]) ] = unescape(argCombo[1]);
  };

  return args;
}

/* agendaitems zijn '<div class="agendaitem">' met daarin een <a name="agenda[id]"> ter
   herkenning, en een <div class="moreinfo"> met de extra info die openagenda(id) moet
   openen */
function getAgendaItemById(id)
{
  var agendaitems = getElementsByNameClass(document, 'div', 'agendaitem');
  for (var i=0;i<agendaitems.length;++i)
  {
    if(agendaitems[i].id == 'agendaitem'+id)
      return agendaitems[i];
  }
  return null;
}

var currentanimation;

function toggleagenda(id, animate)
{
  var item = getAgendaItemById(id);
  if(!item)
    return true; //let our caller figure it out then..

  if(currentanimation)
    endAnimation();

  var moreinfo = getElementsByNameClass(item, 'div', 'moreinfo')[0];
  var moreinfobutton = getElementsByNameClass(item, 'a', 'moreinfobutton')[0];
  //var lessinfobutton = getElementsByNameClass(item, 'a', 'lessinfobutton')[0];
  var nowopen = moreinfo.style.display=='block';

/*  if(nowopen) //already displayed it
  {
    moreinfo.style.display='none';
  }
  else*/
  {
    if(animate)
    {
      currentanimation = { intervalid: window.setInterval(animateAgenda, 25)
                         , moveblock: moreinfo
                         , curheight: nowopen ? moreinfo.offsetHeight : 0
                         , direction: nowopen ? -10 : 10
                         };

      if(!nowopen) //opening
      {
        moreinfo.style.height='0px';
        moreinfo.style.display='block';
        moreinfo.style.overflow='hidden';
      }
    }
    else
    {
      moreinfo.style.display=nowopen ? 'none' : 'block';
      moreinfo.style.overflow='hidden';
    }
/*
    if(nowopen)
      moreinfobutton.firstChild.nodeValue = moreinfobutton.firstChild.nodeValue.split('<<').join('>>');
    else
      moreinfobutton.firstChild.nodeValue = moreinfobutton.firstChild.nodeValue.split('>>').join('<<');
*/
  }
  return false;
}

function endAnimation()
{
  window.clearInterval(currentanimation.intervalid);
  if(currentanimation.direction>0) //we were opening
  {
    currentanimation.moveblock.height='auto';
  }
  else
  {
    currentanimation.moveblock.style.display='none';
  }
  currentanimation = null;
}

function animateAgenda()
{
  currentanimation.curheight = currentanimation.curheight + currentanimation.direction;
  if(currentanimation.direction < 0 && currentanimation.curheight == 0)
  {
    endAnimation();
    return;
  }

  currentanimation.moveblock.style.height = currentanimation.curheight + 'px';

  //document.title = currentanimation.moveblock.offsetHeight + ' ' + currentanimation.moveblock.firstChild.offsetHeight;
  if(currentanimation.direction>0 && currentanimation.moveblock.offsetHeight > currentanimation.moveblock.firstChild.offsetHeight) //done expanding
    endAnimation();
}

function checkOpenAgenda()
{
  if(location.hash)
    toggleagenda(location.hash.substr('#agenda'.length), false);
}

function setOrkestTab(linkid, coverflowurl)
{
  var dirigenten = document.getElementById("orkesttab_dirigenten");
  var solisten = document.getElementById("orkesttab_solisten");
  var musici = document.getElementById("orkesttab_musici");

  dirigenten.className = (linkid == "orkesttab_dirigenten" ? "selected" : "");
  solisten.className   = (linkid == "orkesttab_solisten" ? "selected" : "");
  musici.className     = (linkid == "orkesttab_musici" ? "selected" : "");

  document.getElementById('minicoverflowobject').loadXML(coverflowurl);
//  document.getElementById('minicoverflowobject').changeImage(1);
}

function updateNewsletterInfo()
{
  // Toon/verberg bepaalde info afhankelijk van de succes code
  // die de nieuwsletter aanmeld code teruggeeft.
  var args = parseURLArgs();

  if (args.code)
  {
    switch(parseInt(args.code))
    {
      case 0: case 1:
          // success
          document.getElementById('newsletterform').style.display = 'none';
          document.getElementById('newslettersubmitsuccess').style.display = 'block';
          break;

      default:
          // fail
          document.getElementById('newslettersubmitfail').style.display = 'block';
          break;
    }
  }
}



/* Controle telefoonnr,
   we laten alleen geldige 06 nummers toe */

function mobielnropschonen(str)
{
  var returnString = "";

  for (var col = 0; col < str.length; col++)
  {
    var char = str.charAt(col);

    if (char != ' ' && char != '-')
      returnString += char;
  }

  return returnString;
}

function isInteger(str)
{
  for (var col = 0; col < str.length; col++)
  {
    var char = str.charAt(col);
    if ((char < "0") || (char > "9"))
      return false;
  }
  return true;
}

/* Controle email adressen */

function isEmailValid(email)
{
  email = email.trim();

  // an email address can have a space within
  if (email.indexOf(' ') != -1)
    return false;

  var parts = email.split('@');

  // should only be one @
  if (parts.length > 2)
    return false;

  // check if there's a name in the email
  if (parts[0].length == 0)
    return false;

  // check if there's a domain in the email
  if (parts[1].length == 0)
    return false;

  var domainparts = parts[1].split('.');

  // check if at least 2 parts (topdomain and domain)
  if (domainparts.length < 2)
    return false;

  // topdomain needs to be at least 2 chars
  if (domainparts[domainparts.length-1].length < 2)
    return false;

  // domain needs to be at least 1 char
  if (domainparts[domainparts.length-2].length < 1)
    return false;

  return true;
}

function showAuditionName()
{
  var elem = document.getElementById("auditionname");
  if (elem)
  {
    var args = parseURLArgs();

    if (args.vacaturenaam)
      elem.innerHTML = '<div style="padding-bottom: 5px;" class="whwp-title">Auditie voor</div>' + args.vacaturenaam;
  }
}

function showMusicians(id, title)
{
  document.getElementById("orkestbak-explanation").style.display = "none";

  // Hide all open blocks
  var allBlocks = getElementsByNameClass(document, 'div', 'orchestragroup')

  for (var i=0;i<allBlocks.length;++i)
    allBlocks[i].style.display = "none";

  var thisBlock = document.getElementById("group_" + id);

  thisBlock.style.display = "block";
}