blob: 352fc9ca635d757b718be0bbd501f9f64bfa3502 [file] [log] [blame]
/*
Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
Available via Academic Free License >= 2.1 OR the modified BSD license.
see: http://dojotoolkit.org/license for details
*/
if(!dojo._hasResource["dojox.validate.check"]){
dojo._hasResource["dojox.validate.check"]=true;
dojo.provide("dojox.validate.check");
dojo.experimental;
dojo.require("dojox.validate._base");
dojox.validate.check=function(_1,_2){
var _3=[];
var _4=[];
var _5={isSuccessful:function(){
return (!this.hasInvalid()&&!this.hasMissing());
},hasMissing:function(){
return (_3.length>0);
},getMissing:function(){
return _3;
},isMissing:function(_6){
for(var i=0;i<_3.length;i++){
if(_6==_3[i]){
return true;
}
}
return false;
},hasInvalid:function(){
return (_4.length>0);
},getInvalid:function(){
return _4;
},isInvalid:function(_8){
for(var i=0;i<_4.length;i++){
if(_8==_4[i]){
return true;
}
}
return false;
}};
var _a=function(_b,_c){
return (typeof _c[_b]=="undefined");
};
if(_2.trim instanceof Array){
for(var i=0;i<_2.trim.length;i++){
var _e=_1[_2.trim[i]];
if(_a("type",_e)||_e.type!="text"&&_e.type!="textarea"&&_e.type!="password"){
continue;
}
_e.value=_e.value.replace(/(^\s*|\s*$)/g,"");
}
}
if(_2.uppercase instanceof Array){
for(var i=0;i<_2.uppercase.length;i++){
var _e=_1[_2.uppercase[i]];
if(_a("type",_e)||_e.type!="text"&&_e.type!="textarea"&&_e.type!="password"){
continue;
}
_e.value=_e.value.toUpperCase();
}
}
if(_2.lowercase instanceof Array){
for(var i=0;i<_2.lowercase.length;i++){
var _e=_1[_2.lowercase[i]];
if(_a("type",_e)||_e.type!="text"&&_e.type!="textarea"&&_e.type!="password"){
continue;
}
_e.value=_e.value.toLowerCase();
}
}
if(_2.ucfirst instanceof Array){
for(var i=0;i<_2.ucfirst.length;i++){
var _e=_1[_2.ucfirst[i]];
if(_a("type",_e)||_e.type!="text"&&_e.type!="textarea"&&_e.type!="password"){
continue;
}
_e.value=_e.value.replace(/\b\w+\b/g,function(_f){
return _f.substring(0,1).toUpperCase()+_f.substring(1).toLowerCase();
});
}
}
if(_2.digit instanceof Array){
for(var i=0;i<_2.digit.length;i++){
var _e=_1[_2.digit[i]];
if(_a("type",_e)||_e.type!="text"&&_e.type!="textarea"&&_e.type!="password"){
continue;
}
_e.value=_e.value.replace(/\D/g,"");
}
}
if(_2.required instanceof Array){
for(var i=0;i<_2.required.length;i++){
if(!dojo.isString(_2.required[i])){
continue;
}
var _e=_1[_2.required[i]];
if(!_a("type",_e)&&(_e.type=="text"||_e.type=="textarea"||_e.type=="password"||_e.type=="file")&&/^\s*$/.test(_e.value)){
_3[_3.length]=_e.name;
}else{
if(!_a("type",_e)&&(_e.type=="select-one"||_e.type=="select-multiple")&&(_e.selectedIndex==-1||/^\s*$/.test(_e.options[_e.selectedIndex].value))){
_3[_3.length]=_e.name;
}else{
if(_e instanceof Array){
var _10=false;
for(var j=0;j<_e.length;j++){
if(_e[j].checked){
_10=true;
}
}
if(!_10){
_3[_3.length]=_e[0].name;
}
}
}
}
}
}
if(_2.required instanceof Array){
for(var i=0;i<_2.required.length;i++){
if(!dojo.isObject(_2.required[i])){
continue;
}
var _e,_12;
for(var _13 in _2.required[i]){
_e=_1[_13];
_12=_2.required[i][_13];
}
if(_e instanceof Array){
var _10=0;
for(var j=0;j<_e.length;j++){
if(_e[j].checked){
_10++;
}
}
if(_10<_12){
_3[_3.length]=_e[0].name;
}
}else{
if(!_a("type",_e)&&_e.type=="select-multiple"){
var _14=0;
for(var j=0;j<_e.options.length;j++){
if(_e.options[j].selected&&!/^\s*$/.test(_e.options[j].value)){
_14++;
}
}
if(_14<_12){
_3[_3.length]=_e.name;
}
}
}
}
}
if(dojo.isObject(_2.dependencies)){
for(_13 in _2.dependencies){
var _e=_1[_13];
if(_a("type",_e)){
continue;
}
if(_e.type!="text"&&_e.type!="textarea"&&_e.type!="password"){
continue;
}
if(/\S+/.test(_e.value)){
continue;
}
if(_5.isMissing(_e.name)){
continue;
}
var _15=_1[_2.dependencies[_13]];
if(_15.type!="text"&&_15.type!="textarea"&&_15.type!="password"){
continue;
}
if(/^\s*$/.test(_15.value)){
continue;
}
_3[_3.length]=_e.name;
}
}
if(dojo.isObject(_2.constraints)){
for(_13 in _2.constraints){
var _e=_1[_13];
if(!_e){
continue;
}
if(!_a("tagName",_e)&&(_e.tagName.toLowerCase().indexOf("input")>=0||_e.tagName.toLowerCase().indexOf("textarea")>=0)&&/^\s*$/.test(_e.value)){
continue;
}
var _16=true;
if(dojo.isFunction(_2.constraints[_13])){
_16=_2.constraints[_13](_e.value);
}else{
if(dojo.isArray(_2.constraints[_13])){
if(dojo.isArray(_2.constraints[_13][0])){
for(var i=0;i<_2.constraints[_13].length;i++){
_16=dojox.validate.evaluateConstraint(_2,_2.constraints[_13][i],_13,_e);
if(!_16){
break;
}
}
}else{
_16=dojox.validate.evaluateConstraint(_2,_2.constraints[_13],_13,_e);
}
}
}
if(!_16){
_4[_4.length]=_e.name;
}
}
}
if(dojo.isObject(_2.confirm)){
for(_13 in _2.confirm){
var _e=_1[_13];
var _15=_1[_2.confirm[_13]];
if(_a("type",_e)||_a("type",_15)||(_e.type!="text"&&_e.type!="textarea"&&_e.type!="password")||(_15.type!=_e.type)||(_15.value==_e.value)||(_5.isInvalid(_e.name))||(/^\s*$/.test(_15.value))){
continue;
}
_4[_4.length]=_e.name;
}
}
return _5;
};
dojox.validate.evaluateConstraint=function(_17,_18,_19,_1a){
var _1b=_18[0];
var _1c=_18.slice(1);
_1c.unshift(_1a.value);
if(typeof _1b!="undefined"){
return _1b.apply(null,_1c);
}
return false;
};
}