var Calendar = new Calendar();

function Calendar(){
	this.day_of_first = function(month,year) {
		var today = new Date();	
		today.setFullYear(year,month,1);
		return today.getDay();
	}
	
	this.days_in_month = function(month,year) {
		return 32 - new Date(year, month, 32).getDate();
	}
	
	this.hideCalendar = function(which) {
		if(which==null)
			document.getElementById('calendar').className='calendarh';
		else	
			document.getElementById('calendar'+which).className='calendarh';
		
		status = 0;
	}
	
	this.getShortMonth = function(month) {
		var mlist = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");	
		var month_name;
	
		if(month > 11) { month = 0; }
		if(month < 0) { month = 11; }
	
		return mlist[month];
	}
	
	this.getDate = function(m,y) {
		var mlist = new Array("January","February","March","April","May","June","July","August","September","October","November","December");	
	
		return mlist[m]+' '+y;
	}
	
	this.setDateCalendar = function(day,month,year,which) {
		var idx=0;
		var now = new Date();
	
		for(i=now.getFullYear();i<now.getFullYear()+6;i++) {
			if(i==year) {
				break;
			}
			idx++;
		}
	
		idx++;
		month++;
		
		document.getElementById("day"+which).selectedIndex=day;
		document.getElementById("month"+which).selectedIndex=month;
		document.getElementById("year"+which).selectedIndex=idx;
		
		this.hideCalendar(which);
	}
	
	this.display = function(month,year, which) {
		if(status == 0) {
			status = 1;
	
			var html = "";
	
			var off=0;
			var day=0;
	
			var offset;
			var nb_days;
	
			offset = this.day_of_first(month,year);
			nb_days = this.days_in_month(month,year);
	
			var pyear = year;
			var nyear = year;
			var pmonth, nmonth;
	
			pmonth = month - 1;
			if(pmonth < 0) { pyear = pyear - 1; pmonth = 11; }
			
			nmonth = month + 1;
			if(nmonth > 11) { nyear = nyear + 1; nmonth = 0; }
	
			prev_month = this.getShortMonth(pmonth);
			next_month = this.getShortMonth(nmonth);
	
			html += '<div id="datepicker-date-from" class="datepicker">';
			html += '<div class="datepicker-header">';
			html += '<span title="'+prev_month+'" id="datepicker-date-from-prev" style="cursor: pointer;" onclick="status=0;Calendar.display('+pmonth+','+pyear+',\''+which+'\')"> &lt;&lt; </span>';
			html += '<span id="datepicker-date-from-header">&nbsp;&nbsp;&nbsp;'+this.getDate(month,year)+'&nbsp;&nbsp;&nbsp;</span>';
			html += '<span title="'+next_month+'" id="datepicker-date-from-next" style="cursor: pointer;" onclick="status=0;Calendar.display('+nmonth+','+nyear+',\''+which+'\')"> &gt;&gt; </span>';
			html += '</div>';
	
			html += '<div class="datepicker-calendar">';
			html += '<table id="datepicker-date-from-table">';
			html += '<tr>';
			html += '<td class="wday">Mon</td>';
			html += '<td class="wday">Tue</td>';
			html += '<td class="wday">Wed</td>';
			html += '<td class="wday">Thu</td>';
			html += '<td class="wday">Fri</td>';
			html += '<td class="wday">Sat</td>';
			html += '<td class="wday">Sun</td>';
			html += '</tr>';
	
			for(i=0;i<5;i++) {
				html += '<tr>';
	
				for(j=0;j<7;j++) {
					off++;
	
					if(off<offset) {
						html += '<td class="outbound">&nbsp;';
					} else {
						day++;
	
						if(day <= nb_days) {
							html += '<td id="date-'+day+'" onclick="Calendar.setDateCalendar('+day+','+month+','+year+',\''+which+'\');">'+day;
						} else {
							html += '<td class="outbound">&nbsp;';
						}
					}
	
					html += '</td>';
				}
				html += '</tr>';
			}
	
			html += '</table>';
			html += '</div>';
			html += '<div id="datepicker-date-from-footer" class="datepicker-footer" onclick="Calendar.hideCalendar('+which+');">close</div>';
			html += '</div>';
	
			$("#calendar"+which).html(html);
			document.getElementById('calendar'+which).className='calendarv';
		} else {
			this.hideCalendar(which);
			status = 0;
		}
	}
}