var days = ['sun', 'mon', 'tue', 'wed', 'thu', 'Friday', 'Saturday'];
var months = ['January','February','March','April','May','June','July','August','September','October','November','December'];

function getDayofYear(year, month, day) {
	var month = month-1;
    var date = new Date(year,month,day);
    var dnam = days[date.getDay()];
	var dval = date.getDay();
	var darr = [dnam, dval];
	return darr;
}

function getDaysInMonth(year, month) {
    return [31,((!(year % 4 ) && ( (year % 100 ) || !( year % 400 ) ))?29:28),31,30,31,30,31,31,30,31,30,31][month-1];
}

function getCurrentDate() {
	var dstr = currentDate.date +', '+  months[currentDate.month-1] +' '+ currentDate.year;
	return dstr;
}

var currentDate = {
	'year': 0,
	'month': 0,
	'date': 0
}

launcher = '';

function initCal(la, year, month, date) {

	launcher = la;
	var odate, y, m, d;

	if (year) {	odate = new Date(year, month-1, date);	}
	else {	odate = new Date(); }

	currentDate.year = y = (1900 + odate.getYear());
	currentDate.month = m = (odate.getMonth() + 1);
	currentDate.date = d = odate.getDate();

	$('sbcal_cal').innerHTML = getCurrentDate();

	var iday = getDayofYear(y, m, 1); // The starting day of the month
	var dval = iday[1];

	var ndate = 1;

	if (year) {

		for (var i = 0; i <= 4; i++) {
			var dr = 'sbcal_dr' + i;
			var del = $(dr).childNodes;
			for (var td = 0; td <= 6; td++) {
				del[td].innerHTML = '';
				del[td].setAttribute('class', '');
			}
		}

	}


	for (var i = 0; i <= 4; i++) {
		var dr = 'sbcal_dr' + i;
		var inode = (i == 0)?dval:0;
		var del = $(dr).childNodes;

		while (inode <= 6) {
			
			if (ndate > getDaysInMonth(y, m)) { break; }			
			del[inode].innerHTML = ndate;
	
			//if (ndate == d) { del[inode].setAttribute('id', 'selectedDate'); }
			//else { del[inode].setAttribute('class', 'date'); }

			del[inode].setAttribute('class', 'date');

			del[inode].setAttribute('onclick', 'sendDate(this.innerHTML)');
			inode++;
			ndate++;
		}

	}


	var s_hr = $('sbcal_hr');	
	for (var i = 1; i <= 12; i++) {
		var op = document.createElement('option');
		op.setAttribute('value', i);
		op.innerHTML = i;
		s_hr.appendChild(op);
	}


	if (year) { return; }


	var s_min = $('sbcal_min');	
	for (var i = 0; i <= 59; i++) {
		var op = document.createElement('option');
		op.setAttribute('value', i);
		op.innerHTML = i;
		s_min.appendChild(op);
	}

	var thr = odate.getHours();
	var hr = (thr >= 13)?thr-12:thr;
	
	var hrt = $('sbcal_hr').getElementsByTagName('option');
	hrt[hr-1].selected = true;

	var min = odate.getMinutes();
	var mint = $('sbcal_min').getElementsByTagName('option');
	mint[min].selected = true;

	var apm = (thr <= 11)?0:1;
	var apmt = $('sbcal_apm').getElementsByTagName('option');
	apmt[apm].selected = true;


	$('div_cal').style.display = 'block';
	var lpos = (launcher.id == 'cal_imgd')?'23px':'96px';
	$('cal_table').style.top = lpos;


}

function sendDate(cd) {

	var year = currentDate.year;
	var month = currentDate.month;
	if (cd) { var date = currentDate.date = cd; }
	else { var date = currentDate.date; }
	var hr = $('sbcal_hr').value;
	var min = $('sbcal_min').value;
	var amp = $('sbcal_apm').value;	

	var fdate = year+'-'+month+'-'+date;
	var ftime = hr+':'+min + ' '+ amp;

	if (launcher.id == 'cal_imgd') {
		$('due_date').value = fdate;
		$('due_time').value = ftime;
	}
	else {
		$('review_date').value = fdate;
		$('review_time').value = ftime;	}
}



function calBack() {

	if (currentDate.month == 12) {
		currentDate.year--;
		currentDate.month--;
	}
	else { currentDate.month--; }
	initCal(launcher, currentDate.year, currentDate.month, currentDate.date);
}


function calNext() {

	if (currentDate.month == 12) {
		currentDate.year++;
		currentDate.month = 1;
	}
	else { currentDate.month++; }
	initCal(launcher, currentDate.year, currentDate.month, currentDate.date);
}
