function validaFormSatByClass(form,lang){
	var i;
	//loop through all the form elements
	for (i=0; i < form.elements.length; i++){
		var clasenom=form.elements[i].className;
		if(clasenom && clasenom.indexOf('mandatory')!=-1){
			
			var nom = form.elements[i].name;
			var valor=form.elements[i].value;
			if(valor==''){
				alertaCamp(form.elements[i],'text', lang);
				return false;
			}else if(clasenom.indexOf('email')!=-1){
				if(testEmail(valor)){
					alertaCamp(form.elements[i],'email',lang);
					return false;
				}			
			}else if(clasenom.indexOf('number')!=-1){
				if(testEmail(valor)){
					alertaCamp(form.elements[i],'num',lang);
					return false;
				}			
			}else if(clasenom.indexOf('check')!=-1){
				var checked = form.elements[i].checked;
				if(checked == false){
					alertaCamp(form.elements[i],'checkbox',lang);
					return false;
				}			
			}else if(clasenom.indexOf('textarea')!=-1){
				if(testTextArea(valor)){
					alertaCamp(form.elements[i],'textarea',lang);
					return false;
				}			
			}
		}
	}
	return true;
}

function validaFormSat(form,lang){
	var i;
	//loop through all the form elements
	for (i=0; i < form.elements.length; i++){
		var nom = form.elements[i].name;
		var valor=form.elements[i].value;

		if(nom=='formSatData_nom'){
			if(valor==''){
				alertaCamp(form.elements[i],'text', lang);
				return false;
			}else if(testNoms(valor)){
				alertaCamp(form.elements[i],'text',lang);
				return false;
			}
		}else if(nom=='formSatData_cognoms'){
			if(valor==''){
				alertaCamp(form.elements[i],'text',lang);
				return false;
			}else if(testNoms(valor)){
				alertaCamp(form.elements[i],'text',lang);
				return false;
			}
		}else if(nom=='formSatData_email'){
			if(valor==''){
				alertaCamp(form.elements[i],'email',lang);
				return false;
			}else if(testEmail(valor)){
				alertaCamp(form.elements[i],'email',lang);
				return false;
			}			
			
		}else if(nom=='formSatData_telefon'){
			if(valor==''){
				alertaCamp(form.elements[i],'num',lang);
				return false;
			}else if(testNum(valor)){
				alertaCamp(form.elements[i],'num',lang);
				return false;
			}
		}else if(nom=='formSatXml_consulta'){
			if(testTextArea(valor)){
				alertaCamp(form.elements[i],'textarea',lang);
				return false;
			}
		}else if(nom=='formSatData_subject'){
			if(valor==''){
				alertaCamp(form.elements[i],'text',lang);
				return false;
			}else if(testNoms(valor)){
				alertaCamp(form.elements[i],'text',lang);
				return false;
			}
		}
		else if(nom=='formSatXml_pais'){
			if(valor==''){
				alertaCamp(form.elements[i],'drop',lang);
				return false;
			}else if(testNoms(valor)){
				alertaCamp(form.elements[i],'drop',lang);
				return false;
			}
		}
		else if(nom=='formSatData_nacionalitat'){
			if(valor==''){
				alertaCamp(form.elements[i],'drop',lang);
				return false;
			}else if(testNoms(valor)){
				alertaCamp(form.elements[i],'drop',lang);
				return false;
			}
		}
		else if(nom=='formSatXml_provincia'){
			if(valor==''){
				alertaCamp(form.elements[i],'drop',lang);
				return false;
			}else if(testNoms(valor)){
				alertaCamp(form.elements[i],'drop',lang);
				return false;
			}
		}		
		else if(nom=='formSatXml_certificabeca'){
			var checked = form.elements[i].checked;
			if(checked == false){
				alertaCamp(form.elements[i],'checkbox',lang);
				return false;
			}
		}
		else if(nom=='formSatXml_certificareq'){
			var checked = form.elements[i].checked;
			if(checked == false){
				alertaCamp(form.elements[i],'checkbox',lang);
				return false;
			}
		}else if(nom=='formSatXml_niu'){
			if(valor==''){
				alertaCamp(form.elements[i],'num',lang);
				return false;
			}else if(testNum(valor)){
				alertaCamp(form.elements[i],'num',lang);
				return false;
			}else if(testMidaNiu(valor)){
				alertaCamp(form.elements[i],'niu',lang);
				return false;
			}
		}
		else if(nom=='formSatXml_pasaport'){
			if(valor==''){
				alertaCamp(form.elements[i],'num',lang);
				return false;
			}else if(testNum(valor)){
				alertaCamp(form.elements[i],'num',lang);
				return false;
			}			
		}
	}
	return true;
}

