function checkDate(x,r) {

	var err = "";
	var days = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	var mdy = new Array(0,0,0);

	d = x.value;
	if (d == "")
		if (r == "Y") {
			alert("A date is required");
			x.focus();
			return false;
		} else
			return true;

	j = 0;
	for (i=0;i<d.length && j<3;i++) {
		if (d.charAt(i) == "/")
			j++;
		else
			mdy[j] = 10 * mdy[j] + parseInt(d.charAt(i));
	}
	if (mdy[2] < 100)
		mdy[2] = mdy[2] + (mdy[2] < 40 ? 2000 : 1900);
	if (mdy[2]%4 == 0 && (mdy[4]%100 != 0 || mdy[4]%400 == 0))
		days[1] = 29;
	if (mdy[0] < 1 || mdy[0] > 12)
		err = "   Month is invalid.\n";
	else if (mdy[1] < 1 || mdy[1] > days[mdy[0]-1])
		err = "   Day must be 1 - "+days[mdy[0]-1]+".\n";
	if (err) {
		alert("Example of correct date: 1/31/03 (mm/dd/yyyy)\nThe entered value '"+d+"' is not a valid date:\n"+err);
		x.blur();
		x.focus();
		return false;
        }
	else
		return true;
}

function checkQty(x,r) {
	var errmsg = "";
	if (x.value != "") {
		qty = x.value.replace(/[$,]/g, "") - 0;
		if (isNaN(qty)) {
			errmsg = "Quantity must be numeric";
		} else if (qty < 0) {
			errmsg = "Quantity must be positive";
		} else if (qty % 1) {
			errmsg = "Quantity must be an integer";
		} else if (qty >= 100000000) {
			errmsg = "Quantity must be less than 100,000,000";
		}
	} else if (r == "Y") {
		errmsg = "Quantity is required";
	}
	if (errmsg) {
		alert (errmsg);
		x.blur();
		x.focus();
		return false;
	}
	formatNbr(x,0);
	return true;
}

function checkPrice(x,r,t) {
	var errmsg = "";
	if (x.value != "") {
		prc = x.value.replace(/[$,]/g, "") - 0;
		if (isNaN(prc)) {
			errmsg = t + " must be numeric";
		} else if (prc < 0) {
			errmsg = t + " must be positive";
		} else if (prc >= 100000) {
			errmsg = t + " must be less than 100,000.00000";
		}
	} else if (r == "Y") {
		errmsg = t + " is required";
	}

	if (errmsg) {
		alert (errmsg);
		x.blur();
		x.focus();
		return false;
	}
	formatNbr(x,5);
	return true;
}

function checkAmt(x,r,p) {
	var errmsg = "";
	if (x.value != "") {
		amt = x.value.replace(/[$,]/g, "") - 0;
		if (isNaN(amt)) {
			errmsg = "Amount must be numeric";
		} else if (amt < 0 && p=="Y") {
			errmsg = "Amount must be positive";
		} else if (amt >= 1000000000 || amt <= -1000000000) {
			errmsg = t + " must be less than 1,000,000,000";
		}
	} else if (r == "Y") {
		errmsg = "Amount is required";
	}

	if (errmsg) {
		alert (errmsg);
		x.blur();
		x.focus();
		return false;
	}
	formatNbr(x,2);
	return true;
}

function formatNbr(x,dp) {
	val = x.value.replace(/[$,]/g,"");
	val = String(Math.round(Math.pow(10,dp)*val));
	while (val.length <= dp)
		val = "0" + val;
	if (dp > 0) {
		if (val == "0")
			x.value = "0.00";
		else
			x.value = val.substring(0,val.length-dp) + "." 
				+ val.substring(val.length-dp);
	}
	else
		x.value = val;
	if (Number(val) < 0)
		x.style.color = "red";
	else
		x.style.color = "black";
}
