/* ***************************************************************** */
/*                                                                   */
/* IBM Confidential                                                  */
/*                                                                   */
/* OCO Source Materials                                              */
/*                                                                   */
/* (C) Copyright IBM Corp. 2003, 2006                                */
/*                                                                   */
/* The source code for this program is not published or otherwise    */
/* divested of its trade secrets, irrespective of what has been      */
/* deposited with the U.S. Copyright Office.                         */
/*                                                                   */
/* ***************************************************************** */

// === Calendar and popup ===
// Requires spin-*.js files to also be loaded on the page
// Uses fmtDate and getDate functions

// Assign a function to this pseudoevent
// to add or remove page-specific query string values.
// Event is called whenever a selection is made in the calendar.
// Manipulate the calQry and calQryNm vars as needed using addQry and delQry
// Called with DAY, WEEK, or MONTH string to indicate what's selected.
var onBuildQry = null;

// URL specific
var calBaseURL = "list.jsp" // leave null for self
var calSelBegin = "beginDate";
var calSelEnd = "endDate";
var calDisplay = "gotoDate";
var calStart = "start";
var calCount = "count";
var calSortKey = "sortKey";
var calSortOrder = "sortOrder";
var calMtgState = "state";
var calTool = "tool";
var calUnlisted = "unlisted";
var calGrpId = "groupId";
var calMtgId = "meetingId";
var calSessId = "sessionId";
var calGMT = "gmtOffset";

// Globals for language specific strings
var calMonthToolTip="Select this month";
var calWeekToolTip="Select this week";
var calWeekPick="wk&gt;"; // XXX Tim - Now obsolete - using radio buttons
var calMonthPick=""; // XXX Tim - Now obsolete - using radio buttons
var calMonthsString = "January,February,March,April,May,June,July,August,September,October,November,December";
var calWeekdaysString = "S,M,T,W,T,F,S";
var calPrevImg = '<img src="images/n-previous.gif" alt="Previous" title="Previous month" border=0>';
var calNextImg = '<img src="images/n-next.gif" alt="Next" title="Next month" border=0>';
var calPopupTitle = "Calendar";
var calCloseBtn = " &nbsp; OK &nbsp; ";
var calWeekStart = 0; // sun=0, mon=1, ... sat=6
var calMonthFormat = ""; // {0}=month, {1}=year

var calPopupCSS = "popupcal.css"; // Path+filename of style sheet

// Calendar globals
var popupEl = null;
var popupIsMulti = false;
var monthname = new Array();
var dayname = new Array();
// globals for speed
var monthDays = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
var popupSelDates = new Array();
var popupSelStr = "";
// Query string values
var calQry = new Array(); 
var calQryNm = new Array();
var calNow = new Date();
var calNowDate = calNow.getDate();
var calNowMonth = calNow.getMonth()+1;
var calNowYear = calNow.getFullYear();

function getElOffsets(el)
{
	var pos = new Array();
	var x = 0;
	var y = 1;
	pos[x]=pos[y]=0;
	while(el != null)
	{
		if (document.all && document.tagName == "TD")
		{	// IE omits border
			pos[x] += el.clientLeft;
			pos[y] += el.clientTop;
		}
		else if (document.tagName == "TABLE")
		{	// Moz omits border
			var bdr = parseInt(el.border);
			if (!isNaN(bdr))
			{
				pos[x] += bdr;
				pos[y] += bdr;
			}
		}
		pos[x] += el.offsetLeft;
		pos[y] += el.offsetTop;
		el = el.offsetParent;
	}
	return pos;
}

function positionWin(e,w,h)
{
	var pos = new Array();
	var x = 0; // new window left
	var y = 1; // new window top
	var el = null; // temp handle for clicked element
	var elp = new Array();
	var VPAD = 10; // padding to not cover target
	var HPAD = 15; // Place closer to start of target
	if (e != '' && e) {
		if (document.all)
		{
			el = e.srcElement;
			elp = getElOffsets(el);
			pos[x] = e.screenX - e.clientX + elp[0] - document.body.scrollLeft; 
			pos[y] = e.screenY - e.clientY + elp[1] + el.offsetHeight - document.body.scrollTop;
		}	
		else if (e.pageX && !document.layers)
		{
			el = e.target;
			elp = getElOffsets(el);			
			pos[x] = e.screenX - e.pageX + elp[0];
			pos[y] = e.screenY - e.pageY + elp[1] + el.offsetHeight;
		}
		else
		{
			pos[x] = e.screenX - HPAD; 
			pos[y] = e.screenY + VPAD;
		}
	}
	else
	{
		// use default - centered
		pos[x] = (screen.availWidth - w) / 2;
		pos[y] = (screen.availHeight - h) / 2;
	}

	// Will it fit on screen?
	if (pos[y]+h > screen.availHeight)
	{
		// too long? - position above target
		if (document.all) pos[y] = pos[y] - h - el.offsetHeight;
		else if (!document.layers) pos[y] = pos[y] - h - el.offsetHeight;
		else pos[y] = pos[y] - h - 2*VPAD; // pad upwards

		pos[y] -= 28; // remove space for titlebar/chrome
	}
	// N4 and Moz adjust offscreen windows - fix IE
	if (document.all && (pos[x]+w > screen.availWidth))
	{
		pos[x] = pos[x] - w + el.offsetWidth - 8;
	}
	return pos;
}

