function isValidIPAddress(ipaddr) {
   var re = /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/;
   if (re.test(ipaddr)) {
      var parts = ipaddr.split(".");
      if (parseInt(parseFloat(parts[0])) == 0) { return false; }
      for (var i=0; i<parts.length; i++) {
         if (parseInt(parseFloat(parts[i])) > 255) { return false; }
      }
      return true;
   } else {
      return false;
   }
}


function showMessage(ctrl,strMessage){
	alert(strMessage);
	if (ctrl) ctrl.focus();
	return false
}

var EMAIL = 1;
var ABSOLUTE_VALUE = 2;
var LENGTH_MATCH = 3;
var BETWEEN = 4;
var CTRL_SAME_VALUES = 5
var USERNAME_CHECK = 6

function checkInput(ctrl, expression, msg){

	if (!ctrl){
		alert("DEBUG MESSAGE: Invalid parameter, ctrl is null, check your spelling!\n\nMSG="+msg)
		return false;
	}
	
	if (arguments.length==3) {
		//check for the length of the controls value
		switch(ctrl.type.toLowerCase()){
			case "checkbox":
				if (ctrl.checked == expression) {
					return showMessage(ctrl,msg);
				} else return true;
			default:
				if (ctrl.value.length < expression) {
					return showMessage(ctrl,msg);
				}
		}
	} 
	else {
		switch(arguments[3]){
			case EMAIL: 
				if (ctrl.value.search(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/) == -1){
					return showMessage(ctrl,msg)
				}
				return true;
			case ABSOLUTE_VALUE:
				if (ctrl.value == expression){
					return showMessage(ctrl,msg)
				}else return true;
			case LENGTH_MATCH:
				if (ctrl.value.length != expression){
					return showMessage(ctrl,msg)
				}else return true;
			case BETWEEN:
				if ((arguments.length==5) && ((ctrl.value.length < expression) || (ctrl.value.length > arguments[4]))) {
					return showMessage(ctrl,msg)
				}else return true;
			case CTRL_SAME_VALUES:
				if (ctrl.value != expression.value){
					return showMessage(ctrl,msg)
				}else return true;
			case USERNAME_CHECK:
				if ((arguments.length==5) && ((ctrl.value.length < expression) || (ctrl.value.length > arguments[4]) || (ctrl.value.search('[^A-Za-z0-9_-]')>-1))){
					return showMessage(ctrl,msg)
				}else return true;
		}//end switch
	}

	return true;

}

