function datepicker()
{
}

activity = new Array();
activity[0] = 0;
datepicker.dname = new Array("Su", "Mo", "Tu", "We", "Th", "Fr", "Sa");
datepicker.sdate = new Array(0, 0, 0);
datepicker.after = new Array();
datepicker.target = new Array();
datepicker.cancel = "cancel";

datepicker.mname = new Array("January", "February", "March", "April", "may", "June", "July", "August", "September", "October", "November", "December");

datepicker.selcol = "#77ff77";

datepicker.classes = new Array("cc", "cr", "cx", "cu");

datepicker.minyear = 2000;
datepicker.maxyear = 2010;

datepicker.ovr = function()
{
	document.status = "";
	return true;
}

datepicker.show = function(img, src)
{
	document.images[img].src = "images/" + src + ".gif";
	return datepicker.ovr();
}

datepicker.monthtext = function(month, year)
{
	var after = "01-01-2000";
	var wanttoday = false;
	var wdt = 20;
	var ywdt = 60;
	var txt = "";
	var startday;
	var today = new Date();

	datepicker.minyear = Math.min(datepicker.minyear, year);
	datepicker.maxyear = Math.max(datepicker.maxyear, year);

	// after is in notation dd-mm-yyyy  whith month 1..12
	if(after == 0)
	{
		after = today.getDate() + "-" + (today.getMonth() + 1) + "-" + today.getFullYear();
	}
	var awhen = after.split("-");

	// so set month 0..11

	awhen[1]--;

// lg("after = " + after + " " + awhen[0] + "/" + awhen[1] + "/" + awhen[2]);
	if(year == 0)
	{
		month = today.getMonth();
		year = today.getFullYear();
	}
	startday = new Date(year, month, 1, 12, 0, 0, 0);
	var nyear;
	var nextmonth;
	var nextyear;
	var prevmonth;
	var prevyear;
	var myday = 1000 * 3600 * 24;
	var jan1 = new Date(year, 0, 1, 12, 0, 0, 0);
	var wn = Math.round((((startday.getTime() - jan1.getTime()) / myday) - 3) / 7) + 1;
	if(month == 11)
	{
		nextmonth = 0;
		nyear = year  - -1;
	}
	else
	{
		nextmonth = month - -1;
		nyear = year;
	}
	nextyear = year - -1;
	if(month == 0)
	{
		prevmonth = 11;
		pyear = year - 1;
	}
	else
	{
		prevmonth = month - 1;
		pyear = year;
	}
	prevyear = year - 1;
	var lastday = new Date(nyear, nextmonth, 1, 12, 0, 0);
	var ndays = Math.round((lastday.getTime() - startday.getTime()) / myday);
	var week = 0;
	var i;
	var crow  = -1;
	var row = 0;
	var col = (startday.getDay() + 6) % 7;
	var tbl = "<table border='1' width='100%' cellspacing='0' cellpadding='3'>";

	txt += "<form action='index.php' method='get' name='cin'>";

	txt += "<table border='0' cellspacing='0' cellpadding='0'><tr><td class='cc'>";
	txt += tbl;
	txt += "<tr>";

	 txt += "<td><table width='100%' border='0' cellspacing='0' cellpadding='0'><tr><td class='cc' width='12'><a class='dtp' onmouseover='return datepicker.show(\"pmnt2\",\"lred\")' onmouseout='datepicker.show(\"pmnt2\",\"lblue\")' href='javascript:datepicker.cal(" + prevmonth + ", " + pyear + ")'><img name='pmnt2' src='images/lblue.gif' border='0' alt='' /></a></td>";

	txt += "<td class='ct'>";
	
	txt += "<select name='cmonth' onchange='datepicker.cal(this.selectedIndex, " + year + ")'>";
	for(i = 0; i < 12; i++)
	{
		txt += "<option" + ((i == month) ? " selected='selected'" : "") + " value='" + (i + 1) + "'>" + datepicker.mname[i] + "</option>";
	}
	txt += "</select>";

	 txt += "</td><td class='cc' width='12'><a class='dtp' onmouseover='return datepicker.show(\"nmnt2\",\"rred\")' onmouseout='datepicker.show(\"nmnt2\",\"rblue\")' href='javascript:datepicker.cal(" + nextmonth + "," + nyear + ")'><img name='nmnt2' src='images/rblue.gif' alt='' border='0' /></a></td></tr></table>";
	txt += "</td>";
	txt += "<td class='ct' width='" + ywdt + "'>";

	txt += "<select name='cyear' onchange='datepicker.cal(" + month + ", this.options[this.selectedIndex].value)'>";
	for(i = datepicker.minyear; i <= datepicker.maxyear; i++)
	{
		txt += "<option" + ((i == year) ? " selected='selected'" : "") + " value='" + i + "'>" + i + "</option>";
	}
	txt += "</select>";


	txt += "</td>";
	txt += "</tr>";
	txt += "</table>";
	txt += "</td></tr>";
	txt += "<tr><td class='ct'>";
	txt += tbl;
	txt += "<tr>";
	// txt += "<td class='wn' width='" + wdt + "'>" + datepicker.dname[7] + "</td>";
	for(i = 0; i < 7; i++)
	{
		txt += "<td class='ct' width='" + wdt + "'>" + datepicker.dname[(i + 1) % 7] + "</td>";
	}
	txt += "</tr>";
	txt += "<tr>"
	crow = 0;
	// txt += "<td class='wn'>" + wn++ + "</td>";
	for(i = 0; i < col; i++)
	{
		txt += "<td>&nbsp;</td>";
	}
	for(i = 1; i <= ndays; i++)
	{
		if(row != crow)
		{
			if(crow != -1)
			{
				txt += "</tr>";
			}
			txt += "<tr>";
			// txt += "<td class='wn'>" + wn++ + "</td>";
			crow = row;
		}
		if(i == datepicker.selday && month == datepicker.selmonth && year == datepicker.selyear)
		{
			txt += "<td class='cn'><a class='dtp' onmouseover='return datepicker.ovr()' href='javascript:datepicker.day("+i+","+month+","+year+")'>" + i + "</a></td>";
			// txt += "<td class='cn'>" + i + "</td>";
		}
		else
		{
			var tp = 0; //activity[i];
			var cls = datepicker.classes[tp];
			if(tp == 3)
			{
				txt += "<td class='" + cls + "'>" + i + "</td>";
			}
			else
			{
				txt += "<td class='" + cls + "'><a class='dtp' onmouseover='return datepicker.ovr()' href='javascript:datepicker.day("+i+","+month+","+year+")'>" + i + "</a></td>";
			}
		}
		col++;
		if(col == 7)
		{
			col = 0;
			row++;
		}
	}
	while(col != 0 && col < 7)
	{
		txt += "<td>&nbsp;</td>";
		col++;
	}
	txt += "</tr>";
	txt += "</table></td></tr>";
	txt += "<tr><td align='right' style='padding: 6px;'>";
	if(datepicker.clear)
	{
		txt += "<input style='margin-right: 20px' type='button' name='clear' value='" + datepicker.clear + "' onclick='datepicker.cleardate()' />";
	}
	txt += "<input type='button' name='cancel' value='" + datepicker.cancel + "' onclick='datepicker.canceled()' /></td></tr>";
	txt += "</table>";

	txt += "</form>";
	return txt;
}

