topical media & game development
mobile-application-03-MVCDerbyService-MVCDerbyService-Scripts-MicrosoftMvcValidation.debug.js / js
//!----------------------------------------------------------
//! Copyright (C) Microsoft Corporation. All rights reserved.
//!----------------------------------------------------------
//! MicrosoftMvcValidation.js
Type.registerNamespace('Sys.Mvc');
//////////////////////////////////////////////////////////////////////////
// Sys.Mvc.Validation
Sys.Mvc.create_JsonValidationField = function Sys_Mvc_JsonValidationField() { return {}; }
//////////////////////////////////////////////////////////////////////////
// Sys.Mvc.JsonValidationOptions
Sys.Mvc.create_JsonValidationRule = function Sys_Mvc_JsonValidationRule() { return {}; }
//////////////////////////////////////////////////////////////////////////
// Sys.Mvc.ValidationContext
Sys.Mvc.create(rule) {
<param name="rule" type="Sys.Mvc.JsonValidationRule">
</param>
<returns type="Sys.Mvc.Validator">
</returns>
return Function.createDelegate(new Sys.Mvc.NumberValidator(), new Sys.Mvc.NumberValidator().validate);
}
Sys.Mvc.NumberValidator.prototype = {
validate: function Sys_Mvc_NumberValidator
_Application_Load() {
var allFormOptions = window.mvcClientValidationMetadata;
if (allFormOptions) {
while (allFormOptions.length > 0) {
var thisFormOptions = allFormOptions.pop();
Sys.Mvc.FormContext._parseJsonOptions(thisFormOptions);
}
}
}
Sys.Mvc.FormContext._getFormElementsWithName = function Sys_Mvc_FormContext
getValidationForForm(formElement) {
<param name="formElement" type="Object" domElement="true">
</param>
<returns type="Sys.Mvc.FormContext">
</returns>
return formElement[Sys.Mvc.FormContext._formValidationTag];
}
Sys.Mvc.FormContext._isElementInHierarchy = function Sys_Mvc_FormContext
_parseJsonOptions(options) {
<param name="options" type="Sys.Mvc.JsonValidationOptions">
</param>
<returns type="Sys.Mvc.FormContext">
</returns>
var formElement =
get(options.ValidationSummaryId) : null;
var formContext = new Sys.Mvc.FormContext(formElement, validationSummaryElement);
formContext.enableDynamicValidation();
formContext.replaceValidationSummary = options.ReplaceValidationSummary;
for (var i = 0; i < options.Fields.length; i++) {
var field = options.Fields[i];
var fieldElements = Sys.Mvc.FormContext._getFormElementsWithName(formElement, field.FieldName);
var validationMessageElement = (!Sys.Mvc._validationUtil.stringIsNullOrEmpty(field.ValidationMessageId)) ?
create_Validation();
validation.fieldErrorMessage = rule.ErrorMessage;
validation.validator = validator;
Array.add(fieldContext.validations, validation);
}
}
fieldContext.enableDynamicValidation();
Array.add(formContext.fields, fieldContext);
}
var registeredValidatorCallbacks = formElement.validationCallbacks;
if (!registeredValidatorCallbacks) {
registeredValidatorCallbacks = [];
formElement.validationCallbacks = registeredValidatorCallbacks;
}
registeredValidatorCallbacks.push(Function.createDelegate(null, function() {
return Sys.Mvc._validationUtil.arrayIsNullOrEmpty(formContext.validate('submit'));
}));
return formContext;
}
Sys.Mvc.FormContext.prototype = {
_onClickHandler: null,
_onSubmitHandler: null,
_submitButtonClicked: null,
_validationSummaryElement: null,
_validationSummaryULElement: null,
_formElement: null,
replaceValidationSummary: false,
addError: function Sys_Mvc_FormContext
addErrors(messages) {
<param name="messages" type="Array" elementType="String">
</param>
if (!Sys.Mvc._validationUtil.arrayIsNullOrEmpty(messages)) {
Array.addRange(this._errors, messages);
this._onErrorCountChanged();
}
},
clearErrors: function Sys_Mvc_FormContext
_displayError() {
if (this._validationSummaryElement) {
if (this._validationSummaryULElement) {
Sys.Mvc._validationUtil.removeAllChildren(this._validationSummaryULElement);
for (var i = 0; i < this._errors.length; i++) {
var liElement = document.createElement('li');
Sys.Mvc._validationUtil.setInnerText(liElement, this._errors[i]);
this._validationSummaryULElement.appendChild(liElement);
}
}
Sys.UI.DomElement.removeCssClass(this._validationSummaryElement, Sys.Mvc.FormContext._validationSummaryValidCss);
Sys.UI.DomElement.addCssClass(this._validationSummaryElement, Sys.Mvc.FormContext._validationSummaryErrorCss);
}
},
_displaySuccess: function Sys_Mvc_FormContext
enableDynamicValidation() {
Sys.UI.DomEvent.addHandler(this._formElement, 'click', this._onClickHandler);
Sys.UI.DomEvent.addHandler(this._formElement, 'submit', this._onSubmitHandler);
},
_findSubmitButton: function Sys_Mvc_FormContext
_form_OnClick(e) {
<param name="e" type="Sys.UI.DomEvent">
</param>
this._submitButtonClicked = this._findSubmitButton(e.target);
},
_form_OnSubmit: function Sys_Mvc_FormContext
_onErrorCountChanged() {
if (!this._errors.length) {
this._displaySuccess();
}
else {
this._displayError();
}
},
validate: function Sys_Mvc_FormContext
addError(message) {
<param name="message" type="String">
</param>
this.addErrors([ message ]);
},
addErrors: function Sys_Mvc_FieldContext
clearErrors() {
Array.clear(this._errors);
this._onErrorCountChanged();
},
_displayError: function Sys_Mvc_FieldContext
_displaySuccess() {
var validationMessageElement = this.validationMessageElement;
if (validationMessageElement) {
if (this.replaceValidationMessageContents) {
Sys.Mvc._validationUtil.setInnerText(validationMessageElement, '');
}
Sys.UI.DomElement.removeCssClass(validationMessageElement, Sys.Mvc.FieldContext._validationMessageErrorCss);
Sys.UI.DomElement.addCssClass(validationMessageElement, Sys.Mvc.FieldContext._validationMessageValidCss);
}
var elements = this.elements;
for (var i = 0; i < elements.length; i++) {
var element = elements[i];
Sys.UI.DomElement.removeCssClass(element, Sys.Mvc.FieldContext._inputElementErrorCss);
Sys.UI.DomElement.addCssClass(element, Sys.Mvc.FieldContext._inputElementValidCss);
}
},
_element_OnBlur: function Sys_Mvc_FieldContext
_element_OnChange(e) {
<param name="e" type="Sys.UI.DomEvent">
</param>
e.target[Sys.Mvc.FieldContext._hasTextChangedTag] = true;
},
_element_OnInput: function Sys_Mvc_FieldContext
_element_OnPropertyChange(e) {
<param name="e" type="Sys.UI.DomEvent">
</param>
if (e.rawEvent.propertyName === 'value') {
e.target[Sys.Mvc.FieldContext._hasTextChangedTag] = true;
if (e.target[Sys.Mvc.FieldContext._hasValidationFiredTag]) {
this.validate('input');
}
}
},
enableDynamicValidation: function Sys_Mvc_FieldContext
_getErrorString(validatorReturnValue, fieldErrorMessage) {
<param name="validatorReturnValue" type="Object">
</param>
<param name="fieldErrorMessage" type="String">
</param>
<returns type="String">
</returns>
var fallbackErrorMessage = fieldErrorMessage || this.defaultErrorMessage;
if (Boolean.isInstanceOfType(validatorReturnValue)) {
return (validatorReturnValue) ? null : fallbackErrorMessage;
}
if (String.isInstanceOfType(validatorReturnValue)) {
return ((validatorReturnValue).length) ? validatorReturnValue : fallbackErrorMessage;
}
return null;
},
_getStringValue: function Sys_Mvc_FieldContext
_markValidationFired() {
var elements = this.elements;
for (var i = 0; i < elements.length; i++) {
var element = elements[i];
element[Sys.Mvc.FieldContext._hasValidationFiredTag] = true;
}
},
_onErrorCountChanged: function Sys_Mvc_FieldContext
validate(eventName) {
<param name="eventName" type="String">
</param>
<returns type="Array" elementType="String">
</returns>
var validations = this.validations;
var errors = [];
var value = this._getStringValue();
for (var i = 0; i < validations.length; i++) {
var validation = validations[i];
var context = Sys.Mvc.
create(rule) {
<param name="rule" type="Sys.Mvc.JsonValidationRule">
</param>
<returns type="Sys.Mvc.Validator">
</returns>
var min = rule.ValidationParameters['min'];
var max = rule.ValidationParameters['max'];
return Function.createDelegate(new Sys.Mvc.RangeValidator(min, max), new Sys.Mvc.RangeValidator(min, max).validate);
}
Sys.Mvc.RangeValidator.prototype = {
_minimum: null,
_maximum: null,
validate: function Sys_Mvc_RangeValidator
create(rule) {
<param name="rule" type="Sys.Mvc.JsonValidationRule">
</param>
<returns type="Sys.Mvc.Validator">
</returns>
var pattern = rule.ValidationParameters['pattern'];
return Function.createDelegate(new Sys.Mvc.RegularExpressionValidator(pattern), new Sys.Mvc.RegularExpressionValidator(pattern).validate);
}
Sys.Mvc.RegularExpressionValidator.prototype = {
_pattern: null,
validate: function Sys_Mvc_RegularExpressionValidator
create(rule) {
<param name="rule" type="Sys.Mvc.JsonValidationRule">
</param>
<returns type="Sys.Mvc.Validator">
</returns>
return Function.createDelegate(new Sys.Mvc.RequiredValidator(), new Sys.Mvc.RequiredValidator().validate);
}
Sys.Mvc.RequiredValidator._isRadioInputElement = function Sys_Mvc_RequiredValidator
_isSelectInputElement(element) {
<param name="element" type="Object" domElement="true">
</param>
<returns type="Boolean">
</returns>
if (element.tagName.toUpperCase() === 'SELECT') {
return true;
}
return false;
}
Sys.Mvc.RequiredValidator._isTextualInputElement = function Sys_Mvc_RequiredValidator
_validateRadioInput(elements) {
<param name="elements" type="Array" elementType="Object" elementDomElement="true">
</param>
<returns type="Object">
</returns>
for (var i = 0; i < elements.length; i++) {
var element = elements[i];
if (element.checked) {
return true;
}
}
return false;
}
Sys.Mvc.RequiredValidator._validateSelectInput = function Sys_Mvc_RequiredValidator
_validateTextualInput(element) {
<param name="element" type="Object" domElement="true">
</param>
<returns type="Object">
</returns>
return (!Sys.Mvc._validationUtil.stringIsNullOrEmpty(element.value));
}
Sys.Mvc.RequiredValidator.prototype = {
validate: function Sys_Mvc_RequiredValidator
create(rule) {
<param name="rule" type="Sys.Mvc.JsonValidationRule">
</param>
<returns type="Sys.Mvc.Validator">
</returns>
var minLength = (rule.ValidationParameters['min'] || 0);
var maxLength = (rule.ValidationParameters['max'] || Number.MAX_VALUE);
return Function.createDelegate(new Sys.Mvc.StringLengthValidator(minLength, maxLength), new Sys.Mvc.StringLengthValidator(minLength, maxLength).validate);
}
Sys.Mvc.StringLengthValidator.prototype = {
_maxLength: 0,
_minLength: 0,
validate: function Sys_Mvc_StringLengthValidator
arrayIsNullOrEmpty(array) {
<param name="array" type="Array" elementType="Object">
</param>
<returns type="Boolean">
</returns>
return (!array || !array.length);
}
Sys.Mvc._validationUtil.stringIsNullOrEmpty = function Sys_Mvc__validationUtil
elementSupportsEvent(element, eventAttributeName) {
<param name="element" type="Object" domElement="true">
</param>
<param name="eventAttributeName" type="String">
</param>
<returns type="Boolean">
</returns>
return (eventAttributeName in element);
}
Sys.Mvc._validationUtil.removeAllChildren = function Sys_Mvc__validationUtil
setInnerText(element, innerText) {
<param name="element" type="Object" domElement="true">
</param>
<param name="innerText" type="String">
</param>
var textNode = document.createTextNode(innerText);
Sys.Mvc._validationUtil.removeAllChildren(element);
element.appendChild(textNode);
}
//////////////////////////////////////////////////////////////////////////
// Sys.Mvc.ValidatorRegistry
Sys.Mvc.ValidatorRegistry = function Sys_Mvc_ValidatorRegistry() {
<field name="validators" type="Object" static="true">
</field>
}
Sys.Mvc.ValidatorRegistry.getValidator = function Sys_Mvc_ValidatorRegistry
_getDefaultValidators() {
<returns type="Object">
</returns>
return { required: Function.createDelegate(null, Sys.Mvc.RequiredValidator.create), length: Function.createDelegate(null, Sys.Mvc.StringLengthValidator.create), regex: Function.createDelegate(null, Sys.Mvc.RegularExpressionValidator.create), range: Function.createDelegate(null, Sys.Mvc.RangeValidator.create), number: Function.createDelegate(null, Sys.Mvc.NumberValidator.create) };
}
Sys.Mvc.NumberValidator.registerClass('Sys.Mvc.NumberValidator');
Sys.Mvc.FormContext.registerClass('Sys.Mvc.FormContext');
Sys.Mvc.FieldContext.registerClass('Sys.Mvc.FieldContext');
Sys.Mvc.RangeValidator.registerClass('Sys.Mvc.RangeValidator');
Sys.Mvc.RegularExpressionValidator.registerClass('Sys.Mvc.RegularExpressionValidator');
Sys.Mvc.RequiredValidator.registerClass('Sys.Mvc.RequiredValidator');
Sys.Mvc.StringLengthValidator.registerClass('Sys.Mvc.StringLengthValidator');
Sys.Mvc._validationUtil.registerClass('Sys.Mvc._validationUtil');
Sys.Mvc.ValidatorRegistry.registerClass('Sys.Mvc.ValidatorRegistry');
Sys.Mvc.FormContext._validationSummaryErrorCss = 'validation-summary-errors';
Sys.Mvc.FormContext._validationSummaryValidCss = 'validation-summary-valid';
Sys.Mvc.FormContext._formValidationTag = '__MVC_FormValidation';
Sys.Mvc.FieldContext._hasTextChangedTag = '__MVC_HasTextChanged';
Sys.Mvc.FieldContext._hasValidationFiredTag = '__MVC_HasValidationFired';
Sys.Mvc.FieldContext._inputElementErrorCss = 'input-validation-error';
Sys.Mvc.FieldContext._inputElementValidCss = 'input-validation-valid';
Sys.Mvc.FieldContext._validationMessageErrorCss = 'field-validation-error';
Sys.Mvc.FieldContext._validationMessageValidCss = 'field-validation-valid';
Sys.Mvc.ValidatorRegistry.validators = Sys.Mvc.ValidatorRegistry._getDefaultValidators();
// ---- Do not remove this footer ----
// Generated using Script# v0.5.0.0 (http://projects.nikhilk.net)
// -----------------------------------
// register validation
Sys.Application.add_load(function() {
Sys.Application.remove_load(arguments.callee);
Sys.Mvc.FormContext._Application_Load();
});
(C) Æliens
04/09/2009
You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.