// JavaScript Document
/*
This script contains all the functionality for a Calendar style display

requirements: findObj() javascript function (by Macromedia)
			: ajax module must have been initialised on the page ($aj = new ajax(); echo $aj->getinitjavascript())

usage:

To include an instance of the calendarInput you need to first create a place holder element in your HTML
This would typically be a <div> but could equally be a <span>, <td> etc

eg: (html)

<div id="calendarholder1"></div>

Then you use javascript to fill this container with the HTML for the calendar

eg: (js)

ci = new calendarInput(uniqueid, formfield, initialvalue);
dch = findObj("calendarholder1");
dch.innerHTML = ci.gethtml();

Note that inital value should be a inetgral UNIX timestamp (not JavaScript timestamp, jstimestamp = 1000 * unixtimestamp)
Also you need to make sure that th eplaceholder is loaded before you try and fill it.
To do this, either place the last two lines of the above script after the placeholder in the page or call them from a javascript function
*/

/*
declare functions for calendarInput class
*/

if (typeof(calenderboxes)=="undefined")
{
	var calendarboxes = new Array();
}

function calendar(calendarid, target, eventdetailstarget, value)
{
	var me = this;
	
	this.calendarid = calendarid;
	this.value = value;
	this.revertvalue = value;
	this.target = target;
	this.eventdetailstarget = eventdetailstarget;
	this.onClickHandler = "";	
	this.monthNames = monthNames;
	this.showeventfilter = false;
	this.eventfiltertype = "all";
	this.showviewselect = false;
	this.viewmode = "titles";
	this.showaddbutton = false;
	//this.width = 250;
	
	//alert("datebox loaded");

	calendarboxes[calendarid] = this;		

	//this.setvalue(value);
	
	//alert(calendarid);
	
	this.show = function(date)
	{
		//alert(me.calendarid);
		
		params = new Array();
		classparams = new Array();
		
		classparams["table"] = "calendarlarge";
		classparams["td"] = "calendarlarge";
	
		params[0] = me.calendarid;
		//alert("params0 = " + params[0]);

		if (!date) date = me.value;
		date = parseInt(date);
		if (date)
		{
			params[1] = date;
		}
		else
		{
			var dt = new Date();
			params[1] = Math.floor(dt.getTime()/1000);
		}

		params[2] = "";
		params[3] = "";

		newar = new Array();
		newar["table"] = "calendarlarge";
		newar["tr"] = "calendarlarge";
		newar["td"] = "calendarlarge";
		newar["tdheading"] = "calendarlarge";

		//params[4] = newar;
		params[4] = "calendarlarge";
		params[5] = "jS";
		params[6] = "";
		params[7] = me.onClickHandler;
		params[8] = true;
		params[9] = true;
		
		//tg = findObj(this.target);
		if (me.value)
		{
			tgval = parseInt(me.value);
			tgd = new Date(tgval * 1000);
			tgd.setHours(0);
			tgd.setMinutes(0);
			tgd.setSeconds(0);
			params[10] = Math.floor(tgd.getTime() / 1000);
		}
		
		if (!params[10])
		{
			var dt = new Date();
			dt.setHours(0);
			dt.setMinutes(0);
			dt.setSeconds(0);
			params[10] = Math.floor(dt.getTime()/1000);
		}
		
		pdt = new Date(params[10] * 1000);
		
		if (svm = findObj("sel_viewmode"))
		{
			me.viewmode = svm.options[svm.selectedIndex].value
		}
		else
		{
			me.viewmode = "titles";
		}
		
		params[11] = me.viewmode;
		
		//params[12] = "all";
		
		//alert("eft = " + me.eventfiltertype);
		if (sef = findObj("sel_eventstatusfilter"))
		{
			me.eventfiltertype = sef.options[sef.selectedIndex].value;			
		}
		else
		{
			if (!me.eventfiltertype) me.eventfiltertype = "all";
		}
		//alert("eft = " + me.eventfiltertype);
		
		params[12] = me.eventfiltertype;
		
		/*
		if (me.eventfiltertype)
		{
			params[12] = me.eventfiltertype;
		}
		else
		{
			params[12] = "all";
		}
		*/
		
		params[13] = "attending-visible";
		
		params[14] = new Array();
		params[14][0] = this.target;
		params[14][1] = (me.displaytarget) ? me.displaytarget : me.target;
		params[14][2] = date;
		
		//alert("cbf = " + callback_func);
		//alert(calendarboxes[calendarid].target);
		call_object_method("cms_calendar", "getcalendarviewhtmlwithextendeddata", "", params, false, me.showcallback);
	}
	
	//alert(calendarboxes);
	
	this.showcallback = function()
	{
		//alert("cbxs = " + calendarboxes);
		//alert("cid = " + me.calendarid);

		if (xmlhttp.readyState=="4")
		{
				//alert(xmlhttp.responseText);
				
				ret = eval(xmlhttp.responseText);
				
				htmltext = "";
				
				//alert(typeof(ret["passthru"][2]));
				if (isNaN(ret["passthru"][2]))
				{
					//alert("using today");
					actdt = new Date();
					prevdt = new Date();
					nextdt = new Date();
				}
				else
				{
					actdt = new Date(ret["passthru"][2] * 1000);
					prevdt = new Date(ret["passthru"][2] * 1000);
					nextdt = new Date(ret["passthru"][2] * 1000);
				}
				
				//alert(me.value);
				//alert(actdt.toString());
				
				actmth = actdt.getMonth();
				
				prevdt.setMonth(actmth - 1);
				nextdt.setMonth(actmth + 1);
				
				htmltext += "<input type=\"hidden\" name=\"calendar-date" + me.calendarid + "\" value=\"" + ret["activeday"] + "\">";
				htmltext += "<table class=\"calendarlargebackground\" style=\"border: none\">";
				//htmltext += "<tr>\n<td>\n<a href=\"javascript:showcalendar('" + ret["calendarid"] + "', '" + ret["lastmonthstarttime"] + "', '" + ret["passthru"][0] + "', '" + ret["passthru"][1] + "', '" + ret["passthru"][2] + "', '" + ret["passthru"][3] + "')\" class=\"calendarlarge\">&laquo;</a></td>";
				htmltext += "<tr>\n<td>\n<a href=\"javascript:ccal=calendarboxes['" + me.calendarid + "'];ccal.show('" + ret["lastmonthstarttime"] + "', '" + ret["passthru"][2] + "', '" + ret["passthru"][3] + "')\" class=\"calendarlarge\">&laquo;&nbsp;" + me.monthNames[prevdt.getMonth()] + ", " + prevdt.getFullYear() + "</a></td>";
				htmltext += "<td align=\"center\" style=\"font-size: 14px; font-weight: 700\">" + ret["headertext"] + "</td>";
				//htmltext += "<td align=\"right\"><a href=\"javascript:showcalendar('" + ret["calendarid"] + "', '" + ret["nextmonthstarttime"] + "', '" + ret["passthru"][0] + "', '" + ret["passthru"][1] + "', '" + ret["passthru"][2] + "', '" + ret["passthru"][3] + "')\" class=\"calendarlarge\">&raquo;</a></td>";
				htmltext += "<td align=\"right\"><a href=\"javascript:ccal=calendarboxes['" + me.calendarid + "'];ccal.show('" + ret["nextmonthstarttime"] + "', '" + ret["passthru"][2] + "', '" + ret["passthru"][3] + "')\" class=\"calendarlarge\">" + me.monthNames[nextdt.getMonth()] + ", " + nextdt.getFullYear() + "&nbsp;&raquo;</a></td>";
				
				htmltext += "</tr>\n<tr>";
				htmltext += "<td colspan=\"2\">";

				if (me.showviewselect)
				{
					htmltext += "<form><select name=\"sel_viewmode\"onChange=\"ccal=calendarboxes['" + me.calendarid + "'];ccal.show('" + ret["passthru"][2] + "')\">";
					htmltext += "<option value=\"titles\"";
					if (me.viewmode=="titles") htmltext += " selected";
					htmltext += ">Titles</option>";
					htmltext += "<option value=\"details\"";
					if (me.viewmode=="details") htmltext += " selected";
					htmltext += ">Details</option>";
					htmltext += "<option value=\"numbers\"";
					if (me.viewmode=="numbers") htmltext += " selected";
					htmltext += ">Totals</option>";
					
					htmltext += "</select></form>"
				}
				
				if (me.showeventfilter)
				{
					//alert(me.eventfiltertype);
					
					htmltext += "<form><select name=\"sel_eventstatusfilter\" onChange=\"ccal=calendarboxes['" + me.calendarid + "'];ccal.show('" + ret["passthru"][2] + "')\"><option value=\"all\"";
					if (me.eventfiltertype=="all") htmltext += " selected";
					htmltext += ">All</option><option value=\"myevents\"";
					if (me.eventfiltertype=="myevents") htmltext += " selected";
					htmltext += ">My Events</option><option value=\"attending\"";
					if (me.eventfiltertype=="attending") htmltext += " selected";
					htmltext += ">Events I'm Attending</option><option value=\"invited\"";
					if (me.eventfiltertype=="invited") htmltext += " selected";
					htmltext += ">Events I've been Invited to</option><option value=\"declined\"";
					if (me.eventfiltertype=="declined") htmltext += " selected";
					htmltext += ">Events I've Declined</option></select></form>";
				}
				else
				{
					htmltext += "&nbsp;";
				}

				htmltext += "</td><td align=\"right\">";
				
				if (me.showaddbutton)
				{
					htmltext += "<a href=\"calendar.php?function=add\"><img src=\"images/icons/ico-calendar-add.gif\" border=\"0\"></a>";
				}
				else
				{
					htmltext += "&nbsp;";
				}
				
				htmltext += "</td></tr>\n<tr>\n<td colspan=\"3\">" + ret["html"] + "</td></tr></table>";
				
				tg = findObj(me.target);
				tg.innerHTML = htmltext;
				
				/*
				chr = findObj("calendar-hour" + me.calendarid);
				cmn = findObj("calendar-minutes" + me.calendarid);
				
				tdt = new Date(me.value * 1000);
				
				chrval = String(tdt.getHours());
				cmnval = String(tdt.getMinutes());
				
				while (chrval.length<2)
				{
						chrval = "0" + chrval;
				}
				
				while (cmnval.length<2)
				{
						cmnval = "0" + cmnval;
				}
			
				chr.value = chrval;
				cmn.value = cmnval;
	 			*/
				
				ajax_reset();
				
				//me.updateTime();
		}
	}


	this.formatdisplaydate = function(date)
	{
		var d = new Date(date * 1000);
		
		if (d.valueOf())
		{			
			chrval = String(d.getHours());
			cmnval = String(d.getMinutes());
			
			while (chrval.length<2)
			{
					chrval = "0" + chrval;
			}
			
			while (cmnval.length<2)
			{
					cmnval = "0" + cmnval;
			}
		
			ret = chrval + ":" + cmnval + "  " + d.toDateString();
		}
		else
		{
			ret = "No Date Specified";
		}
		
		return ret;
	}
	
	this.gethtml = function(omitFormTags)
	{
		var cval;
		
		alert("getting calendar html");
		
		if (me.value)
		{
			cval = me.value;
		}
		else
		{
			var dt = new Date();
			dt.setHours(0);
			dt.setMinutes(0);
			dt.setSeconds(0);
			cval = Math.floor(dt.getTime()/1000);
		}
		
		//ret = "<form onSubmit=\"ccal=calendarboxes['" + me.calendarid + "'];if (ccal) ccal.lookup(); return false\"><input disabled=\"true\" name=\"" + me.displaytarget + "\" value=\"" + me.formatdisplaydate(me.value) + "\" size=\"50\">";
		var ret = "";
		if (!omitFormTags) ret += "<form>";
		ret += "<input disabled=\"true\" name=\"" + me.displaytarget + "\" value=\"" + me.formatdisplaydate(me.value) + "\" size=\"20\">";
		ret += "<input type=\"hidden\" name=\"" + me.target + "\" value=\"" + me.value + "\" size=\"50\">";
		ret += "<a href=\"#\" onclick=\"showcalendar('" + me.calendarid + "', '" + cval + "', event.clientX, event.clientY)\">&nbsp;<img src=\"images/icons/ico-calendar.gif\" border=\"0\" alt=\"Click here to enter a date\" title=\"Click here to enter a date\"></a>";
		if (!omitFormTags) ret += "</form>\n<form>";
		//ret += "<form onSubmit=\"ccal=calendarboxes['" + me.calendarid + "'];if (ccal) ccal.lookup(); return false\">";
		ret += "<div id=\"datetimepopup" + me.calendarid + "\" style=\"display: none; width: " + me.width + "px\">";
		ret += "<table class=\"calendarlargebackground\" cellpadding=\"3\" cellspacing=\"0\">";
		ret += "<tr>";
		ret += "<td>";
		ret += "<div id=\"calendar" + me.calendarid + "\" style=\"margin: 5px; border: 1px solid #666666\"></div>";
		ret += "<div id=\"timesettings\" style=\"margin: 5px\"><input name=\"calendar-hour" + me.calendarid + "\" size=\"2\" maxlength=\"2\" style=\"text-align: center\" title=\"Hour\" onChange=\"javascript:ccal=calendarboxes['" + me.calendarid + "'];if (ccal) ccal.updateTime()\">&nbsp;:&nbsp;<input name=\"calendar-minutes" + me.calendarid + "\" size=\"2\" maxlength=\"2\" style=\"text-align: center\" title=\"Minutes\" onChange=\"javascript:ccal=calendarboxes['" + me.calendarid + "'];if (ccal) ccal.updateTime()\"></div>";
		ret += "<div id=\"datelookup" + me.calendarid + "\" style=\"margin: 5px; vertical-align: top; display:none; background-color: #cccccc; width: 100%; padding: 5px\" width=\"100%\">";
		ret += "<input name=\"calendar-lookup" + me.calendarid + "\"><a href=\"javascript:ccal=calendarboxes['" + me.calendarid + "'];if (ccal) ccal.lookup()\"><img src=\"images/icons/ico-search.gif\" alt=\"Look Up\" border=\"0\"></a>";
		ret += "</div>";
		ret += "</td>";
		ret += "<td width=\"20\" valign=\"top\">";
		ret += "	<table height=\"80\">";
		ret += "	<tr>";
		ret += "	<td>";
		ret += "	<a href=\"#\"><img src=\"images/icons/ico-help.gif\" alt=\"\" border=\"0\"><a></td>";
		ret += "	</tr>";
		ret += "	<tr>";
		ret += "	<td>";
		ret += "	<a href=\"#\" onClick=\"ccal=calendarboxes['" + me.calendarid + "'];ccal.toggleLookupBox()\"><img id=\"btn-lookup" + me.calendarid + "\" src=\"images/icons/ico-calendar-searchgray.gif\" border=\"0\">";
		ret += "	</td>";
		ret += "	</tr>";
		ret += "	<tr>";
		ret += "	<td align=\"center\">-";
		ret += "	</td>";
		ret += "	</tr>";
		ret += "	<tr>";
		ret += "	<td>";
		ret += "	<a href=\"javascript:ccal=calendarboxes['" + me.calendarid + "'];if (ccal) ccal.hide('revert')\"><img src=\"images/icons/ico-delete-on.gif\" border=\"0\" alt=\"Cancel and revert to stored date\"></a>";
		ret += "	</td>";
		ret += "	</tr>";
		ret += "	<tr>";
		ret += "	<td>";
		ret += "	<a href=\"javascript:ccal=calendarboxes['" + me.calendarid + "'];if (ccal) ccal.hide()\"><img src=\"images/icons/ico-tick-on.gif\" border=\"0\" alt=\"Accept new entry\">";
		ret += "	</td>";
		ret += "	</tr>";
		ret += "	</table>";
		ret += "</td>";
		ret += "</tr>";
		ret += "</table>";
		ret += "</div>";
		if (!omitFormTags) ret += "</form>";
		
		return ret;
		
	}

	this.hide = function(update)
	{
		//dc = findObj("datetimepopup" + me.calendarid);
		dc = findObj("datetimepopup" + me.calendarid);
		cd = findObj("calendar-date" + me.calendarid);
		
		if (update=="revert")
		{
			chr = findObj("calendar-hour" + me.calendarid);
			cmn = findObj("calendar-minutes" + me.calendarid);
			
			tdt = new Date(me.revertvalue * 1000);
			
			chr.value = tdt.getHours();
			cmn.value = tdt.getMinutes();
			
			me.setvalue(me.revertvalue, true);			
		}
		else if (update)
		{
			cval = cd.value;
			tg = findObj(me.target);
			tg.value = cval;
			me.setdisplaytext();
		}

		dc.style.display = "none";
		
	}
	
	this.hidedaysevents = function()
	{
		ced = findObj(me.eventdetailstarget);
		ced.style.display = "none";
	}
	
	this.setdisplaytext = function()
	{
		if (dt = findObj(me.displaytarget))
		{
			/*
			var d = new Date(me.value * 1000);
			
			chrval = String(d.getHours());
			cmnval = String(d.getMinutes());
			
			while (chrval.length<2)
			{
					chrval = "0" + chrval;
			}
			
			while (cmnval.length<2)
			{
					cmnval = "0" + cmnval;
			}
	
			dt.value = chrval + ":" + cmnval + "  " + d.toDateString();
			*/
			dt.value = me.formatdisplaydate(me.value);
			
		}

	}
	
	this.setvalue = function(value, keephidden)
	{
		target = String(me.target);
		displaytarget = String(me.displaytarget);
	
		//alert(me.target);
		
		tg = findObj(me.target);
		dtg = findObj(me.displaytarget);
		
		cd = findObj("calendar-date" + me.calendarid);
		chr = findObj("calendar-hour" + me.calendarid);
		cmn = findObj("calendar-minutes" + me.calendarid);
		
		if (value)
		{
			calendarvalue = value;
			me.value = value;
		}
		else
		{
			calendarvalue = me.value;
		}
		
		cdd = new Date(calendarvalue);
		cdd.setHours(0);
		cdd.setMinutes(0);
		cdd.setSeconds(0);
		
		cd.value = cdd.toString();
		
		valuedate = parseInt(calendarvalue);
		valuedate = new Date(valuedate * 1000);
		
		if (ichr = parseInt(chr.value))
		{
				valuedate.setHours(ichr);
		}
		
		if (icmn = parseInt(cmn.value))
		{
				valuedate.setMinutes(icmn);
		}
	
		tg.value = valuedate.getTime()/1000;
		me.value = tg.value;
		
		me.setdisplaytext();
	
		chrval = String(valuedate.getHours());
		cmnval = String(valuedate.getMinutes());
		
		while (chrval.length<2)
		{
				chrval = "0" + chrval;
		}
		
		while (cmnval.length<2)
		{
				cmnval = "0" + cmnval;
		}
	
		chr.value = chrval;
		cmn.value = cmnval;
		
		if (!keephidden) me.show();
	}

	this.showdaysevents = function(day, x, y)
	{
		var params = new Array();
		
		ced = findObj(me.eventdetailstarget);
		
		ced.style.display = "none";
		
		cedwidth = parseInt(ced.style.width);
		cedheight = parseInt(ced.style.height);
		
		cedleft = x + getScrollX() - (cedwidth / 2);
		cedtop = y + getScrollY() - (cedheight / 2);
		
		//cedwidthdiff = cedleft + cedwidth - window.innerWidth;
		//cedheightdiff = cedtop + cedheight - window.innerHeight;
		
		cedwidthdiff = cedleft + cedwidth - document.body.clientWidth;
		cedheightdiff = cedtop + cedheight - document.body.clientHeight;

		if (cedwidthdiff>-30) cedleft -= (cedwidthdiff + 30);
		//if (cedheightdiff>50) cedtop -= (cedheightdiff - 50);
		
		ced.style.left = cedleft;
		ced.style.top = cedtop;

		//alert(cedleft);
		//alert(cedwidthdiff);
		
		me.activevalue = day;
		
		params[0] = day;
		params[1] = "";
		
		if (me.eventfiltertype)
		{
			params[2] = me.eventfiltertype;
		}
		else
		{
			params[2] = "all";
		}
		
		params[3] = "";
		params[4] = "";
		params[5] = "attending-visible";
		
		ced.innerHTML = "<span class=\"smalltext\">Loading...</span>";
		ced.style.display = "";

		//alert(me.detailsX + ", " + me.detailsY);
		
		call_object_method("cms_calendar", "geteventsbyday", "", params, false, me.showdayseventscallback);
	}

	this.showdayseventscallback = function()
	{
		if (xmlhttp.readyState == 4)
		{
			items = eval(xmlhttp.responseText);
			
			//alert(items);
			
			ced = findObj(me.eventdetailstarget);
			
			
			var tdt = new Date(me.activevalue * 1000);
			day = tdt.getDate();
			daytitle = day + getdatedaysuffix(day) + " " + me.monthNames[tdt.getMonth()] + ", " + tdt.getFullYear();
	
			ret = "";
			ret += "<table width=\"100%\"><tr><td>";
			ret += "<b>" + daytitle + "</b></td><td align=\"right\" class=\"smalltext\">";
			
			if (me.showaddbutton)
			{		
			ret += "<a href=\"calendar.php?function=add&startdate=" + Math.floor(tdt.valueOf()/1000) + "\"><img src=\"images/icons/ico-calendar-add.gif\" border=\"0\" alt=\"Add a new event to " + daytitle + "\" title=\"Add a new event to " + daytitle + "\"></a>&nbsp;";
			}
			ret += "<a href=\"#\" onClick=\"calendarboxes['" + me.calendarid + "'].hidedaysevents()\" alt=\"Close\"><img src=\"images/icons/ico-delete-off.gif\" border=\"0\" alt=\"Close\" title=\"Close\"></a></td></tr></table><br>";
			
			if (me.eventfiltertype!="all")
			{
				ret += "<div align=\"center\" class=\"smalltext\" style=\"position: relative; width: 270px; height: 12px; left: 5px; top: 0px; background-color: #999999; border: 1px solid #999999; color: #ffffff; padding: 5px\">";
				switch (me.eventfiltertype)
				{
					case "attending":
						
						ret += "Events I'm attending<br>";
						break;
						
					case "declined":
						
						ret += "Events I've declined<br>";
						break;
						
					case "invited":
						
						ret += "Events I've been invited to<br>";
						break;

					case "myevents":
						
						ret += "My Events<br>";
						break;
				}
				ret += "</div>";
				
				ret += "<div style=\"position: relative; width: 280px; height: 173px; left: 5px; top: 0px; overflow: auto; border: 1px solid #999999; background-color: #ffffff; padding: 0px\">";
			}
			else
			{
				ret += "<div style=\"position: relative; width: 280px; height: 195px; left: 5px; top: 0px; overflow: auto; border: 1px solid #999999; background-color: #ffffff; padding: 0px\">";
			}
			
			ret += "<div class=\"smalltext\">";
			ret += "<table width=\"100%\" cellspacing=\"0\" cellpadding=\"5\" class=\"smalltext\">";
			var bgClass = "";
				
			if (items!=false)
			{
				
				for (i=0; i<items.items.length; i++)
				{
					ni = items.items[i];

					bgClass = (bgClass=="darkStripe") ? "lightStripe" : "darkStripe";
					bgClassStr = (ni.conflicts==false) ? bgClass : "warningStripe";
								
					//alert(ni.conflicts);
					
					var conflictstr = "";
					
					if (ni.conflicts!=false)
					{
						conflictstr = "Conflicts with: ";

						for (j=0; j<ni.conflicts.items.length; j++)
						{
							cecon = ni.conflicts.items[j];
							
							//conflictstr += "<a href=\"calendar.php?function=view&ref=" + cecon.products_ref + "&optionref=" + cecon.ref + "&fromlist=true&listviewmode=" + vmoval +"&listviewdaterange=" + vdrval + "\">" + cecon.title + "</a>";
							conflictstr += cecon.title;
							if (j!=ni.conflicts.items.length-1) conflictstr += ", ";
						}
						conflictstr += "<br>";
					}
					

					ret += "<tr class=\"" + bgClassStr + "\" style=\"border: 1px solid #999999\"><td>";
					if (ni.attending==1) ret += "<b>";
					ret += ni.title + "<br>";
					ret += formatdaterange(ni.fromdate, ni.todate) + "<br>";
					ret += ni.short_desc + "<br>";
					if (conflictstr) ret += conflictstr;
					/*
					if (ni.fromdate)
					{
						ret += "starts: " + me.formatdisplaydate(ni.fromdate) + "<br>";
					}
					
					if (ni.todate);
					{
						ret += "ends: " + me.formatdisplaydate(ni.todate) + "<br>";
					}
					*/
					
					
					//ret += "<br>";
					//if (ni.parentitem) parentref = ni.parentitem
					ret += "<a href=\"calendar.php?function=view&ref=" + ni.products_ref + "&optionref=" + ni.ref + "\">View Details &raquo;</a><br>";
					if (ni.attending) ret += "</b>";
					
					ret += "</td></tr>";

				}
				
			}
			else
			{
				ret += "<br><td align=\"center\">Nothing planned for " + daytitle + "</td>";
			}
			
			ret += "</table>";
			ret += "</div>";
			ret += "</div>";
			
			ced.innerHTML = ret;
							
			ced.style.display = "";
			//alert(ced.style.width + ", " + ced.style.height);
			//alert(me.detailsX + ", " + me.detailsY);

			ajax_reset()
			
		}
	}

	this.toggleLookupBox = function()
	{
		fl = findObj("datelookup" + me.calendarid);
		bl = findObj("btn-lookup" + me.calendarid);
		
		if (fl.style.display == "none")
		{
			fl.style.display = "";
			bl.src = "images/icons/ico-calendar-lookup.gif";
		}
		else
		{
			fl.style.display = "none";
			bl.src = "images/icons/ico-calendar-searchgray.gif";		}
	}
	
	this.updateTime = function()
	{
		calendarvalue = me.value;
		
		target = String(me.target);
		displaytarget = String(me.displaytarget);
	
		//alert(me.target);
		tg = findObj(me.target);
		dtg = findObj(me.displaytarget);
		
		cd = findObj("calendar-date" + me.calendarid);
		chr = findObj("calendar-hour" + me.calendarid);
		cmn = findObj("calendar-minutes" + me.calendarid);
		
		calendarvalue = cd.value;
		
		valuedate = parseInt(calendarvalue);
		valuedate = new Date(valuedate * 1000);
		
		if (ichr = parseInt(chr.value))
		{
				valuedate.setHours(ichr);
		}
		
		if (icmn = parseInt(cmn.value))
		{
				valuedate.setMinutes(icmn);
		}
			
		tg.value = valuedate.getTime()/1000;
		me.value = tg.value;
		me.setdisplaytext();
		
		me.show();
	}
	
	this.lookup = function()
	{
		calendarid = me.calendarid
		
		clu = findObj("calendar-lookup" + calendarid);
		dlu = findObj("datelookup" + calendarid);
		
		if (clu.value&&dlu.style.display!="none")
		{
			var params = new Array();
			
			params[0] = clu.value;
			params[1] = me.value;
			params[2] = new Array();
			params[2][0] = calendarid;
			params[2][1] = me.target;
			params[2][2] = me.displaytarget;
			
			call_object_method("cms_calendar", "lookupdate", "", params, false, me.lookupcallback);
		}
	}
	
	this.lookupcallback = function()
	{
		if (xmlhttp.readyState == "4")
		{
			ret = eval(xmlhttp.responseText);
			if (ret["timestamp"]==-1)
			{
				alert("Could not find a matching date");
			}
			else
			{		
				cd = findObj("calendar-date" + me.calendarid);
				ch = findObj("calendar-hour" + me.calendarid);
				cm = findObj("calendar-minutes" + me.calendarid);
				
				dt = new Date(ret["timestamp"] * 1000);
				
				//cd.value = ret["timestamp"];
				ch.value = dt.getHours();
				cm.value = dt.getMinutes();
		
				ajax_reset();
				me.setvalue(ret["timestamp"]);
				//setcalendarvalue(ret["passthru"][0], ret["passthru"][1], ret["passthru"][2], ret["timestamp"])
			}
		}
		
	}
	
}