
/* Forms Class - Calendar Functions
 *
 * @copyright	2008 Small Dog Design
 * @author		Ashley Veal
 * @date		11/08/2008
 * @modified	13/08/2008
 * @version    	1.0
 */

//initialise variables
var dayVal;					//string version of selectedDay with leading 0 if needed
var calendarOpen;			//calendar div that is currently visible
var inputSelected;			//text box of current open calendar
var selectedDay;			//day that the user has selected (defaults to current date or day from a non empty text field

//display date dialog
function dateDialog(target) {
	input = $(target).prevAll("input:first");
	calendar = $(target).nextAll("div:first")[0];

	if(calendarOpen != null ) {
		$(calendarOpen).fadeOut();
	}
	 
	if(calendar != calendarOpen) {
			
		calendarOpen = calendar;
		inputSelected = input;
		
		$(calendarOpen).fadeIn('slow');
		
		var str = $(inputSelected).val();
		
		if(str != '') {
			//YYYY-MM-DD HH:MM:SS
			result = str.match(/^(\d{4})-(\d{2})-(\d{2}) (\d{0,2}):(\d{0,2}):(\d{0,2})$/);
			var year = result[1];
			var month = result[2];
			var day = result[3];
			var hour = result[4];
			var minute = result[5];
			dayVal = day;
		} else {
			var year = '';
			var month = '';
			var day = '';
			var hour = '';
			var minute = '';	
		}
		
		$.ajax({
			type: "POST",
			url: "/puppy/calendar.php",
			data: "year="+year+"&month="+month+"&day="+day+"&hour="+hour+"&minute="+minute,
			success: function(response){
				$(calendarOpen).html(response);
				var str = $(inputSelected).val();
				
				if(str == '') {
					var d = new Date();
					selectedDay = $(calendarOpen).find("td:contains(" + d.getDate() + "):first a")[0];
					dayVal = d.getDate();
				} else {
					day = (day.charAt(0) == '0' ? day.substr(1) : day);		//remove leading zero so that we can search for a td with that value
					selectedDay = $(calendarOpen).find("td:contains(" + day + "):first a")[0];
					dayVal = day;
				}
				
				$(selectedDay).parent().css({
					backgroundColor:"#FFE2CA"
				});
				
			}
		});
		
	} else if( calendarOpen != null ) {
		calendarOpen = null;
	} 

};

//return date information to text field
function returnDate(year,month) {
	
	var hour = $(calendarOpen).find("input:eq(0)").val();
	var minute = $(calendarOpen).find("input:eq(1)").val();
	
	//validate hours
	if(hour > 23 || hour == '') {
		hour = '00';
	}
	
	//validate minutes
	if(minute > 59 || minute == '') {
		minute = '00';
	}
	
	var returnString = year + '-' + month + '-' + (dayVal.length == 1 ? '0' + dayVal : dayVal) + ' ' + hour + ':' + minute + ':00';
	
	$(inputSelected).val(returnString);
	$(calendarOpen).hide();
	
	calendarOpen = null;
	
}

//highlight selected day and set global variable
function selectDate(a,day) {
	
	if(day != selectedDay) {
		
		//deselect existing	day	
		$(selectedDay).parent().css({
			backgroundColor:"#EEEEEE"
		});
		
		//select new day
		$(a).parent().css({
			backgroundColor:"#FFE2CA"
		});
		
		selectedDay = a;
		dayVal = day + '';
	}
	
}

//load month as specified by month and year select boxes
function changeMonth() {
	
	month = $(calendarOpen).find("select:eq(0)").val();
	year = $(calendarOpen).find("select:eq(1)").val();
	
	$.ajax({
		type: "POST",
		url: "/puppy/calendar.php",
		data: "year="+year+"&month="+month,
		success: function(response){
			$('.dateDialog').html(response);
			
			var day = $(selectedDay).html();
			selectedDay = $(calendarOpen).find("td:contains(" + day + "):first a")[0];
			
			//if the selectedDay doesn't exist then default to 1 (for months without 31 days and leap years)
			if(selectedDay) {
				dayVal = day;
			} else {
				dayVal = '01';
				selectedDay = $(calendarOpen).find("td:contains('1'):first a")[0];
			}
			
			$(selectedDay).parent().css({
				backgroundColor:"#FFE2CA"
			});
		}
	});
	
}

//validate hour and minute input values
function validateInput(e,text) {
	
	if(e.type == 'change' && $(text).val().length > 0) {
		var str = new String($(text).val());
		$(text).val(str.replace(/[^0-9]/g, ''));
	} 
	
	if(e.type == 'keypress') {
		var key = window.event ? e.keyCode : e.which;
		var keychar = String.fromCharCode(key);
		
		//backspace = 8
		//delete = 0
		
		pattern = /^[0-9]$/;
		
		if(pattern.test(keychar) || key == 8 || key == 0) {
			return true;
		} else {
			return false;
		}
	}
		
}