function openCalendar(el,isMulti,e) {
	var dt;
	
	if (isMulti)
	{
		var st = el.value.replace(/\s+/,"");
		var sta = st.split(",");
		var i=0;
		var d;
		var dta = new Array();
		for (i=0;i<sta.length;i++)
		{
			d = getDate(sta[i]);
			popupSelDates[i] = d;
			dta[i] = ""+d.getFullYear()+zeroPad(d.getMonth()+1)+zeroPad(d.getDate());
		}
		popupSelStr = dta.join(",");
		dt = popupSelDates[0];
	}	
	else dt = getDate(el.value);
	
	var calYear = dt.getFullYear();
	var calMonth = dt.getMonth()+1;

	popupIsMulti = isMulti;
	
	var pos = positionWin(e,290,210);
	
	// wPopupCal is GLOBAL
	wPopupCal=open("","calwin","toolbar=no,menubar=no,width=290,height=210,resizable=yes" + ",screenX=" +pos[0]+ ",screenY=" + pos[1] + ",left=" + pos[0] + ",top=" + pos[1]);
	if (wPopupCal.opener == null)
		wPopupCal.opener = window; 

	popupEl = el;
	
	displayCalendar(wPopupCal,calYear,calMonth,true,isMulti);

	if (wPopupCal.focus)
		wPopupCal.focus();
}

function displayPageHeader(w)
{
	//w.document.close();
	w.document.open();

	w.document.write("<html><head><title>" + calPopupTitle + "</title>");
	if (calPopupCSS != "")
	  w.document.write("<link rel=\"stylesheet\" href=\"" + calPopupCSS + "\" type=\"text/css\">");	
	w.document.write("</head><body><center>");
}

function addQry(nm, vl)
{
	// Add name if not already on query
	if (calQry[nm] == null)
	{
		calQryNm[calQryNm.length]=nm;
	}
	calQry[nm]=vl;
}

function delQry(nm)
{
	if (calQry[nm] != null)
	{
		calQry[nm]="";
	}
}

function buildQry()
{
	var newq = "?";
	var j=0;
	for (var i=0;i<calQryNm.length;i++)
	{
		var nm=calQryNm[i];
		if (calQry[nm] != null)
		{
			if (calQry[nm].toString() != "")
			{
			if (j>0) newq += "&";
			newq += nm + "=" + calQry[nm];
			j++;
			}
		}
	}
	if (newq == "?") newq = "";
	return newq;
}

function cleanQry()
{
	// Restore typical query values
	addQry(calStart,"1");
	addQry(calGMT,gmtOffset); // gmtOffset is GLOBAL

	delQry(calDisplay);
	delQry(calMtgState);
	delQry(calTool);
	delQry(calUnlisted);
	delQry(calSessId);
	delQry(calMtgId);
	delQry(calGrpId);
}

function checkQry()
{
	//check to see if the previous page loaded was from the In Progress view
	//if so we need to remove the sortOrder from the query string so it isn't passed in the url
	if ((calQryNm.length == 2 && calQry[calMtgState] == "active" && calQry[calSortOrder] == "descending") ||
		(calQryNm.length == 3 && calQry[calMtgState] == "active" && calQry[calSortOrder] == "descending" && calQry[calDisplay] != ""))
	{
		delQry(calSortOrder);
	}
}

function setCalMonth(yr,mo,isPopup)
{
	if (isPopup)
	{
		wPopupCal.document.clear();
		displayCalendar(wPopupCal,yr,mo,true,popupIsMulti)	
	}
	else
	{		
		// Switch display date to prev/next month	
		addQry(calDisplay,""+yr+zeroPad(mo)+"01");

		if (calBaseURL == "")
			location.search = buildQry();
		else
			location.href = calBaseURL + buildQry();
	}	
}

