Another batch
authorMiguel de Icaza <miguel@gnome.org>
Thu, 12 Oct 2006 19:03:06 +0000 (19:03 -0000)
committerMiguel de Icaza <miguel@gnome.org>
Thu, 12 Oct 2006 19:03:06 +0000 (19:03 -0000)
svn path=/trunk/mcs/; revision=66633

mcs/class/System.Web/resources/MaintainScrollPositionOnPostBack.js
mcs/class/System.Web/resources/WebUIValidation_2.0.js

index daa95aa2b573a27401d5b52d40ee076d05b51a4e..8be01af6718cf45a7616c3f8b69d31c96f1689e5 100644 (file)
@@ -1,47 +1,47 @@
-function WebForm_SaveScrollPositionSubmit() {\r
-    theForm.elements['__SCROLLPOSITIONX'].value = WebForm_GetScrollX();\r
-    theForm.elements['__SCROLLPOSITIONY'].value = WebForm_GetScrollY();\r
-    if ((typeof(this.oldSubmit) != "undefined") && (this.oldSubmit != null)) {\r
-        return this.oldSubmit();\r
-    }\r
-    return true;\r
-}\r
-function WebForm_SaveScrollPositionOnSubmit() {\r
-    theForm.elements['__SCROLLPOSITIONX'].value = WebForm_GetScrollX();\r
-    theForm.elements['__SCROLLPOSITIONY'].value = WebForm_GetScrollY();\r
-    if ((typeof(this.oldOnSubmit) != "undefined") && (this.oldOnSubmit != null)) {\r
-        return this.oldOnSubmit();\r
-    }\r
-    return true;\r
-}\r
-function WebForm_RestoreScrollPosition() {\r
-    window.scrollTo(theForm.elements['__SCROLLPOSITIONX'].value, theForm.elements['__SCROLLPOSITIONY'].value);\r
-    if ((typeof(theForm.oldOnLoad) != "undefined") && (theForm.oldOnLoad != null)) {\r
-        return theForm.oldOnLoad();\r
-    }\r
-    return true;\r
-}\r
-function WebForm_GetScrollX() {\r
-    if (window.pageXOffset) {\r
-        return window.pageXOffset;\r
-    }\r
-    else if (document.documentElement && document.documentElement.scrollLeft) {\r
-        return document.documentElement.scrollLeft;\r
-    }\r
-    else if (document.body) {\r
-        return document.body.scrollLeft;\r
-    }\r
-    return 0;\r
-}\r
-function WebForm_GetScrollY() {\r
-    if (window.pageYOffset) {\r
-        return window.pageYOffset;\r
-    }\r
-    else if (document.documentElement && document.documentElement.scrollTop) {\r
-        return document.documentElement.scrollTop;\r
-    }\r
-    else if (document.body) {\r
-        return document.body.scrollTop;\r
-    }\r
-    return 0;\r
-}\r
+function WebForm_SaveScrollPositionSubmit() {
+    theForm.elements['__SCROLLPOSITIONX'].value = WebForm_GetScrollX();
+    theForm.elements['__SCROLLPOSITIONY'].value = WebForm_GetScrollY();
+    if ((typeof(this.oldSubmit) != "undefined") && (this.oldSubmit != null)) {
+        return this.oldSubmit();
+    }
+    return true;
+}
+function WebForm_SaveScrollPositionOnSubmit() {
+    theForm.elements['__SCROLLPOSITIONX'].value = WebForm_GetScrollX();
+    theForm.elements['__SCROLLPOSITIONY'].value = WebForm_GetScrollY();
+    if ((typeof(this.oldOnSubmit) != "undefined") && (this.oldOnSubmit != null)) {
+        return this.oldOnSubmit();
+    }
+    return true;
+}
+function WebForm_RestoreScrollPosition() {
+    window.scrollTo(theForm.elements['__SCROLLPOSITIONX'].value, theForm.elements['__SCROLLPOSITIONY'].value);
+    if ((typeof(theForm.oldOnLoad) != "undefined") && (theForm.oldOnLoad != null)) {
+        return theForm.oldOnLoad();
+    }
+    return true;
+}
+function WebForm_GetScrollX() {
+    if (window.pageXOffset) {
+        return window.pageXOffset;
+    }
+    else if (document.documentElement && document.documentElement.scrollLeft) {
+        return document.documentElement.scrollLeft;
+    }
+    else if (document.body) {
+        return document.body.scrollLeft;
+    }
+    return 0;
+}
+function WebForm_GetScrollY() {
+    if (window.pageYOffset) {
+        return window.pageYOffset;
+    }
+    else if (document.documentElement && document.documentElement.scrollTop) {
+        return document.documentElement.scrollTop;
+    }
+    else if (document.body) {
+        return document.body.scrollTop;
+    }
+    return 0;
+}
index c7cc1bf1fa7859714d130bcfb1d0ff74c3fb4002..6884e8b2418a517304f14f89259bfe4d90a3cb5c 100644 (file)
-/*\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;
+}