datepicker.cal = function(month, year)
{
	var txt = datepicker.monthtext(month, year)
	datepicker.elem.innerHTML = txt;
}

datepicker.setToday = function()
{
	var d = new Date()
	day(d.getDate(), d.getMonth(), d.getFullYear(), 'ediv');
}
	
datepicker.setday = function(month, year, date)
{
	var mm = month + 1;
	datepicker.cal(month, year, date);
}

var __pastdate = null;

datepicker.day = function(date, month, year)
{
	month++;
	if(date < 10) date = "0" + date;
	if(month < 10) month = "0" + month;
	if(datepicker.field)
	{
		datepicker.field.value = date + "-" + month + "-" + year;
		datepicker.checkfield(datepicker.field);
	}
	if(datepicker.notify)
	{
		datepicker.notify(date + "-" + month + "-" + year, false);
	}
	datepicker.hide();
}

datepicker.checkEnddates = function()
{
	var r = document.info.elements;
	for(var i = 0; i < r.length; i++)
	{
		if(r[i].name.match(/^enddate/))
		{
			datepicker.checkfield(r[i]);
		}
	}
}

datepicker.checkfield = function(field)
{
	var value = field.value;
	if(value && __pastdate)
	{
		var r = value.split(/-/);
		var ndate = new Date(r[2], r[1], r[0], 0, 0, 0, 0);
		var delta = (ndate.getTime() - __pastdate.getTime()) / (1000 * 3600 * 24);
		if(delta < 0)
		{
			field.style.color = "red";
			field.style.textDecoration = "line-through";
		}
		else if(delta < 7)
		{
			field.style.color = "#ff00ff";
			field.style.textDecoration = "none";
		}
		else
		{
			field.style.color = "black";
			field.style.textDecoration = "none";
		}
	}
	else
	{
		field.style.color = "black";
		field.style.textDecoration = "none";
	}
}

datepicker.onchange = function()
{
	if(datepicker.field.onchange)
	{
		if(typeof datepicker.field.onchange == "string")
		{
			eval(datepicker.field.onchange);
		}
		else
		{
			datepicker.field.onchange();
		}
	}
}

datepicker.cleardate = function()
{
	datepicker.field.value = '';
	if(datepicker.notify)
	{
		datepicker.notify("", false);
	}
	datepicker.hide();
}

datepicker.canceled = function()
{
	if(datepicker.notify)
	{
		datepicker.notify("", true);
	}
	datepicker.hide();
}

