// Validation routines V2.92 (c) 2007 Oesterreichisches Verkehrsbuero AG
function _ValidateScriptEngine() {
if (typeof(ScriptEngine)!="function") return false;
if (ScriptEngine()!="JScript") return false;
if (ScriptEngineMajorVersion()<2) return false;
if (!document.body.outerHTML) return false;
return true}
function _ValidateErrName(txtInput) {
return (txtInput.errname==void 0)?txtInput.name:txtInput.errname}
function _ValidateLanguage(txtInput) {
var l=(txtInput.lang=="")?((txtInput.form)?txtInput.form.lang:""):txtInput.lang;
if (typeof l=="string") return l;
if (typeof l.value=="string") return l.value;
if (l.length==void 0) return "";
for (var i=0;i<l.length;i++) {
if (l[i].checked) return l[i].value}
return ""}
function _ValidateRequired(txtInput) {
if (txtInput.required==void 0) return true;
if (typeof(txtInput.required)=="string"){if (txtInput.required.toLowerCase()=="false") return true}
if ((typeof(txtInput.required)=="boolean") && (! txtInput.required)) return true;
switch (txtInput.type.substr(0,4)) {
case "text":
if ((txtInput.value=txtInput.value.trimAll())!="") return true;
txtInput.select();
break;
case "sele":
for (var i=0;i<txtInput.options.length;i++) {
with (txtInput.options[i]) {
if (selected) {
if (outerHTML.toLowerCase().indexOf("value=", 0)>=0) {
if (value.trimAll()!="") return true}
else {
if (text.trimAll()!="") return true}}}}
break;
case "chec":
case "radi":
var colElements=txtInput.form.elements(txtInput.name);
if (colElements.checked) return true;
for (var i=0;i<colElements.length;i++) {
if (colElements[i].checked) return true}
break;
default:
return true}
alert("\""+_ValidateErrName(txtInput)+"\" "+ValidateMessage("r", _ValidateLanguage(txtInput)));
txtInput.focus();
return false}
function _ValidateMaxSize(txtInput) {
var m=txtInput.maxsize;
if (m==void 0) return true;
m=Math.floor(Number(m));
if (m<=0) return true;
if (txtInput.type.substr(0,4)!="text") return true;
if (m>=txtInput.value.length) return true;
alert("\""+_ValidateErrName(txtInput)+"\" "+ValidateMessage("l", _ValidateLanguage(txtInput), m));
txtInput.focus();
return false}
function _ValidateMaxCount(txtInput) {
var n=txtInput.maxcount;
if (n==void 0) return true;
var m=n=Math.floor(Number(n));
if (n<=0) return true;
switch (txtInput.type.substr(0,8)) {
case "select-m":
for (var i=0;i<txtInput.options.length;i++) {
if (txtInput.options[i].selected) n--}
break;
case "checkbox":
var colElements=txtInput.form.elements(txtInput.name);
if (colElements.checked) n--;
for (var i=0;i<colElements.length;i++) {
if (colElements[i].checked) n--}
break}
if (n>=0) return true;
alert("\""+_ValidateErrName(txtInput)+"\" "+ValidateMessage("x", _ValidateLanguage(txtInput), m));
txtInput.focus();
return false}
function ValidateForm(frmForm){
if (! _ValidateScriptEngine()) return true;
var colElements=frmForm.elements;
for (var i=0;i<colElements.length;i++) {
if (! ValidateField(colElements[i])) return false}
return true}
function ValidateField(txtInput) {
if (! _ValidateScriptEngine()) return true;
if (! _ValidateRequired(txtInput)) return false;
if (! _ValidateMaxSize(txtInput)) return false;
if (! _ValidateMaxCount(txtInput)) return false;
if (txtInput.validate==void 0) return true;
if ((txtInput.value=txtInput.value.trimAll())=="") return true;
var lang=_ValidateLanguage(txtInput);
var strerr;
switch (txtInput.validate.toLowerCase()) {
case "number":
case "money":
case "date":
return ValidateInterval(txtInput);
case "hms":
var szInput=txtInput.value.toHMSString();
if (szInput!="") {txtInput.value=szInput;return true}
strerr=ValidateMessage("3", lang);
break;
case "hm":
var szInput=txtInput.value.toHMString();
if (szInput!="") {txtInput.value=szInput;return true}
strerr=ValidateMessage("2", lang);
break;
case "postcode":
if (txtInput.value.isPostCode()) return true;
strerr=ValidateMessage("p", lang);
break;
case "phone":
if (txtInput.value.isTelephone()) return true;
strerr=ValidateMessage("t", lang);
break;
case "email":
if (txtInput.value.isRFC821()) return true;
strerr=ValidateMessage("e", lang);
break;
default:
return true}
alert("\""+_ValidateErrName(txtInput)+"\" "+strerr);
txtInput.select();
txtInput.focus();
return false}
function ValidateInterval(txtInput, loval, hival) {
if (! _ValidateScriptEngine()) return true;
if (! _ValidateRequired(txtInput)) return false;
if (txtInput.validate==void 0) return true;
if ((txtInput.value=txtInput.value.trimAll())=="") return true;
var lang=_ValidateLanguage(txtInput);
var strerr;
var flerr=0;
if (loval==void 0) loval=(txtInput.loval==void 0)?"":txtInput.loval;
if (hival==void 0) hival=(txtInput.hival==void 0)?"":txtInput.hival;
loval=loval.toString().trimAll();
hival=hival.toString().trimAll();
switch (txtInput.validate.toLowerCase()) {
case "number":
var szInput=txtInput.value;
if (szInput.isInteger()) {
txtInput.value=szInput=Number(szInput);
if (loval.isInteger()){flerr += 1;if (Number(loval)>szInput) flerr += 1}
if (hival.isInteger()){flerr += 3;if (Number(hival)<szInput) flerr += 3}}
else {
flerr=-1;strerr=ValidateMessage("n", lang)}
break;
case "money":
var szInput=txtInput.value.toMoneyString();
if (szInput!="") {
txtInput.value=szInput;
szInput=szInput.valueOfMoney();
loval=loval.toMoneyString();
hival=hival.toMoneyString();
if (loval!=""){flerr += 1;if (loval.valueOfMoney()>szInput) flerr += 1}
if (hival!=""){flerr += 3;if (hival.valueOfMoney()<szInput) flerr += 3}}
else {
flerr=-1;strerr=ValidateMessage("m", lang)}
break;
case "date":
var szInput=txtInput.value.toDateString();
if (szInput!="") {
txtInput.value=szInput;
szInput=szInput.valueOfDate();
loval=loval.toDateString();
hival=hival.toDateString();
if (loval!=""){flerr += 1;if (loval.valueOfDate()>szInput) flerr += 1}
if (hival!=""){flerr += 3;if (hival.valueOfDate()<szInput) flerr += 3}}
else {
flerr=-1;strerr=ValidateMessage("d", lang)}
break;
default:
return true}
switch (flerr) {
case -1:
break;
case 2:
strerr=ValidateMessage(">", lang, loval);
break;
case 6:
strerr=ValidateMessage("<", lang, hival);
break;
case 5:
case 7:
strerr=ValidateMessage("|", lang, loval, hival);
break;
default:
return true}
alert("\""+_ValidateErrName(txtInput)+"\" "+strerr);
txtInput.select();
txtInput.focus();
return false}
