
// TO DO: INIT VALUES HAVE TO BE SET ELSEWHERE! (php)

//------------------------------------------------------------------------------------------------------
function calInit(id)
{
	calData.ids.push(id);

	var todaydate = new Date();
	calData[id] = new Array();

	calData[id].current = new Array();
	calData[id].selected = new Array();

	calData[id].current.month = todaydate.getMonth();
	calData[id].current.year = todaydate.getFullYear();

	//default limits min = current / max = current + 1 year
	calData[id].min = new Array();
	calData[id].min.month = todaydate.getMonth();
	calData[id].min.year = todaydate.getFullYear();
	calData[id].min.day = todaydate.getDate();

	calData[id].max = new Array();
	calData[id].max.month = todaydate.getMonth();
	calData[id].max.year = todaydate.getFullYear()*1+1;
	calData[id].max.day = 31;
}

function calShift(id,sh)
{
	m = calData[id].current.month;
	y = calData[id].current.year;

	m += sh;
	if (m < 0)
	{
		m = 12 + m;
		y--;
	}
	if (m > 11)
	{
		m = m - 12;
		y++;
	}

	calData[id].current.month = m;
	calData[id].current.year = y;

	calUpdate(id);
}

//------------------------------------------------------------------------------------------------------
function calSHL(id)
{
	calShift(id,-1);
}

//------------------------------------------------------------------------------------------------------
function calSHR(id)
{
	calShift(id,1);
}

//------------------------------------------------------------------------------------------------------
function calUpdate(id)
{
	m = calData[id].current.month;
	y = calData[id].current.year;

	//update title
	document.getElementById('cal_'+id+'_title').innerHTML = calData.monthNames[m] + ' ' + y;

	//get today (if applicable)
	var todaydate = new Date();
	var today = ((y == todaydate.getFullYear()) && (m == todaydate.getMonth()))?todaydate.getDate():-1;

	//check date limits
	var larrow = document.getElementById('cal_'+id+'_larrow');
	if ((y == calData[id].min.year) && (m == calData[id].min.month)) 
	{
		larrow.style.display = 'none';
		var minDay = calData[id].min.day;
	}
	else 
	{
		larrow.style.display = 'block';
		var minDay = -1;
	}
	
	var rarrow = document.getElementById('cal_'+id+'_rarrow');
	if ((y == calData[id].max.year) && (m == calData[id].max.month)) 
	{
		rarrow.style.display = 'none'; 
		var maxDay = calData[id].max.day;
	}
	else 
	{
		rarrow.style.display = 'block';
		var maxDay = 32;
	}

	//get first day of month
	var oD = new Date(y, m, 1);
	dayone = oD.getDay()-1;
	if (dayone < 0) dayone = 6;

	//define month lengths
	var mlen=[31,0,31,30,31,30,31,31,30,31,30,31];
	mlen[1]=(((oD.getFullYear()%100!=0)&&(oD.getFullYear()%4==0))||(oD.getFullYear()%400==0))?29:28;

	var selday = (y == calData[id].selected.year && m == calData[id].selected.month)? calData[id].selected.day : -1;

	//fill the table
	for(cnt=1;cnt<=42;cnt++)
	{
		var dbox = document.getElementById('cal_'+id+'_daybox_'+cnt);
		dbox.className = 'cal_nodaysel cal_day';

		var d = cnt - dayone;

		if ((d>0) && (d<=mlen[m]))
		{
			dbox.style.visibility = 'visible';
			if ((d >= minDay) && (d <= maxDay)) dbox.className = 'cal_daysel cal_day cal_anyday';
			if (d == today) dbox.className = 'cal_daysel cal_day cal_today';

			if (d == selday) dbox.className = dbox.className + ' cal_selected';
		}
		else 
		{
			dbox.style.visibility = 'hidden';
			d = '00';
		}

		dbox.innerHTML = d;
	}
}

//------------------------------------------------------------------------------------------------------
function calSet(id,d,m,y)
{
	calData[id].current.month = m;
	calData[id].current.year = y;

	calData[id].selected.day = d;
	calData[id].selected.month = m;
	calData[id].selected.year = y;

	calData[id].days = String(y)+String(addZeros(m*1+1))+String(addZeros(d));

	dd_set('dd_'+id,addZeros(d)+'/'+addZeros(m*1+1)+'/'+y);
	calUpdate(id);
}

//------------------------------------------------------------------------------------------------------
function calSel(id,dnum)
{
	dd_forcePullUp();
	
	m = calData[id].current.month;
	y = calData[id].current.year;

	var oD = new Date(y, m, 1);
	dayone = oD.getDay()-1;
	if (dayone < 0) dayone = 6;
	d = dnum - dayone;

	//alert (d+'/'+m+'/'+y);

	if (processDates(id,d,m,y))
	{
		calSet(id,d,m,y);

		priceCalc();
	}
}