yii.validation=(function($){var pub={isEmpty:function(value){return value===null||value===undefined||($.isArray(value)&&value.length===0)||value==='';},addMessage:function(messages,message,value){messages.push(message.replace(/\{value\}/g,value));},required:function(value,messages,options){var valid=false;if(options.requiredValue===undefined){var isString=typeof value=='string'||value instanceof String;if(options.strict&&value!==undefined||!options.strict&&!pub.isEmpty(isString?$.trim(value):value)){valid=true;}}else if(!options.strict&&value==options.requiredValue||options.strict&&value===options.requiredValue){valid=true;} if(!valid){pub.addMessage(messages,options.message,value);}},'boolean':function(value,messages,options){if(options.skipOnEmpty&&pub.isEmpty(value)){return;} var valid=!options.strict&&(value==options.trueValue||value==options.falseValue)||options.strict&&(value===options.trueValue||value===options.falseValue);if(!valid){pub.addMessage(messages,options.message,value);}},string:function(value,messages,options){if(options.skipOnEmpty&&pub.isEmpty(value)){return;} if(typeof value!=='string'){pub.addMessage(messages,options.message,value);return;} if(options.is!==undefined&&value.length!=options.is){pub.addMessage(messages,options.notEqual,value);return;} if(options.min!==undefined&&value.lengthoptions.max){pub.addMessage(messages,options.tooLong,value);}},file:function(attribute,messages,options){var files=getUploadedFiles(attribute,messages,options);$.each(files,function(i,file){validateFile(file,messages,options);});},image:function(attribute,messages,options,deferredList){var files=getUploadedFiles(attribute,messages,options);$.each(files,function(i,file){validateFile(file,messages,options);if(typeof FileReader==="undefined"){return;} var deferred=$.Deferred();pub.validateImage(file,messages,options,deferred,new FileReader(),new Image());deferredList.push(deferred);});},validateImage:function(file,messages,options,deferred,fileReader,image){image.onload=function(){validateImageSize(file,image,messages,options);deferred.resolve();};image.onerror=function(){messages.push(options.notImage.replace(/\{file\}/g,file.name));deferred.resolve();};fileReader.onload=function(){image.src=this.result;};fileReader.onerror=function(){deferred.resolve();};fileReader.readAsDataURL(file);},number:function(value,messages,options){if(options.skipOnEmpty&&pub.isEmpty(value)){return;} if(typeof value==='string'&&!options.pattern.test(value)){pub.addMessage(messages,options.message,value);return;} if(options.min!==undefined&&valueoptions.max){pub.addMessage(messages,options.tooBig,value);}},range:function(value,messages,options){if(options.skipOnEmpty&&pub.isEmpty(value)){return;} if(!options.allowArray&&$.isArray(value)){pub.addMessage(messages,options.message,value);return;} var inArray=true;$.each($.isArray(value)?value:[value],function(i,v){if($.inArray(v,options.range)==-1){inArray=false;return false;}else{return true;}});if(options.not===undefined){options.not=false;} if(options.not===inArray){pub.addMessage(messages,options.message,value);}},regularExpression:function(value,messages,options){if(options.skipOnEmpty&&pub.isEmpty(value)){return;} if(!options.not&&!options.pattern.test(value)||options.not&&options.pattern.test(value)){pub.addMessage(messages,options.message,value);}},email:function(value,messages,options){if(options.skipOnEmpty&&pub.isEmpty(value)){return;} var valid=true,regexp=/^((?:"?([^"]*)"?\s)?)(?:\s+)?(?:(]+))(>?))$/,matches=regexp.exec(value);if(matches===null){valid=false;}else{var localPart=matches[5],domain=matches[6];if(options.enableIDN){localPart=punycode.toASCII(localPart);domain=punycode.toASCII(domain);value=matches[1]+matches[3]+localPart+'@'+domain+matches[7];} if(localPart.length>64){valid=false;}else if((localPart+'@'+domain).length>254){valid=false;}else{valid=options.pattern.test(value)||(options.allowName&&options.fullPattern.test(value));}} if(!valid){pub.addMessage(messages,options.message,value);}},url:function(value,messages,options){if(options.skipOnEmpty&&pub.isEmpty(value)){return;} if(options.defaultScheme&&!/:\/\//.test(value)){value=options.defaultScheme+'://'+value;} var valid=true;if(options.enableIDN){var matches=/^([^:]+):\/\/([^\/]+)(.*)$/.exec(value);if(matches===null){valid=false;}else{value=matches[1]+'://'+punycode.toASCII(matches[2])+matches[3];}} if(!valid||!options.pattern.test(value)){pub.addMessage(messages,options.message,value);}},trim:function($form,attribute,options){var $input=$form.find(attribute.input);var value=$input.val();if(!options.skipOnEmpty||!pub.isEmpty(value)){value=$.trim(value);$input.val(value);} return value;},captcha:function(value,messages,options){if(options.skipOnEmpty&&pub.isEmpty(value)){return;} var hash=$('body').data(options.hashKey);hash=hash==null?options.hash:hash[options.caseSensitive?0:1];var v=options.caseSensitive?value:value.toLowerCase();for(var i=v.length-1,h=0;i>=0;--i){h+=v.charCodeAt(i);} if(h!=hash){pub.addMessage(messages,options.message,value);}},compare:function(value,messages,options,$form){if(options.skipOnEmpty&&pub.isEmpty(value)){return;} var compareValue,valid=true;if(options.compareAttribute===undefined){compareValue=options.compareValue;}else{var attributes=$form.data('yiiActiveForm').attributes for(var i=attributes.length-1;i>=0;i--){if(attributes[i].id===options.compareAttribute){compareValue=$(attributes[i].input).val();}}} if(options.type==='number'){value=parseFloat(value);compareValue=parseFloat(compareValue);} switch(options.operator){case '==':valid=value==compareValue;break;case '===':valid=value===compareValue;break;case '!=':valid=value!=compareValue;break;case '!==':valid=value!==compareValue;break;case '>':valid=value>compareValue;break;case '>=':valid=value>=compareValue;break;case '<':valid=value0){var index=file.name.lastIndexOf('.');var ext=!~index?'':file.name.substr(index+1,file.name.length).toLowerCase();if(!~options.extensions.indexOf(ext)){messages.push(options.wrongExtension.replace(/\{file\}/g,file.name));}} if(options.mimeTypes&&options.mimeTypes.length>0){if(!validateMimeType(options.mimeTypes,file.type)){messages.push(options.wrongMimeType.replace(/\{file\}/g,file.name));}} if(options.maxSize&&options.maxSizefile.size){messages.push(options.tooSmall.replace(/\{file\}/g,file.name));}} function validateMimeType(mimeTypes,fileType){for(var i=0,len=mimeTypes.length;ioptions.maxWidth){messages.push(options.overWidth.replace(/\{file\}/g,file.name));} if(options.minHeight&&image.heightoptions.maxHeight){messages.push(options.overHeight.replace(/\{file\}/g,file.name));}} return pub;})(jQuery);