function checkNumber(theValue,isDec){

			if (isDec==1){
				theValue=theValue.replace(".","");
				if (theValue==""){return false;}
				lc="1234567890";
			}else{
				lc="1234567890";
			}
			var tonum=1;  
			for (var k=0; k < theValue.length; k++){
				var subs=theValue.substring(k, tonum);
				if (lc.indexOf(subs)==-1){
					return false;
					break;
				}else{
					tonum+=1;
				}
			}
			return true;

}

function checkAlpha(theValue,ext){

			lc="1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" + ext;

			var tonum=1;  
			for (var k=0; k < theValue.length; k++){
				var subs=theValue.substring(k, tonum);
				if (lc.indexOf(subs)==-1){
					return false;
					break;
				}else{
					tonum+=1;
				}
			}
			return true;

}

// if the postal code is entered w/o spaces, it adds the space
function formatPostalCode(form, fieldName)
{
	if (form.elements[fieldName])
	{
		field = form.elements[fieldName];
		
		if (field.value.length == 6)
		{
			field.value = field.value.substring(0, 3) + ' ' + field.value.substring(3, 6);
		}
	}
}

function checkPostalCode(pcode)
{
	var reg_exp = /[A-Za-z]\d[A-Za-z] \d[A-Za-z]\d/;
	
	return (pcode.match(reg_exp) != null);
}

function validateFormCore(f){
	var errs='';
	for (x=0;x<f.elements.length;x++){
		var ffeed = f.elements[x].getAttribute('validation');
		var fname = f.elements[x].getAttribute('valname');
		if (ffeed!=null){
			var farr = ffeed.split(",");
		
			if ((farr[0]=="required")||(farr[0]=="optional")){
				switch (farr[1]){
					case "number":
						if (f.elements[x].value==0){
							if (farr[0]=="required"){errs=errs + fname + ' cannot be empty!\n';}
						}else{
							if (!checkNumber(f.elements[x].value,0)){
								errs=errs + fname + ' must be a number!\n';
							}
						}
					break;
					case "decimal":
						if (f.elements[x].value==0){
							if (farr[0]=="required"){errs=errs + fname + ' cannot be empty!\n';}
						}else{
							if (!checkNumber(f.elements[x].value,1)){
								errs=errs + fname + ' must be a number, with periods for decimals!\n';
							}
						}
					break;
					case "text":
						if (f.elements[x].value==0){
							if (farr[0]=="required"){errs=errs + fname + ' cannot be empty!\n';}
						}
					break;
					case "alpha":
						if (f.elements[x].value==0){
							if (farr[0]=="required"){errs=errs + fname + ' cannot be empty!\n';}
						}else{
							if (!checkAlpha(f.elements[x].value,farr[2])){
								errs=errs + fname + ' must be alphanumeric';
								if (farr[2]!=''){
									errs=errs +' (also allowed: '+farr[3]+')';
								}
								errs=errs + '\n';
							}
						}
					break;
					case "email":
						if (f.elements[x].value==0){
							if (farr[0]=="required"){errs=errs + fname + ' cannot be empty!\n';}
						}else{
							myRe= new RegExp ("^[a-zA-Z0-9]+([_\\.-][a-zA-Z0-9]+)*@([a-zA-Z0-9]+([\.-][a-zA-Z0-9]+))*$");
							myArray = myRe.exec(f.elements[x].value);
							if (myArray==null){
								errs=errs + fname + ': invalid email!\n';
							}
							

						}
					break;

				}
			}
		}

	}
	return errs;

}

function validateForm(f){
	var errs='';
	errs= validateFormCore(f);
	if (errs==''){
		return true;
	}else{
		alert('Before submitting, please complete the following fields:\n\n'+errs);
		return false;
	}

}

