var tmonths = new Array("Jan.","Feb.","Mar.","Apr.","May","Jun.","Jul.","Aug.","Sep.","Oct.","Nov.","Dec.");
var testType = ["Exam","Lab Quiz"];
var microPracs = ["Microscope Practical","Stain Practical","MidTerm Practical","Media Practical","Final Practical"];
var semDefs = [["Spring",4,15],["Summer",7,15],["Fall",11,31]];
var deftext = "divtext";
var vacCode = 0;
var studentHols = [];
var semNum = 0;
var isCurSem = 0;
var winHeight = 500;
var thisSmstr = "Fall 2005";

function getTests(theCourse,lecSecs,labSecs,exams,quizzes,finaltimes,moreHols,theSmstr,note) {
	var tcdate = new Date();
	var tcyear = tcdate.getFullYear();
	var tcmonth = tcdate.getMonth();
	var tcday = tcdate.getDate();
	var csem = theSmstr;
	for (d=0;d<semDefs.length;d++) {
		if ((tcmonth < (semDefs[d])[1]) || ((tcmonth == (semDefs[d])[1]) && (tcday < (semDefs[d])[2]))) {
			csem = ((semDefs[d])[0] + ", " + tcyear);
			semNum = d;
			break;
		}
	}
	if (csem == theSmstr) {
		isCurSem = 1;
	}
	else if (csem == thisSmstr) {
		isCurSem = 2;
	}
	theSmstr = csem;
	getDates(moreHols);
	var hasSec = 0;
	var maxSecs = 0;
	var examSecs = exams.length;
	if (examSecs > 0) maxSecs = examSecs;
	var quizSecs = quizzes.length;
	if (quizSecs > maxSecs) maxSecs = quizSecs;
	if (maxSecs == 0) {
		testType = [];
	}
	else {
		if ((examSecs > 0 && exams[0].length > 0) || (quizSecs > 0 && quizzes[0].length > 0)) hasSec = 1; 
	}
	if ((examSecs > 0 && exams[0].length > 0) && (quizSecs > 0 && quizzes[0].length > 0)) winHeight = (winHeight + 100);
	if (note != "") winHeight = (winHeight + 50);
	var colSpan = "";
	if (maxSecs > 1) colSpan = (" colspan='" + (maxSecs+1) + "'");
	var dvdrLine = "<tr><td" + colSpan + "><img src=\"../Images/line2.gif\" height=\"1\" width=\"100%\"><\/td><\/tr>";
	var spcr = "<tr><td height=\"3\"" + colSpan + "><\/td><\/tr>";
	var smstrCal = "<table border=\"0\" cellspacing=\"0\" cellpadding=\"2\" width=\"100%\" valign=\"top\"><tr><td align=\"center\"><font class=\"linktitle\">" + theSmstr + "<\/font><\/td><\/tr><\/table>";
	smstrCal += "<table border=\"0\" cellspacing=\"1\" cellpadding=\"2\" width=\"100%\" valign=\"top\" align=\"left\"><font face=\"verdana, helvetica, geneva\" size=\"2\">";
	smstrCal += "<tr><td" + colSpan + " style=\"padding: 0px 0px 2px 0px\"><img src=\"../Images/line2.gif\" height=\"1\" width=\"100%\"><\/td><\/tr>";
		
	if (isCurSem == 0) {
		smstrCal += "<tr class=\"" + deftext + "\"><td nowrap>Not yet available...<\/td><\/tr>";
	}
	if (isCurSem == 1) {
		for (t=0;t<testType.length;t++) {
			if (testType[t] == "Exam") {
				theSecs = lecSecs;
				tests = exams;
			}
			else {
				theSecs = labSecs;
				tests = quizzes;
			}
			var secNum = tests.length;
			var testNum = 0;
			if (secNum > 0) testNum = tests[0].length;
			if (secNum > 2) deftext = "smalltext";
			if (tests.join("") != "") {
				var leclab = (t == 0) ? "Lecture Exams":"Lab Practicals";
				var secnote = "";
				if (theSecs.length == 1) secnote = "<font class=\"smalltext\">&nbsp;(Sec. " + theSecs[0] + ")<\/font>";
				smstrCal += "<tr class=\"divtitle\"><td nowrap valign=\"top\"><b>" + leclab + ":<\/b>" + secnote + "<\/td><\/tr>";
			}
			smstrCal += "<tr><td style=\"padding:0px\"><table border=\"0\" cellspacing=\"1\" cellpadding=\"2\" width=\"100%\" valign=\"top\" align=\"left\">";
			if (secNum > 1) {
				smstrCal += "<tr class=\"" + deftext + "\"><td nowrap><u>Section:<\/u><\/td>";
				for (g=0;g<theSecs.length;g++) {
					smstrCal += "<td nowrap><u>" + theSecs[g] + "<\/u><\/td>";
				}
				smstrCal += "<\/tr>";
			}
			var hasNext = [0,0,0,0,0,0];
			var noteNum = -1;
			var nextNum = 0;
			for (m=0;m<testNum;m++) {
				testname = testType[t] + " " + (m+1);
				if (m == (testNum-1)) testname = ("Final " + testType[t]);
				if (theCourse == "Biology 225" && testType[t] == "Lab Quiz") testname = microPracs[m];
				smstrCal += "<tr class=\"" + deftext + "\"><td nowrap valign=\"top\">" + testname + ":";
				if (secNum == 1) {
					smstrCal += " ";
				}
				else {
					smstrCal += "<\/td>";
				}
				for (n=0;n<secNum;n++) {
					var ftime = "";
					var tspace = " ";
					if (secNum > 1) tspace = "<br>"; 
					var testDate = "&nbsp;";
					var predate = "";
					var premonth = -1;
					var preday = "";
					var testitem = (tests[n])[m];
					var astx = "";
					if (testitem.indexOf("*") != -1) {
						noteNum = n;
						astx = "*"
					}
					testitem = testitem.replace("*","");
					testitem = testitem.replace(/\s+/g,"");
					var orsplit = testitem.split("or");
					var tosplit = testitem.split("-");
					if (orsplit.length > 1) {
						tosplit = orsplit[0].split("-");
					}
					if (tosplit.length > 1) {
						var presplit = (tosplit[0]).split("/");	
						premonth = (presplit[0]-1);
						preday = presplit[1];
						predate = (tmonths[premonth] + " " + preday + " -" + tspace);
						tspace = "<br>";
						testitem = tosplit[1];
					}
					if (orsplit.length > 1) {
						var presplit = (orsplit[0]).split("/");
						if (tosplit.length > 1 && orsplit.length == 2) {
							presplit = (tosplit[1]).split("/");
							orsplit = [tosplit[1], orsplit[1]];
						}
						premonth = (presplit[0]-1);
						preday = presplit[1];
						for(or=0;or<(orsplit.length-1);or++) {
							var ossplit = (orsplit[or]).split("/");
							predate += (tmonths[(ossplit[0]-1)] + " " + ossplit[1] + " /" + tspace);
							if (secNum == 1 && or == 2) predate += "<br>";
						}
						tspace = "<br>";
						testitem = orsplit[orsplit.length-1];
					}
					if (testType[t] == "Exam" && m == (testNum-1) && finaltimes[n] != "") ftime = ("<font class=\"notetext\">" + tspace + "@ " + finaltimes[n] + "<\/font>");
					var stbold = "";
					var stboldalt = "";
					var endbold = "";
					var testStr = testitem;
					var testSplit = testitem.split("/");
					if (testSplit.length > 1) {
						var testmonth = (testSplit[0] - 1);
						var testday = testSplit[1];
						if (hasNext[n] == 0 || (premonth == tcmonth && preday == tcday)) {
							if ((testmonth == tcmonth && testday >= tcday) || (testmonth > tcmonth)) {
								stbold = "<font style=\"color:#003399; font-weight:bold;\">";
								if (testmonth == tcmonth && testday == tcday) stbold = "<font style=\"color:#990000; font-weight:bold;\">";
								stboldalt = "<font style=\"color:#343434; font-weight:bold;\">";
								endbold = "<\/font>";
								hasNext[n] = 1;
								nextNum = n;
								if (secNum > 0) smstrCal = smstrCal.replace(testname,(stboldalt+testname+endbold));
							}
						}
						testStr = (tmonths[testmonth] + " " + testday);
					}
					testDate = (stbold + predate + testStr + ftime + endbold);
					if (testType[t] == "Lab Quiz" && m == (testNum-1) && theCourse != "Biology 225") astx = "*";
					if (astx != "") testDate += astx;
					if (tests.length == 1) {
						testDate += "<\/td>";
					}
					else {
						testDate = ("<td nowrap valign=\"top\" align=\"left\">" + testDate  + "<\/td>");
					}
					smstrCal += testDate;
				}
				smstrCal += "<\/tr>";
			}
			smstrCal += "<\/table><\/td><\/tr>";
			if (secNum > 0 && testNum > 0) smstrCal += dvdrLine;
		}
	}
	if (isCurSem > 0) {	
		deftext = "divtext";
		smstrCal += "<tr><td class=\"divtitle\"" + colSpan + "><b>Student Holidays:<\/b><font class=\"notetext\">&nbsp;(no class)<\/font><\/td><\/tr>";
		for (o=0;o<studentHols.length;o++) {
			var holSplit = (studentHols[o])[0].split("/");
			var stholdate = holSplit[1];
			var holDur = (studentHols[o])[1];
			if (holDur > 0) {
				stholdate += ("-" + (Number(stholdate) + holDur));
			}
			var vdiff = (tcday - holSplit[1]);
			var sb = "";
			var sbdesc = "";
			var eb = "";
			if (tcmonth == (holSplit[0] - 1) && vdiff >= 0 && vdiff < (holDur + 1)) {
				sb = "<font style=\"color:#343434; font-weight:bold;\">";
				sbdesc = "<font style=\"color:#840000; font-weight:bold;\">";
				eb = "</font>";
				var holName = (studentHols[o])[2];
				if (holName == "Fall Break" || holName == "Spring Break") vacCode = 1;
			}
			var dowrap = "";
			var holdesc = (studentHols[o])[2];
			if (holdesc.length <= 22) dowrap = "nowrap "; 
			smstrCal += ("<tr><td " + dowrap + "class=\"" + deftext + "\"" + colSpan + ">" + sb + tmonths[holSplit[0]-1] + " " + stholdate + ": " + eb + sbdesc + holdesc + eb + "<\/td><\/tr>");
		}
		smstrCal += dvdrLine;
		smstrCal += "<tr><td class=\"" + deftext + "\"" + colSpan + "><a href=\"http://midlandstech.mhsoftware.com/\" onMouseOver=\"showStatus('Go to the Midlands Technical College Calendar')\" onMouseOut=\"showStatus('')\">MTC Calendar<\/a><\/td><\/tr>";
		if (hasSec > 0) {
			smstrCal += dvdrLine;
			smstrCal += "<tr><td class=\"" + deftext + "\"" + colSpan + "><u>Please note<\/u>: All exam & quiz dates are subject to change<\/td><\/tr>";
			if (noteNum != -1 && noteNum < nextNum) note = "";
			if (note != "") {
				astx = "* ";	
				if (note.indexOf("dleihour.html") == -1) note = note.replace("testing center","<a href=\"http://www.midlandstech.edu/testcenter/dleihour.html\">testing center<\/a> <font class=\"smalltext\">(<a href=\"http://www.midlandstech.edu/airportmap-b.htm\">262 ASC<\/a>)<\/font>");
				//if (note.indexOf("studentassessment.html") == -1) note = note.replace("testing center","<a href=\"http://www.midlandstech.edu/science/kelleherk/studentassessment.html\">testing center<\/a>");
				smstrCal += "<tr><td class=\"" + deftext + "\"" + colSpan + ">" + astx + note + "<\/td><\/tr>";
			}
			if (quizzes.length > 0 && quizzes[0].length == 6) {
				astx = "* ";
				smstrCal += "<tr><td class=\"" + deftext + "\"" + colSpan + ">" + astx + "Cumulative final lab quiz is optional<\/td><\/tr>";
			}
		}
	}
	smstrCal += "<\/font><\/table>";
	smstrCal += "<form name=\"form\" method=\"POST\" action=\"javascript:void(null);\" onSubmit=\"javascript:void(null);\"><INPUT type=\"hidden\" name=\"cal\" value=\"\"><INPUT type=\"hidden\" name=\"titletext\" value=\"\"><\/form>"
	return smstrCal;
}

