document.getElementsByClassName = function(class_name) {
  var elements = [];
  var myclass = new RegExp('\\b' + class_name + '\\b');
  var elem = this.getElementsByTagName('*');
  for (var i = 0; i < elem.length; i++) {
    var classes = elem[i].className;
    if (myclass.test(classes)) elements.push(elem[i]);
  }
  return elements;
}

function hasClassName(element, class_name) {
  if (element.className.indexOf(class_name) > -1)
    return true;
  return false;
}

function switchVisible(a, b) {
  hideElementsWithClassName(a);
  showElementsWithClassName(b, 'block');
  return false;
}

function viewMode(base_class) {
  switchVisible(base_class + '_edit', base_class + '_view');
}

function editMode(base_class) {
  switchVisible(base_class + '_view', base_class + '_edit');
}

function showElementsWithClassName(className, style) {
  var elts = document.getElementsByClassName(className);
  for (i = 0; i < elts.length; i++)
    if (!hasClassName(elts[i], 'hidden')) 
      elts[i].style.display = style;
}

function hideElementsWithClassName(className) {
 var elts = document.getElementsByClassName(className);
  for (i = 0; i < elts.length; i++)
    elts[i].style.display = 'none';
}
