function getElementsByClassName(classname) {
  var rl = new Array();
  var re = new RegExp('(^| )'+classname+'( |$)');
  var ael = document.getElementsByTagName('*');
  var op = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;
  if (document.all && !op) ael = document.all;
  for (i=0, j=0; i<ael.length; i++) {
    if (re.test(ael[i].className)) {
      rl[j]=ael[i];
      j++;
    }
  }
  return rl;
}

function startList(nav) {
  if (document.all&&document.getElementById(nav)) {
    navRoot = document.getElementById(nav);
    for (i=0; i<navRoot.childNodes.length; i++) {
      node = navRoot.childNodes[i];
      if (node.nodeName=="LI") {
        node.onmouseover=function() {
          this.className+=" over";
          this.style.zIndex=200;
        }
        node.onmouseout=function() {
          this.className=this.className.replace(" over", "");
          this.style.zIndex=0;
        }
      }
    }
  }
}

function attachSchedule() {
  var today = new Date();
  if (document.getElementById('schedule')) {
    var segments = getElementsByClassName('segment');
    for (var i=0; i<segments.length; i++) {
      segments[i].getElementsByTagName('h3')[0].innerHTML = '<a class="expand" onclick="hideSegments(this.parentNode.parentNode.parentNode);showSegment(this.parentNode.parentNode.parentNode,this.parentNode.parentNode.className);">' + segments[i].getElementsByTagName('h3')[0].innerHTML + '</a>';
    }
    var days = getElementsByClassName('day');
    for (var i=0; i<days.length; i++) {
      days[i].style.display = 'none';
      if (days[i].id.indexOf(today.getDay()) >= 0) {
        days[i].style.display = 'block';
        hideSegments(days[i]);
        showSegment(days[i],getCurrentSegment());
      }
    }
  }
}
function getCurrentSegment() {
  var today = new Date();
  if (today.getHours() < 13) {
    return 'morning';
  } else if (today.getHours() < 18) {
    return 'afternoon';
  } else {
    return 'evening';
  }
}
function hideSegments(day) {
  var lessons = day.getElementsByTagName('p');
  for (var i=0; i<lessons.length; i++) {
    lessons[i].style.display = 'none';
  }
}
function showSegment(day,segment) {
  var segments = day.getElementsByTagName('li');
  for (var i=0; i<segments.length; i++) {
    if (segments[i].className.indexOf(segment) >= 0) {
      var lessons = segments[i].getElementsByTagName('p');
      for (var j=0; j<lessons.length; j++) {
        lessons[j].style.display = 'block';
      }
    }
  }
}

function attachExternals() {
  if (document.getElementsByTagName('a')) {
    as = document.getElementsByTagName('a');
    for (var i=0; i<as.length; i++) {
      if (as[i].className.indexOf('external') >= 0) {
        as[i].target = '_blank';
      }
    }
  }
}

function init() {
  startList('navbar');
  attachSchedule();
  attachExternals();
}
