var Page_ValidationVer = "125"; var Page_IsValid = true; var Page_BlockSubmit = false; var Page_InvalidControlToBeFocused = null; var Page_TextTypes = /^(text|password|file|search|tel|url|email|number|range|color|datetime|date|month|week|time|datetime-local)$/i; function ValidatorUpdateDisplay(val) { if (typeof (val.display) == "string") { if (val.display == "None") { return; } if (val.display == "Dynamic") { val.style.display = val.isvalid ? "none" : "inline"; return; } } if ((navigator.userAgent.indexOf("Mac") > -1) && (navigator.userAgent.indexOf("MSIE") > -1)) { val.style.display = "inline"; } val.style.visibility = val.isvalid ? "hidden" : "visible"; } function ValidatorUpdateIsValid() { Page_IsValid = AllValidatorsValid(Page_Validators); } function AllValidatorsValid(validators) { if ((typeof (validators) != "undefined") && (validators != null)) { var i; for (i = 0; i < validators.length; i++) { if (!validators[i].isvalid) { return false; } } } return true; } function ValidatorHookupControlID(controlID, val) { if (typeof (controlID) != "string") { return; } var ctrl = document.getElementById(controlID); if ((typeof (ctrl) != "undefined") && (ctrl != null)) { ValidatorHookupControl(ctrl, val); } else { val.isvalid = true; val.enabled = false; } } function ValidatorHookupControl(control, val) { if (typeof (control.tagName) != "string") { return; } if (control.tagName != "INPUT" && control.tagName != "TEXTAREA" && control.tagName != "SELECT") { var i; for (i = 0; i < control.childNodes.length; i++) { ValidatorHookupControl(control.childNodes[i], val); } return; } else { if (typeof (control.Validators) == "undefined") { control.Validators = new Array; var eventType; if (control.type == "radio") { eventType = "onclick"; } else { eventType = "onchange"; if (typeof (val.focusOnError) == "string" && val.focusOnError == "t") { ValidatorHookupEvent(control, "onblur", "ValidatedControlOnBlur(event); "); } } ValidatorHookupEvent(control, eventType, "ValidatorOnChange(event); "); if (Page_TextTypes.test(control.type)) { ValidatorHookupEvent(control, "onkeypress", "event = event || window.event; if (!ValidatedTextBoxOnKeyPress(event)) { event.cancelBubble = true; if (event.stopPropagation) event.stopPropagation(); return false; } "); } } control.Validators[control.Validators.length] = val; } } function ValidatorHookupEvent(control, eventType, functionPrefix) { var ev = control[eventType]; if (typeof (ev) == "function") { ev = ev.toString(); ev = ev.substring(ev.indexOf("{") + 1, ev.lastIndexOf("}")); } else { ev = ""; } control[eventType] = new Function("event", functionPrefix + " " + ev); } function ValidatorGetValue(id) { var control; control = document.getElementById(id); if (typeof (control.value) == "string") { return control.value; } return ValidatorGetValueRecursive(control); } function ValidatorGetValueRecursive(control) { if (typeof (control.value) == "string" && (control.type != "radio" || control.checked == true)) { return control.value; } var i, val; for (i = 0; i < control.childNodes.length; i++) { val = ValidatorGetValueRecursive(control.childNodes[i]); if (val != "") return val; } return ""; } function Page_ClientValidate(validationGroup) { Page_InvalidControlToBeFocused = null; if (typeof (Page_Validators) == "undefined") { return true; } var i; for (i = 0; i < Page_Validators.length; i++) { ValidatorValidate(Page_Validators[i], validationGroup, null); } ValidatorUpdateIsValid(); ValidationSummaryOnSubmit(validationGroup); Page_BlockSubmit = !Page_IsValid; return Page_IsValid; } function ValidatorCommonOnSubmit() { Page_InvalidControlToBeFocused = null; var result = !Page_BlockSubmit; if ((typeof (window.event) != "undefined") && (window.event != null)) { window.event.returnValue = result; } Page_BlockSubmit = false; return result; } function ValidatorEnable(val, enable) { val.enabled = (enable != false); ValidatorValidate(val); ValidatorUpdateIsValid(); } function ValidatorOnChange(event) { event = event || window.event; Page_InvalidControlToBeFocused = null; var targetedControl; if ((typeof (event.srcElement) != "undefined") && (event.srcElement != null)) { targetedControl = event.srcElement; } else { targetedControl = event.target; } var vals; if (typeof (targetedControl.Validators) != "undefined") { vals = targetedControl.Validators; } else { if (targetedControl.tagName.toLowerCase() == "label") { targetedControl = document.getElementById(targetedControl.htmlFor); vals = targetedControl.Validators; } } if (vals) { for (var i = 0; i < vals.length; i++) { ValidatorValidate(vals[i], null, event); } } ValidatorUpdateIsValid(); } function ValidatedTextBoxOnKeyPress(event) { event = event || window.event; if (event.keyCode == 13) { ValidatorOnChange(event); var vals; if ((typeof (event.srcElement) != "undefined") && (event.srcElement != null)) { vals = event.srcElement.Validators; } else { vals = event.target.Validators; } return AllValidatorsValid(vals); } return true; } function ValidatedControlOnBlur(event) { event = event || window.event; var control; if ((typeof (event.srcElement) != "undefined") && (event.srcElement != null)) { control = event.srcElement; } else { control = event.target; } if ((typeof (control) != "undefined") && (control != null) && (Page_InvalidControlToBeFocused == control)) { control.focus(); Page_InvalidControlToBeFocused = null; } } function ValidatorValidate(val, validationGroup, event) { val.isvalid = true; if ((typeof (val.enabled) == "undefined" || val.enabled != false) && IsValidationGroupMatch(val, validationGroup)) { if (typeof (val.evaluationfunction) == "function") { val.isvalid = val.evaluationfunction(val); if (!val.isvalid && Page_InvalidControlToBeFocused == null && typeof (val.focusOnError) == "string" && val.focusOnError == "t") { ValidatorSetFocus(val, event); } } } ValidatorUpdateDisplay(val); } function ValidatorSetFocus(val, event) { var ctrl; if (typeof (val.controlhookup) == "string") { var eventCtrl; if ((typeof (event) != "undefined") && (event != null)) { if ((typeof (event.srcElement) != "undefined") && (event.srcElement != null)) { eventCtrl = event.srcElement; } else { eventCtrl = event.target; } } if ((typeof (eventCtrl) != "undefined") && (eventCtrl != null) && (typeof (eventCtrl.id) == "string") && (eventCtrl.id == val.controlhookup)) { ctrl = eventCtrl; } } if ((typeof (ctrl) == "undefined") || (ctrl == null)) { ctrl = document.getElementById(val.controltovalidate); } if ((typeof (ctrl) != "undefined") && (ctrl != null) && (ctrl.tagName.toLowerCase() != "table" || (typeof (event) == "undefined") || (event == null)) && ((ctrl.tagName.toLowerCase() != "input") || (ctrl.type.toLowerCase() != "hidden")) && (typeof (ctrl.disabled) == "undefined" || ctrl.disabled == null || ctrl.disabled == false) && (typeof (ctrl.visible) == "undefined" || ctrl.visible == null || ctrl.visible != false) && (IsInVisibleContainer(ctrl))) { if ((ctrl.tagName.toLowerCase() == "table" && (typeof (__nonMSDOMBrowser) == "undefined" || __nonMSDOMBrowser)) || (ctrl.tagName.toLowerCase() == "span")) { var inputElements = ctrl.getElementsByTagName("input"); var lastInputElement = inputElements[inputElements.length - 1]; if (lastInputElement != null) { ctrl = lastInputElement; } } if (typeof (ctrl.focus) != "undefined" && ctrl.focus != null) { ctrl.focus(); Page_InvalidControlToBeFocused = ctrl; } } } function IsInVisibleContainer(ctrl) { if (typeof (ctrl.style) != "undefined" && ((typeof (ctrl.style.display) != "undefined" && ctrl.style.display == "none") || (typeof (ctrl.style.visibility) != "undefined" && ctrl.style.visibility == "hidden"))) { return false; } else if (typeof (ctrl.parentNode) != "undefined" && ctrl.parentNode != null && ctrl.parentNode != ctrl) { return IsInVisibleContainer(ctrl.parentNode); } return true; } function IsValidationGroupMatch(control, validationGroup) { if ((typeof (validationGroup) == "undefined") || (validationGroup == null)) { return true; } var controlGroup = ""; if (typeof (control.validationGroup) == "string") { controlGroup = control.validationGroup; } return (controlGroup == validationGroup); } function ValidatorOnLoad() { if (typeof (Page_Validators) == "undefined") return; var i, val; for (i = 0; i < Page_Validators.length; i++) { val = Page_Validators[i]; if (typeof (val.evaluationfunction) == "string") { eval("val.evaluationfunction = " + val.evaluationfunction + ";"); } if (typeof (val.isvalid) == "string") { if (val.isvalid == "False") { val.isvalid = false; Page_IsValid = false; } else { val.isvalid = true; } } else { val.isvalid = true; } if (typeof (val.enabled) == "string") { val.enabled = (val.enabled != "False"); } if (typeof (val.controltovalidate) == "string") { ValidatorHookupControlID(val.controltovalidate, val); } if (typeof (val.controlhookup) == "string") { ValidatorHookupControlID(val.controlhookup, val); } } Page_ValidationActive = true; } function ValidatorConvert(op, dataType, val) { function GetFullYear(year) { var twoDigitCutoffYear = val.cutoffyear % 100; var cutoffYearCentury = val.cutoffyear - twoDigitCutoffYear; return ((year > twoDigitCutoffYear) ? (cutoffYearCentury - 100 + year) : (cutoffYearCentury + year)); } var num, cleanInput, m, exp; if (dataType == "Integer") { exp = /^\s*[-\+]?\d+\s*$/; if (op.match(exp) == null) return null; num = parseInt(op, 10); return (isNaN(num) ? null : num); } else if (dataType == "Double") { exp = new RegExp("^\\s*([-\\+])?(\\d*)\\" + val.decimalchar + "?(\\d*)\\s*$"); m = op.match(exp); if (m == null) return null; if (m[2].length == 0 && m[3].length == 0) return null; cleanInput = (m[1] != null ? m[1] : "") + (m[2].length > 0 ? m[2] : "0") + (m[3].length > 0 ? "." + m[3] : ""); num = parseFloat(cleanInput); return (isNaN(num) ? null : num); } else if (dataType == "Currency") { var hasDigits = (val.digits > 0); var beginGroupSize, subsequentGroupSize; var groupSizeNum = parseInt(val.groupsize, 10); if (!isNaN(groupSizeNum) && groupSizeNum > 0) { beginGroupSize = "{1," + groupSizeNum + "}"; subsequentGroupSize = "{" + groupSizeNum + "}"; } else { beginGroupSize = subsequentGroupSize = "+"; } exp = new RegExp("^\\s*([-\\+])?((\\d" + beginGroupSize + "(\\" + val.groupchar + "\\d" + subsequentGroupSize + ")+)|\\d*)" + (hasDigits ? "\\" + val.decimalchar + "?(\\d{0," + val.digits + "})" : "") + "\\s*$"); m = op.match(exp); if (m == null) return null; if (m[2].length == 0 && hasDigits && m[5].length == 0) return null; cleanInput = (m[1] != null ? m[1] : "") + m[2].replace(new RegExp("(\\" + val.groupchar + ")", "g"), "") + ((hasDigits && m[5].length > 0) ? "." + m[5] : ""); num = parseFloat(cleanInput); return (isNaN(num) ? null : num); } else if (dataType == "Date") { var yearFirstExp = new RegExp("^\\s*((\\d{4})|(\\d{2}))([-/]|\\. ?)(\\d{1,2})\\4(\\d{1,2})\\.?\\s*$"); m = op.match(yearFirstExp); var day, month, year; if (m != null && (((typeof (m[2]) != "undefined") && (m[2].length == 4)) || val.dateorder == "ymd")) { day = m[6]; month = m[5]; year = (m[2].length == 4) ? m[2] : GetFullYear(parseInt(m[3], 10)); } else { if (val.dateorder == "ymd") { return null; } var yearLastExp = new RegExp("^\\s*(\\d{1,2})([-/]|\\. ?)(\\d{1,2})(?:\\s|\\2)((\\d{4})|(\\d{2}))(?:\\s\u0433\\.|\\.)?\\s*$"); m = op.match(yearLastExp); if (m == null) { return null; } if (val.dateorder == "mdy") { day = m[3]; month = m[1]; } else { day = m[1]; month = m[3]; } year = ((typeof (m[5]) != "undefined") && (m[5].length == 4)) ? m[5] : GetFullYear(parseInt(m[6], 10)); } month -= 1; var date = new Date(year, month, day); if (year < 100) { date.setFullYear(year); } return (typeof (date) == "object" && year == date.getFullYear() && month == date.getMonth() && day == date.getDate()) ? date.valueOf() : null; } else { return op.toString(); } } function ValidatorCompare(operand1, operand2, operator, val) { var dataType = val.type; var op1, op2; if ((op1 = ValidatorConvert(operand1, dataType, val)) == null) return false; if (operator == "DataTypeCheck") return true; if ((op2 = ValidatorConvert(operand2, dataType, val)) == null) return true; switch (operator) { case "NotEqual": return (op1 != op2); case "GreaterThan": return (op1 > op2); case "GreaterThanEqual": return (op1 >= op2); case "LessThan": return (op1 < op2); case "LessThanEqual": return (op1 <= op2); default: return (op1 == op2); } } function CompareValidatorEvaluateIsValid(val) { var value = ValidatorGetValue(val.controltovalidate); if (ValidatorTrim(value).length == 0) return true; var compareTo = ""; if ((typeof (val.controltocompare) != "string") || (typeof (document.getElementById(val.controltocompare)) == "undefined") || (null == document.getElementById(val.controltocompare))) { if (typeof (val.valuetocompare) == "string") { compareTo = val.valuetocompare; } } else { compareTo = ValidatorGetValue(val.controltocompare); } var operator = "Equal"; if (typeof (val.operator) == "string") { operator = val.operator; } return ValidatorCompare(value, compareTo, operator, val); } function CustomValidatorEvaluateIsValid(val) { var value = ""; if (typeof (val.controltovalidate) == "string") { value = ValidatorGetValue(val.controltovalidate); if ((ValidatorTrim(value).length == 0) && ((typeof (val.validateemptytext) != "string") || (val.validateemptytext != "true"))) { return true; } } var args = { Value: value, IsValid: true }; if (typeof (val.clientvalidationfunction) == "string") { eval(val.clientvalidationfunction + "(val, args) ;"); } return args.IsValid; } function RegularExpressionValidatorEvaluateIsValid(val) { var value = ValidatorGetValue(val.controltovalidate); if (ValidatorTrim(value).length == 0) return true; var rx = new RegExp(val.validationexpression); var matches = rx.exec(value); return (matches != null && value == matches[0]); } function ValidatorTrim(s) { var m = s.match(/^\s*(\S+(\s+\S+)*)\s*$/); return (m == null) ? "" : m[1]; } function RequiredFieldValidatorEvaluateIsValid(val) { return (ValidatorTrim(ValidatorGetValue(val.controltovalidate)) != ValidatorTrim(val.initialvalue)) } function RangeValidatorEvaluateIsValid(val) { var value = ValidatorGetValue(val.controltovalidate); if (ValidatorTrim(value).length == 0) return true; return (ValidatorCompare(value, val.minimumvalue, "GreaterThanEqual", val) && ValidatorCompare(value, val.maximumvalue, "LessThanEqual", val)); } function ValidationSummaryOnSubmit(validationGroup) { if (typeof (Page_ValidationSummaries) == "undefined") return; var summary, sums, s; var headerSep, first, pre, post, end; for (sums = 0; sums < Page_ValidationSummaries.length; sums++) { summary = Page_ValidationSummaries[sums]; if (!summary) continue; summary.style.display = "none"; if (!Page_IsValid && IsValidationGroupMatch(summary, validationGroup)) { var i; if (summary.showsummary != "False") { summary.style.display = ""; if (typeof (summary.displaymode) != "string") { summary.displaymode = "BulletList"; } switch (summary.displaymode) { case "List": headerSep = "
"; first = ""; pre = ""; post = "
"; end = ""; break; case "BulletList": default: headerSep = ""; first = ""; break; case "SingleParagraph": headerSep = " "; first = ""; pre = ""; post = " "; end = "
"; break; } s = ""; if (typeof (summary.headertext) == "string") { s += summary.headertext + headerSep; } s += first; for (i = 0; i < Page_Validators.length; i++) { if (!Page_Validators[i].isvalid && typeof (Page_Validators[i].errormessage) == "string") { s += pre + Page_Validators[i].errormessage + post; } } s += end; summary.innerHTML = s; window.scrollTo(0, 0); } if (summary.showmessagebox == "True") { s = ""; if (typeof (summary.headertext) == "string") { s += summary.headertext + "\r\n"; } var lastValIndex = Page_Validators.length - 1; for (i = 0; i <= lastValIndex; i++) { if (!Page_Validators[i].isvalid && typeof (Page_Validators[i].errormessage) == "string") { switch (summary.displaymode) { case "List": s += Page_Validators[i].errormessage; if (i < lastValIndex) { s += "\r\n"; } break; case "BulletList": default: s += "- " + Page_Validators[i].errormessage; if (i < lastValIndex) { s += "\r\n"; } break; case "SingleParagraph": s += Page_Validators[i].errormessage + " "; break; } } } alert(s); } } } } if (window.jQuery) { (function ($) { var dataValidationAttribute = "data-val", dataValidationSummaryAttribute = "data-valsummary", normalizedAttributes = { validationgroup: "validationGroup", focusonerror: "focusOnError" }; function getAttributesWithPrefix(element, prefix) { var i, attribute, list = {}, attributes = element.attributes, length = attributes.length, prefixLength = prefix.length; prefix = prefix.toLowerCase(); for (i = 0; i < length; i++) { attribute = attributes[i]; if (attribute.specified && attribute.name.substr(0, prefixLength).toLowerCase() === prefix) { list[attribute.name.substr(prefixLength)] = attribute.value; } } return list; } function normalizeKey(key) { key = key.toLowerCase(); return normalizedAttributes[key] === undefined ? key : normalizedAttributes[key]; } function addValidationExpando(element) { var attributes = getAttributesWithPrefix(element, dataValidationAttribute + "-"); $.each(attributes, function (key, value) { element[normalizeKey(key)] = value; }); } function dispose(element) { var index = $.inArray(element, Page_Validators); if (index >= 0) { Page_Validators.splice(index, 1); } } function addNormalizedAttribute(name, normalizedName) { normalizedAttributes[name.toLowerCase()] = normalizedName; } function parseSpecificAttribute(selector, attribute, validatorsArray) { return $(selector).find("[" + attribute + "='true']").each(function (index, element) { addValidationExpando(element); element.dispose = function () { dispose(element); element.dispose = null; }; if ($.inArray(element, validatorsArray) === -1) { validatorsArray.push(element); } }).length; } function parse(selector) { var length = parseSpecificAttribute(selector, dataValidationAttribute, Page_Validators); length += parseSpecificAttribute(selector, dataValidationSummaryAttribute, Page_ValidationSummaries); return length; } function loadValidators() { if (typeof (ValidatorOnLoad) === "function") { ValidatorOnLoad(); } if (typeof (ValidatorOnSubmit) === "undefined") { window.ValidatorOnSubmit = function () { return Page_ValidationActive ? ValidatorCommonOnSubmit() : true; }; } } function registerUpdatePanel() { if (window.Sys && Sys.WebForms && Sys.WebForms.PageRequestManager) { var prm = Sys.WebForms.PageRequestManager.getInstance(), postBackElement, endRequestHandler; if (prm.get_isInAsyncPostBack()) { endRequestHandler = function (sender, args) { if (parse(document)) { loadValidators(); } prm.remove_endRequest(endRequestHandler); endRequestHandler = null; }; prm.add_endRequest(endRequestHandler); } prm.add_beginRequest(function (sender, args) { postBackElement = args.get_postBackElement(); }); prm.add_pageLoaded(function (sender, args) { var i, panels, valFound = 0; if (typeof (postBackElement) === "undefined") { return; } panels = args.get_panelsUpdated(); for (i = 0; i < panels.length; i++) { valFound += parse(panels[i]); } panels = args.get_panelsCreated(); for (i = 0; i < panels.length; i++) { valFound += parse(panels[i]); } if (valFound) { loadValidators(); } }); } } $(function () { if (typeof (Page_Validators) === "undefined") { window.Page_Validators = []; } if (typeof (Page_ValidationSummaries) === "undefined") { window.Page_ValidationSummaries = []; } if (typeof (Page_ValidationActive) === "undefined") { window.Page_ValidationActive = false; } $.WebFormValidator = { addNormalizedAttribute: addNormalizedAttribute, parse: parse }; if (parse(document)) { loadValidators(); } registerUpdatePanel(); }); }(jQuery)); }