// Find toFind in ar.
function ArrayIndexOf(ar, toFind)
{
  len = ar.length;
  for (i = 0; i < len; i++) {
    if (ar[i] == toFind) return i;
  }
  return -1;
}

/////
// Remove el from array, if it exists. Returns true if it was there.
function ArrayRemove(array, el)
{
  var gotIt = false;

  while((index = ArrayIndexOf(array, el)) != -1) {
    gotIt = true;
    array.splice(index, 1);
  }
  return gotIt;
}

/////
// Adds el to array if it doesn't already exist.
function ArrayAddUnique(array, el)
{
  if (ArrayIndexOf(array, el) == -1) {
    array.push(el);
    return true;
  }
  return false;
}

function getClassNames(el) {
  return el.className.split(' ');
}
function addClassName(el, className) {
  var classNames = getClassNames(el);
  ArrayAddUnique(classNames, className);
  el.className = classNames.join(' ');
}
function removeClassName(el, className) {
  var classNames = getClassNames(el);
  ArrayRemove(classNames, className);
  el.className = classNames.join(' ');
}
function hasClassName(el, className) {
  var classNames = getClassNames(el);
  return (ArrayIndexOf(classNames, className) != -1);
}

function toggleClassName(el, className) {
  var classNames = getClassNames(el);
  if (!ArrayRemove(classNames, className)) {
    // It wasn't there. Add it.
    classNames.push(className);
  }
  el.className = classNames.join(' ');
}


