
var special_topics_info = {};
var special_topics_names = new Array;

function special_topics_course_add(number,name,description)
{
  var ci = special_topics_info[number];
  if( ci == null )
    {
      ci = {};
      special_topics_info[number] = ci;
    }
  ci.title = name;
  ci.description = description;
  for(var i=3; i<arguments.length; i++)
    {
      var arg = arguments[i];
      if( arg.search(/[\/:]/) == -1 )
        {
          ci.instructor = arg;
        }
      else
        {
          ci.url = arg;
        }
    }
}

function special_topics_course_emit(number)
{
  var ci = special_topics_info[number];
  var name = ci.title == null ? ci.title_offical : ci.title;
  var description = ci.description;
  var url = ci.url;

  var link_provided = url != null && url != "";
  if ( link_provided )
    url = url.replace(/^(?:https?\:\/\/)?www\.ec?e\.lsu\.edu\/?/i,"");

  var url_base = "http://www.ece.lsu.edu/";
  var link_left = link_provided ? "<a href=\"" + url_base + url + "\">" : "";
  var link_right = link_provided ? "</a>" : "";
  var sep1 = "<span class=\"sc-ditem\">";
  var sep = "</span><span class=\"sc-sep\"> &bull;</span>" + sep1;
  var sep3 = "</span>";
  var details = ci == null ? "Course information not available." :
    sep1
    + ci.days + " " + ci.time + " " + special_topics_semester_current_abbr
    + sep + ci.room + sep
    + ci.instructor
    + sep3;

  document.write
    (
     "<div class=\"sc-course\">"
     + "<table cellspacing=\"0\" class=\"sc-name-line\">"
     + "<tr valign=\"baseline\">"
     + "<td class=\"sc-number\"><span class=\"sc-number\">" 
     + link_left + number + link_right + "</span></td>"
     + "<td class=\"sc-name\"><span class=\"sc-name\">" 
     + name + "</span></td>"
     + "</table>");
  if( description )
    document.write("<div class=\"sc-description\">" + description + "</div>");
  document.write("<div class=\"sc-details\">" + details + "</div>" + "</div>" );
}

function special_topics_semester_specify(semester)
{
  if ( special_topics_semester_current == "" )
    {
      special_topics_semester_current = semester;
      special_topics_semester_current_abbr = 
        semester.replace(/([a-z]{2})[a-z]*\s*/i,"$1-");
      return;
    }
  if ( special_topics_semester_current == semester ) return;
  special_topics_semester_current += semester;
}

function special_topics_semester_emit()
{
  document.write("<h2>Special Topics Courses<i>&mdash;"
                 + special_topics_semester_current + "</i></h2>");
}

function special_topics_html_emit()
{
  special_topics_semester_current = "";
  special_topics_load_data_scraped();
  special_topics_load_data_hand();
  special_topics_semester_emit();
  var i;
  for(i=0; i<special_topics_names.length; i++)
    {
      special_topics_course_emit(special_topics_names[i]);
    }
}

function special_topics_info_add(name,info)
{
  special_topics_info[name] = info;
  special_topics_names[special_topics_names.length] = name;
}

function special_topics_course_info_get(number,semester)
{
  return special_topics_info[number];
}

function special_topics_load_data_scraped(name,semester)
{
  var ci = {};
  // Automatically generated.
  // (shell-command "special_topics.pl" t)
  special_topics_semester_specify("Fall 2009");
  ci = {};
  ci.name = "EE 4000-1";
  ci.title_offical = "MCROFLUIDIC BIOCHIP";
  ci.time = "15:40-16:30";
  ci.days = "MWF";
  ci.room = "228 Tureaud Hall";
  ci.instructor = "J Choi";
  special_topics_info_add("EE 4000-1",ci);
  ci = {};
  ci.name = "EE 4000-3";
  ci.title_offical = "AUDIO SIGNAL PROCESS";
  ci.time = "11:40-12:30";
  ci.days = "MWF";
  ci.room = "149 EE Bldg";
  ci.instructor = "Naraghi-Pour";
  special_topics_info_add("EE 4000-3",ci);
  ci = {};
  ci.name = "EE 4700-1";
  ci.title_offical = "PARALLEL PROGRAMMING";
  ci.time = "11:40-12:30";
  ci.days = "MWF";
  ci.room = "3142 P. Taylor Hall";
  ci.instructor = "L Peng";
  special_topics_info_add("EE 4700-1",ci);
  ci = {};
  ci.name = "EE 4700-2";
  ci.title_offical = "GEOMTRC MOD COMPGRAF";
  ci.time = "12:10-13:30";
  ci.days = "TTH";
  ci.room = "2150 P. Taylor Hall";
  ci.instructor = "X Li";
  special_topics_info_add("EE 4700-2",ci);
  ci = {};
  ci.name = "EE 4702-1";
  ci.title_offical = "GPU PROGRAMMING";
  ci.time = "9:40-10:30";
  ci.days = "MWF";
  ci.room = "3129 P. Taylor Hall";
  ci.instructor = "D Koppelman";
  special_topics_info_add("EE 4702-1",ci);
  ci = {};
  ci.name = "EE 7000-1";
  ci.title_offical = "SFTWR OPT FOR MULTI";
  ci.time = "9:10-10:30";
  ci.days = "TTH";
  ci.room = "2172 P. Taylor Hall";
  ci.instructor = "J Ramanujam";
  special_topics_info_add("EE 7000-1",ci);
  ci = {};
  ci.name = "EE 7200-1";
  ci.title_offical = "NANOPHOTONICS";
  ci.time = "12:40-13:30";
  ci.days = "MWF";
  ci.room = "3142 P. Taylor Hall";
  ci.instructor = "G Veronis";
  special_topics_info_add("EE 7200-1",ci);
  ci = {};
  ci.name = "EE 7600-2";
  ci.title_offical = "ERROR CNTRL CODING";
  ci.time = "13:40-14:30";
  ci.days = "MWF";
  ci.room = "145 EE Bldg";
  ci.instructor = "Naraghi-Pour";
  special_topics_info_add("EE 7600-2",ci);
}
