//
// array of ranks
//
ranks = [["Professor",  "Associate Professor",  "Assistant Professor", "Visiting Assistant Professor"],  // column 1
               ["Senior Lecturer", "Lecturer", "Visiting Lecturer",
				"Adjunct Professor of Actuarial Science", "Emeritus Faculty"], // column 2
				["Associate Faculty", "Unknown"]  // column 3
				]; 
	
//
// index array
//
var facultyindex = new Array(ranks.length);
var numcols = ranks.length;

// make index
function makefacultyindex(faclist) {
  var col, row, ifac, unknowncol, unknownrow;
  for(col = 0; col < numcols; ++col) {
    facultyindex[col] = new Array();
    for(row = 0; row < ranks[col].length; ++row) {
       facultyindex[col][row] = new Array();
	   if(ranks[col][row] == "Unknown") {
	     unknowncol = col;
		 unknownrow = row;
		 };
	  };
	};
  for(ifac = 0; ifac < faclist.length; ++ifac) {
     for(col = 0; col < numcols; ++col) {
	    for(row = 0; row < ranks[col].length; ++row) {
	        if(faclist[ifac].rank == ranks[col][row])
	           break;
		    };
		if(row < ranks[col].length)
		    break;
	    };
	 if(col >= numcols) {
	    col = unknowncol;
		row = unknownrow;
		};
	 facultyindex[col][row][facultyindex[col][row].length] = ifac;
    };
  };

var indexspacewidth = '\"60\"';

// display index
function displayfacultyindex(faclist) {
   document.write('<table border=\"0\" ', 'cellspacing=\"1\" cellpadding=\"0\">');
   for(var col = 0; col < numcols; ++col) {
	  if(col > 0)
	     document.write('<td width=', indexspacewidth, '></td>');
	  document.write('<td valign=\"top\">');
      var cnt = 0;
	  for(var row = 0; row < ranks[col].length; ++row) {
         if(facultyindex[col][row].length == 0)
	        continue;
         if(cnt++ > 0)
	         document.write("<br/>");
	     document.write("<strong>", ranks[col][row], ":</strong><br/>");
	     for(var i=0; i<facultyindex[col][row].length; ++i)
	        document.write("&nbsp;&nbsp;",'<a href=\"#', faclist[facultyindex[col][row][i]].lastname, 
		                                   faclist[facultyindex[col][row][i]].firstname, '\">', 
									faclist[facultyindex[col][row][i]].name, "</a><br/>");
		 };
	  document.write("</td>");
	   };
   document.write("</tr></table>");
   };

// output links to first letters
function displayAtoZ(faclist) {
  var previous = "0", current;
  document.write("<ul>|&nbsp;");
  for(var ifac = 0; ifac < faclist.length; ++ifac) {
    current = faclist[ifac].lastname.charAt(0).toUpperCase();
	if(previous != current) {
	  previous = current;
	  document.write('<a href=\"#first', current, '\">', current, '</a>&nbsp;|&nbsp;');
	  };
    };
  document.write("</ul>");
  };
  
// output e-mail address link
function displayemail(id, dom, isloc) {
  if(isloc == true)
     document.write('<a href=\"mailto:', id, '@', dom, '\">', id, "@", dom, "</a><br/>");
  else
     document.write('<img src=\"./png/', id, '.png\" alt=\"(email graphic)\"><br/>');
  };

var facultylabelwidth = '\"100\"';
var facultydatawidth = '\"400\"';

// output row label for faculty table
function rowlabel(label) {
    document.write("<tr><td width=", 
								facultylabelwidth, 
								' align=\"right\" valign=\"top\"><strong>', 
								label, '</strong>&nbsp;&nbsp;</td>');
  };
  
// faculty display function
function displayfacultymember(prof, isloc) {
    // output anchor labelled by faculty name
    document.write('<a name=\"', prof.lastname, prof.firstname, '\"></a><hr/>');
	// display faculty name and, if defined, display executive office
 	document.write('<table border=\"0\" ', 'cellspacing=\"0\" cellpadding=\"0\"><tr>');
	document.write('<td>');    
	document.write('<strong>', prof.name, '</strong>');
	if(prof.execoffice)
	    document.write(", ", prof.execoffice);
	document.write("<br/><br/>");
	// start list of data
    document.write('<table border=\"0\" ', 'cellspacing=\"1\" cellpadding=\"0\">');
	// rank
    rowlabel("rank:");
    document.write('<td valign=\"top\" width=',
								facultydatawidth, ">", prof.rank, "</td></tr>");
	// degree(s)
	if(prof.degrees) {
		 rowlabel("degree:");
	     document.write('<td valign=\"top\" width=',
								      facultydatawidth, ">", prof.degrees, "</td></tr>");
	   };
	 // interests
	if(prof.interests) {
	    rowlabel("interests:");
	    document.write('<td valign=\"top\" width=',
								      facultydatawidth, ">", prof.interests, "</td></tr>");
      };
	// office
	if(prof.office) {
	  rowlabel("office:");
	  document.write('<td valign=\"top\" width=',
								      facultydatawidth, ">", prof.office, "</td></tr>");
	  };
	// phone
	if(prof.phone) {
	  rowlabel("phone:");
	  document.write('<td valign=\"top\" width=',
								      facultydatawidth, ">",  prof.phone, "</td></tr>");
	  };
	// e-mail
	var mailid = prof.iusbid;
	var mailhost = "iusb.edu";
	if(mailid) {
	   rowlabel("e-mail:");
	   document.write('<td valign=\"middle\" width=', facultydatawidth, ">");
	   displayemail(mailid, mailhost, isloc);
	   document.write("</td></tr>");
	   };
	// web page
	var url = null;
	if((prof.hasiusbpage == true) && prof.iusbid) 
	   url = "http://mypage.iusb.edu/~" + prof.iusbid;
	if(url) {
	   rowlabel("web page:");
	   document.write('<td valign=\"top\" width=',
						facultydatawidth, ">", '<a href=\"', url, '\">', url, "</a><br/></td></tr>");
	   };
	if(prof.misc) {
	   for(var i = 0; i < prof.misc.length; ++i) {
	      rowlabel(prof.misc[i][0]);
	      document.write('<td valign=\"top\" width=', facultydatawidth, ">");
		  document.write(prof.misc[i][1]);
	      document.write("</td></tr>");
	      };
	   }; 
	document.write("</table>");
	document.write('</td>');
	document.write('</tr>');
	document.write("</table><br/>");
	document.write('<a href=\"#top\">top of page</a><br/>');
  };
  
// display all faculty
function displayallfaculty(faclist, isloc) {
  var previous = "0", current;
  makefacultyindex(faclist);
  displayfacultyindex(faclist);
  for(var ifac=0; ifac<faclist.length; ++ifac) {
     current = faclist[ifac].lastname.charAt(0).toUpperCase();
	 if(previous != current) {
	    previous = current;
	    document.write('<a name=\"first', current, '\"></a>');
	  };
	  displayfacultymember(faclist[ifac], isloc);
	  };
  document.write("<br/>");
  };
