function SMValidateControls(){ var arrDeclarations = arguments[0], valid = true; for(var i=0; i0){ $t.init.apply($t, $args); }; }; SMFormDataDeclaration.prototype.init = function(){ var $args = arguments, $t = this, $m = ""; $t.name = $args[0]; $t.form = $args[1]; $t.required = $args[2]; $t.type = $args[3]; $t.fixedValueOperator = $args[4]; $t.fixedValue = $args[5]; $t.validFrom = $args[6]; $t.validTo = $args[7]; $t.regularExpression = $args[8]; $t.callExternalJS = $args[9]; $t.errorMessages = new Array(); // error messages for(var i=10; i<$args.length; i++){ $m = SX_uEsc($args[i]); $t.errorMessages[i-10] = $m.replace(/\\n/g, "\n"); }; }; SMFormDataDeclaration.prototype.isValid = function(){ var $t = this, $form = document.forms[$t.form], $elem = null, $valid = true, $oneSel = false, $val = null, $pat = null, $fV = null, $em = $t.errorMessages; if($form==null){ return(false); } else $elem = $form.elements[$t.name]; if($elem==null){ return(false); }; // required: if($t.required){ switch($elem.type){ case "checkbox": $valid = $elem.checked; break; case "select-one": case "select-multiple": for(var i=0; i<$elem.options.length; i++){ if($elem.options[i].selected&&$elem.options[i].value!=""){ $oneSel = true; break; }; }; $valid = $oneSel; break; default: $valid = ($elem.value!=""); break; }; if(!$valid){ if($em[0]) alert($em[0]); $elem.focus(); return(false); }; }; if($elem.type!="radio" && $elem.type!="checkbox" && $elem.type!="select-single" && $elem.type!="select-multiple"){ // type if($t.type!=0){ switch($t.type){ case 1: // text $pat = new RegExp("^[a-z]*$", "gi"); break; case 2: // numeric $pat = new RegExp("^\\d*$", "gi"); break; case 3: // email $pat = new RegExp("^[\\w][\\w\\.\\-]+@[\\w\\.\\-]+\\.[a-z]+$", "gi"); break; }; $valid = $pat.test($elem.value); if(!$valid){ if($em[1]) alert($em[1]); $elem.focus(); return(false); }; }; // fixed value if($t.fixedValueOperator!=""){ $val = $elem.value; $fV = $t.fixedValue; if($fV.indexOf("eval-js:")==0) $fV = eval($fV.substring(8)); switch($t.fixedValueOperator){ case "eq": // equal $valid = ($val==$fV); break; case "neq": // not equal $valid = ($val!=$fV); break; case "gt": // greater than $valid = (parseFloat($val) > parseFloat($fV)); break; case "gte": // greater or equal $valid = (parseFloat($val) >= parseFloat($fV)); break; case "lt": // less than $valid = (parseFloat($val) < parseFloat($fV)); break; case "lte": // less than or equal $valid = (parseFloat($val) <= parseFloat($fV)); break; }; if(!$valid){ if($em[2]) alert($em[2]); $elem.focus(); return(false); }; }; // valid from / to if($t.type!=3&&($t.validFrom!="0"||$t.validTo!="0")&&($t.validFrom!=""||$t.validTo!="")){ $val = $elem.value; if($t.type!=2) $val = $val.length; if($t.validFrom!="0") $valid = ($val >= parseFloat($t.validFrom)); if($t.validTo!="0") $valid = $valid && ($val <= parseFloat($t.validTo)); if(!$valid){ if($em[3]) alert($em[3]); $elem.focus(); return(false); }; }; // regular expression if($t.regularExpression!=""){ $pat = new RegExp($t.regularExpression, "gi"); // $elem.blur(); $val = $elem.value; $valid = $pat.test($val); if(!$valid){ if($em[4]) alert($em[4]); $elem.focus(); return(false); }; }; }; // external JS function if($t.callExternalJS!=""){ if(window[$t.callExternalJS]!=null){ $val = $elem.value; $valid = window[$t.callExternalJS]($val); if(!$valid){ if($em[5]) alert($em[5]); $elem.focus(); return(false); }; }; }; return(true); };