datepicker.hide = function()
{
	if(datepicker.mask)
	{
		window.clearInterval(datepicker.itv);
		if(datepicker.mask.dtpCreated)
		{
			datepicker.mask.parentNode.removeChild(datepicker.mask);
		}
		else
		{
			datepicker.mask.style.visibility = "hidden";
		}
		if(datepicker.iframe)
		{
			datepicker.iframe.style.left = "-800px";
		}
	}
	else
	{
		popdialog.hide();
	}
}

datepicker.maskpos = function()
{
	datepicker.mask.style.top = (document.documentElement.scrollTop) + "px";
}

datepicker.showCalendar = function(minyear, maxyear, maskname, divname, field)
{
	var when = field.value;
	if(!when)
	{
		// see if there is an alternative...
		if(arguments.length > 5)
		{
			var fld = arguments[5];
			if(fld)
			{
				when = fld.value;
			}
		}
	}
	var year;
	var month;
	var day;

	var mask = maskname;
	if(typeof maskname == "string")
	{
		mask = document.getElementById(maskname);
	}
	if(!mask)
	{
		alert(maskname + " not found");
		return false;
	}
	var elem = divname;
	if(typeof divname == "string")
	{
		elem = document.getElementById(divname);
	}
	if(!elem)
	{
		alert(divname + " not found");
		return false;
	}
	datepicker.mask = mask;
	datepicker.elem = elem;
	datepicker.field = field;
	var n = new Date();
	day = n.getDate();
	month = n.getMonth() - 0;
	year = n.getFullYear() - 0;
	datepicker.minyear = minyear ? minyear : year;
	datepicker.maxyear = maxyear ? maxyear : year;
	var r = when.match(/^(\d{1,2})[- ](\d{1,2})[- ](\d{4})$/);
	if(r)
	{
		day = r[1] - 0;
		month = r[2] - 1;
		year = r[3] - 0;
	}
	datepicker.selyear = year;
	datepicker.selmonth = month;
	datepicker.selday = day;
	field.blur();
	var txt = datepicker.monthtext(month, year);
	elem.innerHTML = txt;
	mask.style.visibility = "visible";
	var df = document.getElementById("dhfr");
	if(df)
	{
		datepicker.iframe = df;
		df.style.top = elem.offsetTop + "px";
		df.style.left = elem.offsetLeft + "px";
		df.style.width = elem.offsetWidth + "px";
		df.style.height = elem.offsetHeight + "px";
		df.style.visibility = "visible";
	}
	datepicker.maskpos();
	datepicker.itv = window.setInterval('datepicker.maskpos()', 300);
	return true;
}

function datePicker(field, top, left, minyear, maxyear, clear)
{
	datepicker.clear = clear;
	var mask = document.createElement("div");
	mask.style.position = "absolute";
	mask.style.top = "0px";
	mask.style.left = "0px";
	mask.style.width = document.body.offsetWidth + "px";
	mask.style.height = document.body.offsetHeight + "px";
	mask.style.backgroundImage = "url(images/trans.gif)";
	// mask.style.backgroundColor = "yellow";
	mask.style.zIndex = 20000;
	document.body.appendChild(mask);
	mask.dtpCreated = true;
	var element = document.createElement("div");
	element.style.position = "absolute";
	element.id = "calendar";
	element.style.top = top + "px";
	element.style.right = "auto";
	element.style.left = left + "px";
	element.style.border = "1px solid #888888";
	mask.appendChild(element);
	var fld = field;
	if(typeof field == "text")
	{
		fld = document.getElementById(field);
	}
	if(!fld)
	{
		alert("No datapicker field: " + field);
		return;
	}
	datepicker.showCalendar(minyear, maxyear, mask, element, fld);
}

function popDatePicker(field, top, left, minyear, maxyear, clear, notify)
{
	datepicker.clear = clear;
	var fld = field;
	if(typeof field == "string")
	{
		fld = document.getElementById(field);
	}
	if(!fld)
	{
		alert("No datapicker field: " + field);
		return;
	}

	var body = "<div style='background-color: white'>" + datepicker.popShowCalendar(minyear, maxyear, fld) + "</div>";
	
	var dp = popdialog.getDialog('_dtpck', body, "", top, left, true, null, false, true);
	datepicker.elem = dp.getBody().firstChild;
	datepicker.notify = notify;
}

datepicker.popShowCalendar = function(minyear, maxyear, field)
{
	var when = field.value;
	var year;
	var month;
	var day;

	datepicker.mask = null;
	datepicker.elem = null;
	datepicker.field = field;
	var n = new Date();
	day = n.getDate();
	month = n.getMonth() - 0;
	year = n.getFullYear() - 0;
	datepicker.minyear = minyear ? minyear : year;
	datepicker.maxyear = maxyear ? maxyear : year;
	var r = when.match(/^(\d{1,2})[- ](\d{1,2})[- ](\d{4})$/);
	if(r)
	{
		day = r[1] - 0;
		month = r[2] - 1;
		year = r[3] - 0;
	}
	datepicker.selyear = year;
	datepicker.selmonth = month;
	datepicker.selday = day;
	field.blur();
	var txt = datepicker.monthtext(month, year);
	datepicker.itv = null;
	return txt;
}


