var rePostalCode = /^[A-Za-z]\d[A-Za-z][ ]?\d[A-Za-z]\d$/;
var rePostalCode1 = /^[A-Za-z]\d[A-Za-z]$/;
var rePostalCode2 = /^\d[A-Za-z]\d$/;
var rePhone = /^\d{3}-\d{3}-\d{4}$/;
var rePhone3 = /^\d{3}$/;
var rePhone4 = /^\d{4}$/;
var reEmail = /^.+\@.+\..+$/;

function fieldIsntEmpty(field, msg) {
	if (field.value == "") {
		if (msg != "") {
		  alert(msg);
		  field.focus();
		}
		return false;
	}
	else {
	  return true;
	}
}

function textareaIsntOverMaxChar(field, msg, replaceNbCharInMsg, maxChar, mandatory) {
  if (mandatory || !mandatory && field.value != "") {
    if (field.value.length > maxChar) {
  		if (msg != "") {
  		  if (replaceNbCharInMsg) {
  		    alert(msg.replace("${nbChar}", field.value.length));
  		  }
  		  else {
  		    alert(msg);
  		  }
  		  field.focus();
  		}
  		return false;
  	}
  	else {
  	  return true;
  	}
  }
  else {
    return true;
  }
}

function checkboxIsChecked(field, msg) {
  if (!field.checked) {
    if (msg != "") {
      alert(msg);
      field.focus();
    }
    return false;
  }
  else {
    return true;
  }
}

function radioIsChecked(field, msg) {
  var fieldIsChecked = false;
  for (i=0; i < field.length; i++) {
    if (field[i].checked) {
      fieldIsChecked = true;
    }
  }
	if (!fieldIsChecked) {
		if (msg != "") {
		  alert(msg);
	  }
		return false;
	}
	else {
	  return true;
	}
}

function getCheckedValue(radioObj) {
	if(!radioObj)
		return "";
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked)
			return radioObj.value;
		else
			return "";
	for(var i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) {
			return radioObj[i].value;
		}
	}
	return "";
}

function checkboxGroupIsChecked(field, msg) {
	return radioIsChecked(field, msg);
}

function checkboxGroupManyAreChecked(field, checkedBoxes, msg) {
  var fieldsChecked = 0;
  for (i=0; i < field.length; i++) {
    if (field[i].checked) {
      fieldsChecked++;
    }
  }
	if (fieldsChecked != checkedBoxes) {
		if (msg != "") {
		  alert(msg);
	  }
		return false;
	}
	else {
	  return true;
	}
}

function checkboxGroupManyAreChecked2(field, checkedBoxes, msg, showHowManyAreChecked, msgHowManyAreChecked) {
  checkboxGroupManyAreChecked3(field, checkedBoxes, msg, msg, showHowManyAreChecked, msgHowManyAreChecked);
}

function checkboxGroupManyAreChecked3(field, checkedBoxes, msgUnder, msgAbove, showHowManyAreChecked, msgHowManyAreChecked) {
  var fieldsChecked = 0;
  var msg;
  for (i=0; i < field.length; i++) {
    if (field[i].checked) {
      fieldsChecked++;
    }
  }
	if (fieldsChecked != checkedBoxes) {
	  if (fieldsChecked < checkedBoxes) {
	    msg = msgUnder;
	  }
	  else {
	    msg = msgAbove;
	  }
		if (msg != "") {
		  if (showHowManyAreChecked) {
		    alert(msg + "\n" + fieldsChecked + msgHowManyAreChecked);
		  }
		  else {
		    alert(msg);
		  }
	  }
		return false;
	}
	else {
	  return true;
	}
}

function checkboxGroupUpdateCounter(field, counterField) {
  var fieldsChecked = 0;
  for (i=0; i < field.length; i++) {
    if (field[i].checked) {
      fieldsChecked++;
    }
  }
  counterField.value = fieldsChecked;
}

function regexIsValid(regex, field, msg, mandatory) {
	if (mandatory || !mandatory && field.value != "") {
  	if (!regex.test(field.value)) {
      if (msg != "") {
  		  alert(msg);
  		  field.focus();
  		}
  		return false;
  	}
  	else {
  	  return true;
  	}
  }
  else {
    return true;
  }
}
