﻿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;

}


var loademail='';
var loademailname='';
var lemailArr = new Array();

function validateFormCore(f,glbLang){
	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"){
						                if(glbLang==1){
						                  errs=errs + fname + ' cannot be empty!\n';
						                }else if(glbLang==2){
					                	  errs=errs + fname + ' ne peut être vide!\n';
						               	 }
					              }
						}else{
							if (!checkNumber(f.elements[x].value,0)){
						                if(glbLang==1){
						                  errs=errs + fname + ' must be a number!\n';
						                }else if(glbLang==2){
						                  errs=errs + fname + ' doit être un chiffre!\n';
						                }
							}
						}
					break;
					case "decimal":
						if (f.elements[x].value==0){
							if (farr[0]=="required"){
						                if(glbLang==1){
						                  errs=errs + fname + ' cannot be empty!\n';
						                }else if(glbLang==2){
						                  errs=errs + fname + ' ne peut être vide!\n';
						                }
						              }
						}else{
							if (!checkNumber(f.elements[x].value,1)){
						                if(glbLang==1){
						                  errs=errs + fname + ' must be a number, with periods for decimals!\n';
						                }else if(glbLang==2){
						                  errs=errs + fname + ' doit être un chiffre, avec des points pour les décimales!\n';
						                }
							}
						}
					break;
					case "text":
						if (f.elements[x].value==0){
							if (farr[0]=="required"){
						                if(glbLang==1){
						                  errs=errs + fname + ' cannot be empty!\n';
						                }else if(glbLang==2){
						                  errs=errs + fname + ' ne peut être vide!\n';
						                }
						              }
						}
					break;
					case "alpha":
						if (f.elements[x].value==0){
							if (farr[0]=="required"){
						                if(glbLang==1){
						                  errs=errs + fname + ' cannot be empty!\n';
						                }else if(glbLang==2){
						                  errs=errs + fname + ' ne peut être vide!\n';
						                }
						              }
						}else{
							if (!checkAlpha(f.elements[x].value,farr[2])){
						                if(glbLang==1){
						                  errs=errs + fname + ' must be alphanumeric';
						                }else if(glbLang==2){
						                  errs=errs + fname + ' doit être alpha-numérique';
						                }
						                if (farr[2]!=''){
						                  if(glbLang==1){
						                    errs=errs +' (also allowed: '+farr[3]+')';
						                  }else if(glbLang==2){
						                    errs=errs +' (aussi permis: '+farr[3]+')';
						                  }
						                }
								errs=errs + '\n';
							}
						}
					break;
					case "email":

						if (f.elements[x].value==0){
							if (farr[0]=="required"){
						                if(glbLang==1){
						                  errs=errs + fname + ' cannot be empty!\n';
						                }else if(glbLang==2){
						                  errs=errs + fname + ' ne peut être vide!\n';
						                }
						              }
						}else{
							filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
							if (!filter.test(f.elements[x].value)){
						                if(glbLang==1){
						                  errs=errs + fname + ': invalid email!\n';
						                }else if(glbLang==2){
						                  errs=errs + fname + ': courriel invalide!\n';
						                }
							}else{
							}
							

						}

						//pick-up email address into array for email check
						lemailArr[f.elements[x].name + 'confirm'] = f.elements[x].value;

					break;
					case "email-confirm":

						if (f.elements[x].value!=lemailArr[f.elements[x].name]){
				                if(glbLang==1){
				                  errs=errs + fname + ': email not properly confirmed!\n';
				                }else if(glbLang==2){
				                  errs=errs + fname + ': confirmation du courriel incorrecte!\n';
				                }
						}

					break;
					case "postal":
						var lc='1234567890';
						var alc='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ -';
						if (f.elements[x].value.length==6){f.elements[x].value = f.elements[x].value.substring(0,3) + ' ' + f.elements[x].value.substring(3,6);}
						errld=0;
						if(!(f.elements[x].value==0)){
							var tonum=1;
							for (var k=0; k < f.elements[x].value.length; k++){
								var subs=f.elements[x].value.substring(k, tonum);
								if ( (tonum==2) || (tonum==5) || (tonum==7)){
									if (lc.indexOf(subs)==-1){
										if (errld==0){errs = errs + fname + ': Invalid postal code \n';}
										errld=1;
										break;
									}else{
										tonum+=1;}
								}else{
									if (alc.indexOf(subs)==-1){
										if (errld==0){errs = errs + fname + ': Invalid postal code \n';}
										errld=1;
										break;
									}else{
										tonum+=1;
									}
								}
							}
							if(!(f.elements[x].value.length==7)){
								if (errld==0){errs =errs + fname + ': Invalid postal code \n';}
								errld=1;
							}	

						}else{
							if (farr[0]=="required"){
						                if(glbLang==1){
						                  errs=errs + fname + ' cannot be empty!\n';
						                }else if(glbLang==2){
						                  errs=errs + fname + ' ne peut être vide!\n';
						                }
						              }
						}

 

					break;

				}
			}
		}

	}
	return errs;

}

function validateForm(f,glbLang){
	var errs='';
	errs= validateFormCore(f,glbLang);
	if (errs==''){
		return true;
	}else{
    if(glbLang==1){
      alert('Before submitting, please complete the following fields:\n\n'+errs);
    }else if(glbLang==2){
      alert('Avant de soumettre, veuillez completer les champs suivant:\n\n'+errs);
    }
		return false;
	}

}
