function checkMail(value)
{
    var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9])+$/;
    if (checkExists(value) && filter.test(value)) {
	    return true;
	} else {
		return false;
	}
}

function checkSSN(value)
{
    var filter = /^(\d{9}|\d{3}-\d{2}-\d{4})$/;
    if (checkExists(value) && filter.test(value)) {
    	return true;
	} else {
		return false;
	}
}

function checkChecked(elem)
{
	if (elem.checked) {
		return true;
	} else {
		return false;
	}
}

function checkExists(value)
{
	if (value == "") {
		return false;
	} else {
		return true;
	}

}

function checkValue(elem, which)
{
	switch (which) {
		case "none":
			return true;
		case "ssn":
			return checkSSN(elem.value);
		case "mail":
			return checkMail(elem.value);
		case "check":
			return checkChecked(elem);
		case "exists":
		default:
			return checkExists(elem.value);
	}
}

function checkForm(form, required)
{
    var mnames = new Array;
    var missing = new Array;
//    var why = "Some necessary fields are missing or are invalid.\nPlease make sure that the all the fields in Red are filled in.\n\n";
    var why = "Some necessary fields are missing or are invalid.\nPlease make sure that the all the fields listed below are filled in.\n\n";
    var mnamesstr = "";
    ok = 0;

    for (i in form.elements) {
//		alert(form.elements[i].name + ":" + form.elements[i].value);
//		if (form.elements[i].style) {
//	       form.elements[i].style.backgroundColor = "white";
//    	   form.elements[i].style.color = "black";
//    	}

		var	ename = form.elements[i].name;
		var checktype = required[ename];

//		alert(checktype);

        if (checktype) {
            if (!checkValue(form.elements[i],checktype)) {
                b = mnames.length;
                mnames[b] = form.elements[i].name;
                missing[b] = form.elements[i];
            }
        }
    }

    if (mnames.length > 0) {
//        for (i in missing) {
//            missing[i].style.backgroundColor = "red";
//            missing[i].style.color = "white";
//        }

        mnamesstr = mnames.join("\n");
    }

    if (mnamesstr != "") {
        alert(why + mnamesstr);
        return false;
    }

    return true;

}
