/* calendars.js
 * Purpose: provides functionality for building, displaying
	and editing calendar entries. 
 * Author: Carl Roberts III
 * Owner: [insert your name here/company name here]
 * Copyright 2007 [your name]
 * Date Created: 5/4/2007
 */

 /* global variables - for use all across the script */

	/* date variables */
 var glbDate = new Date(); //current date
 var iStartDay = 0; //determines the day of the week each month begins on, re: function setFirstDayOfMonth()
 setFirstDayOfMonth(glbDate.getMonth());
 
	/* day abbreviations and titles */
 var arDaysAb = new Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat");
 var arDays = new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday");

 	/* month abbreviations, titles and maximum days */
 var arMonthsAB = new Array("Jan", "Feb", "Mar", "Apr", "May", "June", "July", "Aug", "Sep", "Oct", "Nov", "Dec");
 var arMonths = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
 var arMonthDays = getMonthDays();

  
	
 /* function checkYear()
  * checks the year of the current date	and determines if the current
  * year is a leap year. If so, return 29 as the number of days. Otherwise,
  * return 28 
  */
 function checkYear()
 {
	if((glbDate.getFullYear() % 4) == 0)
	{
		if((glbDate.getFullYear() % 100) == 0 || (glbDate.getFullYear() % 400) == 0)
		{
			return 29;
		}
		else
		{
			return 29;
		}
	}
	else
	{
		return 28;
	}
 } /* end function checkYear() */

 function displayMiniCalendar() {
	var strW = "<div class=\"miniCalendar\">"+"\n";
	strW += "<div class=\"miniCalendarTitle\">";
        strW += "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr>";
	strW += "<td valign=\"middle\" class=\"calTitleNav\"><a href=\"#\" onClick=\"changeMonth(false);\" class=\"calLink\">&lt;&lt;</a></td>";
	strW += "<td valign=\"middle\" class=\"calTitle\">"+arMonths[glbDate.getMonth()]+"&nbsp;"+glbDate.getFullYear()+"</td>";
	strW += "<td valign=\"middle\" class=\"calTitleNav\"><a href=\"#\" onClick=\"changeMonth(true);\" class=\"calLink\">&gt;&gt;</a></td></tr></table></div>";
	strW += "<table class=\"miniCalendar\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\"><tr>"+"\n";
	for(var i=0; i < 7; i++) {
		strW += "<td class=\"miniDayTitle\">"+arDaysAb[i]+"</td>"+"\n";
	}
	
	strW += "</tr>";
	var iTotalDaysPassed = 1;
	var iDayOfWeekCounter = 0;
	var firstDayPassed = false;
	

	while(iTotalDaysPassed <= arMonthDays[glbDate.getMonth()]) {
		strW += "<tr>"+"\n";
		for(iDayOfWeekCounter = 0; iDayOfWeekCounter < 7; iDayOfWeekCounter++) {
			if(iDayOfWeekCounter == iStartDay && !firstDayPassed) {
				firstDayPassed = true; }
			
			if(iTotalDaysPassed <= arMonthDays[glbDate.getMonth()] && firstDayPassed) {	
				var tDate = new String(""+(getDayNumber(glbDate.getMonth()+1))+getDayNumber(iTotalDaysPassed)+glbDate.getFullYear()+"");
				strW += ""+checkDayInfo(tDate,iTotalDaysPassed,iDayOfWeekCounter)+"\n";
				iTotalDaysPassed++;
			}
			else {
				strW += "<td class=\"notDayOfMonth\">&nbsp;</td>"+"\n";
			}
		}
		strW += "</tr>"+"\n";
	}
	strW += "</table></div>"+"\n";
	document.getElementById("smallCalendar").innerHTML = strW;
	strW = "";
 } //end function displayMiniCalendar



 function setFirstDayOfMonth(monthID)
 {
   var tDate = new Date(); //temporary date holder
   tDate.setFullYear(glbDate.getFullYear()); 
   tDate.setMonth(monthID);
   tDate.setDate(1);
   iStartDay = tDate.getDay(); 
 }

 function getDayNumber(dayNum)
 {	var strR = "";
	if(dayNum < 10) { var strR = "0" + dayNum; }
	else { var strR = ""+dayNum+""; }
	return strR; 
 }

 function changeMonth(direction)
 {
	if(direction) {
		glbDate.setMonth(glbDate.getMonth()+1);
	}
	else { 
		glbDate.setMonth(glbDate.getMonth()-1); }
	setFirstDayOfMonth(glbDate.getMonth());
	arMonthDays = getMonthDays();
	displayMiniCalendar();
 }

 function getMonthDays() {
	arMDays = new Array(31, checkYear(), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
	return arMDays;
 }




 function getDaySuffix(dayID) {
	if(parseInt(dayID) == 1 || parseInt(dayID) == 21 || parseInt(dayID) == 31) { return "st"; }
	else if(parseInt(dayID) == 2 || parseInt(dayID) == 22) { return "nd"; }
	else if(parseInt(dayID) == 3 || parseInt(dayID) == 23) { return "rd"; }
	else { return "th"; }
 }

  function openWin(url, target)
  {
	var dimensions = "width=500,height=400,left=400,top=150";
	myEditWindow = window.open(url,target,dimensions);
  }
		
  function openEditWindow(monthID, dayID, yearID)
  {
	
	openWin("caledit.php?m="+getDayNumber(monthID) + "&d=" + getDayNumber(dayID) + "&y=" + yearID +"&proc=edit","myEditPopper");
  }

  function openDeleteWindow(monthID, dayID, yearID)
  {
	
	openWin("caledit.php?m="+getDayNumber(monthID) + "&d=" + getDayNumber(dayID) + "&y=" + yearID +"&proc=delete","myEditPopper");
  }

  function openAddWindow() {
	openWin("caledit.php?proc=add","myEditWindow");
  }

 glbDate.setDate(1);
 setFirstDayOfMonth(glbDate.getMonth());

  function showLogin() {
	var strL = "<div class=\"calLogin\">";
	strL += "<form name=\"calendarLogin\" method=\"POST\" action=\"callogprocess.php?proc=login\">";
	strL += "Please log in with your Username and Password:<br/>";
	strL += "<div id=\"logAlert\"></div>";
	strL += "<b>Username: </b><input type=\"text\" size=\"20\" name=\"txtCalUserName\" class=\"calInput\" />";
	strL += "<br/><b>Password: </b><input type=\"password\" size=\"20\" name=\"txtCalUserPass\" class=\"calInput\" />";
	strL += "<br/><input type=\"submit\" value=\" LOG IN \" /></form></div>";

	document.getElementById("smallCalendarInfo").innerHTML = strL;
	strL = "";
	document.calendarLogin.txtCalUserName.focus();
 }

 