/* ******************************************************
calendar event setup javascript (eventsetup.js)
by Kevin Kelleher
http://www.midlandstech.com/science/kelleherk/
// copyright 2004 Kevin Kelleher. All rights reserved.
********************************************************* */

var eventMonth, eventDate, eventYear, emonthName;
var months = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
var annual = 0;
var showrem = 0;
var theColor = "#000000";
var hexascii = [];
for(a=32;a<127;a++) {
	var hapair = ["32"," "];
	var hex = a.toString(16);
	if (hex.length == 1) hex = "0"+hex;
	hapair[0] = hex;
	hapair[1] = unescape("%"+hex);
	hexascii[hexascii.length] = hapair;
}

var cookieName = "calendar_events";
var calcookie = "";
var calString = "";
var calEvents = "";
var eventDays = [];
var eventsToCut = [];
var calcookie = document.cookie;
var ccpos = calcookie.indexOf(cookieName);
if (calcookie != "" && ccpos != -1) {
	var ccend = calcookie.indexOf(";",ccpos);
	if (ccend == -1) ccend = calcookie.length;
	var calString = calcookie.substring(ccpos+cookieName.length+1,ccend);
	var calSplit = calString.split("/");
	for(m=0;m<calSplit.length;m++) {
		var tmevtSplit = calSplit[m].split(".");
		var xdate = new Date(Number(tmevtSplit[0])*100000);
		var xyear = ""+xdate.getFullYear();
		var xhour = ""+xdate.getHours();
		if (xhour == "12") xyear = "annual";
		tmevtSplit[0] = ("" + months[Number(xdate.getMonth())] + "_" + xyear + "_" + xdate.getDate() + "_");	
		var calHex = "";
		for(z=0;z<tmevtSplit[1].length;z=(z+1)) {
			var calchar = tmevtSplit[1].charAt(z);
			if (calchar == "_" || calchar == "/") {
				calHex += calchar;
			}
			else {
				calHex += ("%"+tmevtSplit[1].substring(z,(z+2)));
				z = (z+1);
			}
		}
		tmevtSplit[1] = unescape(calHex);
		calSplit[m] = tmevtSplit.join("");
	}
	calEvents = calSplit.join("/");
	var eventList = calEvents.split("/");
	for(evt=0;evt<eventList.length;evt++) {
		var theEvent = eventList[evt].split("_");
		eventDays[eventDays.length] = theEvent[0]+" "+theEvent[2];
	}
}
	
function processCal(offset) {
	theCal = getCal(offset,calEvents);
	if (document.all) {
		document.all['divAns'].innerHTML = theCal;
	}
	else if (document.layers) {
		with (document.layers['divAns'].document) { 
		open();
		write(theCal);
		close();
		}
	}
	else {
		document.getElementById('divAns').innerHTML = theCal;
	}
}

function showStatus(theStatus) {
	if(document.all || document.layers) {
		window.status = theStatus;
		return true;
	}
	else {
		setTimeout(('window.status = \''+theStatus+'\'; return true;'),500);
	}
}

function noSubmit(theAns) {
	return !(window.event && window.event.keyCode == 13);
}

function setCBValue(thebox) {
	if (thebox == 0) {
		if (annual == 0) {
			annual = 1;
		}
		else {
			annual = 0;
		}
	}
	else {
		if (showrem == 0) {
			showrem = 1;
		}
		else {
			showrem = 0;
		}
	}
}

function getColor(colorvalue) {
	if (colorvalue == "#000000") {
		var hexColor = prompt("Please enter a six digit hexadecimal color code, preceded by the pound sign...","#2090ff");
		if (hexColor.charAt(0) == "#" && hexColor.length == 7) {
			theColor = hexColor;
		}
	}
	else {
		theColor = document.calform.colormenu.value;
	}
}

function setEvent(edate,emonth,eyear) {
	eventMonth = emonth;
	emonthName = months[emonth];
	eventDate = edate;
	eventYear = eyear;
	eventsToCut = [];
	document.calform.clear.value = "Clear All Events";
	for(v=0;v<eventDays.length;v++) {
		if (eventDays[v] == (emonthName + " " + edate)) {
			eventsToCut[eventsToCut.length] = v;
			document.calform.clear.value = "Clear " + (emonthName + " " + edate) + " Events";
		}
	}
	writeDate(emonthName + " " + edate + ", " + eyear);
	setDisplay(1);
	document.calform.eventname.focus();
	window.scrollTo(0,4000);
}

function makeEvent(eventStatus) {
	if (eventStatus == 1 && document.calform.eventname.value == "") {
		eventStatus = 0;
		alert("Please enter a name for the event to continue...");
		document.calform.eventname.focus();
	}
	else {
	setDisplay(0);
	}
	var calValue = "";
	var expdate = new Date();
	if (eventStatus == -1) {
		if (eventsToCut.length > 0) {
			var dodelete = confirm("Do you really want to clear your " + emonthName + " " + eventDate + " events?");
		}
		else {
			expdate.setTime(expdate.getTime()+(-1*24*60*60*1000)); //-1 days = yesterday; expires cookie
			var dodelete = confirm("Do you really want to clear all your custom calendar events?");
		}
		if (!dodelete) {
			eventStatus = 0;
		}
		else if (eventsToCut.length > 0) {
			var eList = calString.split("/");
			calString = "";
			for(d=0;d<eList.length;d++) {
				var eWrite = 1;
				for(c=0;c<eventsToCut.length;c++) {
					if (d == eventsToCut[c]) eWrite = 0;
				}
				if (eWrite == 1) {
					if (calString != "") calString += "/";
					calString += eList[d];
				}
			}
			calValue = calString;
			expdate.setTime(expdate.getTime()+(1825*24*60*60*1000)); //1825 days = 5 years
		}
	}
	else if (eventStatus == 1) {
		var eventHour = 0;
		if (annual == 1) eventHour = 12;
		if (theColor == "#000000") theColor = "1";
		calValue = calString;
		if (calValue != "") calValue += "/";
		var caldate = ((new Date(eventYear,eventMonth,eventDate,eventHour,0,0)).getTime())/100000;
		calValue += (caldate + ".");
		addEvent = theColor + "_" + document.calform.eventmsg.value + "_" + document.calform.eventname.value + "_" + showrem;
		for(p=0;p<addEvent.length;p++) {
			var thechar = addEvent.charAt(p);
			for(q=0;q<hexascii.length;q++) {
				if ((hexascii[q])[1] == thechar) {
					if (thechar != "_" && thechar != "/") {
					calValue += (hexascii[q])[0];
					}
					else {
					calValue += thechar;
					}
					break
				}
			}
			if (q == hexascii.length) calValue += (escape(thechar)).split("%").join("");
		}
		expdate.setTime(expdate.getTime()+(1825*24*60*60*1000)); //1825 days = 5 years
	}
	if (eventStatus == -1 || eventStatus == 1) {
		document.cookie = "calendar_events="+calValue+"; expires="+expdate.toGMTString()+"; path=/science/kelleherk";
		window.location.href=window.location.href;
	}
	return false;
}

function setDisplay(dtype) {
	var dStatus = (dtype == 0) ? 'none':''; 
	if (document.layers) {
	document.layers['newevent'].display = dStatus;
	}
	else {
	document.getElementById('newevent').style.display = dStatus;
	}
}

function writeDate(thedate) {
	if (document.all) {
	document.all['eventdate'].innerHTML = thedate;
	}
	else if (document.layers) {
		with (document.layers['eventdate'].document) {
		open();
		write(thedate);
		close();
		}
	}
	else {
	document.getElementById('eventdate').innerHTML = thedate;
	}
}