/* 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; } } }