disable_past_dates = 1;
var days_short = new Array("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun");
var months_short = new Array(
		"Jan",
		"Feb",
		"Mar",
		"Apr",
		"May",
		"Jun",
		"Jul",
		"Aug",
		"Sep",
		"Oct",
		"Nov",
		"Dec"
		);

var months_full = new Array(
		"January",
		"February",
		"March",
		"April",
		"May",
		"June",
		"July",
		"August",
		"September",
		"October",
		"November",
		"December"
		);

var del = '-';
var today = 'Today';

function calendar_init(dpd) {

	disable_past_dates = dpd;
}

function get_td_class(d, d_today, d_selected) {

	var ret = 'td_date';
	
	if(d.getDay() == 6 || d.getDay() == 0) {
		ret = 'td_date_weekend';
	}
	if(d.getDate() == d_today.getDate() && d.getMonth() == d_today.getMonth() &&
			d.getFullYear() == d_today.getFullYear()) {
		ret = 'td_date_today';
	}
	if(d.getDate() == d_selected.getDate() && d.getMonth() == d_selected.getMonth() && 
			d.getFullYear() == d_selected.getFullYear()) {
		ret = 'td_date_selected';
	}

	return ret;
}

function calendar(div_id, input_id, month, year, ci) {

	

	var input = document.getElementById(input_id);
	var d_today = new Date();
	var d_selected = new Date();


	if(ci && input && input.value && input.value && input.value != "0000-00-00") {
		a = input.value.split(del);
		year = a[0];
		month= a[1];
		day = a[2];
		d_selected.setYear(year);
		d_selected.setDate(day);
		d_selected.setMonth(month-1);
	}else if(month==0 && year == 0){
		year = d_today.getFullYear();
		month= d_today.getMonth()+1;

		d_selected.setYear(0);
		d_selected.setDate(0);
		d_selected.setMonth(0);
	}


	if(month == 0) {
		year -= 1;
		month = 12;
	}
	if(month == 13) {
		year += 1;
		month = 1;
	}

	var d = new Date();

	d.setMinutes(0);
	d.setSeconds(0);
	d.setDate(1);
	d.setMonth(month-1);
	d.setYear(year);

	var cmonth = d.getMonth();
	var ret;

	var pmonth;
	var pyear;
	var nmonth;
	var nyear;


	ret = '<iframe src="about:blank" scrolling="no" frameborder="0" class="calendar_iframe"></iframe>';
	ret += '<table class="table_calendar" cellspacing="0" cellpadding="0" bgcolor="#FFFFFF">';


	ret += '<tr>';
	ret += '<td class="td_close"/>';
	ret += '<td class="td_year_month" colspan="5">' + months_full[d.getMonth()] + ', ' +d.getFullYear()+ '</td>';
	ret += '<td class="td_close" onmouseover="hover(this)" onmouseout="unhover(this)" onclick="hide_calendar(\''+input_id+'\')">x</td>';
	ret += '</tr>';
	
	ret += '<tr>';
	
	ret += '<td class="td_arrows_year" onmouseover="hover(this)" onmouseout="unhover(this)" onclick="update_calendar(\''+div_id+'\', \''+input_id+'\','+(d.getMonth()+1)+', '+(d.getFullYear()-1)+ ')"><<</td>';
	
	ret += '<td class="td_arrows_month" onmouseover="hover(this)" onmouseout="unhover(this)"   onclick="update_calendar(\''+div_id+'\', \''+input_id+'\','+(d.getMonth())+', '+(d.getFullYear())+')"><</td>';

	ret += '<td class="td_today"  onmouseover="hover(this)" onmouseout="unhover(this)" colspan="3" onclick="go_today(\''+input_id+'\')">'+today+'</td>';	
	
	
	ret += '<td class="td_arrows_month"  onmouseover="hover(this)" onmouseout="unhover(this)" onclick="update_calendar(\''+div_id+'\', \''+input_id+'\','+(d.getMonth()+2)+', '+(d.getFullYear())+ ')">></td>';
	
	ret += '<td class="td_arrows_year"  onmouseover="hover(this)" onmouseout="unhover(this)" onclick="update_calendar(\''+div_id+'\', \''+input_id+'\','+(d.getMonth()+1)+', '+(d.getFullYear()+1)+ ')">>></td>';
	
	ret += '</tr>';
	ret += '<tr>';
	for(i=0;i<7;i++) {
		ret += '<td class="td_weekdays">' + days_short[i] + '</td>';
	}

	for(w=0;w<6;w++) {
		ret += '<tr>';
		if(d.getDate() == 1) {
			for(i=d.getDay();i>1;i--) {
				ret += '<td/>';
			}
		}
		if(d.getDay() == 0) {
			for(i=0;i<6;i++)
				ret += '<td/>';
		}

		while(d.getDay() != 0) {

			var date = d.getDate();

			var month = d.getMonth()+1;
			var year = d.getFullYear();


			var tdclass = get_td_class(d, d_today, d_selected);
			
			if(date<10) 
				date = '0'+date;

			if(month<10)
				month = '0'+month;

			
			if(cmonth == d.getMonth()) {
				if(before_today(d) && disable_past_dates == 1) {
				//if(d.getYear() < d_today.getYear() || d.getMonth() < d_today.getMonth() || d.getDate() < d_today.getDate()) {
					tdclass = 'td_date_disabled';
					ret += '<td class="'+tdclass+'">' + d.getDate() + '</td>';
				}else{
					ret += '<td class="'+tdclass+'"  onmouseover="hover(this)" onmouseout="unhover(this)" onclick="';
					ret += 'set_date(\''+input_id+'\', \''+div_id+'\', \''+d.getFullYear()+del+(month)+del+date+'\')';
							ret += '">' + d.getDate() + '</td>';
							}
			}else{
				ret += '<td/>';
			}
			d.setDate(d.getDate()+1);
			
		}
		if(cmonth == d.getMonth()) {

			var date = d.getDate();

			var tdclass = get_td_class(d, d_today, d_selected);

			if(date<10) date = '0'+date;
			var month = d.getMonth()+1;
			if(month<10) month = '0'+month;
				
			if(before_today(d) && disable_past_dates == 1) {
				tdclass = 'td_date_disabled';
				ret += '<td class="'+tdclass+'">' + d.getDate() + '</td>';
			}else{
				ret += '<td class="'+tdclass+'"  onmouseover="hover(this)" onmouseout="unhover(this)" onclick="';
				ret += 'set_date(\''+input_id+'\', \''+div_id+'\', \''+d.getFullYear()+del+(month)+del+date+'\')';
				ret += '">' + d.getDate() + '</td>';
			}
		}else{
			ret += '<td/>';
		}
		

		d.setDate(d.getDate() + 1);	
		ret += '</tr>';
		if(cmonth != d.getMonth())
			break;
	}

	ret += '</tr>';

	



	ret += '</table>';

	return ret;
}

