function check_month(str_target, str_datetime, str_olddate, days, direction) {
	// direction - true = previous ; false = next
	if (restrictDate(str_datetime, days, direction))
		show_calendar(str_target, str_datetime);
	else
		show_calendar(str_target, str_olddate);
}

// make sure the date is not in the future
// Store display date dd MMM yyyy
// And numeric date dd/MM/yyyy - validate this date
function check_valid(str_target, str_datetime)
{
	var dt_now = new Date();
	var str_dt_now = dt2dtstr2(dt_now);
	var dt_real_now = str2dt2(str_dt_now);
	var dt_then = str2dt2(str_datetime);

	// Validate the hidden date field
	if (dt_then.getTime()<=dt_real_now.getTime())
	{
		//Format display month
		var arr_months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun",
		"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];

		// Parse the date field
		var dayElement = str_datetime.substr(0,2);
		var monthElement = arr_months[parseInt(str_datetime.substr(3,2), 10)-1];
		var yearElement = str_datetime.substr(6,4);

		// Get/Set display field - strip hidden from the name
		var displayFieldLength = str_target.name.length-7;
		var displayField = str_target.name.substr(0,displayFieldLength);
        document.getElementById(displayField).value=''+dayElement+' '+monthElement+' '+yearElement;

        // Get/Set hidden field
		str_target.value=str_datetime;

		return true;
	}
	else
		return false;
}

function check_valid(str_target, str_datetime, days_in)
{
	var dt_now = new Date();
	var str_dt_now = dt2dtstr2(dt_now);
	var dt_real_now = str2dt2(str_dt_now);
	var dt_then = str2dt2(str_datetime);
	var one_day=1000*60*60*24;
	var days = ((dt_real_now.getTime()-dt_then.getTime())/one_day)-1;
	var days_in_in_ms=days_in*86400000;
	// Validate the hidden date field
	
	if (dt_then.getTime()<=dt_real_now.getTime() && (days_in_in_ms>=days))
	{
		//Format display month
		var arr_months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun",
		"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];

		// Parse the date field
		var dayElement = str_datetime.substr(0,2);
		var monthElement = arr_months[parseInt(str_datetime.substr(3,2), 10)-1];
		var yearElement = str_datetime.substr(6,4);

		// Get/Set display field - strip hidden from the name
		var displayFieldLength = str_target.name.length-7;
		var displayField = str_target.name.substr(0,displayFieldLength);
        document.getElementById(displayField).value=''+dayElement+' '+monthElement+' '+yearElement;
  
        // Get/Set hidden field
		str_target.value=str_datetime;

		return true;
	}
	else
		return false;
}


// don't allow a date more than 6 month before the present to be selected
function restrictDate (str_thisdate, days, direction)
{
	var dt_selectedDate = str2dt2(str_thisdate);
	dt_selectedDate.setDate("1");

	var dt_now = new Date();
	//dt_now.setDate("1");
	var str_dt_now = dt2dtstr2(dt_now);
	var dt_real_now = str2dt2(str_dt_now);
	var dt_limit;
	if (direction) {
		dt_limit = new Date(dt_real_now.getTime()-(86400000*days));

		dt_limit.setDate("1");
		dt_limit.setHours("0");

		if (dt_selectedDate.getTime() >= dt_limit.getTime())
		{
			return true;
		}
		else
		{
			return false;
		}
	}
	else {
		dt_limit = dt_real_now;

		if (dt_selectedDate.getTime()<=dt_limit.getTime())
			return true;
		else
			return false;
	}
}
// datetime parsing and formatting routimes. modify them if you wish other datetime format
function str2dt2 (str_datetime) {
	var re_date = /^(\d+)\/(\d+)\/(\d+)$/;
	if (!re_date.exec(str_datetime))
		return alert("Invalid Date: "+ str_datetime);

	return (new Date (RegExp.$3, RegExp.$2-1, RegExp.$1));

}
function dt2dtstr2 (dt_datetime) {

	var monthString = (dt_datetime.getMonth()+1)>9?(dt_datetime.getMonth()+1):"0"+(dt_datetime.getMonth()+1);
	return (new String (
			(dt_datetime.getDate()>9?dt_datetime.getDate():"0"+dt_datetime.getDate())+"/"+
			monthString+"/"+
			dt_datetime.getFullYear()));
}

function dt2dtstr2c (dt_datetime) {
	return (new String (
			dt_datetime.getDate()+"/"+(dt_datetime.getMonth()+1)+"/"+dt_datetime.getFullYear()+" "+dt_datetime.getHours()+":"+dt_datetime.getMinutes()+":"+dt_datetime.getSeconds()+"."+dt_datetime.getMilliseconds()));
}
