function $(element) {
  return document.getElementById(element);
}

function getPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
		curleft = obj.offsetLeft;
		curtop = obj.offsetTop;
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft;
			curtop += obj.offsetTop;
		}
	}
	return [curleft,curtop];
}

function getPageDimensions() {
	var x,y = 0;
	if (self.innerHeight) // all except Explorer
	{
		x = self.innerWidth;
		y = self.innerHeight;
	}
	else if (document.documentElement && document.documentElement.clientHeight)
		// Explorer 6 Strict Mode
	{
		x = document.documentElement.clientWidth;
		y = document.documentElement.clientHeight;
	}
	else if (document.body) // other Explorers
	{
		x = document.body.clientWidth;
		y = document.body.clientHeight;
	}
	return [x,y];
}

function validateMMDDYY(e) {
	var obj;
	if (!e) {
		var e = window.event;
	}
	if (e.target) {
		obj = e.target;
	}
	else if (e.srcElement) {
		obj = e.srcElement;
	}
	if (obj.nodeType == 3) { // defeat Safari bug
		obj = obj.parentNode;
	}
	if (obj.value == '') {
		return true;
	}
	if (obj.value.match(/^(\d{2})(\d{2})(\d{2})$/)) {
		var d = new Date();
		var yyyy = d.getFullYear() - (d.getFullYear() % 100) + parseInt(RegExp.$3, 10);
		var dd = parseInt(RegExp.$2, 10);
		var mm = parseInt(RegExp.$1, 10) - 1;
		var result = DateInRange(yyyy,mm,dd);
		if (!result) {
			obj.className = 'formError';
		}
		return result;
	}
	alert('Invalid date format. Valid dates are the the format MMDDYY');
	obj.className = 'formError';
	return false;
}

function DateInRange(yyyy,mm,dd) {
	// if month out of range
	if ( mm < 0 || mm > 11 ) {
		alert('Invalid month value.  Valid months values are 01 to 12');
		return false;
	}
	
	// get last day in month
	var d = (11 == mm) ? new Date(yyyy + 1, 0, 0) : new Date(yyyy, mm + 1, 0);
	
	// if date out of range
	if (dd < 1 || dd > d.getDate()) {
		var monthNames = "January February March April May June July August September October November December".split(" ");
		alert('Invalid date value.  Valid date values for ' + monthNames[mm] + ' are 01 to ' + d.getDate().toString());
		return false;
	}
	
	return true;
}