function set_date(input_id, div_id, date) {

	var div = document.getElementById(div_id);
	var input = document.getElementById(input_id);

	if(div && input) {
		div.style.display = (div.style.display == 'block') ? 'none' : 'block';
		input.value = date;
	}

}
function go_today(input_id) {

	var div;

	div = document.getElementById('div_calendar');

	if(div) {
		div.innerHTML = calendar('div_calendar', input_id, 0, 0, 0);
	}
	
}

function update_calendar(div_id, input_id, month, year) {

	var div;
	var input;

	div = document.getElementById(div_id);

	if(div) {
		div.innerHTML = calendar(div_id, input_id, month, year, 0);
	}
}

function hide_calendar(input_id) {

	var parent;
	var input;
	var div;

	input = document.getElementById(input_id);
	if(input) {
		parent = input.parentNode;
		div = document.getElementById("div_calendar");
		if(div && parent) {
			parent.removeChild(div);
		}
	}
}

function before_today(checkdate) {

	d_today = new Date();
	if(checkdate.getYear() < d_today.getYear()) {
		return 1;
	}else if(checkdate.getYear() == d_today.getYear()) {
		if(checkdate.getMonth() < d_today.getMonth()) {
			return 1;
		}else if(checkdate.getMonth() == d_today.getMonth()) {
			if(checkdate.getDate() < d_today.getDate()) {
				return 1;
			}
		}

	}


	return 0;
}

function show_calendar(input_id) {

	var input;
	var parent;
	var div;

	input = document.getElementById(input_id);
	if(input) {
		parent = input.parentNode;
		if(parent) {
			div = document.getElementById("div_calendar");
			if(!div) {
				div = document.createElement("div");
			}else{
				//parent.removeChild(div);
				//div = document.createElement("div");
			}

			div.id = "div_calendar";
			div.innerHTML = calendar(div.id, input_id, 0, 0, 1);


			div.style.display = 'block'; //(div.style.display == 'block') ? 'none' : 'block';
			div.style.position = 'absolute';

			parent.appendChild(div);
		}
	}
}


function hover(el) {

	el.className = el.className + "_hover";
}

function unhover(el) {

	var elclass = new String();
	
	elclass = el.className;
	
	elclass = elclass.substr(0, elclass.lastIndexOf("_") );
	el.className = elclass;
}