// shouldn't be called from popup
function setThisCalMonth(yr, mo)
{
	checkQry();
	
	// Set begin and end selections to this month	
	addQry(calSelBegin,""+yr+zeroPad(mo)+"01");
	addQry(calSelEnd,""+yr+zeroPad(mo)+getLastDayInMonth(yr,mo));
	
	cleanQry();
	
	if (onBuildQry) onBuildQry("MONTH", calQry, calQryNm);
			
	if (calBaseURL == "")
		location.search = buildQry();
	else
		location.href = calBaseURL + buildQry();
}

// shouldn't be called from popup
function setCalWeek(yr, mo, da)
{
	checkQry();
	
	// Set begin and end selections to this week
	addQry(calSelBegin,""+yr+zeroPad(mo)+zeroPad(da));

	var startwk = new Date(mo + "/" + da + "/" + yr);
	var endwk = new Date(startwk.getTime()+529200000); //86400000*6+10800000
	// add 3 hrs to handle DST problem last week in october
	
	addQry(calSelEnd, ""+endwk.getFullYear()+zeroPad(endwk.getMonth()+1)+zeroPad(endwk.getDate()));	

	cleanQry();
	
	if (onBuildQry) onBuildQry("WEEK", calQry, calQryNm);
			
	if (calBaseURL == "")
		location.search = buildQry();
	else
		location.href = calBaseURL + buildQry();
}

function setCalDay(yr, mo, da, isPopup)
{
	if (isPopup)
	{
		var dt = new Date(mo + "/" + da + "/" + yr);
		if (popupIsMulti)
		{
			if (isPopupSelected(yr,mo,da))
			{
				var loc = popupSelStr.indexOf(""+yr+zeroPad(mo)+zeroPad(da));
				popupSelStr = popupSelStr.substring(0,loc)+ popupSelStr.substring(loc+8);
				popupSelStr = popupSelStr.replace(/,+/g,",");
				var nval = popupEl.value.replace(fmtDate(dt),"");
				popupEl.value = nval.replace(/,\s*,/,", ");
				popupEl.value = popupEl.value.replace(/^,\s*/,"");
				popupEl.value = popupEl.value.replace(/,\s*$/,"");
			}
			else
			{
				popupEl.value += ", " + fmtDate(dt);
				popupEl.value = popupEl.value.replace(/^,\s*/,"");
				popupSelStr += ","+yr+zeroPad(mo)+zeroPad(da);
			}
			wPopupCal.focus();
			wPopupCal.document.clear();
			displayCalendar(wPopupCal,yr,mo,true,true);
		}
		else
		{
			popupEl.value = fmtDate(dt);
			wPopupCal.close();
		}
	}
	else
	{
		checkQry();
		
		// Set begin and end selections to this date
		var tday = ""+yr+zeroPad(mo)+zeroPad(da);
		addQry(calSelBegin,tday);
		addQry(calSelEnd,tday);
		
		cleanQry();		

		if (onBuildQry) onBuildQry("DAY", calQry, calQryNm);

		if (calBaseURL == "")
			location.search = buildQry();
		else
			location.href = calBaseURL + buildQry();
	}
}

