/* 
just add  

 onKeyUp="format_date('this field name','next field Name Here','restrictions','output format','range in days(optional)');"

to your input to format as a date
function checks for 'field name' + Img to update with check or x

restrictions:
'all' allows all dates
'past' allows all past dates
'future' allows all future dates

output options:
's' puts ##/##/####
'd' puts ##-##-####
'p' puts ##.##.####

*/
function updateDate(m){
	r=0;
	p = m.value;
	p = p.replace(/[^0-9]/g, "");
	len = p.length;
	if(len == 6){
		ye = p.substring(4,5);
		if(ye > 4){
			mon = p.substring(0,2);
			da = p.substring(2,4);
			yea = p.substring(4,len);
			isDate = mon + "/" + da + "/19" + yea;
		}else{
			mon = p.substring(0,2);
			da = p.substring(2,4);
			yea = p.substring(4,len);
			isDate = mon + "/" + da + "/20" + yea;
		}
		m.value = "";
		m.value = isDate;
	}
}
function formatDate(m,d){
	f = m.form.name;
	p = m.value;
	p = p.replace(/[^0-9]/g, "");
	len = p.length;
	if(len > 1){
		mon = p.substring(0,2);
		if(mon > 12){
			alert("Not a valid date.");
			m.value = "";
			return;
		}
	}
	if(len > 3){
		da = p.substring(2,4);
		if(da > 31){
			alert("Not a valid date.");
			m.value = "";
			return;
		}
	}
	if (len < 2){
		isDate = p;
	}else if(len == 2){
		mon = p;
		isDate = mon + "/";
	}else if(len > 2 && len < 5){
		mon = p.substring(0,2);
		da = p.substring(2,len);
		isDate = mon + "/" + da;
	}else if(len > 4){
		mon = p.substring(0,2);
		da = p.substring(2,4);
		yea = p.substring(4,len);
		isDate = mon + "/" + da + "/" + yea;
	}
	m.value = "";
	m.value = isDate;
	if (isDate.length == m.getAttribute("maxlength")){
		dest = "document." + f + "." + d + ".focus()";
		destination = eval(dest);
	}
}
function check_leap_year(datea){
	datea = parseInt(datea);
	if(datea%4 == 0){
		if(datea%100 != 0){
			return true;
		}else{
			if(datea%400 == 0){
				return true;
			}else{
				return false;
			}
		}
	}
	return false;
}
function format_date(date_field,next_field,date_restrict,output_format,range){
	if(range){
		range = range * 86400000;
		//alert(range);
	}else{
	}
	if(output_format == 's'){
		output_text = '/';
	}else if(output_format == 'd'){
		output_text = '-';
	}else if(output_format == 'p'){
		output_text = '.';
	}
	var right_now = new Date();
	right_now = Date.parse(right_now);

	var date_value = document.getElementById(date_field).value;
	date_value = date_value.replace(/[^0-9]/g, "");
	var date_length = date_value.length;
	var check_image = date_field + "Img";
	
	if(date_length > 0){
		month = date_value.substring(0,2);
		if(month > 12){
			if(document.getElementById(check_image)){
				document.getElementById(check_image).src="/files/images/misc/red_x.png";
				document.getElementById(check_image).style.visibility="visible";
			}else{
				alert("Not a valid date.");
			}
			return;
		}
	}
	if(date_length > 2){
		day = date_value.substring(2,4);
		if(day > 31){
			if(document.getElementById(check_image)){
				document.getElementById(check_image).src="/files/images/misc/red_x.png";
				document.getElementById(check_image).style.visibility="visible";
			}else{
				alert("Not a valid date.");
			}
			return;
		}else if(day > 30 && (month == 4 || month == 6 || month == 9 || month == 11)){
			if(document.getElementById(check_image)){
				document.getElementById(check_image).src="/files/images/misc/red_x.png";
				document.getElementById(check_image).style.visibility="visible";
			}else{
				alert("Not a valid date.");
			}
			return;
		}else if(day > 29 && month == 2){
			if(document.getElementById(check_image)){
				document.getElementById(check_image).src="/files/images/misc/red_x.png";
				document.getElementById(check_image).style.visibility="visible";
			}else{
				alert("Not a valid date.");
			}
			return;
		}
	}
	if (date_length < 3){
		date_value = date_value;
	}else if(date_length > 2 && date_length < 5){
		date_value = month + output_text + day;
	}else if(date_length > 4){
		year = date_value.substring(4);
		if(year > 1000){
			test_date = Date.parse(month + "/" + day + "/" + year);
			if(!check_leap_year(year) && month == 2 && day > 28){
				if(document.getElementById(check_image)){
					document.getElementById(check_image).src="/files/images/misc/red_x.png";
					document.getElementById(check_image).style.visibility="visible";
				}else{
					alert("Not a valid date.");
				}
				return;
			}
			if(date_restrict == 'future' && (test_date < (right_now-86400000))){
				if(document.getElementById(check_image)){
					document.getElementById(check_image).src="/files/images/misc/red_x.png";
					document.getElementById(check_image).style.visibility="visible";
				}else{
					alert("Must be a future date.");
				}
				return;
			}else if(date_restrict == 'past' && (test_date > right_now)){
				if(document.getElementById(check_image)){
					document.getElementById(check_image).src="/files/images/misc/red_x.png";
					document.getElementById(check_image).style.visibility="visible";
				}else{
					alert("Must be a past date.");
				}
				return;
			}
			if(date_restrict == 'future' && range){
				if(test_date > (right_now+range)){
					alert('Date exceeds future date range');
					if(document.getElementById(check_image)){
						document.getElementById(check_image).src="/files/images/misc/red_x.png";
						document.getElementById(check_image).style.visibility="visible";
					}else{
						alert("Must be a future date.");
					}
					return;
				}
			}else if(date_restrict == 'past' && range){
				if(test_date < (right_now-range)){
					alert('Date exceeds past date range');
					if(document.getElementById(check_image)){
						document.getElementById(check_image).src="/files/images/misc/red_x.png";
						document.getElementById(check_image).style.visibility="visible";
					}else{
						alert("Must be a past date.");
					}
					return;
				}
			}
		}
		date_value = month + output_text + day + output_text + year;
	}
	document.getElementById(date_field).value = date_value;
	if(date_length == 8){
		if(document.getElementById(check_image)){
			document.getElementById(check_image).src="/files/images/misc/green_check.png";
			document.getElementById(check_image).style.visibility="visible";
		}
		document.getElementById(next_field).focus();
	}else if(date_length != 0){
		document.getElementById(check_image).src="/files/images/misc/red_x.png";
		document.getElementById(check_image).style.visibility="visible";
	}else{
		document.getElementById(check_image).style.visibility="hidden";
	}
}
