function trim(str)
{
    return str.replace(/^\s+/,"").replace(/\s+$/,"");
}

function checkemail(fld,emptyok,alrt)
{
    var s_email = trim(fld.value);

    if (emptyok && s_email.length==0)
    {
        return true;
    }
    return checkemailvalue(s_email,alrt);
}

function checkemailvalue(s_email,alrt)
{

    if ((s_email.length < 6) ||
       (s_email.indexOf('@',0) < 1) ||
       (s_email.lastIndexOf('@') != s_email.indexOf('@',0)) ||
       (s_email.lastIndexOf('@') > (s_email.length - 5)) ||
       (s_email.lastIndexOf('.') > (s_email.length - 3)) ||
       (s_email.lastIndexOf('.') < (s_email.length - 5)) ||
       (s_email.indexOf('..',0) > -1) ||
       (s_email.indexOf('@.',0) > -1))
    {
        if (alrt) alert('Please enter a valid e-mail address.');
        return false;
    }

	if ((s_email.indexOf(' ',0) > -1)  ||
		(s_email.indexOf(',',0) > -1)  ||
		(s_email.indexOf('"',0) > -1)  ||
		(s_email.indexOf('\'',0) > -1) ||
		(s_email.indexOf(':',0) > -1)  ||
		(s_email.indexOf('>',0) > -1)  ||
		(s_email.indexOf('<',0) > -1))
	{
		if (alrt)
		{
            alert('Please enter a valid e-mail address. E-mail addresses with apostrophes, quotation marks, commas, colons, spaces, or greater than or less than signs are not acceptable.');
		}
		return false;
	}
    
    if ((s_email.indexOf('.@',0) > -1)) {
        if (alrt) {
            alert('Please proofread this email address: '+s_email+' .  It may contain an error.');
        }
    }
    return true;
}

function validate_textarea(field, maxlen, doalert, mandatory) 
{

    if (field.value == null || field.value.length == 0) {
        if (mandatory == true) {
            if (doalert) alert("Field must contain a value.");
            field.focus();
            field.select();
            window.isvalid = false;
            return false;
        }
        window.isvalid = true;
        return true;
    }

    var validflag = true;
    var err = '';
    if (field.value.length > maxlen) {
        err = "Text too long (truncated at "+maxlen+" characters)";
        newval = field.value.substr(0,maxlen);
        field.truncatedValue = true;
    } else
        field.truncatedValue = false;
    if (err != '') {
        if (doalert) alert(err);
        field.value = newval;
        validflag = false;
    }
    window.isvalid = validflag;
    return validflag;
}

function validate_field(field, type, doalert, mandatory)
{
    type = type.toLowerCase();
    if (field.value == null || field.value.length == 0) {
        if (mandatory == true) {
            if (doalert) alert("Field must contain a value.");
            field.focus();
            field.select();
            window.isvalid = false;
            return false;
        } else {
            window.isvalid = true;
            return true;
        }
    }
    var validflag = true;

    if (type == "email") {
        if (checkemail(field, false, doalert))
            validflag = true;
        else
            validflag = false;
    } else if (type == "phone") {
        var val = field.value;

        if (val.length != 0 && val.length<10) {
            if (doalert) alert("Please enter a full telephone number including the area code.");
            validflag = false;
        }

        if (validflag) {
            var re = /^[0-9]+$/;
            if (re.test(val)) {
                if (val.length == 10)
                    field.value = "("+val.substring(0,3)+") "+val.substring(3,6)+"-"+val.substring(6);
            }
        }
    }

    if (!validflag) {
        field.focus();
        field.select();
    }
    window.isvalid = validflag;
    return validflag;
}

function checkMandatoryFields(fields,labels)
{
    var result = "";
    for (i=0; i < fields.length; i++) {
        if (fields[i] == null) continue;
        if (fields[i].type == "select-one") {
            var field = (fields[i].selectedIndex == -1 ? 
                    "" : fields[i].options[fields[i].selectedIndex]);
            var val = (field == null ? "" : field.value);
            if (val == null || val.length == 0 || val == -1)
                result += (result.length ? "," : "") + labels[i];
        } else if (fields[i].value.indexOf(String.fromCharCode(3)) != -1) {

            var nvarray = fields[i].value.split(String.fromCharCode(4));
            for (j=0; j < nvarray.length; j++) {
                var nv = nvarray[j].split(String.fromCharCode(3));
                if (nv[1] == 'T' && nv[3].length == 0)
                    result += (result.length ? "," : "") + nv[2];
            }
        } else {
            if ( isempty(fields[i]) )
                result += (result.length ? "," : "") + labels[i];
        }
    }
    return result;
}

function isempty(fld1,nam)
{
    var val = fld1.value;
    return isValEmpty(val,nam);
}

function isValEmpty(val,nam)
{
    if (val == null)
        return true;

    if (val.length == 0)
        return true;
    re = / /gi;
    val = val.replace(re,'');
    return (val.length == 0)
}


