function validateEmail(addr,man,db) {
		if (addr == '' && man) {
		if (db) alert('Email address is mandatory');
		return false;
		}
		var invalidChars = '\/\'\\ ";:?!()[]\{\}^|';
		for (i=0; i<invalidChars.length; i++) {
		if (addr.indexOf(invalidChars.charAt(i),0) > -1) {
			if (db) alert('Email address contains invalid characters');
			return false;
		}
		}
		for (i=0; i<addr.length; i++) {
		if (addr.charCodeAt(i)>127) {
			if (db) alert("Email address contains non ascii characters.");
			return false;
		}
		}

		var atPos = addr.indexOf('@',0);
		if (atPos == -1) {
		if (db) alert('Email address must contain an @');
		return false;
		}
		if (atPos == 0) {
		if (db) alert('Email address must not start with @');
		return false;
		}
		if (addr.indexOf('@', atPos + 1) > - 1) {
		if (db) alert('Email address must contain only one @');
		return false;
		}
		if (addr.indexOf('.', atPos) == -1) {
		if (db) alert('Email address must contain a period in the domain name');
		return false;
		}
		if (addr.indexOf('@.',0) != -1) {
		if (db) alert('Period must not immediately follow @ in Email address');
		return false;
		}
		if (addr.indexOf('.@',0) != -1){
		if (db) alert('Period must not immediately precede @ in Email address');
		return false;
		}
		if (addr.indexOf('..',0) != -1) {
		if (db) alert('Two periods must not be adjacent in Email address');
		return false;
		}
		var suffix = addr.substring(addr.lastIndexOf('.')+1);
		if (suffix.length != 2 && suffix != 'com' && suffix != 'net' && suffix != 'org' && suffix != 'edu' && suffix != 'int' && suffix != 'mil' && suffix != 'gov' & suffix != 'arpa' && suffix != 'biz' && suffix != 'aero' && suffix != 'name' && suffix != 'coop' && suffix != 'info' && suffix != 'pro' && suffix != 'museum') {
		if (db) alert('Invalid primary domain in Email address');
		return false;
		}
		return true;
		}


function goodchars(e, goods,value)
{
var key, keychar;
key = getkey(e);
if (key == null) return true;

// get character
keychar = String.fromCharCode(key);
keychar = keychar.toLowerCase();
goods = goods.toLowerCase();

// check goodkeys
if (goods.indexOf(keychar) != -1)
{
    if(value.indexOf(".")!=-1 && keychar==".")
    {
        return false;
    }
    else
    {
        return true;
    }
}
	

// control keys
if ( key==null || key==0 || key==8 || key==9 || key==27 )
   return true;

//Enter
if ( key==13 || key==8 )
{
   return false;
   }

// else return false
return false;
}

function getkey(e)
{
if (window.event)
   return window.event.keyCode;
else if (e)
   return e.which;
else
   return null;
}

function zeroit(inobj)
{

var obj1 = eval("document.forms[0]." + inobj);

if (obj1.value=="")
	{
	alert ("You cannot leave any fields blank on this screen.\n\n0.00 has been inserted into the last field. Please double-check the value and change it if necessary.");
	obj1.value="0.00";
	obj1.focus();
	return false;
	}
	
decallowed = 2;  // how many decimals are allowed?

fieldValue = obj1.value;
fieldName = obj1;

if (isNaN(fieldValue) || fieldValue == "") {
alert("The number entered is invalid.  Please try again.");
fieldName.select();
fieldName.focus();
return false;
}
else {
if (fieldValue.indexOf('.') == -1) fieldValue += ".";
dectext = fieldValue.substring(fieldValue.indexOf('.')+1, fieldValue.length);

if (dectext.length > decallowed)
{
alert ("You may only enter a number with up to " + decallowed + " decimal places.  Please try again.");
fieldName.select();
fieldName.focus();
return false;
      }
else {
// alert ("That number validated successfully.");
      }
   }
	
}