function getDates(moreHols) {
	var num=/(^\d+$)|(^\d+\.\d+$)/;
	var sdate = new Date();
	var year = sdate.getFullYear();
	//sdate.setFullYear(year);
	sdate.setDate(1);
	if (semNum == 0) {
		sdate.setMonth(0);
		var sw = (4 + (7 - sdate.getDay()));
		if (sw > 9) sw = (sw - 7);
		var spst = (sw + 7);
		startDate = ("1/" + spst);
		studentHols[studentHols.length] = [("1/" + (spst+5)),0,"Martin Luther King Day"];
		sdate.setMonth(2);
		var sm = (2 + (7 - sdate.getDay()));
		if (sm >= 7) sm = (sm - 7);
		var sbk = sm;
		if (sbk <= 5) sbk = (sbk + 7);
		studentHols[studentHols.length] = [("3/" + sbk),4,"Spring Break"];
	}
	else if (semNum == 1) {
		sdate.setMonth(4);
		var fm = (2 + (7 - sdate.getDay()));
		if (fm >= 7) fm = (fm - 7);
		var rst = (fm + 21);
		startDate = ("5/" + rst);
		sdate.setMonth(6);
		var foj = 4;
		if (sdate.getDay() == 3) foj = 6;
		if (sdate.getDay() == 4) foj = 5;
		studentHols[studentHols.length] = [("7/" + foj),0,"US Independence Day"];
		if (sdate.getDay() == 2) semDays[1] = 67;
	}
	else if (semNum == 2) {
		sdate.setMonth(7);
		var qm = (2 + (7 - sdate.getDay()));
		if(qm >= 7) qm = (qm - 7);
		var fst = (qm + 21);
		startDate = ("8/" + fst);
		sdate.setMonth(8);
		var ld = (2 + (7 - sdate.getDay()));
		if (ld > 7) ld = (ld - 7);
		studentHols[studentHols.length] = [("9/" + ld),0,"Labor Day"];
		sdate.setMonth(9);
		var sm = (2 + (7 - sdate.getDay()));
		if (sm > 7) sm = (sm - 7);
		var fbk = (sm + 7);
		studentHols[studentHols.length] = [("10/" + fbk),1,"Fall Break"];
		sdate.setMonth(10);
		if (year/2 == Math.round(year/2)) {
			var ed = (3 + (7 - sdate.getDay()));
			if(ed > 7) {
				ed = (ed - 7);
			}
			studentHols[studentHols.length] = [("11/" + ed),0,"Election Day"];
		}
		var fth = (5 + (7 - sdate.getDay()));
		if(fth > 7) {
			fth = (fth - 7);
		}
		var td = (fth + 21);
		studentHols[studentHols.length] = [("11/" + (td-1)),3,"Thanksgiving Break"];
	}
	if (isCurSem == 1 && moreHols.join("") != "") studentHols = (studentHols.concat(moreHols)).sort(sortDate);
}

function sortDate(a,b) {
	var asplit = a[0].split("/");
	if (asplit[1].length < 2) asplit[1] = "0" + asplit[1];
	var anum = Number(asplit[0] + "." + asplit[1]);
	var bsplit = b[0].split("/");
	if (bsplit[1].length < 2) bsplit[1] = "0" + bsplit[1];
	var bnum = Number(bsplit[0] + "." + bsplit[1]);
	return (anum - bnum);
}

function getCode() {
	return vacCode;
}

function popupCal() {
	var caltitle = "Calendar";
	document.form.cal.value = courseCal;
	document.form.titletext.value = (theCourse + " " + theSmstr + " Calendar");
	window.open("",caltitle,"height="+winHeight+",width=440,resizable,scrollbars");
	document.form.target = caltitle;
	document.form.action = "http://www.midlandstech.com/science/kelleherk/bigcalendar.asp";
	document.form.submit();
}