//
//
function valuevalidate(entered, min, max, alertbox, datatype) {
// valuevalidation(this,min,max,text,type)
// Checking if the content is a number within a certain range
// Optional parameters are:
// min --minimum value allowed in the field.
// max --maximum value allowed in the field.
// text --text that will show in an alertbox if content is illegal.
// type --enter "I" if only integers are allowed.
//
  with (entered) {
    checkvalue= parseFloat(value);
    if (datatype) {
      smalldatatype= datatype.toLowerCase();
      if (smalldatatype.charAt(0)== "i") {checkvalue= parseInt(value)};  }
    //
    if ((parseFloat(min)== min && checkvalue< min)
      || (parseFloat(max)== max && checkvalue> max) || value!=checkvalue) {
      if (alertbox!="") {alert(alertbox);} return false;}
    else {return true;}
    }
  } 
//
//
function isEmail(str) {
  // are regular expressions supported?
  var supported = 0;
  if (window.RegExp) {
    var tempStr = "a";
    var tempReg = new RegExp(tempStr);
    if (tempReg.test(tempStr)) supported = 1;
  }
  if (!supported) 
    return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
  //
  //  Regular expressions are supported
  //
  var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
  var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
  return (!r1.test(str) && r2.test(str))}
//
//
function name3upper(str) {
  // Limit str length to 3 characters & upper case it
  // Intended for use with my practice web site
	if (str.length > 3) {
		str= str.substring(0,3)};
	str = str.toUpperCase();
return str }
//
//
function chkNameCompliant(objName) {
  // Allow A-Z
  var testStr = objName.value.toUpperCase();
  for (i=0; i<testStr.length ;i++ ) {
    ch = testStr.charAt(i);
    if (ch=="'" || ch=="-") {
      alert("Please do not include ' or - in your name");
      return (false); }
    if (!(ch>= "A" && ch<="Z")) {
      alert("Please only use letters in your name.");
      return (false); }  }
  return (true);  }
//
//
function chkNumeric(objName,minval,maxval,defmess) {
	// only allow 0-9 to be entered
	// String of allowed characters			
	var allowedChrs = "0123456789";
	var checkStr = objName;  // String to check
	var allNum = "";
	alert("Defmess " & defmess)
	//
	for (i = 0;  i < checkStr.value.length;  i++) {
		// ch is a temp var to store single char at position i
		ch = checkStr.value.charAt(i);  
		for (j = 0;  j < allowedChrs.length;  j++)
			// jump out of this loop if ch is an allowed chr
			if (ch ==  allowedChrs.charAt(j)) break;  
			if (j == allowedChrs.length) {
				alertsay = "Please enter only these values \""
				alertsay = alertsay + allowedChrs + "\" in the \"" + checkStr.name + "\" field."
				alert(alertsay);
				return (false);	}
		allNum += ch;  }
	//
	// set the minimum and maximum
	if (!minval == 0 && !maxval == 0) {
		var prsVal = parseInt(allNum,10);
		if (allNum == "" || !(prsVal >= minval && prsVal <= maxval)) {
			alertsay = "Please enter a number between \""
			alertsay = alertsay + minval + "\" and "
			alertsay = alertsay + "\"" + maxval + "\" in the \"" + checkStr.name + "\" field."
			alert(alertsay);
			return (false); } }
	return (true) }
//

function cardiocalc_formOK(thisform) {
	if (!valuevalidate(thisform.patage,30,74,"Age must be between 30 & 74", "i")) {
		thisform.patage.focus();
		thisform.patage.select();
		return (false); }
	//
	if (!valuevalidate(thisform.systolic,80,200,"Systolic BP must be between 80 & 200 (mmHg)", "i")) {
		thisform.systolic.focus();
		thisform.systolic.select();
		return (false); }
	//
	if (!valuevalidate(thisform.diastolic,60,160,"Diastolic BP must be between 60 & 160 (mmHg)", "i")) {
		thisform.diastolic.focus();
		thisform.diastolic.select();
		return (false); }
	//
	if (!valuevalidate(thisform.tchol,2,12,"Total cholesterol must be between 2 & 12 (mmol/l)")) {
		thisform.tchol.focus();
		thisform.tchol.select();
		return (false); }
	//
	if (!valuevalidate(thisform.hdlchol,0.2,2.5,"HDL-Cholesterol must be between 0.2 & 2.5 (mmol/l)")) {
		thisform.hdlchol.focus();
		thisform.hdlchol.select();
		return (false); }
	//
		
	thisSystolic = parseInt(thisform.systolic.value,10);
	thisDiastolic = parseInt(thisform.diastolic.value,10);
	if (thisSystolic-20 <=thisDiastolic) {
		alert("Implausible BP reading") ;
		thisform.systolic.focus();
		thisform.systolic.select();
		return (false);  }

	return (true);  }