function displayMonthHeader(w,year,month,isPopup)
{
	var calDoc = new Array();
	var x = 0;
	
	var prevmonth = getPrevMonth(month);
	var prevmonthyear = getPrevYear(year,month);
	var nextmonth = getNextMonth(month);
	var nextmonthyear = getNextYear(year,month);
	var index = month-1;
	var hd = "";
	if (calMonthFormat == "")
		hd = "{0}&nbsp;{1}";
	else
		hd = calMonthFormat;
	hd = hd.replace(/\{0\}/,monthname[index]);
	hd = hd.replace(/\{1\}/,year);
	
	if (isPopup)
	{
		var tablewidth=210;
		var tablestyle="calPopupTable";
	}
	else
	{
		var tablewidth=150;
		var tablestyle="calTable";
	}
	
	calDoc[x++] = "<table width=" + tablewidth + " class=\"" + tablestyle + "\" border=0 cellpadding=0 cellspacing=0><tr valign=middle>";

	if (isPopup)
	{
		calDoc[x++] = "<td colspan=7><table width=\"100%\" cellpadding=0 cellspacing=0 border=0><tr><td align=left class=\"calMonths\">";
		calDoc[x++] = "<a href=\"javascript:opener.setCalMonth(" + prevmonthyear+"," + prevmonth+", true)\" class=\"calPrevNext\">" + calPrevImg + "</a></td>";
		calDoc[x++] = "<td align=center valign=middle class=\"calMonths\">" + hd + "</td>";
		calDoc[x++] = "<td align=right class=\"calMonths\">" + "<a href=\"javascript:opener.setCalMonth(" + nextmonthyear+"," + nextmonth+",true)\" class=\"calPrevNext\">" + calNextImg + "</a></td>";
	/* calDoc[x++] = "<form><input type=button name=prevmonthbutton value='&nbsp;&lt;&nbsp;' onClick=\"opener.setCalMonth(" + prevmonthyear +","+ prevmonth+", true)\"></td>";	
  calDoc[x++] = "<td align=center valign=middle><select onChange='document.clear();opener.displayCalendar(opener.wPopupCal,opener.document.frm."+el.name+","+prevmonthyear+","+this.selectedIndex+1","+isPopup+")'>";
	for (var i=0; i<12; i++)
	{
		calDoc[x++] = "<option value='" + i + "'";
		if (i==index) calDoc[x++] = " selected";
		calDoc[x++] = ">" + monthname[i] + "</option>";
	}
	calDoc[x++] = "</select> " + year + "</td>";
	calDoc[x++] = "<td align=right><input type=button name=nextmonthbutton value='&nbsp;&gt;&nbsp;' onClick=\"opener.setCalMonth(" + nextmonthyear+","+ nextmonth+", true)\"></td>";
	*/
	}
	else
	{
		if (calMonthPick)
		{
			calDoc[x++] = "<td class=\"calMonthPicker\"><input type=\"radio\" onclick=\"setThisCalMonth(" + year + "," + month + ")\" title=\"" + calMonthToolTip + "\" class=\"calMonthHead\" name=\"calRadioM\"></td>";	
			calDoc[x++] = "<td colspan=7><table width=\"100%\" cellpadding=0 cellspacing=0 border=0><tr><td align=left class=\"calMonths\">";			
		}
		else
		{
		calDoc[x++] = "<td colspan=8><table width=\"100%\" cellpadding=0 cellspacing=0 border=0><tr><td align=left class=\"calMonths\">";
		}
		calDoc[x++] = "<a href=\"javascript:setCalMonth(" + prevmonthyear+"," + prevmonth+")\" class=\"calPrevNext\">" + calPrevImg + "</a></td>";
		calDoc[x++] = "<td align=\"center\" valign=\"middle\" class=\"calMonths\">";
		calDoc[x++] = "<a href=\"javascript:setThisCalMonth(" + year + "," + month + ")\" title=\"" + calMonthToolTip + "\" class=\"calMonthHead\">" + hd + "</a></td>";
		calDoc[x++] = "<td align=right class=\"calMonths\">" +
			"<a href=\"javascript:setCalMonth(" + nextmonthyear+"," + nextmonth+")\" class=\"calPrevNext\">" +
			calNextImg + "</a></td>";
	}
	calDoc[x++] = "</tr>";
	calDoc[x++] = "</table></td></tr>";
	
	w.document.write(calDoc.join(""));
}

