diff options
Diffstat (limited to 'samples/TestAzureAD/Scripts/WebForms/WebUIValidation.js')
-rw-r--r-- | samples/TestAzureAD/Scripts/WebForms/WebUIValidation.js | 684 |
1 files changed, 684 insertions, 0 deletions
diff --git a/samples/TestAzureAD/Scripts/WebForms/WebUIValidation.js b/samples/TestAzureAD/Scripts/WebForms/WebUIValidation.js new file mode 100644 index 0000000..a160ee8 --- /dev/null +++ b/samples/TestAzureAD/Scripts/WebForms/WebUIValidation.js @@ -0,0 +1,684 @@ +//CdnPath=http://ajax.aspnetcdn.com/ajax/4.5/6/WebUIValidation.js +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 = "<br>"; + first = ""; + pre = ""; + post = "<br>"; + end = ""; + break; + case "BulletList": + default: + headerSep = ""; + first = "<ul>"; + pre = "<li>"; + post = "</li>"; + end = "</ul>"; + break; + case "SingleParagraph": + headerSep = " "; + first = ""; + pre = ""; + post = " "; + end = "<br>"; + 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)); +}
\ No newline at end of file |