//-- START validate the form
function validate(form) {
	
	var errors = "";
	for (var i = 0;i < form.elements.length;i++) {
		if (form.elements[i].id && form.elements[i].id != "") {
			var tmp 	= form.elements[i].id.split(":");
			var label 	= tmp[0];
			var check	= tmp[1].split(",");
			
			
					
			for(j = 0;j < check.length;j++) {
				if(check[j] == "R") {					
					errors += r_validation(form, i);
					
				}
				
				if(check[j] == "E") {
					if(!is_email(form.elements[i].value))
						errors += "- " + label + " typed is not a valid e-mail address.\n";
				}
				
				if(check[j] == "N") {
					if(!is_number(form.elements[i].value))
						errors += "- " + label + " must contain only numbers.\n";
				}
			}
			
		}
	}
	
	if(errors) {
		alert("The following errors have occured:\n" + errors);
		return false;
	}

	return true;;
}
//-- END

//-- STRT check for require
function r_validation(form, i) {
	var msg = "";
	var tmp 	= form.elements[i].id.split(":");
	var label 	= tmp[0];
	
	if(form.elements[i].type == "radio") {
		var ok = false;
		eval("var radio = form." + form.elements[i].name);

		for (i = 0;i < radio.length;i++) {
			if (radio[i].checked)
				ok = true;
		}		
	
		if(ok == false)
			msg += "- " + label + " is a required field.\n";
			
	} else if(form.elements[i].type == "checkbox") {
		var ok = false;		
		if(form.elements[i].checked)
			ok = true;
		
		if(ok == false)
			msg += "- " + label + " is a required field.\n";			
	} else { 
		if(form.elements[i].value == "") {
			msg += "- " + label + " is a required field.\n";
		}
	}
	
	return msg;
}
//-- END

//-- START check if the parameter is an e-mail address:
function is_email(str) {
	// are regular expressions supported?
	var supported = 0;
	if (window.RegExp) {
		var tempStr = "a";
		var tempReg = new RegExp(tempStr);
		if (tempReg.test(tempStr)) supported = 1;
	}
	if (!supported)
		return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
	var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
	var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
	return (!r1.test(str) && r2.test(str));
}
//-- END

//-- START check if the parameter is a number (composed only of digits):
function is_number(str) {
	if (str.length == 0) 
		return false;
	
	for (var i = 0;i < str.length;i++)
		if ((str.substring(i,i + 1) < '0') || (str.substring(i,i + 1) > '9')) 
			return false;
			
	return true;
}
//-- END

