var dys = new Array('Mo','Tu','We','Th','Fr','Sa','Su');
var mnths = new Array('January','February','March','April','May','June','July','August','September','October','November','December');
var mdys = new Array(0,-3,0,-1,0,-1,0,0,-1,0,-1,0);

var stdt = 0;
var endt = 99999999;

	var yr;
	var mn;
	var dt;
	var dy;
	
	var syr;
	var smn;
	var sdt;
	
	var now = new Date();
	var cyr = now.getFullYear();
	var cmn = now.getMonth();
	var cdt = now.getDate();
	
	var glid='';
	
function cal(id,dat) {
	if (id != 'evend' || stdt > 0) {
		if (dat == '') {
			dat = document.getElementById(id).value;
		}
		glid = id;
		
		var now = new Date();
		var dateline= new Array();

		if (dat != '') {
			dateline=dat.split('/');
			yr = dateline[2]*1;
			mn = (dateline[1]*1)-1;
			dt = dateline[0]*1;
			
			now.setFullYear(yr);
			now.setMonth(mn);
			now.setDate(dt);
		} else {
			yr = now.getFullYear();
			mn = now.getMonth();
			dt = now.getDate();
		}
		dy = now.getDay();
		
		if (!syr) {
			syr=yr;
			smn=mn;
			sdt=dt;
		}
		leap();
		grid();
	}
}

function leap() {
	if ((yr % 4 == 0) && (yr % 100 != 0) || (yr % 400 == 0)) {
		mdys[1] = -2;
	}
}
	
function grid() {

	var grd = "<table class='cal'><tr><td></td><td><a href='javascript:ygo(-1)'><b>&lt;</b></a></td><td colspan=3><b>"+yr+"</b></td><td><a href='javascript:ygo(1)'><b>&gt;</b></a></td><td><a href='javascript:shut()'><b>X</b></a></td></tr>";
	grd += "<tr><td><a href='javascript:mgo(-1)'><b>&lt;</b></a></td><td colspan=5><b>"+mnths[mn]+"</b><td><a href='javascript:mgo(1)'><b>&gt;</b></a></td></td></tr>";
	grd += "<tr><td>Mo</td><td>Tu</td><td>We</td><td>Th</td><td>Fr</td><td>Sa</td><td>Su</td>";
	var hi;
	var ofs = dy -(dt%7)+6;
	for (i=0; i<49; i++) {
		if (i%7 ==0) {
			grd+="</tr><tr>";
		}
		var tag = 'cld';
		num = (i-ofs < 1 || i-ofs > (31 + mdys[mn]))? '' : i-ofs;
		tag += (num < cdt && mn<=cmn && yr<=cyr)? "p" : '' ;
		tag += (num == cdt && mn==cmn && yr==cyr)? "c" : '' ;
		tag += (num == dt && mn==mn && yr==yr)? "s" : '' ;
		if (num) {
			grd +="<td onClick='sel("+num+")' class='"+tag+"'>"+num+"</td>";
		} else {
			grd +="<td></td>";
		}
	}
	grd +="</tr></table>";
	document.getElementById('clndr').innerHTML=grd;
	document.getElementById('clndr').style.display='inline';
}

function mgo(way) {
	dt=0;
	mn += way;
	if (yr > cyr || (yr == cyr && mn >= cmn)) {
		if (mn < 0) {
			mn=11;
			yr--;
		}
		if (mn >11) {
			mn=0;
			yr++;
		}
		var dat = dt+"/"+(mn+1)+"/"+yr;
		cal(glid,dat);
	} else {
		mn -= way;	
	}
}

function ygo(way) {
	dt=0;
	yr += way;
	if (yr >= cyr) {
		var dat = dt+"/"+(mn+1)+"/"+yr;
		cal(glid,dat);
	} else {
		yr -= way;
	}
}

function sel(dat) {
	var ok='';
	if (dat > cdt) {
		dat=dat.toString();
		dat = (dat.length == 1)?"0"+dat:dat;
		mn++;
		mn=mn.toString();
		mn = (mn.length == 1)?"0"+mn:mn;
		var tmp = (yr+mn+dat)*1;
		if (glid == 'evstrt') {
			if (tmp < endt) {
				stdt = tmp;
				ok = 'true';
			} else {
				alert (alhd+'Start date must be before end date');
				mn--;
			}
		} else {
			if (tmp > stdt) {
				endt = tmp;
				ok = 'true';
			} else {
				alert (alhd+'End date must be after start date');
				mn--;
			}
		}
		if (ok == 'true') {
			var dat = dat+"/"+mn+"/"+yr;
			document.getElementById(glid).value=dat;
			shut();
		}
	}
}

function shut() {
	document.getElementById('clndr').style.display = 'none';
}
