修改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();
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值