var cal_start;
var cal_end;
var cal_today;
var cal_cur;
var cal_nonites;
var cal_visDate;
var cal_open = false;
var cal_imgLoc;
var cal_date;
var cal_month;
var cal_nites;
var cal_weekday;
var cal_months = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
var cal_monthNames = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
var cal_dayNames = new Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat");

function setDates(today, begin, end, initialNites, current)
{
	cal_today = new Array(today.getDate(), today.getMonth(), today.getFullYear());
	if(begin == null)
		cal_start = new Array(today.getDate(), today.getMonth(), today.getFullYear());
	else
		cal_start = new Array(begin.getDate(), begin.getMonth(), begin.getFullYear());
	if(end == null)
	{
		var tmp = new Date(today);
		tmp.setYear(tmp.getFullYear()+1);
		cal_end = new Array(tmp.getDate(), tmp.getMonth(), tmp.getFullYear());
	}
	else
		cal_end = new Array(end.getDate(), end.getMonth(), end.getFullYear());
	if(initialNites == null)
		cal_nonites = 2;
	else
		cal_nonites = initialNites;
	if(current == null)
		cal_cur = new Date(today);
	else
		cal_cur = new Date(current.getFullYear(),current.getMonth(),current.getDate());
}

/**Create date select object*/
function createDateSelect(objClass,objName,width)
{
	if(objName == null)
		objName = 'ad';
	document.write("<select name='"+objName+"' id='"+objName+"' onchange='changeDate()' onfocus='closeCalendar()' ");
	if(objClass != null)
		document.write("class='"+objClass+"' ");
	if(width != null)
		document.write("style='width:"+width+"px;'");
	document.write("></select>");
	cal_date = document.getElementById(objName);
	setDateContent(new Array(cal_cur.getDate(), cal_cur.getMonth(), cal_cur.getFullYear()));
}

function createMonthSelect(objClass,objName,width)
{
	if(objName == null)
		objName = 'am';
	document.write("<select name='"+objName+"' id='"+objName+"' onchange='changeMonth()' onfocus='closeCalendar()' ");
	if(objClass != null)
		document.write("class='"+objClass+"' ");
	if(width != null)
		document.write("style='width:"+width+"px;'");
	document.write("></select>");
	cal_month = document.getElementById(objName);
	setMonthContent();
}



function createDay(objClass)
{
	document.write("<span id='weekdayhere' ");
	if(objClass != null)
		document.write("class='"+objClass+"'");
	document.write("></span>");
	cal_weekday = document.getElementById('weekdayhere');

	changeWeekday();
}


function changeWeekday()
{
	if(cal_weekday != null)
		cal_weekday.innerHTML = cal_dayNames[cal_cur.getDay()];
}

function getWeekday()
{
	if(cal_weekday != null)
		return cal_dayNames[cal_cur.getDay()];
	else
		return"ERROR";
}

function changeDate()
{
	cal_cur = new Date(cal_date.value + " " + cal_month.options[cal_month.selectedIndex].text);
	changeWeekday();
}

function getSelectedDate()
{
	return cal_cur;
}

function setMonthContent()
{
	var im = cal_start[1];
	var iy = cal_start[2];
	var opt = cal_month.options;
	opt.length = 0; // reset object
	while(iy < cal_end[2])
	{
		for(var i = im; i < 12; i++)
			opt[opt.length] = new Option(cal_monthNames[i]+" "+iy,(i+1)+"_"+iy);
		im = 0;
		iy++;
	}
	for(var i = im; i <= cal_end[1]; i++)
		opt[opt.length] = new Option(cal_monthNames[i]+" "+iy,(i+1)+"_"+iy);
	cal_month.selectedIndex = cal_cur.getMonth()-cal_start[1]+((cal_cur.getFullYear()-cal_start[2])*12);
}

/** Set the content of the date object and the selected index */
function setDateContent(cur)
{
	var strt = 1;
	var end;
	if((cur[1] == cal_start[1]) && (cur[2] == cal_start[2]))
		strt = cal_start[0];
	if((cur[1] == cal_end[1]) && (cur[2] == cal_end[2]))
		end = cal_end[0];
	else
	{
		if((cur[1] == 1) && (cur[2]%4 == 0))
			end = 29;
		else
			end = cal_months[cur[1]];
	}
	var opt = cal_date.options;
	opt.length = 0; // reset object
	for(var i = strt; i <= end; i++)
		opt[opt.length] = new Option(i,i);
	
	if(cur[0] < strt)
		cur[0] = strt;
	else if(cur[0] > end)
		cur[0] = end;
	cal_date.selectedIndex = cur[0]-strt;
}

function changeMonth()
{
	var mon = cal_month.value;
	var yr;
	if(mon.charAt(1) == ':')
	{
		yr = parseInt(mon.substring(2));
		mon = parseInt(mon.substring(0,1));
	}
	else
	{
		yr = parseInt(mon.substring(3));
		mon = parseInt(mon.substring(0,2));
	}
	mon--;
	setDateContent(new Array(cal_cur.getDate(), mon, yr));
	changeDate();
}
