• 修改Js validation,提供对firefix2的支持.


    /*
     * JavaScript Validation Framework
     *
     * Author: Michael Chen(mechiland) on 2004/03
     * This software is on the http://www.cosoft.org.cn/projects/jsvalidation
     * for update, bugfix, etc, you can goto the homepage and submit your request 
     * and question.
     * Apache License 2.0
     * You should use this software under the terms.
     *
     * Please, please keep above words. At least ,please make a note that such as 
     * "This software developed by Michael Chen(http://www.jzchen.net)" .
     * $Id: validation-framework.js,v 1.7 2004/04/30 05:33:29 jzchen Exp $
     * update :
                 1) 2007-12-16 add support of firefox 2. // by lein
                   Main changes:
                        a. In ValidationFramework.getDocumentElement, a little difference of 'xmlDoc' between firefox and ie was incarnated.
                        b. In FormFactory.getFormFromId, firefox doesn't support has item property of xmldoc.
     
    */


    /** Config Section, Config these fields to make this framework work. **/

    // If there is only one config file in your system, use this property. otherwise, use
    //
         ValidationFramework.init("configfile")     
    //
     instead.
    //
    alert(window.location.href)
    var ValidationRoot = "";

    // the field style when validation fails. it aim to provide more beautiful UI and more good
    //
     experience to the end-user. 
    //
     NOTE: this will be buggy. Please report the error to me.
    //
     The style has been changed at 2007-12-10;
    var ValidationFailCssStyle = "border:1px solid #F77B00; color:#D90005";

    //Validation function. The entry point of the framework.
    function doValidate(formRef) {
        
        
    try {
            
    var formId = formRef;
            
    if (typeof (formRef) == "string"{
                formId 
    = formRef;
            }
     else if (typeof (formRef) == "object"{
                formId 
    = formRef.getAttribute("id");
            }

            
    //alert(formId)
            var form = FormFactory.getFormFromId(formId);
            
    if (form != null{
                
    //alert(form)
                return ValidationFramework.validateForm(form);
            }
     else {
                
    return false;
            }

        }
     catch (e) {
            
            ValidationFramework.exception(e.name
    +":" +e.description);
            
            
    return false;
        }

        
    }

    /**===================================================================**/
    /*  var prefix = ["MSXML2", "MSXML", "Microsoft", "MSXML3"];
                for (var i = 0; i < prefix.length; i++) {
                    //return new ActiveXObject(prefix[i] + ".DomDocument");
                    var obj = new ActiveXObject(prefix[i] + ".DomDocument");

     * JSValidation Framework Code Started 
     * 
     * Please do not modify the code unless you are very familiar with JavaScript.
     * The best way to solve problem is report the problem to our project page.
     * url: http://cosoft.org.cn/projects/jsvalidation
     
    */

    // The Xml document. To process cross-browser. Thanks Eric.
    function XmlDocument() {
    }

    XmlDocument.create 
    = function () {
         
    //alert("XmlDocument.create ")
         return Try.these(
         
    function(){return new ActiveXObject('MSXML2.DomDocument')},     
         
    function(){return new ActiveXObject('MSXML.DomDocument')},     
         
    function(){return new ActiveXObject('Microsoft.DomDocument')},     
         
    function(){return new ActiveXObject('MSXML3.DomDocument')}
         
        ) 
    || false;
    }
    ;

    function ValidationFramework() {}
    ValidationFramework._validationCache 
    = null;
    ValidationFramework._currentForm 
    = null;
    ValidationFramework._userLanguage
    ="auto";
    /**
     * Validate a form.
     * NOTE: the form is Framework virture form, not the HTML Form. 
     * Html Form can be transform to Virture form by 
     *     FormFactory.getFormFromId(htmlFormId);
     * See the doc for more information.
     * @param form the virtual form.
     
    */

    ValidationFramework.validateForm 
    = function(fform) {
        ValidationFramework._currentForm 
    = fform;
        
        
    var failFields = [];
        
    var id = fform.getId();
        
    var showError = fform.getShowError();
        
    var showType = fform.getShowType();
        
    //alert(id+"|"+showError+"|"+showType+"110")
        var br = null;
        
    if (showError != "alert"{
            br 
    = "<br />";
        }
     else {
            br 
    = " ";
        }

        
    var errorStrArray = [];
        
    var ret = false;
        
    var formObj = document.getElementById(id);
        
    ////alert("formObj.tagName is "+formObj.getTagName())
        formObj=document.getElementById(FormToChk);
        
    //alert("ok")
        var fields = fform.getFields();
        
    //alert("fields.length="+fields.length)
        var rightnum = 0;
        
    for (var i = 0; i < fields.length; i++{
            
    //alert(fields[i])
            var retVal = ValidationFramework.validateField(fields[i]);
            
    var fo=formObj[fields[i].getName()];
            
    //alert(fo+"|fields[i].getName()="+fields[i].getName())
            if (typeof (fo) !='undefined' && 
                fo 
    != null &&
                
    typeof(fo.type) != "undefined"{
                fo.style.cssText 
    = "";
            }


            
    if (retVal != "OK"{
                errorStrArray[errorStrArray.length] 
    = retVal;
                failFields[failFields.length] 
    = formObj[fields[i].getName()];
            }
     else {
                rightnum 
    ++;
            }

        }


        
    if (rightnum == fields.length) {
            ret 
    = true;
        }


        
    if (errorStrArray.length > 0{
            
    if (showError == "alert"{
                
    if (showType == "first"{
                    alert(errorStrArray[
    0]);
                }
     else {
                    alert(errorStrArray.join(br));
                }

                
            }
     else if(showError == "errorDiv"{
                AddtionDOMName
    =AddtionErrorDOMName || ""
                showError
    =showError+AddtionDOMName
                
    for(var i=0;i<failFields.length;i++){                
                    
    var errObj = document.getElementById(showError+failFields[i].name);
                    errObj.innerHTML 
    = errorStrArray[i];
                }

            }
    else{
                AddtionDOMName
    =AddtionErrorDOMName || ""
                showError
    =showError+AddtionDOMName
                
    var errObj = document.getElementById(showError);
                
    if (showType == "first"{
                    errObj.innerHTML 
    = errorStrArray[0];
                }
     else {
                    errObj.innerHTML 
    = errorStrArray.join(br);
                }

            }

            
            
    if (typeof (failFields[0]) !='undefined' && 
                failFields[
    0!= null &&
                
    typeof(failFields[0].type) != "undefined"{
                failFields[
    0].focus();
            }


            
    for (var i = 0; i < failFields.length; i++{

                
    var o = failFields[i];
                
    if ( typeof (o) !='undefined' && 
                     o 
    != null && typeof(o.type) != "undefined"{
                    o.style.cssText 
    = ValidationFailCssStyle;
                }
        
            }

        }


        
    return ret;
    }


    /**
     * Validation the field
     * @param filed the field you want to validate.
     
    */

    ValidationFramework.validateField 
    = function(field) {
        
    var depends = field.getDepends();
        
    var retStr = "OK";
        
    //alert("depends.length="+depends.length)
        for (var i = 0; i < depends.length; i++{
            
    //alert(field+"|"+depends[i]+"<------")
            if (!ValidationFramework.validateDepend(field, depends[i])) {
                
    //alert("There foudn an error")
                retStr = ValidationFramework.getErrorString(field, depends[i]);
                
    return retStr; //Break;
            }
    else{
                
    //alert("Rule "+i+" passed")
            }

        }

        
    return retStr;
    }


    /**
     * Validate the field depend.
     * This function dispatch the various depends into ValidateMethodFactory.validateXXX
     
    */

    ValidationFramework.validateDepend 
    = function(field, depend) {
        
    //alert("depend.getName()="+depend.getName())
        if (depend.getName() == "required"{
            
    return ValidateMethodFactory.validateRequired(field, depend.getParams());
        }
     else if (depend.getName() == "integer"{
            
    return ValidateMethodFactory.validateInteger(field, depend.getParams());
        }
     else if (depend.getName() == "double"{
            
    return ValidateMethodFactory.validateDouble(field, depend.getParams());
        }
     else if (depend.getName() == "commonChar"{
            
    return ValidateMethodFactory.validateCommonChar(field, depend.getParams());
        }
     else if (depend.getName() == "chineseChar"{
            
    return ValidateMethodFactory.validateChineseChar(field, depend.getParams());
        }
     else if (depend.getName() == "minLength"{
            
    return ValidateMethodFactory.validateMinLength(field, depend.getParams());
        }
     else if (depend.getName() == "maxLength"{
            
    return ValidateMethodFactory.validateMaxLength(field, depend.getParams());
        }
     else if (depend.getName() == "email"{
            
    return ValidateMethodFactory.validateEmail(field, depend.getParams());
        }
     else if (depend.getName() == "date"{
            
    return ValidateMethodFactory.validateDate(field, depend.getParams());
        }
     else if (depend.getName() == "time"{
            
    return ValidateMethodFactory.validateTime(field, depend.getParams());
        }
     else if (depend.getName() == "mask"{
            
    return ValidateMethodFactory.validateMask(field, depend.getParams());
        }
     else if (depend.getName() == "integerRange"{
            
    return ValidateMethodFactory.validateIntegerRange(field, depend.getParams());
        }
     else if (depend.getName() == "doubleRange"{
            
    return ValidateMethodFactory.validateDoubleRange(field, depend.getParams());
        }
     else if (depend.getName() == "equalsField"{
            
    return ValidateMethodFactory.validateEqualsField(field, depend.getParams());
        }
     else if (depend.getName() == "numberrange"{
            
    return ValidateMethodFactory.validateNumberRange(field, depend.getParams());
        }
     else {
            ValidationFramework.exception(
    "Hasn't implemented that depend: " + depend.getName());
            
    return false;
        }

    }



    // hold the current config file
    var _validationConfigFile = "";
    ValidationFramework.getDocumentElement 
    = function() {
        
    if (ValidationFramework._validationCache != null{
            
    return ValidationFramework._validationCache;
        }

        
        
    //path=window.location.pathname.substr(0,window.location.pathname.lastIndexOf("/"))
        var file = "";
        
    if (_validationConfigFile != ""{
            
    if(window.location.protocol=="http:"){
                file 
    = window.location.protocol+"//"+window.location.host+"/"+_validationConfigFile;
            }
    else{
                file 
    =_validationConfigFile;
            }

        }
     else {
            file 
    = ValidationRoot + "validation-config.xml";
        }

        
        
    var xmlDoc;
        
    if(window.ActiveXObject)
        
    {
            xmlDoc 
    = new ActiveXObject('Microsoft.XMLDOM');
            xmlDoc.async 
    = false;
            xmlDoc.setProperty(
    "ServerHTTPRequest",true);
            
    //xmlDoc.setRequestHeader("If-Modified-Since","0");
            xmlDoc.load(file);
            
    if (xmlDoc.parseError.errorCode!=0)    
            

                
    var error = xmlDoc.parseError;     
                ValidationFramework.exception(error.reason)
                
    return false;     
            }
     
        
            
    if (xmlDoc.documentElement == null{
                ValidationFramework.exception(
    "Configure Error, please check!");
                
    return null;
            }

        }

        
    else if (document.implementation&&document.implementation.createDocument)
        
    {
            
            xmlDoc 
    = document.implementation.createDocument(''''null);
            xmlDoc.async 
    = false// Damn!!! it cost me half an hour to fix it!
            xmlDoc.load(file);
            
    if(xmlDoc.documentElement.nodeName=='parsererror'){            
                ValidationFramework.exception(xmlDoc.documentElement.textContent)
                
    return null;
            }
            
        }

        
    else
        
    {
            XMLMSG
    ='Sorry, your browser doesn't support XML.'
            alert(XMLMSG);
            
    return false;
        }
        
        
        
    // TODO: parse the document if it's a valid document.
        ValidationFramework._validationCache = xmlDoc.documentElement;
        
    //alert("xmlDoc.documentElement:"+xmlDoc.documentElement+"|"+typeof(xmlDoc.documentElement))
        //alert("ValidationFramework._validationCache:"+ValidationFramework._validationCache +typeof(ValidationFramework._validationCache))
        var lang=ValidationFramework._validationCache.getAttribute("lang");
        
    //alert(lang)
        ValidationFramework._userLanguage = (lang==null? "auto" : lang;
        
    return ValidationFramework._validationCache;
    }


    ValidationFramework.init 
    = function(configFile) {
        _validationConfigFile 
    = configFile;    
        
    var configdocument=ValidationFramework.getDocumentElement();
        
    //alert("configdocument="+configdocument+"|"+typeof(configdocument))
    }


    ValidationFramework.getAllForms 
    = function() {
        
    var vforms = [];
        
    var root = ValidationFramework.getDocumentElement();
        
    if (root != null{
            
    var fs = root.childNodes;
            
    for (var i = 0;i < fs.length ;i++ )    {
                vforms[i] 
    = new ValidationForm(fs.item(i));
            }

        }

        
    return vforms;
    }

    ValidationFramework.getErrorString 
    = function(field, depend) {
        
    var stringResource = null;
        
    var lang = ValidationFramework._userLanguage.toLowerCase();
        
    //if lang == auto, get the user's browser language.
        if (lang == "auto"{
            
    // different browser has the different method the get the 
            // user's language. so this is a stupid way to detect the 
            // most common browser IE and Mozilla.
            if (typeof navigator.userLanguage == 'undefined')
                lang 
    = navigator.language.toLowerCase();
            
    else
                lang 
    = navigator.userLanguage.toLowerCase();
        }

        
    // get the language
        if (typeof ValidationErrorString[lang] != 'object'{
            stringResource 
    = ValidationErrorString['zh-cn'];
        }
     else {
            stringResource 
    = ValidationErrorString[lang];
        }

        
        
    var dep = depend.getName().toLowerCase();
        
    var retStr = stringResource[dep];
        
    //If the specified depend not defined, use the default error string.
        if (typeof retStr != 'string'{
            retStr 
    = stringResource["default"];/////////////////////////////////////////////////////        
            disp_field_str=ValidationErrorString[field.getDisplayName()]||field.getDisplayName()
            retStr 
    = retStr.replace("{0}", disp_field_str);
            
    return retStr;
        }

        disp_field_str
    =ValidationErrorString[field.getDisplayName()]||field.getDisplayName()
        retStr 
    = retStr.replace("{0}", disp_field_str);
        
    if (dep == "minlength" || dep == "maxlength" || dep == "date" ) {
            disp_field_str
    =ValidationErrorString[depend.getParams()[0]]||depend.getParams()[0]
            retStr 
    = retStr.replace("{1}", depend.getParams()[0]);
        }
     else if ( dep == "equalsfield"{
            
    var eqField = field.getForm().findField(depend.getParams()[0]);
            
    if (eqField == null{
                ValidationFramework.exception(
    "Cann't find the filed which name is [" + depend.getParams()[0]+"], please check the xml configure file.");
                retStr 
    = "<<Conifgure Error>>";
            }
     else {
                disp_field_str
    =ValidationErrorString[field.getForm().findField(depend.getParams()[0]).getDisplayName()]||field.getForm().findField(depend.getParams()[0]).getDisplayName()
                retStr 
    = retStr.replace("{1}", disp_field_str);
            }

        }
     else if (dep == "integerrange" || dep == "doublerange" || dep == "numberrange"{        
            disp_field_str
    =ValidationErrorString[depend.getParams()[0]]||depend.getParams()[0]
            retStr 
    = retStr.replace("{1}", disp_field_str);
            disp_field_str
    =ValidationErrorString[depend.getParams()[1]]||depend.getParams()[1]
            retStr 
    = retStr.replace("{2}", disp_field_str);
        }


        
    return retStr;
    }


    ValidationFramework.getWebFormFieldObj 
    = function(field) {
        
    var obj = null;
        
    if (ValidationFramework._currentForm != null{
            
    var formObj = document.getElementById(ValidationFramework._currentForm.getId());
            
    try{
                obj 
    = formObj[field.getName()];
            }
    catch(e){
                formObj 
    = document.getElementById(FormToChk);
                obj 
    = formObj[field.getName()];
            }

            
    if (typeof(obj) == 'undefined'{
                obj 
    = null;
            }

        }
    else{
            
    //alert("ValidationFramework._currentForm === null")    
        }

        
    if (obj == null{
            ValidationFramework.exception(
    "Can not find form filed which name is [" + field.getName() + ".");
        }

        
    return obj;
    }


    ValidationFramework.exception 
    = function(str) {
        
    var ex = "JavaScript Validation Framework runtime error: ";
        ex 
    += str;
        ex 
    += "  Any runtime error will cause the validation failure.";
        alert(ex);
    }

    ValidationFramework.getIntegerValue 
    = function(val) {
        
    var intvalue = parseInt(val);
        
    if (isNaN(intvalue)) {
            ValidationFramework.exception(
    "Expect an integer.");
        }

        
    return intvalue;
    }

    ValidationFramework.getFloatValue 
    = function(val) {
        
    var floatvalue = parseFloat(val);
        
    if (isNaN(floatvalue)) {
            ValidationFramework.exception(
    "Expect a float number.");
        }

        
    return floatvalue;
    }

    /**
     * FormFactory
     * Build virture form from Html Form.
     
    */

    function FormFactory() {}
    FormFactory.getFormFromDOM 
    = function(dom) {
        
    var form = new ValidationForm();
        form.setId(dom.getAttribute(
    "id"));
        form.setShowError(dom.getAttribute(
    "show-error"));
        form.setOnFail(dom.getAttribute(
    "onfail"));
        form.setShowType(dom.getAttribute(
    "show-type"));

        
    if (dom.hasChildNodes()) {
            
    var f = dom.childNodes;
            
    for (var i = 0; i < f.length; i++{
                
    if (f.item(i) == null||typeof(f.item(i).tagName) == 'undefined' || f.item(i).tagName != 'field'{
                    
    continue;
                }

                
    var field = FieldFactory.getFieldFromDOM(f.item(i));
                
    if (field != null{
                    form.addField(field);
                }

            }

        }

        
    return form;
    }

    /// Get the Form from ID
    FormFactory.getFormFromId = function(id) {
        
    var root = ValidationFramework.getDocumentElement();
        
    if ( root == null || (!root.hasChildNodes()) ) return null;
        
    var vforms = root.childNodes;
        
        
    if(vforms.length<2){//如果配置xml文档只有一个配置表单
            var f = document.all?vforms.item(0):vforms[i];
            
    return FormFactory.getFormFromDOM(f);
        }
    else{
            
    if(!document.all){//Firefox will give three elements though there's only one form.
                var tmp=[];
                
    for (var i = 0; i < vforms.length; i++{//The one which's tagname is not empty is we need
                    var f = vforms.item(i);
                    
    if(typeof(f.tagName) != 'undefined' &&f.tagName == 'form'){
                        tmp[tmp.length]
    =f;    
                    }

                }

                vforms
    =    tmp;
                
    if(vforms.length<2){
                    
    var f = vforms[0];
                    
    return FormFactory.getFormFromDOM(f);
                }

            }

            
    for (var i = 0; i < vforms.length; i++{
                
    var f =  document.all?vforms.item(0):vforms[i];

                
    if (typeof(f.tagName) != 'undefined' && f.tagName == 'form' && f.getAttribute("id"== id) {    
                    
    return FormFactory.getFormFromDOM(f);
                }
    else{
                    
    //alert(f.getAttribute("id") +"|"+id+"|"+f.tagName)
                }

            }

        }

        alert(
    'The setting for the form('+id+') to be checked was not found!');
        
    return null;    
    }


    /**
     * A validation form object.
     
    */

    function ValidationForm() {
        
    this._fields = [];
        
    this._id = null;
        
    this._showError = null;
        
    this._onFail = null;
        
    this._showType = null;

        
    this.getFields = function() return this._fields; }
        
    this.setFields = function(p0) this._fields = p0; }

        
    this.getId = function() return this._id; }
        
    this.setId = function(p0) this._id = p0; }

        
    this.getShowError = function() return this._showError; }
        
    this.setShowError = function(p0) this._showError = p0; }

        
    this.getShowType = function() return this._showType; }
        
    this.setShowType = function(p0) this._showType = p0; }

        
    this.getOnFail = function() return this._onFail; }
        
    this.setOnFail = function(p0) this._onFail = p0; }
        
        
    // find field by it's name
        this.findField = function(p0) {
            
    for (var i = 0; i < this._fields.length; i++{
                
    if (this._fields[i].getName() == p0) {
                    
    return this._fields[i];
                }

            }

            
    return null;
        }

        
        
    this.addField = function(p0) {
            
    this._fields[this._fields.length] = p0;
            p0.setForm(
    this);
        }

    }


    /**
     * A form filed. virtual.
     
    */

    function ValidationField() {
        
    this._name = null;
        
    this._depends = [];
        
    this._displayName = null;
        
    this._onFail = null;
        
    this._form = null;

        
    this.getName = function() return this._name; }
        
    this.setName = function(p0) this._name = p0; }

        
    this.getDepends = function() return this._depends; }
        
    this.setDepends = function(p0) this._depends = p0; }

        
    this.getDisplayName = function() return this._displayName; }
        
    this.setDisplayName = function(p0) this._displayName = p0; }

        
    this.getOnFail = function() return this._onFail; }
        
    this.setOnFail = function(p0) this._onFail = p0; }
        
        
    this.getForm = function() return this._form; }
        
    this.setForm = function(p0) this._form = p0; }

        
    this.addDepend = function(p0) {
            
    this._depends[this._depends.length] = p0;
        }

    }


    ///Factory methods for create Field
    function FieldFactory() {}
    FieldFactory.getFieldFromDOM 
    = function(dom) {
        
    var field = new ValidationField();
        field.setName(dom.getAttribute(
    "name"));
        field.setDisplayName(dom.getAttribute(
    "display-name"));
        field.setOnFail(dom.getAttribute(
    "onfail"));
        
    if (dom.hasChildNodes()) {
            
    var depends = dom.childNodes;
            
    for (var i = 0; i < depends.length; i++{
                
    var item = depends.item(i);
                
    if (typeof(item.tagName) == 'undefined' || item.tagName != 'depend'{
                    
    continue;
                }

                
    var dp = new ValidationDepend();
                dp.setName(item.getAttribute(
    "name"));
                dp.addParam(item.getAttribute(
    "param0"));
                dp.addParam(item.getAttribute(
    "param1"));
                dp.addParam(item.getAttribute(
    "param2"));
                dp.addParam(item.getAttribute(
    "param3"));
                dp.addParam(item.getAttribute(
    "param4"));
                field.addDepend(dp);
            }

        }

        
    return field;
    }



    function FormFieldUtils() {}

    FormFieldUtils.findField 
    = function(formName, fieldName) {
        
        
    var formArr = ValidationFramework.getAllForms();
        
    var theForm = null;
        
    for (var i = 0; i < formArr.length; i++{
            
    if (formArr[i].getName() == formName) {
                theForm 
    = formArr[i];
            }

        }


        
    if (theForm != null{
            
    return theForm.findField(fieldName);
        }
     else {
            
    return null;
        }

    }


    /**
     * A validaton depend.
     
    */

    function ValidationDepend() {
        
    this._name = null;
        
    this._params = [];

        
    this.getName = function() return this._name; }
        
    this.setName = function(p0) this._name = p0; }

        
    this.getParams = function() return this._params; }
        
    this.setParams = function(p0) this.params = p0; }

        
    this.addParam = function(p0) {
            
    this._params[this._params.length] = p0;
        }

    }


    function ValidateMethodFactory() {}
    ValidateMethodFactory._methods 
    = [];
    ValidateMethodFactory.validateRequired 
    = function(field, params) {
        
    var obj = ValidationFramework.getWebFormFieldObj(field);    
        
    if (obj == nullreturn false;
        
    if (typeof(obj.type) == "undefined"{
            
    var tmp = 0;
            
    for (var i = 0; i < obj.length; i++{
                
    if (obj[i].checked) {
                    
    return true;
                }

            }

            
    return false;
        }


        
    if (obj.type == "checkbox" || obj.type == "radio"{
            
    return (obj.checked);
        }
     else {
            
    return !(obj.value == "");
        }

    }


    ValidateMethodFactory.validateInteger 
    = function(field, params) {
        
    var obj = ValidationFramework.getWebFormFieldObj(field);
        
    if (obj == nullreturn false;
        
    if (obj.value == ""return true;
        
    var exp = new RegExp("^-?/d+$");
        
    return exp.test(obj.value);
    }


    ValidateMethodFactory.validateDouble 
    = function(field, params) {
        
    var obj = ValidationFramework.getWebFormFieldObj(field);
        
    if (obj == nullreturn false;
        
    if (obj.value == ""return true;
        
    var exp = new RegExp("^-?/d+./d+$");
        
    return exp.test(obj.value);
    }

    ValidateMethodFactory.validateCommonChar 
    = function(field, params) {
        
    var obj = ValidationFramework.getWebFormFieldObj(field);
        
    if (obj == nullreturn false;
        
    if (obj.value == ""return true;
        
    var exp = new RegExp("^[A-Za-z0-9_]*$");
        
    return exp.test(obj.value);
    }

    ValidateMethodFactory.validateChineseChar 
    = function(field, params) {
        
    var obj = ValidationFramework.getWebFormFieldObj(field);
        
    if (obj == nullreturn false;
        
    if (obj.value == ""return true;
        
    var exp = new RegExp("^[一-龥豈-鶴]*$");
        
    return exp.test(obj.value);
    }

    ValidateMethodFactory.validateMinLength 
    = function(field, params) {
        
    var obj = ValidationFramework.getWebFormFieldObj(field);
        
    if (obj == nullreturn false;
        
    var v = ValidationFramework.getIntegerValue(params[0]);
        
    return (obj.value.length >= v);
    }

    ValidateMethodFactory.validateMaxLength 
    = function(field, params) {
        
    var obj = ValidationFramework.getWebFormFieldObj(field);
        
    if (obj == nullreturn false;
        
    var v = ValidationFramework.getIntegerValue(params[0]);
        
    return (obj.value.length <= v);
    }

    ValidateMethodFactory.validateEmail 
    = function(field, params) {
        
    var obj = ValidationFramework.getWebFormFieldObj(field);
        
    if (obj == nullreturn false;
        
    return ValidateMethodFactory.__checkEmail(obj.value);
    }

    ValidateMethodFactory.validateDate 
    = function(field, params) {
        
    var obj = ValidationFramework.getWebFormFieldObj(field);
        
    if (obj == nullreturn false;
        
    if (obj.value == ""return true;
        
        
    var value = obj.value;
        
    var datePattern = params[0];
        
    var MONTH = "mm";
        
    var DAY = "dd";
        
    var YEAR = "yyyy";
        
    var orderMonth = datePattern.indexOf(MONTH);
        
    var orderDay = datePattern.indexOf(DAY);
        
    var orderYear = datePattern.indexOf(YEAR);
        
    var bValid = true;
        
    var dateRegexp = null;

        
    if ((orderDay < orderYear && orderDay > orderMonth)) {
            
    var iDelim1 = orderMonth + MONTH.length;
            
    var iDelim2 = orderDay + DAY.length;
            
    var delim1 = datePattern.substring(iDelim1, iDelim1 + 1);
            
    var delim2 = datePattern.substring(iDelim2, iDelim2 + 1);
            
    if (iDelim1 == orderDay && iDelim2 == orderYear) {
                dateRegexp 
    = new RegExp("^(/d{2})(/d{2})(/d{4})$");
            }
     else if (iDelim1 == orderDay) {
                dateRegexp 
    = new RegExp("^(/d{2})(/d{2})[" + delim2 + "](/d{4})$");
            }
     else if (iDelim2 == orderYear) {
                dateRegexp 
    = new RegExp("^(/d{2})[" + delim1 + "](/d{2})(/d{4})$");
            }
     else {
                dateRegexp 
    = new RegExp("^(/d{2})[" + delim1 + "](/d{2})[" + delim2 + "](/d{4})$");
            }


            
    var matched = dateRegexp.exec(value);
            
    if(matched != null{
                
    if (!ValidateMethodFactory.__isValidDate(matched[2], matched[1], matched[3])) {
                    bValid 
    =  false;
                }

            }
     else {
                bValid 
    =  false;
            }

        }
     else if ((orderMonth < orderYear && orderMonth > orderDay)) 
            
    var iDelim1 = orderDay + DAY.length;
            
    var iDelim2 = orderMonth + MONTH.length;
            
    var delim1 = datePattern.substring(iDelim1, iDelim1 + 1);
            
    var delim2 = datePattern.substring(iDelim2, iDelim2 + 1);
            
    if (iDelim1 == orderMonth && iDelim2 == orderYear) {
                dateRegexp 
    = new RegExp("^(/d{2})(/d{2})(/d{4})$");
            }
     else if (iDelim1 == orderMonth) {
                dateRegexp 
    = new RegExp("^(/d{2})(/d{2})[" + delim2 + "](/d{4})$");
            }
     else if (iDelim2 == orderYear) {
                dateRegexp 
    = new RegExp("^(/d{2})[" + delim1 + "](/d{2})(/d{4})$");
            }
     else {
                dateRegexp 
    = new RegExp("^(/d{2})[" + delim1 + "](/d{2})[" + delim2 + "](/d{4})$");
            }

            
    var matched = dateRegexp.exec(value);
            
    if(matched != null{
                
    if (!ValidateMethodFactory.__isValidDate(matched[1], matched[2], matched[3])) {
                    bValid 
    = false;
                }

            }
     else {
                bValid 
    = false;
            }

        }
     else if ((orderMonth > orderYear && orderMonth < orderDay)) {
            
    var iDelim1 = orderYear + YEAR.length;
            
    var iDelim2 = orderMonth + MONTH.length;
            
    var delim1 = datePattern.substring(iDelim1, iDelim1 + 1);

            
    var delim2 = datePattern.substring(iDelim2, iDelim2 + 1);
            
    if (iDelim1 == orderMonth && iDelim2 == orderDay) {
                dateRegexp 
    = new RegExp("^(/d{4})(/d{2})(/d{2})$");
            }
     else if (iDelim1 == orderMonth) {
                dateRegexp 
    = new RegExp("^(/d{4})(/d{2})[" + delim2 + "](/d{2})$");
            }
     else if (iDelim2 == orderDay) {
                dateRegexp 
    = new RegExp("^(/d{4})[" + delim1 + "](/d{2})(/d{2})$");
            }
     else {
                dateRegexp 
    = new RegExp("^(/d{4})[" + delim1 + "](/d{2})[" + delim2 + "](/d{2})$");
            }

            
    var matched = dateRegexp.exec(value);
            
    if(matched != null{
                
    if (!ValidateMethodFactory.__isValidDate(matched[3], matched[2], matched[1])) {
                    bValid 
    =  false;
                }

            }
     else {
                bValid 
    =  false;
            }

        }
     else {
            bValid 
    =  false;
        }

        
    return bValid;
    }

    ValidateMethodFactory.validateTime 
    = function(field, params) {
        
    ////NOT IMPLEMENT YET SINCE IT'S NOT USEFUL.
        return true;
    }

    ValidateMethodFactory.validateMask 
    = function(field, params) {
        
    var obj = ValidationFramework.getWebFormFieldObj(field);
        
    if (obj == nullreturn false;
        
    if (obj.value == ""return true;
        
    var exp = new RegExp(params[0]);
        
    //FIXME: this method may be buggy, need more test.
        return exp.test(obj.value);
    }

    ValidateMethodFactory.validateIntegerRange 
    = function(field, params) {
        
    var obj = ValidationFramework.getWebFormFieldObj(field);
        
    if (obj == nullreturn false;
        
    if (obj.value == ""return true;
        
    var p0 = ValidationFramework.getIntegerValue(params[0]);
        
    var p1 = ValidationFramework.getIntegerValue(params[1]);
        
    if (ValidateMethodFactory.validateInteger(field)) {
            
    var v = parseInt(obj.value);
            
    return (v >= p0 && v <= p1);
        }
     else {
            
    return false;
        }

        
    return true;
    }

    ValidateMethodFactory.validateDoubleRange 
    = function(field, params) {
        
    var obj = ValidationFramework.getWebFormFieldObj(field);
        
    if (obj == nullreturn false;
        
    if (obj.value == ""return true;
        
    var p0 = ValidationFramework.getFloatValue(params[0]);
        
    var p1 = ValidationFramework.getFloatValue(params[1]);
        
    if (ValidateMethodFactory.validateInteger(field) || ValidateMethodFactory.validateDouble(field)) {
            
    var v = parseFloat(obj.value);
            
    return (v >= p0 && v <= p1);
        }
     else {
            
    return false;
        }

        
    return true;
    }

    ValidateMethodFactory.validateEqualsField 
    = function(field, params) {
        
    var obj = ValidationFramework.getWebFormFieldObj(field);    
        
    if (obj == nullreturn false;
        
    var formObj = document.getElementById(ValidationFramework._currentForm.getId());
        
    try{
            
    var eqField = formObj[params[0]];        
        }
    catch(e){        
            formObj 
    = document.getElementById(FormToChk);
            
    var eqField = formObj[params[0]];        
        }

        
        
    if (eqField != null{
            
    return (obj.value == eqField.value)
        }
     else {
            
    return false;    
        }

    }

    ValidateMethodFactory.validateNumberRange 
    = function(field, params) {//by lein
        
        
    var obj = ValidationFramework.getWebFormFieldObj(field);
        
    if (obj == nullreturn false;
        
    if (obj.value == ""return true;
        
    var p0 = ValidationFramework.getIntegerValue(params[0]);
        
    var p1 = ValidationFramework.getIntegerValue(params[1]);    
        
    var v = parseFloat(obj.value);
        
    if(isNaN(v)||v.length<1){
                
    return false    
        }
        
        
    return (v >= p0 && v <= p1);    
    }

    ValidateMethodFactory.__isValidDate 
    = function(day, month, year) {
        
    if (month < 1 || month > 12return false;
        
    if (day < 1 || day > 31return false;
        
    if ((month == 4 || month == 6 || month == 9 || month == 11&&(day == 31)) 
            
    return false;
        
        
    if (month == 2{
            
    var leap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
            
    if (day>29 || (day == 29 && !leap)) return false;
        }

        
        
    return true;
    }


    /**
     * Reference: Sandeep V. Tamhankar (stamhankar@hotmail.com),
     * http://javascript.internet.com
     
    */

    ValidateMethodFactory.__checkEmail 
    = function(emailStr) {                                                  
       
    if (emailStr.length == 0{                                                              
           
    return true;                                                                          
       }
                                                                                             
       
    var emailPat=/^(.+)@(.+)$/;                                                               
       
    var specialChars="/(/)<>@,;:///"/./[/]";                                         
       
    var validChars="[^/s" + specialChars + "]";                                            
       
    var quotedUser="("[^"]*")";                                                            
       
    var ipDomainPat=/^(d{1,3})[.](d{1,3})[.](d{1,3})[.](d{1,3})$/;                        
       
    var atom=validChars + '+';                                                                
       
    var word="(" + atom + "|" + quotedUser + ")";                                             
       
    var userPat=new RegExp("^" + word + "(/." + word + ")*$");                               
       
    var domainPat=new RegExp("^" + atom + "(/." + atom + ")*$");                             
       
    var matchArray=emailStr.match(emailPat);                                                  
       
    if (matchArray == null{                                                                 
           
    return false;                                                                         
       }
                                                                                             
       
    var user=matchArray[1];                                                                   
       
    var domain=matchArray[2];                                                                 
       
    if (user.match(userPat) == null{                                                        
           
    return false;                                                                         
       }
                                                                                             
       
    var IPArray = domain.match(ipDomainPat);                                                  
       
    if (IPArray != null{                                                                    
           
    for (var i = 1; i <= 4; i++{                                                        
              
    if (IPArray[i] > 255{                                                            
                 
    return false;                                                                   
              }
                                                                                      
           }
                                                                                         
           
    return true;                                                                          
       }
                                                                                             
       
    var domainArray=domain.match(domainPat);                                                  
       
    if (domainArray == null{                                                                
           
    return false;                                                                         
       }
                                                                                             
       
    var atomPat=new RegExp(atom,"g");                                                         
       
    var domArr=domain.match(atomPat);                                                         
       
    var len=domArr.length;                                                                    
       
    if ((domArr[domArr.length-1].length < 2||                                               
           (domArr[domArr.length
    -1].length > 3)) {                                               
           
    return false;                                                                         
       }
                                                                                             
       
    if (len < 2{                                                                            
           
    return false;                                                                         
       }
                                                                                             
       
    return true;                                                                              
    }
                                                                                                

    ////Language Definitions
    var ValidationErrorString = new Object();
    ////Simplified Chinese(zh-ch)
    ValidationErrorString["zh-cn"= new Object();
    ValidationErrorString[
    "zh-cn"]["default"]="域{0}校验失败。";
    ValidationErrorString[
    "zh-cn"]["required"]="{0}不能为空。";
    ValidationErrorString[
    "zh-cn"]["integer"]="{0}必须是一个整数。";
    ValidationErrorString[
    "zh-cn"]["double"]="{0}必须是一个浮点数(带小数点)。";
    ValidationErrorString[
    "zh-cn"]["commonchar"= "{0}必须是普通英文字符:字母,数字和下划线。";
    ValidationErrorString[
    "zh-cn"]["chinesechar"= "{0}必须是中文字符。";
    ValidationErrorString[
    "zh-cn"]["minlength"]="{0}长度不能小于{1}个字符。";
    ValidationErrorString[
    "zh-cn"]["maxlength"]="{0}长度不能大于{1}个字符。" ;
    ValidationErrorString[
    "zh-cn"]["invalid"]="{0}无效。";                                                             
    ValidationErrorString[
    "zh-cn"]["date"]="{0}不是一个有效日期,期待格式:{1}。";
    ValidationErrorString[
    "zh-cn"]["integerrange"]="{0}必须在整数{1}和{2}之间。";
    ValidationErrorString[
    "zh-cn"]["doublerange"]="{0}必须在浮点数{1}和{2}之间。";
    ValidationErrorString[
    "zh-cn"]["pid"]="{0}不是一个有效身份证号。";
    ValidationErrorString[
    "zh-cn"]["email"]="{0}不是一个有效的Email。";
    ValidationErrorString[
    "zh-cn"]["equalsfield"]="{0}必须和{1}一致。";
    ValidationErrorString[
    "zh-cn"]["numberrange"]="{0}必须在数值{1}和{2}之间。";
    ////English(en-us)
    ValidationErrorString["en-us"= new Object();
    ValidationErrorString[
    "en-us"]["default"]="Failed when validating filed {0}.";
    ValidationErrorString[
    "en-us"]["required"]="{0} is required.";
    ValidationErrorString[
    "en-us"]["integer"]="{0} must be a integer.";
    ValidationErrorString[
    "en-us"]["double"]="{0} must be a double value. ";
    ValidationErrorString[
    "en-us"]["commonchar"= "{0} should be common ascii characters, A-Z,a-z and undercore. ";
    ValidationErrorString[
    "en-us"]["chinesechar"= "{0} must be chinese characters. ";
    ValidationErrorString[
    "en-us"]["minlength"]="{0} cannot be less then {1}. ";
    ValidationErrorString[
    "en-us"]["maxlength"]="{0} cannot be more then {1}. ";
    ValidationErrorString[
    "en-us"]["invalid"]="{0} in invalid. ";                                                             
    ValidationErrorString[
    "en-us"]["date"]="{0} is not an invalid date format: {1}. ";
    ValidationErrorString[
    "en-us"]["integerrange"]="{0} should be between number {1} and {2}. ";
    ValidationErrorString[
    "en-us"]["doublerange"]="{0} should be between double {1} and {2}. ";
    ValidationErrorString[
    "en-us"]["pid"]="{0} is not an valid pid. ";
    ValidationErrorString[
    "en-us"]["email"]="{0} is not an valid email address. ";
    ValidationErrorString[
    "en-us"]["equalsfield"]="{0} should be agree with field {1}. ";
    ValidationErrorString[
    "en-us"]["numberrange"]="{0} should be between number {1} and {2}. ";

    ValidationErrorString[
    "zh-big5"= new Object();
    ValidationErrorString[
    "zh-big5"]["default"]="域{0}校驗失敗。";
    ValidationErrorString[
    "zh-big5"]["required"]="{0}不能為空。";
    ValidationErrorString[
    "zh-big5"]["integer"]="{0}必須是一個整數。";
    ValidationErrorString[
    "zh-big5"]["double"]="{0}必須是一個浮點數(帶小數點)。";
    ValidationErrorString[
    "zh-big5"]["commonchar"= "{0}必須是普通英文字元:字母,數位和下劃線。";
    ValidationErrorString[
    "zh-big5"]["chinesechar"= "{0}必須是中文字元。";
    ValidationErrorString[
    "zh-big5"]["minlength"]="{0}長度不能小於{1}個字元。";
    ValidationErrorString[
    "zh-big5"]["maxlength"]="{0}長度不能大於{1}個字元。" ;
    ValidationErrorString[
    "zh-big5"]["invalid"]="{0}無效。";                                                             
    ValidationErrorString[
    "zh-big5"]["date"]="{0}不是一個有效日期,期待格式:{1}。";
    ValidationErrorString[
    "zh-big5"]["integerrange"]="{0}必須在整數{1}和{2}之間。";
    ValidationErrorString[
    "zh-big5"]["doublerange"]="{0}必須在浮點數{1}和{2}之間。";
    ValidationErrorString[
    "zh-big5"]["pid"]="{0}不是一個有效身份證號。";
    ValidationErrorString[
    "zh-big5"]["email"]="{0}不是一個有效的Email。";
    ValidationErrorString[
    "zh-big5"]["equalsfield"]="{0}必須和{1}一致。";
    ValidationErrorString[
    "zh-big5"]["numberrange"]="{0}必須在數值{1}和{2}之間。";

    // preload the validation file.
    //
    ValidationFramework.getDocumentElement();
     
  • 相关阅读:
    第九章
    第十章
    第八章
    第七章
    第六章
    第五章
    第四章
    第三章
    第二章
    第一章
  • 原文地址:https://www.cnblogs.com/lein317/p/5067667.html
Copyright © 2020-2023  润新知