function displayCalendar(w,year,month,isPopup,isMulti)
{
	var useSel = false;
	monthname = calMonthsString.split(",");
	dayname = calWeekdaysString.split(",");	
	

	if (arguments.length==0) 
	{
		// assume we should use the query string
		w = self;
		if (location.search == "")
		{
			// Use current date
		}
		else
		{
			var qry = location.search.substr(1).split("&");
			var nv = new Array();
			var j=0;
			for (i=0;i<qry.length;i++)
			{
				nv = qry[i].split("=");
				if (nv[0] != "")
				{
					calQry[nv[0]] = nv[1];
					calQryNm[j] = nv[0];
					j++;
				}
			}
			if (calQry[calSelBegin])
			{
				useSel = true;
				selbeginyear = parseInt(calQry[calSelBegin].substr(0,4),10);
				selbeginmonth = parseInt(calQry[calSelBegin].substr(4,2),10);
				selbeginday = parseInt(calQry[calSelBegin].substr(6,2),10);
			}
			if (calQry[calSelEnd])
			{
				selendyear = parseInt(calQry[calSelEnd].substr(0,4),10);
				selendmonth = parseInt(calQry[calSelEnd].substr(4,2),10);
				selendday = parseInt(calQry[calSelEnd].substr(6,2),10);
			}
			else if (calQry[calSelBegin])
			{
				selendyear = selbeginyear;
				selendmonth = selbeginmonth;
				selendday = selbeginday;
			}
			if (calQry[calDisplay])
			{
			 	year = parseInt(calQry[calDisplay].substr(0,4),10);
				month = parseInt(calQry[calDisplay].substr(4,2),10);
			}
			else if (calQry[calSelBegin])
			{
				year = selbeginyear;
				month = selbeginmonth;
			}
			// else use current date
		}
	}
	else
	{
		year = parseInt(year);  
		month = parseInt(month);
	}

	if (!year || !month)
	{
		var dt = new Date();
		year = dt.getFullYear();
		month = dt.getMonth()+1;
	}
	
	var endday = getLastDayInMonth(year,month);
	var mydate = new Date(month + "/01/" + year);
	var firstday = ((7-calWeekStart+mydate.getDay()) % 7);
	
	var prevmonth = getPrevMonth(month);
	var prevmonthyear = getPrevYear(year,month);
	var nextmonth = getNextMonth(month);
	var nextmonthyear = getNextYear(year,month);
	
	var calDoc = new Array();
	var x = 0;
		
	var cnt = 0;
	var nextcnt = 0;
	var prevcnt = getLastDayInMonth(prevmonthyear,prevmonth)-firstday;
	
	var pad = "&nbsp;";
	var bg = "";
	var lnk = "";

	if (isPopup) displayPageHeader(w);
	
	displayMonthHeader(w,year,month,isPopup);

	// Show the days of the week heading  
	calDoc[x++] = "<tr align=center class=\"calWeekdays\">";
	if (!isPopup)
	{
		calDoc[x++] = "<td class=\"calPickers\">&nbsp;</td>";
	}	
	for (var dc=0; dc<7; dc++)
	{
		calDoc[x++] = "<td class=\"calWeekdays\">" + dayname[((dc + calWeekStart) % 7)] + "</td>";
	}
	calDoc[x++] = "</tr>";

	for (var r=0; r<6; r++)
	{
		calDoc[x++] = "<tr align='center'>";
		// Show the week control
		if (!isPopup)
		{
			if ((cnt==0) && (firstday!=0))
				calDoc[x++] = "<td class=\"calPickers\"><input type='radio' onclick='setCalWeek("+ prevmonthyear + "," + prevmonth + "," + (1+prevcnt);
			else
				calDoc[x++] = "<td class=\"calPickers\"><input type='radio' onclick='setCalWeek("+ year + "," + month + "," + (cnt+1);
			calDoc[x++] = ")' title='" + calWeekToolTip + "' class='calWeekPicker' name='calRadio" + r + "'></td>";
		}
		for (var c=0; c<7; c++)
		{
			if ((cnt==0) && (c!=firstday))
			{
				prevcnt++;
				if (isToday(prevmonthyear, prevmonth, prevcnt))
					lnk = "calToday";
				else
					lnk = "calExtraDay";	
				if (isPopup)
				{
					if (isMulti && isPopupSelected(prevmonthyear,prevmonth,prevcnt))
						bg = "calSelect";
					else
						bg = "calNormal";
					calDoc[x++] = "<td class='" + bg + "'><a href='javascript:opener.setCalDay(" + prevmonthyear + "," + prevmonth + "," + prevcnt + ", true)' class='" + lnk + "'>&nbsp;" + prevcnt + "&nbsp;</a></td>";
				}
				else
				{
					if (useSel && isSelected(prevmonthyear, prevmonth, prevcnt, selbeginyear, selbeginmonth, selbeginday, selendyear, selendmonth, selendday))
						bg = "calSelect";
					else
						bg = "calNormal";
					calDoc[x++] = "<td class='" + bg + "'><a href='javascript:setCalDay(" + prevmonthyear + "," + prevmonth + "," + prevcnt + ")' class='" + lnk + "'>&nbsp;" + prevcnt + "&nbsp;</a></td>";
				}
			continue;
		}
      if (cnt<endday)
	  	{
        cnt++;
				if (cnt<10) { pad="&nbsp;&nbsp;"; } else { pad="&nbsp;"; }
				if (isToday(year, month, cnt))
					lnk = "calToday";
				else
					lnk = "calNormalDay";
				if (isPopup)
				{
					if (isMulti && isPopupSelected(year,month,cnt))
						bg = "calSelect";
					else
						bg = "calNormal";
					calDoc[x++] = "<td class='" + bg + "'><a href='javascript:opener.setCalDay(" + year + "," + month + "," + cnt + ", true)' class='" + lnk + "'>" + pad + cnt + "&nbsp;</a></td>";
				}
				else
				{
					if (useSel && isSelected(year, month, cnt, selbeginyear, selbeginmonth, selbeginday, selendyear, selendmonth, selendday))
						bg = "calSelect";
					else
						bg = "calNormal";
					calDoc[x++] = "<td class='" + bg + "'><a href='javascript:setCalDay(" + year + "," + month + "," + cnt + ")' class='" + lnk + "'>" + pad + cnt + "&nbsp;</a></td>";
				}
				continue;
	  	}
	  //if (cnt>=endday)
	  //{
			nextcnt++;
				if (isToday(nextmonthyear, nextmonth, nextcnt))
					lnk = "calToday";
				else
					lnk = "calExtraDay";
			if (isPopup)
			{
				if (isMulti && isPopupSelected(nextmonthyear,nextmonth,nextcnt))
					bg = "calSelect";
				else
					bg = "calNormal";
				calDoc[x++] = "<td class='" + bg + "'><a href='javascript:opener.setCalDay(" + nextmonthyear + "," + nextmonth + "," + nextcnt + ", true)'  class='" + lnk + "'>&nbsp;&nbsp;" + nextcnt + "&nbsp;</a></td>";
			}
			else
			{
					if (useSel && isSelected(nextmonthyear, nextmonth, nextcnt, selbeginyear, selbeginmonth, selbeginday, selendyear, selendmonth, selendday))
						bg = "calSelect";
					else
						bg = "calNormal";
				calDoc[x++] = "<td class='" + bg + "'><a href='javascript:setCalDay(" + nextmonthyear + "," + nextmonth + "," + nextcnt + ")' class='" + lnk + "'>&nbsp;&nbsp;" + nextcnt + "&nbsp;</a></td>";
	  	}
	}
	if (cnt==endday)
		break;
  }
  
	// displayMonthFooter
	if (isPopup)
	{
		calDoc[x++] = "<tr><td colspan=7 height=10></td></tr>";
		calDoc[x++] = "<tr><td align=center colspan=7><form><input type='button' name='close' value='" + calCloseBtn + "' onClick='window.close();' accesskey='S'></form></td></tr>";
	}
	
	calDoc[x++] = "</table>";
	
	w.document.write(calDoc.join(""));
	
	if (isPopup)
	{ 
		// displayPageFooter();	
		w.document.write("</center></form></body></html>");
		w.document.close();
	}
}

