
function getSelectedRadio(buttonGroup) {
    // returns the array number of the selected radio button or
    // -1 if no button is selected
    //
    // if the button group is an array (one button is not an array)
    if (buttonGroup[0]) { 
	for (var i=0; i<buttonGroup.length; i++) {
	    if (buttonGroup[i].checked) {
		return i;
	    }
	}
    } else {
	// if the one button is checked, return zero
	if (buttonGroup.checked) { return 0; }
    }
    // if we get to this point, no radio button is selected
    return -1;
}

function getSelectedRadioValue(buttonGroup) {
    // returns the value of the selected radio button or ""
    // if no button is selected
    var i = getSelectedRadio(buttonGroup);
    if (i == -1) {
	return "";
    } else {
	// Make sure the button group is an array (not just one button)
	if (buttonGroup[i]) { 
	    return buttonGroup[i].value;
	} else { 
	    // The button group is just the one button, and it is checked
	    return buttonGroup.value;
	}
    }
}

function checkform ( form ) {
    var okFlag = true;
    var message = "";
    var errorNum = 0;

    var agt=navigator.userAgent.toLowerCase();
    
    var is_major = parseInt(navigator.appVersion);
    var is_minor = parseFloat(navigator.appVersion);
    
    var is_nav  = ((agt.indexOf('mozilla')!=-1)
		       && (agt.indexOf('spoofer')==-1)
		       && (agt.indexOf('compatible') == -1)
		       && (agt.indexOf('opera')==-1)
		       && (agt.indexOf('webtv')==-1));
    var is_nav4up = (is_nav && (is_major >= 4));
    var is_nav5up = (is_nav && (is_major >= 5));
    
    var is_ie   = (agt.indexOf("msie") != -1);
    var is_ie4up  = (is_ie  && (is_major >= 4));
    
    if (!(is_ie4up || is_nav5up)) {
	return true;
    }
    
    if (form.fname.value == "") {
	message += "   - First name is required\n";
	okFlag = false; errorNum++;
    }	    
    if (form.lname.value == "") {
	message += "   - Last name required\n";
	okFlag = false; errorNum++;
    }	    
    if (form.gender.value == "") {
	message += "   - Gender is required\n";
	okFlag = false; errorNum++;
    }	    
    if (form.birthdate_y.value == "" ||
	form.birthdate_m.value == "" ||
	form.birthdate_d.value == "") {
	message += "   - Birthdate is required\n";
	okFlag = false; errorNum++;
    }	    
    if (form.address1.value == "") {
	message += "   - Address1 is required\n";
	okFlag = false; errorNum++;
    }	    
    if (form.city.value == "") {
	message += "   - City is required\n";
	okFlag = false; errorNum++;
    }	    
    if (form.country.value == "") {
	message += "   - Country is required\n";
	okFlag = false; errorNum++;
    }	    
    if (form.hphone.value == "") {
	message += "   - Home phone is required\n";
	okFlag = false; errorNum++;
    }	    
    if (form.email.value == "") {
	message += "   - E-mail address is required\n";
	okFlag = false; errorNum++;
    } else if (!isEmailValid(form.email.value)) {
	message += "   - E-mail address is not valid\n";
	okFlag = false; errorNum++;
    }
    if (form.email_confirm.value == "") {
	message += "   - Confirmation E-mail address is required\n";
	okFlag = false; errorNum++;
    } else if (!isEmailValid(form.email_confirm.value)) {
	message += "   - Confirmation E-mail address is not valid\n";
	okFlag = false; errorNum++;
    }

    if (form.email.value != form.email_confirm.value) {
	message += "   - E-mail address and E-mail address confirmation are different\n";
	okFlag = false; errorNum++;
    }	    

    if (getSelectedRadioValue(form.medical_yn) == "") {
	message += "   - Medical conditions information is required\n";
	okFlag = false; errorNum++;
    }	    
    if (form.emergency_contact.value == "") {
	message += "   - Emergency contact name is required\n";
	okFlag = false; errorNum++;
    }	    
    if (form.emergency_phone.value == "") {
	message += "   - Emergency contact phone is required\n";
	okFlag = false; errorNum++;
    }	    
    if (getSelectedRadioValue(form.roster_public) == "") {
	message += "   - Camp roster (private/public) is required\n";
	okFlag = false; errorNum++;
    }	    
    if (form.tshirt_size.value == "") {
	message += "   - T-shirt size required\n";
	okFlag = false; errorNum++;
    }	    
    if (getSelectedRadioValue(form.plan_type) == "") {
	message += "   - Camp plan-type is required\n";
	okFlag = false; errorNum++;
    }	    

    message += "\nPlease fix the above errors and resubmit.";
    if (errorNum > 1) {
	message = "Errors:\n\n" + message;
    } else {
	message = "Error:\n\n" + message;
    }
    if (okFlag == false) {
	alert(message);
    }
    return okFlag;
}

function isEmailValid(checkThisEmail) {
    var myEMailIsValid = true;
    var myAtSymbolAt = checkThisEmail.indexOf('@');
    var myLastDotAt = checkThisEmail.lastIndexOf('.');
    var mySpaceAt = checkThisEmail.indexOf(' ');
    var myLength = checkThisEmail.length;

    // at least one @ must be present and not before position 2
    // @yellow.com : NOT valid
    // x@yellow.com : VALID

    if (myAtSymbolAt < 1 )
	{myEMailIsValid = false}

    // at least one . (dot) afer the @ is required
    // x@yellow : NOT valid
    // x.y@yellow : NOT valid
    // x@yellow.org : VALID

    if (myLastDotAt < myAtSymbolAt)
	{myEMailIsValid = false}

    // at least two characters [com, uk, fr, ...] must occur after the last . (dot)
    // x.y@yellow. : NOT valid
    // x.y@yellow.a : NOT valid
    // x.y@yellow.ca : VALID

    if (myLength - myLastDotAt <= 2)
	{myEMailIsValid = false}


    // no empty space " " is permitted (one may trim the email)
    // x.y@yell ow.com : NOT valid

    if (mySpaceAt != -1)
	{myEMailIsValid = false}


    /*
    if (myEMailIsValid == true)
	{alert("email is VALID")}
    else
	{alert("email is NOT valid!")}
    */

    return myEMailIsValid
}

function allAsciiP(aString) {
    for(var cntr=0; cntr <= aString.length-1; cntr++){
	if (aString.charCodeAt(cntr) < 32 || aString.charCodeAt(cntr) > 126) {
	    return false;
	}
    }
    return true;
}