function alertaCamp(nom,tipus,lang){
//alerts in the desired language if a field is not valid
	if(tipus=='text'){
		if(lang=='ca'){
			alert('Hi ha un camp que està buit o té caràcters no permesos. Si us plau, corregeix-ho abans d\'enviar el formulari');
		}else if(lang=='es'){
			alert('Hay un campo vacio o con carácteres no permitidos. Por favor, corrígelo antes de enviar el formulario.');
		}else if(lang=='en'){
			alert('There is a field with not allowed characters.Please correct it before submitting.');
		}
	}else if(tipus=='num'){
		if(lang=='ca'){
			alert('Hi ha un camp que té caràcters que no són números. Si us plau, corregeix-ho abans d\'enviar el formulari');
		}else if(lang=='es'){
			alert('Hay un campo con carácteres que no son números. Por favor, corrígelo antes de enviar el formulario.');
		}else if(lang=='en'){
			alert('There is a field with characters that are not numbers. Please correct it before submitting.');
		}
	}else if(tipus=='email'){
		if(lang=='ca'){
			alert('Hi ha un camp que ha de contenir una adreça de correu electrònic. Si us plau, corregeix-ho abans d\'enviar el formulari');
		}else if(lang=='es'){
			alert('Hay un campo que debe ser una dirección de correo electrónico. Por favor, corrígelo antes de enviar el formulario.');
		}else if(lang=='en'){
			alert('There is a field that should be an e-mail adress. Please correct it before submitting.');
		}
	}else if(tipus=='textarea'){
		if(lang=='ca'){
			alert('Hi ha un camp que és massa extens. Si us plau, corregeix-ho abans d\'enviar el formulari');
		}else if(lang=='es'){
			alert('Hay un campo demasiado largo. Por favor, corrígelo antes de enviar el formulario.');
		}else if(lang=='en'){
			alert('There is a field larger than allowed. Please correct it before submitting.');
		}
	}
	else if(tipus=='checkbox'){
		if(lang=='ca'){
			alert('Hi ha un camp checkbox que no està marcat. Si us plau, corregeix-ho abans d\'enviar el formulari');
		}else if(lang=='es'){
			alert('Hay un campo de tipo checkbox que no está marcado. Por favor, corrígelo antes de enviar el formulario.');
		}else if(lang=='en'){
			alert('There is a checkbox field which is not selected. Please select it before submitting.');
		}
	}
	else if(tipus=='drop'){
		if(lang=='ca'){
			alert('Hi ha un camp desplegable que no està marcat. Si us plau, corregeix-ho abans d\'enviar el formulari');
		}else if(lang=='es'){
			alert('Hay un campo de desplegable checkbox que no está marcado. Por favor, corrígelo antes de enviar el formulario.');
		}else if(lang=='en'){
			alert('There is a drop field which is not selected. Please select it before submitting.');
		}
	}
	else if(tipus=='niu'){
		if(lang=='ca'){
			alert('El camp de NIU ha de tenir 7 xifres. Si us plau, corregeix-ho abans d\'enviar el formulari');
		}else if(lang=='es'){
			alert('El campo de NIU tiene que tener 7 cifras. Por favor, corrígelo antes de enviar el formulario.');
		}else if(lang=='en'){
			alert('The NIU field should be a five-figure number. Please correct it before submitting.');
		}
	}

	nom.focus();
	if(tipus!='drop')
		nom.select();
}
function testNoms(val){
	var isWrong=false;
	if(val.indexOf('&')>=0){ isWrong=true;}
	return isWrong;
}

function testEmail(val){
	var isWrong=false;
	if(!(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(val))){ isWrong=true;}
	return isWrong;
}

function testNum(val){
	var numericExpression = /^[0-9]+$/;
	if(val.match(numericExpression)) {
		return false;
	} else {
		return true;
	}

}

function testTextArea(val){
	var isWrong=false;
	if(val.length>1000){ isWrong=true;}
	return isWrong;
}

function testMidaNiu(val){
	var isWrong=false;
	if(val.length!=7){ isWrong=true;}
	return isWrong;
}
