function isEmail(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));
}

function formChecker(fieldsArr) {
	var num_fields = fieldsArr.length
	if(num_fields == 0) return true;
	else {
		for(i=0;i<num_fields;i++) {
			switch(fieldsArr[i][0]) {
				case 1: //text field
					if (document.getElementById(fieldsArr[i][1]).value.length < fieldsArr[i][2]) {
						alert(fieldsArr[i][3]);
						document.getElementById(fieldsArr[i][1]).focus();
						return false;
					}
				break;
				case 2: //email field
					if ((document.getElementById(fieldsArr[i][1]).value.length < fieldsArr[i][2] ) || (!isEmail(document.getElementById(fieldsArr[i][1]).value))) {
						alert(fieldsArr[i][3]);
						document.getElementById(fieldsArr[i][1]).focus();
						return false;
					}
				break;
				case 3: //select field
					if (document.getElementById(fieldsArr[i][1]).selectedIndex == 0) {
						alert(fieldsArr[i][3]);
						document.getElementById(fieldsArr[i][1]).focus();
						return false;
					}
				break;
				case 4: //checkbox
					if (document.getElementById(fieldsArr[i][1]).checked == false) {
						alert(fieldsArr[i][3]);
						document.getElementById(fieldsArr[i][1]).focus();
						return false;
					}
				break;
			}
		}
		return true;
	}
}

