/* ***************************************
   Calendar Functions
*****************************************/

function buildCal(calClass, monthClass, dayofweekClass, dayClass) {
	var date=new Date();			// Gets system date
	var month=date.getMonth()+1 ;	// Gets month number +1 gives 1 to 12
	var prevmonth=month-1;			// Gets previous month number
	if (prevmonth==0) prevmonth=12;	// and if 0 sets to 12 ie December
	var year=date.getFullYear();	// Gets year from date
	var monthname=['January','February','March','April','May','June','July','August','September','October','November','December'];
	var monthlength=[31,0,31,30,31,30,31,31,30,31,30,31];
	var openingDate = new Date(year, month-1, 1);			// Sets date of first day of month
	openingDate.startDay=openingDate.getDay();				// Sets day of week number 0(Sunday) to 6(Saturday)
	if (openingDate.startDay==0) openingDate.startDay=7;	// Switches Sunday to end of week ie 1 to 7
	var todaydate=new Date(); 								// Gets system date
	var scanfortoday=(year==todaydate.getFullYear() && month==todaydate.getMonth()+1)? todaydate.getDate() : 0 // Returns day of month or 0
	// Returns number of days in month including length of February either 28 or 29
	monthlength[1]=(((openingDate.getFullYear()%100!=0)&&(openingDate.getFullYear()%4==0))||(openingDate.getFullYear()%400==0))?29:28; 
	// Starts building the calendar table "t" including formatting and CSS
	var t='<div class="'+calClass+'"><table align="center" class="'+calClass+'" cols="7" cellpadding="0"  border="'+0+'" cellspacing="0"><tr align="center">';
	t+='<td colspan="7" align="center" class="'+monthClass+'">'+monthname[month-1]+' - '+year+'</td></tr><tr align="center">';
	for(s=0;s<21;s+=3){
		t+='<td width="25" class="'+dayofweekClass+'">'+"MonTueWedThuFriSatSun".substr(s,3)+'</td>'; 
		} //Adds the days of week string to the table
	t+='</tr><tr align="center">';
	if (openingDate.startDay==1) openingDate.startDay=8; //If month starts on first ensures 7 days of preceding month show
	for(i=1;i<=42;i++){	// Loop through 42 possible date positions
		var x=0;		// Set date counter to 0
		if ((i-openingDate.startDay>=0)&&(i-openingDate.startDay<monthlength[month-1])) // Checks that month has started 
			x=i-openingDate.startDay+1; // and outputs date number
		else			// Deal with days before and after month
			if (i<8) 	// If month hasn't started output days from preceding month and CSS
				x='<span id="ntm">'+(monthlength[prevmonth-1]-(openingDate.startDay-1)+i)+'</span>'; 
			else		// Otherwise output start of following month and CSS
				x= '<span id="ntm">'+(i-openingDate.startDay+1-monthlength[month-1])+'</span>';
		// Check for todays date and apply CSS		
		 if ((x==scanfortoday) && (i>=openingDate.startDay) && (i<= openingDate.startDay+monthlength[month-1])) x='<span id="today">'+x+'</span>';
		t+='<td class="'+dayClass+'">'+x+'</td>'; 
		if(((i)%7==0)&&(i<36))t+='</tr><tr align="center">'; // Count rows for calendar table
		}
	 t+='</tr></table></div>';
	 document.write(t,'<br />'); // Output everything
	}

function SendMail(name,site,title) {
  window.location = "mailto:"+name+"@"+site+"."+title;
 }
 
/* ***************************************
   Switch Stylesheet
*****************************************/

function setActiveStyleSheet(title) {
  var i, a, main;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
      a.disabled = true;
      if(a.getAttribute("title") == title) a.disabled = false;
    }
  }
}

function getActiveStyleSheet() {
  var i, a;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") && !a.disabled) return a.getAttribute("title");
  }
  return null;
}

function getPreferredStyleSheet() {
  var i, a;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1
       && a.getAttribute("rel").indexOf("alt") == -1
       && a.getAttribute("title")
       ) return a.getAttribute("title");
  }
  return null;
}

function createCookie(name,value,days) {
  if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
  }
  else expires = "";
  document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
  var nameEQ = name + "=";
  var ca = document.cookie.split(';');
  for(var i=0;i < ca.length;i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1,c.length);
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
  }
  return null;
}

window.onload = function(e) {
  var cookie = readCookie("style");
  var title = cookie ? cookie : getPreferredStyleSheet();
  setActiveStyleSheet(title);
}

window.onunload = function(e) {
  var title = getActiveStyleSheet();
  createCookie("style", title, 365);
}

var cookie = readCookie("style");
var title = cookie ? cookie : getPreferredStyleSheet();
setActiveStyleSheet(title);

