function isNull(s) {
	return (s == null || s.length == 0);
}

function isDate(s) {
	var a = s.split('/');
	return (a.length == 3 && parseInt(a[0]) == a[0] && parseInt(a[1]) == a[1] && parseInt(a[2]) == a[2] && a[0]-0 >= 1 && a[0]-0 <= 12 && a[1]-0 >= 1 && a[1]-0 <= daysInMonth(a[0]-0,a[2]-0));
}

function daysInMonth(m,y) {
	switch (m) {
		case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31;
		case 2: return y % 4 ? 29 : 28;
	}
	return 30;
}

function compareDates(d1,op,d2) {
	switch (op) {
		case '<=': return buildDateNumber(d1) <= buildDateNumber(d2);
	}
	return false;
}

function buildDateNumber(s) {
	var a = s.split('/');
	if (a.length != 3)
		return 0;
	return ((a[2]-0) * 10000) + ((a[0]-0) * 100) + (a[1]-0);
}

function isTime(s) {
	if (isNull(s) || s.indexOf(':') == -1)
		return false;
	var ss = null;
	if (s.indexOf(' ') != -1)
		ss = s.split(' ').join(':').split(':');
	else
		ss = s.split(':');
	if (ss.length != 3)
		return false;
	if (ss[0] != parseInt(ss[0]) || ss[0]-0 < 1 || ss[0]-0 > 12)
		return false;
	if (ss[1] != parseInt(ss[1]) || ss[1]-0 < 0 || ss[1]-0 > 59)
		return false;
	if (ss[2].toLowerCase() != "am" && ss[2].toLowerCase() != "pm")
		return false;
	return true;
}