﻿/***********************************************
* Required field(s) validation v1.10- By NavSurf
* Visit Nav Surf at http://navsurf.com
* Visit http://www.dynamicdrive.com/ for full source code
*
*
* This pgm changed / added to quite a bit from the original downloaded source.
* Tests and edits added for non-mandatory fields, added capability for individual
* fields to indicate that they have additional edits.
*   - Frank Pope
*
*
***********************************************/

/***********************************************
* Jun 09 - Frank Pope
*          Amount edits turned off due to pblms, by setting 'fieldEdit="N"' for that field 
*
***********************************************/


function formCheck(formobj){
	// List here...
	// - form names of fields to check
	// - text fieldnames to report in the error message
	// - whether special edits/validations exist for the field
	// - error message for the alert box...
	var fieldName = Array("mbrShipType","memberName","emailPrimary","amount","paymentType","wants_a_cd");
	var fieldDesc = Array("Membership type","Name","Email","Amount paid","Payment Details","Choice of free CD");
	var fieldEdit = Array("Y","N","N","N","Y","Y");
	var alertMsg  = "Please complete the following fields:\n";
				
	//	if a mandatory field exists on the form, then report if it's not entered
	var l_Msg = alertMsg.length;
	for (var i = 0; i < fieldName.length; i++){
		var obj = formobj.elements[fieldName[i]];
		if (obj){
			switch(obj.type){
			case "radio":
				break;
			case "select-one":
				if (obj.selectedIndex == -1 || obj.options[obj.selectedIndex].text == ""){
					alertMsg += " - " + fieldDesc[i] + "\n";
				}
				break;
			case "select-multiple":
				if (obj.selectedIndex == -1){
					alertMsg += " - " + fieldDesc[i] + "\n";
				}
				break;
			case "text":
			case "textarea":
				if (obj.value == "" || obj.value == null){
					alertMsg += " - " + fieldDesc[i] + "\n";
				}
				break;
			default:
			}
			if (obj.type == undefined){
				var blnchecked = false;
				for (var j = 0; j < obj.length; j++){
					if (obj[j].checked){
						blnchecked = true;
					}
				}
				if (!blnchecked){alertMsg += " - " + fieldDesc[i] + "\n";}
			}
		}
	}

	// In case we want to do form-specific stuff later
	if (formobj.name == "formNameHere"){
	alert("hello");
	}

	// Field specific validations
	for (var i = 0; i < fieldName.length; i++){
 		if (fieldEdit[i] == "Y"){
			var obj = formobj.elements[fieldName[i]];
			
			// amount has to be numeric
			if (obj && fieldName[i] == "amount"){
				var testAmt = obj.value;
				for (var j=0; j < testAmt.length; j++) {
					if (testAmt.charAt(j) != "0" && !parseInt(testAmt.charAt(j))) {
						alertMsg += " - Payment amount '" + parseInt(testAmt.charAt(j)) + "' not numeric \n";
						break;
					}
				}
			}

			// payment decsription text needed depends on payment type used - eft or chq
			if (obj && fieldName[i] == "paymentType"){
				var payType   = " ";
			
				if (obj[0].checked){payType = "eft";}
				if (obj[1].checked){payType = "chq";}
				
				if  (payType == " "){
					alertMsg += " - Payment reference \n";
				}

				var obj = formobj.elements["eftReference"];
				if  (payType == "eft" && obj.value == "(trans'n desc. Note this is not the receipt nbr)"){
					alertMsg += " - EFT reference \n";
				}

				var obj = formobj.elements["chqReference"];
				if  (payType == "chq" && obj.value == "(please provide the cheque nbr)"){
					alertMsg += " - Cheque number \n";
				}
			}

			// if they've asked for a CD then they need to say what kind of CD
			if (obj && fieldName[i] == "wants_a_cd"){
				if (obj.value == "Y") {
					var obj = formobj.elements["cdType"]; 

					if (!obj[0].checked & !obj[1].checked & !obj[2].checked) {
						alertMsg += " - OS-X or Classic CD-ROM?\n";
					}
				}
			}
		}
	}
	
	if (alertMsg.length == l_Msg){
		return true;
	}else{
		alert(alertMsg);
		return false;
	}
}

