// wz_ekfeed_month_top2.js 
//
// javascript code to draw small calendar with EventKeeper EKFeed
// also includes Dynamic Drive TOOLTIPS code
// in case you're wondering, there's some code here that isn't really
// necessary but I like the URL month numbers to be standard notation e.g. 
// january = 1, but javascript arrays start with 0 so... fuss, fuss, fuss.
//
// 12/28/2008 fixed year rollover bug

// 04/25/2005 added escape when creating evtArray date
// (added corresponding unescape in wz_tooltip2.js


var Calendar = new Date();
var month, year;
var thisMonth = Calendar.getMonth();
var thisYear = Calendar.getFullYear();
var thisURL = document.location.href;

function GetMonthYear()
{
	if (thisURL.indexOf("ekm=") != -1)
	{
		varArray = document.location.href.split('?')[1].split('&');
	
		for(var x=0; x<varArray.length; x++)
		{
			var tmp = varArray[x].split('=');
			eval(unescape(tmp[0]) + '="' + unescape(tmp[1]) + '"');
			// alert(tmp[0]);alert(tmp[1]);
		}
	}
		
	if (isNotDefined("ekm"))
	{
		month = thisMonth;    // Returns month (0-11)
	}
	else if (ekm > 12)
	{
		alert("URL value for the month is too big\n\nResetting to December");
		ekm = 12;
		month = ekm - 1;
	}
	else if (ekm < 1)
	{
		alert("URL value for the month is too small\n\nResetting to January");
		ekm = 1;
		month = ekm - 1;
	}
	else
		month = ekm - 1;

	if (isNotDefined("eky"))
	{
		year = thisYear;	    // Returns year
	}
	else
		year = eky;
}

GetMonthYear();

// alert(month + ' & ' + year);

function isNotDefined(someVar) 
{ 
	return (typeof(window[someVar]) == "undefined")? true: false; 
} 

function EKShowMonthWithFeed(orgcode,month,year)
{

// this seems right... alert("year = " + year);

//  SET ARRAYS
var day_of_week = new Array('S','M','T','W','T','F','S');
var month_of_year = new Array('January','February','March','April','May','June','July','August','September','October','November','December');
var mon_of_year = new Array('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');

//  DECLARE AND INITIALIZE VARIABLES

// month += monthOffset;

var ekm = month + 1;
var eky = year;

if (month > 11) // 
{
 	month = month - 12;
	year = year - 1 + 2;
}
else if (month < 0)
{
	month = month + 12;
	year =  year - 1;
}

var nextMonth = ekm + 1;
var prevMonth = ekm - 1;
var nextYear = eky;
var prevYear = eky;

if (nextMonth > 12)
{
 	nextMonth = 1;
	nextYear = nextYear - 0 + 1;
}
else if (prevMonth < 1)
{
	prevMonth = 12;
	prevYear =  prevYear - 1;
}

var nextURL = thisPage + "?ekm=" + nextMonth + "&eky=" + nextYear;
var prevURL = thisPage + "?ekm=" + prevMonth + "&eky=" + prevYear;

var today = Calendar.getDate();    // Returns day (1-31)
var weekday = Calendar.getDay();    // Returns day (1-31)

var DAYS_OF_WEEK = 7;    // "constant" for number of days in a week
var DAYS_OF_MONTH = 31;    // "constant" for number of days in a month
var cal;    // store the string to be displayed

Calendar.setDate(1);    // Start the calendar day at '1'
Calendar.setMonth(month);    // Start the calendar month at now
Calendar.setYear(year);    // Start the calendar month at now

var TR_start = '<TR>';
var TR_end = '</TR>';

var TD_start_weekday = '<TD class="dow" height="3">';
var TD_start_today = '<TD class="today">';
var TD_start_boring = '<TD class="boring">';
var TD_start_events = '<TD class="events" align="center">';
var TD_start_padding = '<TD class="padding">';

var TD_end = '</TD>';

cal =  '<TABLE class="outer" align=center><TR><TD>';
cal += '<TABLE class="ekcal">' + TR_start;
cal += '<TD class="header"><a href=' + prevURL + '> << </a>' + TD_end;
cal += '<TD COLSPAN="5" class="header">';
cal += month_of_year[month]  + '   ' + year + TD_end;
cal += '<TD class="header"><a href=' + nextURL + '> >> </a>' + TD_end;
cal += TR_end;

// Day of week header
cal += TR_start;
for(index=0; index < DAYS_OF_WEEK; index++)
{
	cal += TD_start_weekday + day_of_week[index] + TD_end;
}
cal += TR_end;

cal += TR_start;

// FILL IN BLANK GAPS UNTIL TODAY'S DAY
for(index=0; index < Calendar.getDay(); index++)
	cal += TD_start_padding + ' ' + TD_end;

// LOOPS FOR EACH DAY IN CALENDAR
for(index=0; index < DAYS_OF_MONTH; index++)
{
if( Calendar.getDate() > index )
{
  	// get the next day to deal with
  	week_day = Calendar.getDay();

  	// START NEW ROW FOR FIRST DAY OF WEEK
	if(week_day == 0)
  		cal += TR_start;
	
		if(week_day != DAYS_OF_WEEK)
		{
	
			// SET VARIABLE INSIDE LOOP FOR INCREMENTING PURPOSES
			var day  = Calendar.getDate();
			var tipLen;
			// build date string to compare to Event date
			var compDay = mon_of_year[month] + ' ' + day + ', ' + year;
	  					
			// loop through event array looking for events that match current day
			var numEvents = 0;
			var dayTitle = '<b>' + compDay + '</b><br><br>';
			for (i=0; i<evtArray.length; i++)
			{
				if (evtArray[i][evt_date] == compDay)
				{
					// alert(escape(evtArray[i][evt_name]));
					if (numEvents == 0)
					{
						var linkurl = 'http://www.eventkeeper.com/code/events.cfm?curOrg=' + orgcode;
						linkurl += "#" + evtArray[i][evt_id];
		
						dayTitle += evtArray[i][evt_time] + ' ' + escape(evtArray[i][evt_name]);
						dayTitle += ' [' + evtArray[i][evt_key1] + ']';
					}
					else
					{
						dayTitle += '<br>' + evtArray[i][evt_time] + ' ' + escape(evtArray[i][evt_name]);
						dayTitle += ' [' + evtArray[i][evt_key1] + ']';

					}
					numEvents++;
					
				}	
			}

		if (numEvents > 0)
		{
			var daylink = '<a href="' + linkurl + '" target="_blank" ';
			daylink += ' onMouseover="Tip(' + '\'' + dayTitle + '\')">';
			day = daylink + day + '</a>';
		}
	
	  	// format this day's cell
  		if( (today==Calendar.getDate()) && (month==thisMonth) && (year==thisYear)) // today
  		{
			cal += TD_start_today + day + TD_end;
		}
		else  // day has events 
		if (numEvents> 0)
  			cal += TD_start_events + day + TD_end;

  		// boring day
  		else
  			cal += TD_start_boring + day + TD_end;
  	}

  	// END ROW FOR LAST DAY OF WEEK
  	if(week_day == DAYS_OF_WEEK)
  		cal += TR_end;
  }

  // INCREMENTS UNTIL END OF THE MONTH
  Calendar.setDate(Calendar.getDate()+1);

}// end for loop

cal += '</TR></TABLE></TD></TR></TABLE>';

//  PRINT CALENDAR
document.write(cal);

//  End -->


}
