-/*\r
- * WebUIValidation.js\r
- *\r
- * Authors:\r
- * Chris Toshok (toshok@ximian.com)\r
- *\r
- * (c) 2005 Novell, Inc. (http://www.novell.com)\r
- *\r
- * Permission is hereby granted, free of charge, to any person obtaining\r
- * a copy of this software and associated documentation files (the\r
- * "Software"), to deal in the Software without restriction, including\r
- * without limitation the rights to use, copy, modify, merge, publish,\r
- * distribute, sublicense, and/or sell copies of the Software, and to\r
- * permit persons to whom the Software is furnished to do so, subject to\r
- * the following conditions:\r
- *\r
- * The above copyright notice and this permission notice shall be\r
- * included in all copies or substantial portions of the Software.\r
- *\r
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\r
- * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\r
- * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
- */\r
-\r
-var have_validation_summaries = false;\r
-\r
-function ValidatorOnLoad ()\r
-{\r
- if (typeof (Page_ValidationSummaries) != 'undefined' && Page_ValidationSummaries != null) {\r
- have_validation_summaries = true;\r
- for (var v in Page_ValidationSummaries) {\r
- var vs = Page_ValidationSummaries [v];\r
- if (vs.getAttribute ("validationgroup") == null)\r
- vs.setAttribute ("validationgroup", "");\r
- }\r
- }\r
-\r
- for (var v in Page_Validators) {\r
- var vo = Page_Validators [v];\r
- var funcname = vo.getAttribute ("evaluationfunction");\r
-\r
- func = this[funcname];\r
-\r
- vo["evaluationfunction"] = func;\r
-\r
- if (vo.getAttribute ("isvalid") == null)\r
- vo.setAttribute ("isvalid", "true");\r
-\r
- if (vo.getAttribute ("enabled") == null)\r
- vo.setAttribute ("enabled", "true");\r
-\r
- if (vo.getAttribute ("validationgroup") == null)\r
- vo.setAttribute ("validationgroup", "");\r
-\r
- func = vo ["evaluationfunction"];\r
- }\r
-\r
- Page_ValidationActive = true;\r
-}\r
-\r
-var validation_result = true;\r
-\r
-function ValidationSummaryOnSubmit (group)\r
-{\r
- /* handle validation summaries here */\r
- if (validation_result == false && have_validation_summaries) {\r
-\r
- for (var vi in Page_ValidationSummaries) {\r
- var vs = Page_ValidationSummaries[vi];\r
- \r
- if(IsValidationGroupMatch(vs, group)) {\r
-\r
- var header = vs.getAttribute ("headertext");\r
- if (header == null)\r
- header = "";\r
-\r
- attr = vs.getAttribute ("showsummary");\r
- if (attr == null || attr.toLowerCase() == "true") {\r
- var displaymode = vs.getAttribute ("displaymode");\r
- if (displaymode == null) displaymode = "Bulleted";\r
-\r
- var html = "";\r
-\r
- if (displaymode == "List") {\r
- list_pre = "";\r
- list_post = "";\r
- item_pre = "";\r
- item_post = "<br>";\r
- }\r
- else if (displaymode == "SingleParagraph") {\r
- list_pre = "";\r
- list_post = "<br>";\r
- item_pre = "";\r
- item_post = " ";\r
- }\r
- else {\r
- list_pre = "<ul>";\r
- list_post = "</ul>";\r
- item_pre = "\n<li>";\r
- item_post = "</li>";\r
- }\r
-\r
- html += header;\r
- html += list_pre;\r
- for (var v in Page_Validators) {\r
- var vo = Page_Validators [v];\r
-\r
- if (vo.getAttribute ("isvalid").toLowerCase() == "false") {\r
- var text = ValidatorGetErrorMessage (vo);\r
- if (text != null && text != "") {\r
- html += item_pre + text + item_post;\r
- }\r
- }\r
- }\r
- html += list_post;\r
-\r
- vs.innerHTML = html;\r
- vs.style.display = "block";\r
- }\r
-\r
- attr = vs.getAttribute ("showmessagebox");\r
- if (attr != null && attr.toLowerCase() == "true") {\r
- var v_contents = "";\r
-\r
- for (var v in Page_Validators) {\r
- var vo = Page_Validators [v];\r
-\r
- if (vo.getAttribute ("isvalid").toLowerCase() == "false") {\r
- var text = ValidatorGetErrorMessage (vo);\r
- if (text != null && text != "") {\r
- v_contents += "-" + text + "\n";\r
- }\r
- }\r
- }\r
-\r
- var alert_header = header;\r
- if (alert_header != "")\r
- alert_header += "\n";\r
- summary_contents = alert_header + v_contents;\r
- alert (summary_contents);\r
- }\r
- }\r
- }\r
- }\r
-}\r
-\r
-function ValidatorCommonOnSubmit ()\r
-{\r
- rv = validation_result;\r
- validation_result = true;\r
- return rv;\r
-}\r
-\r
-function ValidatorGetValue (controlname)\r
-{\r
- var el = GetElement (controlname);\r
-\r
- /* if the element has a 'value' attribute, return it */\r
- if (typeof (el.value) != 'undefined' && el.value != null) {\r
- return el.value;\r
- }\r
-\r
- /* if it's a select, loop over the options looking for the\r
- * selected one. */\r
- if (typeof (el.selectedIndex) != 'undefined') {\r
- return el.options[el.selectedIndex].value;\r
- }\r
-}\r
-\r
-function ValidatorTrim (s)\r
-{\r
- s = s.replace (/^\s+/g, "");\r
- s = s.replace (/\s+$/g, "");\r
-\r
- return s;\r
-}\r
-\r
-function Page_ClientValidate(group)\r
-{\r
- validation_result = true;\r
-\r
- /* clear out the existing text from all our summaries */\r
- if (have_validation_summaries) {\r
- for (var vi in Page_ValidationSummaries) {\r
- var vs = Page_ValidationSummaries[vi];\r
- vs.style.display = "none";\r
- vs.innerHTML = "";\r
- }\r
- }\r
-\r
- for (var v in Page_Validators) {\r
- var vo = Page_Validators [v];\r
- var evalfunc = vo["evaluationfunction"];\r
- var result = false;\r
-\r
- if (vo.getAttribute ("enabled").toLowerCase() == "false" || !IsValidationGroupMatch(vo, group)) {\r
- result = true;\r
- ValidatorSucceeded (vo);\r
- }\r
- else {\r
- result = evalfunc (vo);\r
- }\r
-\r
- if (!result)\r
- validation_result = false;\r
-\r
- vo.setAttribute("isvalid", result ? "true" : "false");\r
- }\r
- ValidationSummaryOnSubmit(group);\r
- return validation_result;\r
-}\r
-\r
-function IsValidationGroupMatch(vo, group) {\r
- var valGroup = vo.getAttribute ("validationgroup");\r
- if ((typeof(group) == "undefined") || (group == null)) {\r
- return (valGroup == "");\r
- }\r
- return (valGroup == group);\r
-}\r
-\r
-/*******************/\r
-/* type converters */\r
-\r
-function ToInteger (s)\r
-{\r
- if ((v = parseInt(s, 10)) != s - 0)\r
- return null;\r
- else\r
- return v;\r
-}\r
-\r
-function ToString (s)\r
-{\r
- return s;\r
-}\r
-\r
-function ToDouble (s)\r
-{\r
- if ((v = parseFloat(s)) != s - 0)\r
- return null;\r
- else\r
- return v;\r
-}\r
-\r
-function ToDate (s)\r
-{\r
- /* NYI */\r
- return null;\r
-}\r
-\r
-function ToCurrency (s)\r
-{\r
- /* NYI */\r
- return null;\r
-}\r
-\r
-/*******************/\r
-/* validators */\r
-\r
-function CompareValidatorEvaluateIsValid (validator)\r
-{\r
- var ControlToCompare = validator.getAttribute ("controltocompare");\r
- var ValueToCompare = validator.getAttribute ("valuetocompare");\r
- var Operator = validator.getAttribute ("operator").toLowerCase();\r
- var ControlToValidate = validator.getAttribute ("controltovalidate");\r
- var DataType = validator.getAttribute ("datatype");\r
-\r
- var ctrl_value = ValidatorTrim (ValidatorGetValue (ControlToValidate));\r
- var compare = (ControlToCompare != null && ControlToCompare != "") ? ValidatorTrim (ValidatorGetValue (ControlToCompare)) : ValueToCompare;\r
-\r
- var left = Convert (ctrl_value, DataType);\r
- if (left == null) {\r
- ValidatorFailed (validator);\r
- return false;\r
- }\r
- \r
- var right = Convert (compare, DataType);\r
- if (right == null) {\r
- ValidatorSucceeded (validator);\r
- return true;\r
- }\r
-\r
- var result = false;\r
- \r
- if (Operator == "equal") {\r
- result = (left == right);\r
- }\r
- else if (Operator == "notequal") {\r
- result = (left != right);\r
- }\r
- else if (Operator == "lessthan") {\r
- result = (left < right);\r
- }\r
- else if (Operator == "lessthanequal") {\r
- result = (left <= right);\r
- }\r
- else if (Operator == "greaterthan") {\r
- result = (left > right);\r
- }\r
- else if (Operator == "greaterthanequal") {\r
- result = (left >= right);\r
- }\r
-\r
- if (result == false) {\r
- ValidatorFailed (validator);\r
- return false;\r
- }\r
- else {\r
- ValidatorSucceeded (validator);\r
- return true;\r
- }\r
-}\r
-\r
-function RangeValidatorEvaluateIsValid (validator)\r
-{\r
- var MinimumValue = parseInt (validator.getAttribute ("minimumvalue"));\r
- var MaximumValue = parseInt (validator.getAttribute ("maximumvalue"));\r
- var ControlToValidate = validator.getAttribute ("controltovalidate");\r
- var DataType = validator.getAttribute ("datatype");\r
-\r
- var ctrl_value = ValidatorTrim (ValidatorGetValue (ControlToValidate));\r
-\r
- if (ctrl_value == "") {\r
- ValidatorSucceeded (validator);\r
- return true;\r
- }\r
-\r
- var val = Convert (ctrl_value, DataType);\r
- if (val == null || val < MinimumValue || val > MaximumValue) {\r
- ValidatorFailed (validator);\r
- return false;\r
- }\r
- else {\r
- ValidatorSucceeded (validator);\r
- return true;\r
- }\r
-}\r
-\r
-function RegularExpressionValidatorEvaluateIsValid (validator)\r
-{\r
- var ValidationExpression = validator.getAttribute ("validationexpression");\r
- var ControlToValidate = validator.getAttribute ("controltovalidate");\r
-\r
- var ctrl_value = ValidatorTrim (ValidatorGetValue (ControlToValidate));\r
-\r
- if (ctrl_value == "") {\r
- ValidatorSucceeded (validator);\r
- return true;\r
- }\r
-\r
- var r = new RegExp (ValidationExpression);\r
- match = r.exec (ctrl_value);\r
- if (match == null || match[0] == "") {\r
- ValidatorFailed (validator);\r
- return false;\r
- }\r
- else {\r
- ValidatorSucceeded (validator);\r
- return true;\r
- }\r
-}\r
-\r
-function RequiredFieldValidatorEvaluateIsValid (validator)\r
-{\r
- var InitialValue = validator.getAttribute ("initialvalue");\r
- var ControlToValidate = validator.getAttribute ("controltovalidate");\r
-\r
- var ctrl_value = ValidatorTrim (ValidatorGetValue (ControlToValidate));\r
-\r
- if (ctrl_value == ValidatorTrim (InitialValue)) {\r
- ValidatorFailed (validator);\r
- return false;\r
- }\r
- else {\r
- ValidatorSucceeded (validator);\r
- return true;\r
- }\r
-}\r
-\r
-function CustomValidatorEvaluateIsValid (validator)\r
-{\r
- var InitialValue = validator.getAttribute ("initialvalue");\r
- var ControlToValidate = validator.getAttribute ("controltovalidate");\r
-\r
- if (!ControlToValidate) {\r
- ValidatorSucceeded (validator);\r
- return true;\r
- }\r
-\r
- var evaluationfunc = validator.getAttribute ("clientvalidationfunction");\r
-\r
- var ctrl_value = ValidatorTrim (ValidatorGetValue (ControlToValidate));\r
-\r
- var result = true;\r
-\r
- if (evaluationfunc && evaluationfunc != "") {\r
- args = {Value:ctrl_value, IsValid:false};\r
- eval (evaluationfunc + "(validator, args)");\r
- result = args.IsValid;\r
- }\r
-\r
- if (result) {\r
- ValidatorSucceeded (validator);\r
- return true;\r
- }\r
- else {\r
- ValidatorFailed (validator);\r
- return false;\r
- }\r
-}\r
-\r
-/*********************/\r
-/* utility functions */\r
-\r
-function Convert (s, ty)\r
-{\r
- var cvt = this ["To" + ty];\r
- if (typeof (cvt) == 'function')\r
- return cvt (s);\r
- else\r
- return null;\r
-}\r
-\r
-function ValidatorUpdateDisplay (v, valid)\r
-{\r
- var display = v.getAttribute ("display");\r
-\r
- /* for validators that aren't displayed, do nothing */\r
- if (display == "None") {\r
- return;\r
- }\r
-\r
- v.style.visibility = (valid ? "hidden" : "visible");\r
- if (display == "Dynamic") {\r
- v.style.display = (valid ? "none" : "inline");\r
- }\r
-}\r
-\r
-function ValidatorGetErrorMessage (v)\r
-{\r
- var text = v.getAttribute ("errormessage");\r
- if (text == null || text == "")\r
- text = v.getAttribute ("text"); \r
- if (text == null)\r
- text = "";\r
- return text;\r
-}\r
-\r
-function ValidatorGetText (v)\r
-{\r
- var text = v.getAttribute ("text"); \r
- if (text == null || text == "")\r
- text = v.getAttribute ("errormessage");\r
- if (text == null)\r
- text = "";\r
- return text;\r
-}\r
-\r
-function ValidatorFailed (v)\r
-{\r
- var text = ValidatorGetText (v);\r
- v.innerHTML = text;\r
-\r
- ValidatorUpdateDisplay (v, false);\r
-}\r
-\r
-function ValidatorSucceeded (v)\r
-{\r
- v.innerHTML = "";\r
-\r
- ValidatorUpdateDisplay (v, true);\r
-}\r
-\r
-function GetElement(id)\r
-{\r
- var x = document.getElementById ? document.getElementById (id) :\r
- ((document.all) ? document.all [id] : null);\r
- return x;\r
-}\r
+/*
+ * WebUIValidation.js
+ *
+ * Authors:
+ * Chris Toshok (toshok@ximian.com)
+ *
+ * (c) 2005 Novell, Inc. (http://www.novell.com)
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+var have_validation_summaries = false;
+
+function ValidatorOnLoad ()
+{
+ if (typeof (Page_ValidationSummaries) != 'undefined' && Page_ValidationSummaries != null) {
+ have_validation_summaries = true;
+ for (var v in Page_ValidationSummaries) {
+ var vs = Page_ValidationSummaries [v];
+ if (vs.getAttribute ("validationgroup") == null)
+ vs.setAttribute ("validationgroup", "");
+ }
+ }
+
+ for (var v in Page_Validators) {
+ var vo = Page_Validators [v];
+ var funcname = vo.getAttribute ("evaluationfunction");
+
+ func = this[funcname];
+
+ vo["evaluationfunction"] = func;
+
+ if (vo.getAttribute ("isvalid") == null)
+ vo.setAttribute ("isvalid", "true");
+
+ if (vo.getAttribute ("enabled") == null)
+ vo.setAttribute ("enabled", "true");
+
+ if (vo.getAttribute ("validationgroup") == null)
+ vo.setAttribute ("validationgroup", "");
+
+ func = vo ["evaluationfunction"];
+ }
+
+ Page_ValidationActive = true;
+}
+
+var validation_result = true;
+
+function ValidationSummaryOnSubmit (group)
+{
+ /* handle validation summaries here */
+ if (validation_result == false && have_validation_summaries) {
+
+ for (var vi in Page_ValidationSummaries) {
+ var vs = Page_ValidationSummaries[vi];
+
+ if(IsValidationGroupMatch(vs, group)) {
+
+ var header = vs.getAttribute ("headertext");
+ if (header == null)
+ header = "";
+
+ attr = vs.getAttribute ("showsummary");
+ if (attr == null || attr.toLowerCase() == "true") {
+ var displaymode = vs.getAttribute ("displaymode");
+ if (displaymode == null) displaymode = "Bulleted";
+
+ var html = "";
+
+ if (displaymode == "List") {
+ list_pre = "";
+ list_post = "";
+ item_pre = "";
+ item_post = "<br>";
+ }
+ else if (displaymode == "SingleParagraph") {
+ list_pre = "";
+ list_post = "<br>";
+ item_pre = "";
+ item_post = " ";
+ }
+ else {
+ list_pre = "<ul>";
+ list_post = "</ul>";
+ item_pre = "\n<li>";
+ item_post = "</li>";
+ }
+
+ html += header;
+ html += list_pre;
+ for (var v in Page_Validators) {
+ var vo = Page_Validators [v];
+
+ if (vo.getAttribute ("isvalid").toLowerCase() == "false") {
+ var text = ValidatorGetErrorMessage (vo);
+ if (text != null && text != "") {
+ html += item_pre + text + item_post;
+ }
+ }
+ }
+ html += list_post;
+
+ vs.innerHTML = html;
+ vs.style.display = "block";
+ }
+
+ attr = vs.getAttribute ("showmessagebox");
+ if (attr != null && attr.toLowerCase() == "true") {
+ var v_contents = "";
+
+ for (var v in Page_Validators) {
+ var vo = Page_Validators [v];
+
+ if (vo.getAttribute ("isvalid").toLowerCase() == "false") {
+ var text = ValidatorGetErrorMessage (vo);
+ if (text != null && text != "") {
+ v_contents += "-" + text + "\n";
+ }
+ }
+ }
+
+ var alert_header = header;
+ if (alert_header != "")
+ alert_header += "\n";
+ summary_contents = alert_header + v_contents;
+ alert (summary_contents);
+ }
+ }
+ }
+ }
+}
+
+function ValidatorCommonOnSubmit ()
+{
+ rv = validation_result;
+ validation_result = true;
+ return rv;
+}
+
+function ValidatorGetValue (controlname)
+{
+ var el = GetElement (controlname);
+
+ /* if the element has a 'value' attribute, return it */
+ if (typeof (el.value) != 'undefined' && el.value != null) {
+ return el.value;
+ }
+
+ /* if it's a select, loop over the options looking for the
+ * selected one. */
+ if (typeof (el.selectedIndex) != 'undefined') {
+ return el.options[el.selectedIndex].value;
+ }
+}
+
+function ValidatorTrim (s)
+{
+ s = s.replace (/^\s+/g, "");
+ s = s.replace (/\s+$/g, "");
+
+ return s;
+}
+
+function Page_ClientValidate(group)
+{
+ validation_result = true;
+
+ /* clear out the existing text from all our summaries */
+ if (have_validation_summaries) {
+ for (var vi in Page_ValidationSummaries) {
+ var vs = Page_ValidationSummaries[vi];
+ vs.style.display = "none";
+ vs.innerHTML = "";
+ }
+ }
+
+ for (var v in Page_Validators) {
+ var vo = Page_Validators [v];
+ var evalfunc = vo["evaluationfunction"];
+ var result = false;
+
+ if (vo.getAttribute ("enabled").toLowerCase() == "false" || !IsValidationGroupMatch(vo, group)) {
+ result = true;
+ ValidatorSucceeded (vo);
+ }
+ else {
+ result = evalfunc (vo);
+ }
+
+ if (!result)
+ validation_result = false;
+
+ vo.setAttribute("isvalid", result ? "true" : "false");
+ }
+ ValidationSummaryOnSubmit(group);
+ return validation_result;
+}
+
+function IsValidationGroupMatch(vo, group) {
+ var valGroup = vo.getAttribute ("validationgroup");
+ if ((typeof(group) == "undefined") || (group == null)) {
+ return (valGroup == "");
+ }
+ return (valGroup == group);
+}
+
+/*******************/
+/* type converters */
+
+function ToInteger (s)
+{
+ if ((v = parseInt(s, 10)) != s - 0)
+ return null;
+ else
+ return v;
+}
+
+function ToString (s)
+{
+ return s;
+}
+
+function ToDouble (s)
+{
+ if ((v = parseFloat(s)) != s - 0)
+ return null;
+ else
+ return v;
+}
+
+function ToDate (s)
+{
+ /* NYI */
+ return null;
+}
+
+function ToCurrency (s)
+{
+ /* NYI */
+ return null;
+}
+
+/*******************/
+/* validators */
+
+function CompareValidatorEvaluateIsValid (validator)
+{
+ var ControlToCompare = validator.getAttribute ("controltocompare");
+ var ValueToCompare = validator.getAttribute ("valuetocompare");
+ var Operator = validator.getAttribute ("operator").toLowerCase();
+ var ControlToValidate = validator.getAttribute ("controltovalidate");
+ var DataType = validator.getAttribute ("datatype");
+
+ var ctrl_value = ValidatorTrim (ValidatorGetValue (ControlToValidate));
+ var compare = (ControlToCompare != null && ControlToCompare != "") ? ValidatorTrim (ValidatorGetValue (ControlToCompare)) : ValueToCompare;
+
+ var left = Convert (ctrl_value, DataType);
+ if (left == null) {
+ ValidatorFailed (validator);
+ return false;
+ }
+
+ var right = Convert (compare, DataType);
+ if (right == null) {
+ ValidatorSucceeded (validator);
+ return true;
+ }
+
+ var result = false;
+
+ if (Operator == "equal") {
+ result = (left == right);
+ }
+ else if (Operator == "notequal") {
+ result = (left != right);
+ }
+ else if (Operator == "lessthan") {
+ result = (left < right);
+ }
+ else if (Operator == "lessthanequal") {
+ result = (left <= right);
+ }
+ else if (Operator == "greaterthan") {
+ result = (left > right);
+ }
+ else if (Operator == "greaterthanequal") {
+ result = (left >= right);
+ }
+
+ if (result == false) {
+ ValidatorFailed (validator);
+ return false;
+ }
+ else {
+ ValidatorSucceeded (validator);
+ return true;
+ }
+}
+
+function RangeValidatorEvaluateIsValid (validator)
+{
+ var MinimumValue = parseInt (validator.getAttribute ("minimumvalue"));
+ var MaximumValue = parseInt (validator.getAttribute ("maximumvalue"));
+ var ControlToValidate = validator.getAttribute ("controltovalidate");
+ var DataType = validator.getAttribute ("datatype");
+
+ var ctrl_value = ValidatorTrim (ValidatorGetValue (ControlToValidate));
+
+ if (ctrl_value == "") {
+ ValidatorSucceeded (validator);
+ return true;
+ }
+
+ var val = Convert (ctrl_value, DataType);
+ if (val == null || val < MinimumValue || val > MaximumValue) {
+ ValidatorFailed (validator);
+ return false;
+ }
+ else {
+ ValidatorSucceeded (validator);
+ return true;
+ }
+}
+
+function RegularExpressionValidatorEvaluateIsValid (validator)
+{
+ var ValidationExpression = validator.getAttribute ("validationexpression");
+ var ControlToValidate = validator.getAttribute ("controltovalidate");
+
+ var ctrl_value = ValidatorTrim (ValidatorGetValue (ControlToValidate));
+
+ if (ctrl_value == "") {
+ ValidatorSucceeded (validator);
+ return true;
+ }
+
+ var r = new RegExp (ValidationExpression);
+ match = r.exec (ctrl_value);
+ if (match == null || match[0] == "") {
+ ValidatorFailed (validator);
+ return false;
+ }
+ else {
+ ValidatorSucceeded (validator);
+ return true;
+ }
+}
+
+function RequiredFieldValidatorEvaluateIsValid (validator)
+{
+ var InitialValue = validator.getAttribute ("initialvalue");
+ var ControlToValidate = validator.getAttribute ("controltovalidate");
+
+ var ctrl_value = ValidatorTrim (ValidatorGetValue (ControlToValidate));
+
+ if (ctrl_value == ValidatorTrim (InitialValue)) {
+ ValidatorFailed (validator);
+ return false;
+ }
+ else {
+ ValidatorSucceeded (validator);
+ return true;
+ }
+}
+
+function CustomValidatorEvaluateIsValid (validator)
+{
+ var InitialValue = validator.getAttribute ("initialvalue");
+ var ControlToValidate = validator.getAttribute ("controltovalidate");
+
+ if (!ControlToValidate) {
+ ValidatorSucceeded (validator);
+ return true;
+ }
+
+ var evaluationfunc = validator.getAttribute ("clientvalidationfunction");
+
+ var ctrl_value = ValidatorTrim (ValidatorGetValue (ControlToValidate));
+
+ var result = true;
+
+ if (evaluationfunc && evaluationfunc != "") {
+ args = {Value:ctrl_value, IsValid:false};
+ eval (evaluationfunc + "(validator, args)");
+ result = args.IsValid;
+ }
+
+ if (result) {
+ ValidatorSucceeded (validator);
+ return true;
+ }
+ else {
+ ValidatorFailed (validator);
+ return false;
+ }
+}
+
+/*********************/
+/* utility functions */
+
+function Convert (s, ty)
+{
+ var cvt = this ["To" + ty];
+ if (typeof (cvt) == 'function')
+ return cvt (s);
+ else
+ return null;
+}
+
+function ValidatorUpdateDisplay (v, valid)
+{
+ var display = v.getAttribute ("display");
+
+ /* for validators that aren't displayed, do nothing */
+ if (display == "None") {
+ return;
+ }
+
+ v.style.visibility = (valid ? "hidden" : "visible");
+ if (display == "Dynamic") {
+ v.style.display = (valid ? "none" : "inline");
+ }
+}
+
+function ValidatorGetErrorMessage (v)
+{
+ var text = v.getAttribute ("errormessage");
+ if (text == null || text == "")
+ text = v.getAttribute ("text");
+ if (text == null)
+ text = "";
+ return text;
+}
+
+function ValidatorGetText (v)
+{
+ var text = v.getAttribute ("text");
+ if (text == null || text == "")
+ text = v.getAttribute ("errormessage");
+ if (text == null)
+ text = "";
+ return text;
+}
+
+function ValidatorFailed (v)
+{
+ var text = ValidatorGetText (v);
+ v.innerHTML = text;
+
+ ValidatorUpdateDisplay (v, false);
+}
+
+function ValidatorSucceeded (v)
+{
+ v.innerHTML = "";
+
+ ValidatorUpdateDisplay (v, true);
+}
+
+function GetElement(id)
+{
+ var x = document.getElementById ? document.getElementById (id) :
+ ((document.all) ? document.all [id] : null);
+ return x;
+}