/*******************************************************
*	Title:		Form Validation Script
*	Author:		Brad Simons
*	E-mail:		simonsb@mail.ecu.edu
*******************************************************/



/* Text Validation */
function validateText(field, type) {
	if(field.length == 0) {
		alert("Please enter the " + type + ".");
		return false;
	}
	return true;
}



/* Number Validation */
function validateNumber(field, size, type) {
    var valid = "0123456789";

    if(field.length != size) {
        alert("Please enter a " + size + " digit " + type + ".");
        return false;
    }

    for(var i=0; i<field.length; i++) {
        var temp = "" + field.substring(i, i+1);
        if(valid.indexOf(temp) == "-1") {
            alert("There are invalid characters in the " + type + ". Please try again.");
            return false;
        }
    }

    return true;
}

/* Number Validation */
function validateZip(field, type) {
    var valid = "0123456789";


    if(field.length < 5) {
        alert("Please enter a zip code.");
        return false;
    }
	
    for(var i=0; i<field.length; i++) {
        var temp = "" + field.substring(i, i+1);
        if(valid.indexOf(temp) == "-1") {
            alert("There are invalid characters in the " + type + ". Please try again.");
            return false;
        }
    }

    return true;
}


/* Select Field Validation */
function validateSelect(field, type) {
    if((field == null) || (field == "")) {
        alert("Please select a " + type + ".");
        return false;
    }

    return true;
}


/* E-Mail Validation */
function validateEmail(field) {
    var at = "@";
    var dot = ".";
    var msg = "The e-mail address is invalid. Please try again.";
    var lat = field.indexOf(at);
    var ldot = field.indexOf(dot);

    if((field == null) || (field == "")) {
        alert("Please enter the e-mail address.");
        return false;
    }

    if(field.indexOf(at) == -1) {
        alert(msg);
        return false;
    }

    if((field.indexOf(at) == -1) || (field.indexOf(at) == 0) || (field.indexOf(at) == field.length-1)) {
        alert(msg);
        return false;
    }

    if((field.indexOf(dot) == -1) || (field.indexOf(dot) == 0) || (field.indexOf(dot) == field.length-1)) {
        alert(msg);
        return false;
    }

    if(field.indexOf(at,(lat+1)) != -1) {
        alert(msg);
        return false;
    }

    if((field.substring(lat-1,lat) == dot) || (field.substring(lat+1,lat+2) == dot)) {
        alert(msg);
        return false;
    }

    if(field.indexOf(dot,(lat+2)) == -1) {
        alert(msg);
        return false;
    }

    if(field.indexOf(" ") != -1) {
        alert(msg);
        return false;
    }

    return true;
}

/* Radio Button Validation */
function validateRadio(radio, type) {
	var checked = false;

	for(var i=0; i<radio.length; i++)
		if(radio[i].checked)
			checked = true;
	if(!checked) {
		alert("Please make a selection regarding " + type + ".");
		return false;
	}
	return true;
}



/* Radio Button Value Retrieval */
function getRadioValue(radio) {
	for(var i=0; i<radio.length; i++)
		if(radio[i].checked)
			return radio[i].value;
}






/* Form Validation */
function validateForm(MembershipApplicationForm) {


    /* define form variables */
    var firstname   = document.MembershipApplicationForm.firstname;
    var lastname   = document.MembershipApplicationForm.lastname;
    var employer   = document.MembershipApplicationForm.employer;
    var address      = document.MembershipApplicationForm.address;
    var city      = document.MembershipApplicationForm.city;
    var state     = document.MembershipApplicationForm.state;
    var zip       = document.MembershipApplicationForm.zip;
   // var country       = document.MembershipApplicationForm.country;
    var phone1    = document.MembershipApplicationForm.phone1;
    var phone2    = document.MembershipApplicationForm.phone2;
    var phone3    = document.MembershipApplicationForm.phone3;
    var email      = document.MembershipApplicationForm.email;
    var website      = document.MembershipApplicationForm.website;
    var membership    = document.MembershipApplicationForm.membership;
   // var membershiptype    = document.MembershipApplicationForm.membershiptype;
    var organization    = document.MembershipApplicationForm.organization;
    var organizationtype    = document.MembershipApplicationForm.organizationtype;

    /* begin form validation */

	if(!validateText(firstname.value, "first name")) {
		firstname.focus();
		return false;
	}

	if(!validateText(lastname.value, "last name")) {
		lastname.focus();
		return false;
	}

	if(!validateText(employer.value, "employer")) {
		employer.focus();
		return false;
	}

	if(!validateText(address.value, "mailing address")) {
		address.focus();
		return false;
	}

	if(!validateText(city.value, "city")) {
		city.focus();
		return false;
	}

	if(!validateText(state.value, "state")) {
		state.focus();
		return false;
	}

    if(!validateZip(zip.value, "zip code")) {
        zip.focus();
        return false;
    }

    if(!validateNumber(phone1.value, 3, "telephone area code")) {
        phone1.focus();
        return false;
    }

    if(!validateNumber(phone2.value, 3, "telephone number")) {
        phone2.focus();
        return false;
    }

    if(!validateNumber(phone3.value, 4, "telephone number")) {
        phone3.focus();
        return false;
    }

    if(!validateEmail(email.value)) {
        email.focus();
        return false;
    }
	
	if(!validateText(website.value, "website")) {
		website.focus();
		return false;
	}

	if(!validateRadio(membership, "your membership type")) {
		return false;
	}
	membership = getRadioValue(membership);
	
	//if(!validateRadio(membershiptype, "if your a lifetime or honorary member")) {
	//	return false;
	//}
	//membershiptype = getRadioValue(membershiptype);
	
	if(!validateText(organization.value, "organization type")) {
		organization.focus();
		return false;
	}
	
	if(!validateText(organizationtype.value, "organization status")) {
		organizationtype.focus();
		return false;
	}
	
    return true;
}