function isSelected(wy, wm, wd, sby, sbm, sbd, sey, sem, sed)
{
	// w = working, sb=select begin, se=select end
	if ((sbd <= wd && sbm==wm && sby==wy) ||
		(sbm < wm && sby==wy) || sby<wy)
	{
		if (wd<=sed && sem==wm && sey==wy)
		{
			return true;
		}
		else if ((sem>wm && sey==wy) || sey>wy)
		{
			return true;
		}
	}
	return false;
}

function isPopupSelected(yr,mo,da)
{
	var s = ""+yr+zeroPad(mo)+zeroPad(da);
	if (popupSelStr.indexOf(s) != -1)
		return true;
	else
		return false;
}

function isToday(yr,mo,da)
{
	if (da!=calNowDate) return false;
	if (mo!=calNowMonth) return false;
	if (yr!=calNowYear) return false;
	return true;
}

function getLastDayInMonth(yr,mo)
{
	if (mo==2)
	{
		// classic leap year calc
		if (((yr % 4 == 0) && (yr % 100 != 0)) || (yr % 400 == 0))
			monthDays[1] = 29;
		else
			monthDays[1] = 28;
	}
	return monthDays[mo-1];
}

function getNextMonth(mo) {
	if (mo==12)
		return 1;
	else
		return (1+mo);
}

function getNextYear(yr,mo) {
	if (mo==12)
		return (1+yr);
	else
		return (yr);
}

function getPrevMonth(mo) {
	if (mo==1)
		return 12;
	else
		return (mo-1);
}

function getPrevYear(yr,mo) {
	if (mo==1)
		return (yr-1);
	else
		return (yr);
}

function zeroPad(num) {
	var numVal = parseInt(num, 10);
	if (numVal < 10)
		return("0" + numVal);
	else
		return numVal;
}


