function setDefaultRadioValue(element, value) {
  if (!element) return;
  if (element.length>0) {
    for (var x=0; x<element.length; x++) {
      if (element[x].value==value) {
        element[x].checked = true;
        break;
      }
    }
  }
  else if (element.value==value) {
    element.checked = true;
  }
}

function setDefaultSelect(element, value) {
  if (!element || !element.options) return;
  for (var x=0; x<element.options.length; x++) {
    if (element.options[x].value == value) {
      element.options[x].selected = true;
      break;
    }
  }
}

function setDefaultValue(formkey, element, value) {
  var form = document.getElementById("form_" + formkey);
  var obj = form.elements[element];
  if (!obj) return;
  var type = "";
  if (obj.options) {
    type="select";
  }
  else if (obj.length) {
    type = obj[0].type;
  }
  else {  
    type = obj.type;
  }
  switch (type) {
    case 'hidden':
    case 'password':
    case 'text':
    case 'textarea':
      obj.value = value;
    break;
    case 'radio':
    case 'checkbox':
      setDefaultRadioValue(obj, value);
    break;
    case 'select':
      setDefaultSelect(obj, value);
    break;
  }
  
}

function p_toggleID(id_name, toggle) {
  var obj = document.getElementById(id_name);
  if (obj) {
    toggle?p_turnOnID(id_name):p_turnOffID(id_name);
  }
}

function p_turnOnID(id_name) {
  var obj = document.getElementById(id_name);
  if (obj) {
    obj.style.display = "";
  }
}

function p_turnOffID(id_name) {
  var obj = document.getElementById(id_name);
  if (obj) {
    obj.style.display = "none";
  }
}

function p_openWnd(url) {
  var wnd = window.open(url);
  if (wnd) {
    wnd.focus();
  }
}

var emptyString = /^\s*$/;
var proceed = 2;

function trim(str) {
	return str.replace(/^\s+|\s+$/g, '')
}

function msg(fld, msgtype, message) {
	var dispmessage;
	if (emptyString.test(message)) {
		dispmessage = String.fromCharCode(160);  
	} else {
		dispmessage = message;
	}

	var elem = document.getElementById(fld);
	elem.firstChild.nodeValue = dispmessage;
	elem.className = msgtype;
}

function commonCheck(formfield, errorlabel, required_boolean) {
	if (emptyString.test(formfield.value)) {
		if (required_boolean) {
			msg (errorlabel, "error", "Required *");
			return false;
		} else {
			msg (errorlabel, "", "");
		}
	}
	return proceed;
}

function validateText(formfield, errorlabel, required_boolean, mindigits) {
	var stat = commonCheck(formfield, errorlabel, required_boolean);
	if (stat != proceed) {
		return stat;
	}
	var numdigits = formfield.value.length;
	if (numdigits<mindigits) {
		msg (errorlabel, "error", "Invalid *");
		return false;
	} else {
		msg (errorlabel, "", "");
	}
	return true;
}

function valButton(btn) {
  var cnt = -1;
  for (var i=btn.length-1; i > -1; i--) {
     if (btn[i].checked) {
       cnt = i; i = -1;
     }
  }
  if (cnt > -1) {
    return btn[cnt].value;
  } else {
    return null;
  }
}

function validateRadio(formfield, errorlabel, required_boolean) {
    var btn=valButton(formfield);
	if (btn==null) {
		msg (errorlabel, "error", "Required *");
		return false;
	} else {
		msg (errorlabel, "", "");
	}
	return true;
}

function validatePassword(formfield, formfield2, errorlabel, required_boolean) {
	var stat = commonCheck(formfield, errorlabel, required_boolean);
	if (stat != proceed) {
		return stat;
	}
	var numdigits = formfield.value.length;
	if (formfield.value != formfield2.value) {
		msg (errorlabel, "error", "Passwords do not match *");
		return false;
	} else {
		msg (errorlabel, "", "");
	}
	return true;
}

function validateList(formfield, errorlabel, required_boolean) {
    if (formfield.options[formfield.selectedIndex].value=="") {
		if (required_boolean) {
			msg (errorlabel, "error", "Required *");
			return false;
		} else {
			msg (errorlabel, "", "");
		}
	}
	return proceed;
}

function validateNumeric(formfield, errorlabel, required_boolean, mindigits) {
	var stat = commonCheck (formfield, errorlabel, required_boolean);
	if (stat != proceed) {
		return stat;
	}
	var trimmedvalue = trim(formfield.value);
	var nr = /[0-9 -]/;
	var numdigits = trimmedvalue.length;
	if (!nr.test(trimmedvalue)) {
		msg (errorlabel, "error", "Invalid *");
		return false;
	} else if (numdigits<mindigits) {
		msg (errorlabel, "error", "Invalid *");
		return false;
	} else {
		msg (errorlabel, "", "");
	}
	return true;
}

function validatePhone(formfield, errorlabel, required_boolean) {
	var stat = commonCheck (formfield, errorlabel, required_boolean);
	if (stat != proceed) {
		return stat;
	}
	var trimmedvalue = trim(formfield.value);
	var telnr = /^\+?[0-9 ()-]+[0-9]$/;
	if (!telnr.test(trimmedvalue)) {
		msg (errorlabel, "error", "Invalid *");
		return false;
	} else {
		msg (errorlabel, "", "");
	}
	var numdigits = 0;
	for (var j=0; j<trimmedvalue.length; j++) {
		if (trimmedvalue.charAt(j)>='0' && trimmedvalue.charAt(j)<='9') numdigits++;
	}
	if (numdigits<7) {
		msg (errorlabel, "error", "Invalid *");
		return false;
	} else {
		msg (errorlabel, "", "");
	}
	return true;
}

function validateEmail(formfield, errorlabel, required_boolean) {
	var stat = commonCheck (formfield, errorlabel, required_boolean);
	if (stat != proceed) {
		return stat;
	}
	var trimmedvalue = trim(formfield.value);
	var email = /^[^@]+@[^@.]+\.[^@]*\w\w$/
	if (!email.test(trimmedvalue)) {
		msg (errorlabel, "error", "Invalid *");
		return false;
	} else if (trimmedvalue.indexOf('..') != -1 || trimmedvalue.indexOf(' ') != -1 || trimmedvalue.indexOf(',') != -1 || trimmedvalue.indexOf(':') != -1 || trimmedvalue.indexOf(';') != -1 || trimmedvalue.indexOf('/') != -1 || trimmedvalue.indexOf('\\') != -1) {
		msg (errorlabel, "error", "Invalid *");
		return false;
	} else {
		msg (errorlabel, "", "");
	}
	return true;
}
