// excludeArr --> id's of not obigatory fields
function checkForm(formObj, excludeArr) {
	for (var i=0; i<formObj.elements.length; i++) {
		var obj_tmp = formObj.elements[i];
		if (obj_tmp.type == "text") {
			if (obj_tmp.id == "email") {
				if (! emailOK(obj_tmp)) {
					return errorMsg(obj_tmp);
				}
			} else if (empty(obj_tmp) && isObligatory(obj_tmp.id, excludeArr)) {
				return errorMsg(obj_tmp);
			}
			// trim 
			obj_tmp.value = trimString(obj_tmp.value);
		} else if (obj_tmp.tagName.toLowerCase() == "select") {
			if (obj_tmp.value == "select") {
				return errorMsg(obj_tmp);
			}
		} else if (obj_tmp.type == "radio") {
			if (! checkRadio(formObj, obj_tmp)) return errorMsg(obj_tmp);			
		}
	}
	formObj.submit();
}

// excludeArr --> id's of not obigatory fields
function isObligatory(id, excludeArr) {
	for (var i=0; i<excludeArr.length; i++) {
		if (excludeArr[i] == id) return false;
	}
	return true;
}

function checkRadio(objForm, objRadio) {
	var name = objRadio.name;
	// geta all relevant elements from the group
	var relRadios = getRadioGroup(objForm, objRadio.name);
	for (var i=0; i<relRadios.length; i++) {
		if (relRadios[i].checked) {
			return true;
		}
	}	
	return false;
}

function getRadioGroup(formObj, radioName) {
	var radioArr = [];
	for (var i=0; i<formObj.elements.length; i++) {
		var obj = formObj.elements[i];
		if (obj.type == "radio" && obj.name == radioName) {
			radioArr[radioArr.length] = obj;
		}
	}
	return radioArr;
}


function errorMsg(obj, msgExtra) {
	var msg = (feedback_text) ? feedback_text : "";
	if (obj.type != "radio") {	
		var labels = document.getElementsByTagName("label");
		for (var i=0; i<labels.length; i++) {
			if (labels[i].htmlFor == obj.id) {
				msg += labels[i].innerHTML + "\n\n";
			}
		}
	} else {
		var tr = obj.parentNode.parentNode;
		if (tr) var labels = tr.getElementsByTagName("label");
		if (labels[0]) {
			msg += labels[0].innerHTML + "\n\n";
		} else {
			msg = feedback_radio;
		}
	}
	if (msgExtra) msg += "\n" + msgExtra;
	alert(msg);
	if (obj && obj.type != "radio") obj.focus();
	return false;
}

function emailOK(obj) {
	var e = obj.value;
	ok = "1234567890qwertyuiop[]asdfghjklzxcvbnm.@-_QWERTYUIOPASDFGHJKLZXCVBNM";
	for(i=0; i < e.length ;i++){
		if(ok.indexOf(e.charAt(i))<0){ 
			return false;
		}	
	} 
	if (document.images) {
		re = /(@.*@)|(\.\.)|(^\.)|(^@)|(@$)|(\.$)|(@\.)/;
		re_two = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/;
		if (!e.match(re) && e.match(re_two)) {
			return (-1);		
		}
	}
}

function empty(obj) {
	var theString = obj.value;
	if (theString == "") return true;
	for (var i=0; i<=theString.length-1; i++) {
		if ((theString.charCodeAt(i) != 32) && (theString.charCodeAt(i) != 13) && (theString.charCodeAt(i) != 10)) return false;
	}
	return true;
}

function trimString(str) {
	var s;
	s = str.replace( /^\s+/g, "" );// strip leading
	s = s.replace( /\s+$/g, "" );// strip trailing
	return s;
}