var Spry;
if(!Spry){
Spry={};
}
if(!Spry.Widget){
Spry.Widget={};
}
Spry.Widget.BrowserSniff=function(){
var b=navigator.appName.toString();
var up=navigator.platform.toString();
var ua=navigator.userAgent.toString();
this.mozilla=this.ie=this.opera=r=false;
var _1=/Opera.([0-9\.]*)/i;
var _2=/MSIE.([0-9\.]*)/i;
var _3=/gecko/i;
var _4=/safari\/([\d\.]*)/i;
if(ua.match(_1)){
r=ua.match(_1);
this.opera=true;
this.version=parseFloat(r[1]);
}else{
if(ua.match(_2)){
r=ua.match(_2);
this.ie=true;
this.version=parseFloat(r[1]);
}else{
if(ua.match(_4)){
this.safari=true;
this.version=1.4;
}else{
if(ua.match(_3)){
var _5=/rv:\s*([0-9\.]+)/i;
r=ua.match(_5);
this.mozilla=true;
this.version=parseFloat(r[1]);
}
}
}
}
this.windows=this.mac=this.linux=false;
this.Platform=ua.match(/windows/i)?"windows":(ua.match(/linux/i)?"linux":(ua.match(/mac/i)?"mac":ua.match(/unix/i)?"unix":"unknown"));
this[this.Platform]=true;
this.v=this.version;
if(this.safari&&this.mac&&this.mozilla){
this.mozilla=false;
}
};
Spry.is=new Spry.Widget.BrowserSniff();
Spry.Widget.ValidationTextField=function(_6,_7,_8){
_7=Spry.Widget.Utils.firstValid(_7,"none");
if(typeof _7!="string"){
return;
}
if(typeof Spry.Widget.ValidationTextField.ValidationDescriptors[_7]=="undefined"){
return;
}
_8=Spry.Widget.Utils.firstValid(_8,{});
this.type=_7;
if(!this.isBrowserSupported()){
_8.useCharacterMasking=false;
}
this.init(_6,_8);
var _9=["submit"].concat(Spry.Widget.Utils.firstValid(this.options.validateOn,[]));
_9=_9.join(",");
this.validateOn=0;
this.validateOn=this.validateOn|(_9.indexOf("submit")!=-1?Spry.Widget.ValidationTextField.ONSUBMIT:0);
this.validateOn=this.validateOn|(_9.indexOf("blur")!=-1?Spry.Widget.ValidationTextField.ONBLUR:0);
this.validateOn=this.validateOn|(_9.indexOf("change")!=-1?Spry.Widget.ValidationTextField.ONCHANGE:0);
if(Spry.Widget.ValidationTextField.onloadDidFire){
this.attachBehaviors();
}else{
Spry.Widget.ValidationTextField.loadQueue.push(this);
}
};
Spry.Widget.ValidationTextField.ONCHANGE=1;
Spry.Widget.ValidationTextField.ONBLUR=2;
Spry.Widget.ValidationTextField.ONSUBMIT=4;
Spry.Widget.ValidationTextField.ERROR_REQUIRED=1;
Spry.Widget.ValidationTextField.ERROR_FORMAT=2;
Spry.Widget.ValidationTextField.ERROR_RANGE_MIN=4;
Spry.Widget.ValidationTextField.ERROR_RANGE_MAX=8;
Spry.Widget.ValidationTextField.ERROR_CHARS_MIN=16;
Spry.Widget.ValidationTextField.ERROR_CHARS_MAX=32;
Spry.Widget.ValidationTextField.ValidationDescriptors={"none":{},"custom":{},"integer":{characterMasking:/[\-\+\d]/,regExpFilter:/^[\-\+]?\d*$/,validation:function(_a,_b){
if(_a==""||_a=="-"||_a=="+"){
return false;
}
var _c=/^[\-\+]?\d*$/;
if(!_c.test(_a)){
return false;
}
_b=_b||{allowNegative:false};
var _d=parseInt(_a,10);
if(!isNaN(_d)){
var _e=true;
if(typeof _b.allowNegative!="undefined"&&_b.allowNegative==false){
_e=false;
}
if(!_e&&_a<0){
_d=false;
}
}else{
_d=false;
}
return _d;
}},"real":{characterMasking:/[\d\.,\-\+e]/i,regExpFilter:/^[\-\+]?\d(?:|\.,\d{0,2})|(?:|e{0,1}[\-\+]?\d{0,})$/i,validation:function(_f,_10){
var _11=/^[\+\-]?[0-9]+([\.,][0-9]+)?([eE]{0,1}[\-\+]?[0-9]+)?$/;
if(!_11.test(_f)){
return false;
}
var ret=parseFloat(_f);
if(isNaN(ret)){
ret=false;
}
return ret;
}},"currency":{formats:{"dot_comma":{characterMasking:/[\d\.\,\-\+\$]/,regExpFilter:/^[\-\+]?(?:[\d\.]*)+(|\,\d{0,2})$/,validation:function(_12,_13){
var ret=false;
if(/^(\-|\+)?\d{1,3}(?:\.\d{3})*(?:\,\d{2}|)$/.test(_12)||/^(\-|\+)?\d+(?:\,\d{2}|)$/.test(_12)){
_12=_12.toString().replace(/\./gi,"").replace(/\,/,".");
ret=parseFloat(_12);
}
return ret;
}},"comma_dot":{characterMasking:/[\d\.\,\-\+\$]/,regExpFilter:/^[\-\+]?(?:[\d\,]*)+(|\.\d{0,2})$/,validation:function(_14,_15){
var ret=false;
if(/^(\-|\+)?\d{1,3}(?:\,\d{3})*(?:\.\d{2}|)$/.test(_14)||/^(\-|\+)?\d+(?:\.\d{2}|)$/.test(_14)){
_14=_14.toString().replace(/\,/gi,"");
ret=parseFloat(_14);
}
return ret;
}}}},"email":{characterMasking:/[^\s]/,validation:function(_16,_17){
var rx=/^[\w\.-]+@[\w\.-]+\.\w+$/i;
return rx.test(_16);
}},"date":{validation:function(_18,_19){
var _1a=/^([mdy]+)[\.\-\/\\\s]+([mdy]+)[\.\-\/\\\s]+([mdy]+)$/i;
var _1b=this.dateValidationPattern;
var _1c=_19.format.match(_1a);
var _1d=_18.match(_1b);
if(_1c!==null&&_1d!==null){
var _1e=-1;
var _1f=-1;
var _20=-1;
for(var i=1;i<_1c.length;i++){
switch(_1c[i].toLowerCase()){
case "dd":
_1e=i;
break;
case "mm":
_1f=i;
break;
case "yy":
case "yyyy":
_20=i;
break;
}
}
if(_1e!=-1&&_1f!=-1&&_20!=-1){
var _21=-1;
var _22=parseInt(_1d[_1e],10);
var _23=parseInt(_1d[_1f],10);
var _24=parseInt(_1d[_20],10);
if(_23<1||_23>12){
return false;
}
switch(_23){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
_21=31;
break;
case 4:
case 6:
case 9:
case 11:
_21=30;
break;
case 2:
if((parseInt(_24/4,10)*4==_24)&&(parseInt(_24/100,10)*100!=_24)){
_21=29;
}else{
_21=28;
}
break;
}
if(_22<1||_22>_21){
return false;
}
return (new Date(_24,_23,_22));
}
}else{
return false;
}
}},"time":{validation:function(_25,_26){
var _27=/([hmst]+)/gi;
var _28=/(\d+|AM?|PM?)/gi;
var _29=_26.format.match(_27);
var _2a=_25.match(_28);
if(_29!==null&&_2a!==null){
if(_29.length!=_2a.length){
return false;
}
var _2b=-1;
var _2c=-1;
var _2d=-1;
var _2e=-1;
var _2f=0,_30=0,_31=0,_32="AM";
for(var i=0;i<_29.length;i++){
switch(_29[i].toLowerCase()){
case "hh":
_2b=i;
break;
case "mm":
_2c=i;
break;
case "ss":
_2d=i;
break;
case "t":
case "tt":
_2e=i;
break;
}
}
if(_2b!=-1){
var _2f=parseInt(_2a[_2b],10);
if(isNaN(_2f)||_2f>(_29[_2b]=="HH"?23:12)){
return false;
}
}
if(_2c!=-1){
var _30=parseInt(_2a[_2c],10);
if(isNaN(_30)||_30>59){
return false;
}
}
if(_2d!=-1){
var _31=parseInt(_2a[_2d],10);
if(isNaN(_31)||_31>59){
return false;
}
}
if(_2e!=-1){
var _32=_2a[_2e].toUpperCase();
if(_29[_2e].toUpperCase()=="TT"&&!/^a|pm$/i.test(_32)||_29[_2e].toUpperCase()=="T"&&!/^a|p$/i.test(_32)){
return false;
}
}
var _33=new Date(2000,0,1,_2f+(_32.charAt(0)=="P"?12:0),_30,_31);
return _33;
}else{
return false;
}
}},"credit_card":{characterMasking:/\d/,validation:function(_34,_35){
var _36=null;
_35.format=_35.format||"ALL";
switch(_35.format.toUpperCase()){
case "ALL":
_36=/^[3-6]{1}[0-9]{12,15}$/;
break;
case "VISA":
_36=/^4[0-9]{12,15}$/;
break;
case "MASTERCARD":
_36=/^5[1-5]{1}[0-9]{14}$/;
break;
case "AMEX":
_36=/^3(4|7){1}[0-9]{13}$/;
break;
case "DISCOVER":
_36=/^6011[0-9]{12}$/;
break;
case "DINERSCLUB":
_36=/^3((0[0-5]{1}[0-9]{11})|(6[0-9]{12})|(8[0-9]{12}))$/;
break;
}
if(!_36.test(_34)){
return false;
}
var _37=[];
var j=1,_38="";
for(var i=_34.length-1;i>=0;i--){
if((j%2)==0){
_38=parseInt(_34.charAt(i),10)*2;
_37[_37.length]=_38.toString().charAt(0);
if(_38.toString().length==2){
_37[_37.length]=_38.toString().charAt(1);
}
}else{
_38=_34.charAt(i);
_37[_37.length]=_38;
}
j++;
}
var sum=0;
for(i=0;i<_37.length;i++){
sum+=parseInt(_37[i],10);
}
if((sum%10)==0){
return true;
}
return false;
}},"zip_code":{formats:{"zip_us9":{pattern:"00000-0000"},"zip_us5":{pattern:"00000"},"zip_uk":{characterMasking:/[\dA-Z\s]/,validation:function(_39,_3a){
return /^[A-Z]{1,2}\d[\dA-Z]?\s?\d[A-Z]{2}$/.test(_39);
}},"zip_canada":{characterMasking:/[\dA-Z\s]/,pattern:"A0A 0A0"},"zip_custom":{}}},"phone_number":{formats:{"phone_us":{pattern:"(000) 000-0000"},"phone_custom":{}}},"social_security_number":{pattern:"000-00-0000"},"ip":{characterMaskingFormats:{"ipv4":/[\d\.]/i,"ipv6_ipv4":/[\d\.\:A-F\/]/i,"ipv6":/[\d\.\:A-F\/]/i},validation:function(_3b,_3c){
return Spry.Widget.ValidationTextField.validateIP(_3b,_3c.format);
}},"url":{characterMasking:/[^\s]/,validation:function(_3d,_3e){
var _3f=/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;
var _40=_3d.match(_3f);
if(_40&&_40[4]){
var _41=_40[4].split(".");
var _42="";
for(var i=0;i<_41.length;i++){
_42=Spry.Widget.Utils.punycode_encode(_41[i],64);
if(!_42){
return false;
}else{
if(_42!=(_41[i]+"-")){
_41[i]="xn--"+_42;
}
}
}
_41=_41.join(".");
_3d=_3d.replace(_3f,"$1//"+_41+"$5$6$8");
}
var _43=/^(?:https?|ftp)\:\/\/(?:(?:[a-z0-9\-\._~\!\$\&\'\(\)\*\+\,\;\=:]|%[0-9a-f]{2,2})*\@)?(?:((?:(?:[a-z0-9][a-z0-9\-]*[a-z0-9]|[a-z0-9])\.)*(?:[a-z][a-z0-9\-]*[a-z0-9]|[a-z])|(?:\[[^\]]*\]))(?:\:[0-9]*)?)(?:\/(?:[a-z0-9\-\._~\!\$\&\'\(\)\*\+\,\;\=\:\@]|%[0-9a-f]{2,2})*)*(?:\?(?:[a-z0-9\-\._~\!\$\&\'\(\)\*\+\,\;\=\:\@\/\?]|%[0-9a-f]{2,2})*)?(?:\#(?:[a-z0-9\-\._~\!\$\&\'\(\)\*\+\,\;\=\:\@\/\?]|%[0-9a-f]{2,2})*)?$/i;
var _44=_3d.match(_43);
if(_44){
var _45=_44[1];
if(_45){
if(_45=="[]"){
return false;
}
var _46=_45.charAt(0);
var _47=_45.charAt(_45.length-1);
if(_46=="["&&_47!="]"||_46!="["&&_47=="]"){
return false;
}else{
if(_46=="["&&_47=="]"){
_45=_45.replace(/^\[|\]$/gi,"");
return Spry.Widget.ValidationTextField.validateIP(_45,"ipv6_ipv4");
}else{
if(/[^0-9\.]/.test(_45)){
return true;
}else{
return Spry.Widget.ValidationTextField.validateIP(_45,"ipv4");
}
}
}
}else{
return true;
}
}else{
return false;
}
}}};
Spry.Widget.ValidationTextField.validateIP=function(_48,_49){
var _4a=[/^(?:[a-f0-9]{1,4}:){7}[a-f0-9]{1,4}(?:\/\d{1,3})?$/i,/^[a-f0-9]{0,4}::(?:\/\d{1,3})?$/i,/^:(?::[a-f0-9]{1,4}){1,6}(?:\/\d{1,3})?$/i,/^(?:[a-f0-9]{1,4}:){1,6}:(?:\/\d{1,3})?$/i,/^(?:[a-f0-9]{1,4}:)(?::[a-f0-9]{1,4}){1,6}(?:\/\d{1,3})?$/i,/^(?:[a-f0-9]{1,4}:){2}(?::[a-f0-9]{1,4}){1,5}(?:\/\d{1,3})?$/i,/^(?:[a-f0-9]{1,4}:){3}(?::[a-f0-9]{1,4}){1,4}(?:\/\d{1,3})?$/i,/^(?:[a-f0-9]{1,4}:){4}(?::[a-f0-9]{1,4}){1,3}(?:\/\d{1,3})?$/i,/^(?:[a-f0-9]{1,4}:){5}(?::[a-f0-9]{1,4}){1,2}(?:\/\d{1,3})?$/i,/^(?:[a-f0-9]{1,4}:){6}(?::[a-f0-9]{1,4})(?:\/\d{1,3})?$/i,/^(?:[a-f0-9]{1,4}:){6}(?:\d{1,3}\.){3}\d{1,3}(?:\/\d{1,3})?$/i,/^:(?::[a-f0-9]{1,4}){0,4}:(?:\d{1,3}\.){3}\d{1,3}(?:\/\d{1,3})?$/i,/^(?:[a-f0-9]{1,4}:){1,5}:(?:\d{1,3}\.){3}\d{1,3}(?:\/\d{1,3})?$/i,/^(?:[a-f0-9]{1,4}:)(?::[a-f0-9]{1,4}){1,4}:(?:\d{1,3}\.){3}\d{1,3}(?:\/\d{1,3})?$/i,/^(?:[a-f0-9]{1,4}:){2}(?::[a-f0-9]{1,4}){1,3}:(?:\d{1,3}\.){3}\d{1,3}(?:\/\d{1,3})?$/i,/^(?:[a-f0-9]{1,4}:){3}(?::[a-f0-9]{1,4}){1,2}:(?:\d{1,3}\.){3}\d{1,3}(?:\/\d{1,3})?$/i,/^(?:[a-f0-9]{1,4}:){4}(?::[a-f0-9]{1,4}):(?:\d{1,3}\.){3}\d{1,3}(?:\/\d{1,3})?$/i];
var _4b=[/^(\d{1,3}\.){3}\d{1,3}$/i];
var _4c=[];
if(_49=="ipv6"||_49=="ipv6_ipv4"){
_4c=_4c.concat(_4a);
}
if(_49=="ipv4"||_49=="ipv6_ipv4"){
_4c=_4c.concat(_4b);
}
var ret=false;
for(var i=0;i<_4c.length;i++){
if(_4c[i].test(_48)){
ret=true;
break;
}
}
if(ret&&_48.indexOf(".")!=-1){
var _4d=_48.match(/:?(?:\d{1,3}\.){3}\d{1,3}/i);
if(!_4d){
return false;
}
_4d=_4d[0].replace(/^:/,"");
var _4e=_4d.split(".");
if(_4e.length!=4){
return false;
}
var _4f=/^[\-\+]?\d*$/;
for(var i=0;i<_4e.length;i++){
if(_4e[i]==""){
return false;
}
var _50=parseInt(_4e[i],10);
if(isNaN(_50)||_50>255||!_4f.test(_4e[i])||_4e[i].length>3||/^0{2,3}$/.test(_4e[i])){
return false;
}
}
}
if(ret&&_48.indexOf("/")!=-1){
var _51=_48.match(/\/\d{1,3}$/);
if(!_51){
return false;
}
var _52=parseInt(_51[0].replace(/^\//,""),10);
if(isNaN(_52)||_52>128||_52<1){
return false;
}
}
return ret;
};
Spry.Widget.ValidationTextField.onloadDidFire=false;
Spry.Widget.ValidationTextField.loadQueue=[];
Spry.Widget.ValidationTextField.prototype.isBrowserSupported=function(){
return Spry.is.ie&&Spry.is.v>=5&&Spry.is.windows||Spry.is.mozilla&&Spry.is.v>=1.4||Spry.is.safari||Spry.is.opera&&Spry.is.v>=9;
};
Spry.Widget.ValidationTextField.prototype.init=function(_53,_54){
this.element=this.getElement(_53);
this.errors=0;
this.flags={locked:false};
this.options={};
this.event_handlers=[];
this.validClass="textfieldValidState";
this.focusClass="textfieldFocusState";
this.requiredClass="textfieldRequiredState";
this.invalidFormatClass="textfieldInvalidFormatState";
this.invalidRangeMinClass="textfieldMinValueState";
this.invalidRangeMaxClass="textfieldMaxValueState";
this.invalidCharsMinClass="textfieldMinCharsState";
this.invalidCharsMaxClass="textfieldMaxCharsState";
this.textfieldFlashTextClass="textfieldFlashText";
if(Spry.is.safari){
this.flags.lastKeyPressedTimeStamp=0;
}
switch(this.type){
case "phone_number":
_54.format=Spry.Widget.Utils.firstValid(_54.format,"phone_us");
break;
case "currency":
_54.format=Spry.Widget.Utils.firstValid(_54.format,"comma_dot");
break;
case "zip_code":
_54.format=Spry.Widget.Utils.firstValid(_54.format,"zip_us5");
break;
case "date":
_54.format=Spry.Widget.Utils.firstValid(_54.format,"mm/dd/yy");
break;
case "time":
_54.format=Spry.Widget.Utils.firstValid(_54.format,"HH:mm");
_54.pattern=_54.format.replace(/[hms]/gi,"0").replace(/TT/gi,"AM").replace(/T/gi,"A");
break;
case "ip":
_54.format=Spry.Widget.Utils.firstValid(_54.format,"ipv4");
_54.characterMasking=Spry.Widget.ValidationTextField.ValidationDescriptors[this.type].characterMaskingFormats[_54.format];
break;
}
var _55={};
if(_54.format&&Spry.Widget.ValidationTextField.ValidationDescriptors[this.type].formats){
if(Spry.Widget.ValidationTextField.ValidationDescriptors[this.type].formats[_54.format]){
Spry.Widget.Utils.setOptions(_55,Spry.Widget.ValidationTextField.ValidationDescriptors[this.type].formats[_54.format]);
}
}else{
Spry.Widget.Utils.setOptions(_55,Spry.Widget.ValidationTextField.ValidationDescriptors[this.type]);
}
_54.useCharacterMasking=Spry.Widget.Utils.firstValid(_54.useCharacterMasking,false);
_54.hint=Spry.Widget.Utils.firstValid(_54.hint,"");
_54.isRequired=Spry.Widget.Utils.firstValid(_54.isRequired,true);
_54.characterMasking=Spry.Widget.Utils.firstValid(_54.characterMasking,_55.characterMasking);
_54.regExpFilter=Spry.Widget.Utils.firstValid(_54.regExpFilter,_55.regExpFilter);
_54.pattern=Spry.Widget.Utils.firstValid(_54.pattern,_55.pattern);
_54.validation=Spry.Widget.Utils.firstValid(_54.validation,_55.validation);
if(typeof _54.validation=="string"){
_54.validation=eval(_54.validation);
}
_54.minValue=Spry.Widget.Utils.firstValid(_54.minValue,_55.minValue);
_54.maxValue=Spry.Widget.Utils.firstValid(_54.maxValue,_55.maxValue);
_54.minChars=Spry.Widget.Utils.firstValid(_54.minChars,_55.minChars);
_54.maxChars=Spry.Widget.Utils.firstValid(_54.maxChars,_55.maxChars);
Spry.Widget.Utils.setOptions(this,_54);
Spry.Widget.Utils.setOptions(this.options,_54);
};
Spry.Widget.ValidationTextField.prototype.destroy=function(){
for(var i=0;i<this.event_handlers.length;i++){
Spry.Widget.Utils.removeEventListener(this.event_handlers[i][0],this.event_handlers[i][1],this.event_handlers[i][2],false);
}
try{
delete this.element;
}
catch(err){
}
try{
delete this.input;
}
catch(err){
}
try{
delete this.form;
}
catch(err){
}
try{
delete this.event_handlers;
}
catch(err){
}
try{
this.selection.destroy();
}
catch(err){
}
try{
delete this.selection;
}
catch(err){
}
var q=Spry.Widget.Form.onSubmitWidgetQueue;
var _56=q.length;
for(var i=0;i<_56;i++){
if(q[i]==this){
q.splice(i,1);
break;
}
}
};
Spry.Widget.ValidationTextField.prototype.attachBehaviors=function(){
if(this.element){
if(this.element.nodeName=="INPUT"){
this.input=this.element;
}else{
this.input=Spry.Widget.Utils.getFirstChildWithNodeNameAtAnyLevel(this.element,"INPUT");
}
}
if(this.input){
if(this.maxChars){
this.input.removeAttribute("maxLength");
}
this.putHint();
this.compilePattern();
if(this.type=="date"){
this.compileDatePattern();
}
this.input.setAttribute("AutoComplete","off");
this.selection=new Spry.Widget.SelectionDescriptor(this.input);
this.oldValue=this.input.value;
var _57=this;
this.event_handlers=[];
this.event_handlers.push([this.input,"keydown",function(e){
if(_57.isDisabled()){
return true;
}
return _57.onKeyDown(e||event);
}]);
this.event_handlers.push([this.input,"keypress",function(e){
if(_57.isDisabled()){
return true;
}
return _57.onKeyPress(e||event);
}]);
if(Spry.is.opera){
this.event_handlers.push([this.input,"keyup",function(e){
if(_57.isDisabled()){
return true;
}
return _57.onKeyUp(e||event);
}]);
}
this.event_handlers.push([this.input,"focus",function(e){
if(_57.isDisabled()){
return true;
}
return _57.onFocus(e||event);
}]);
this.event_handlers.push([this.input,"blur",function(e){
if(_57.isDisabled()){
return true;
}
return _57.onBlur(e||event);
}]);
this.event_handlers.push([this.input,"mousedown",function(e){
if(_57.isDisabled()){
return true;
}
return _57.onMouseDown(e||event);
}]);
var _58=Spry.is.mozilla||Spry.is.opera||Spry.is.safari?"input":Spry.is.ie?"propertychange":"change";
this.event_handlers.push([this.input,_58,function(e){
if(_57.isDisabled()){
return true;
}
return _57.onChange(e||event);
}]);
if(Spry.is.mozilla||Spry.is.safari){
this.event_handlers.push([this.input,"dragdrop",function(e){
if(_57.isDisabled()){
return true;
}
_57.removeHint();
return _57.onChange(e||event);
}]);
}else{
if(Spry.is.ie){
this.event_handlers.push([this.input,"drop",function(e){
if(_57.isDisabled()){
return true;
}
return _57.onDrop(e||event);
}]);
}
}
for(var i=0;i<this.event_handlers.length;i++){
Spry.Widget.Utils.addEventListener(this.event_handlers[i][0],this.event_handlers[i][1],this.event_handlers[i][2],false);
}
this.form=Spry.Widget.Utils.getFirstParentWithNodeName(this.input,"FORM");
if(this.form){
if(!this.form.attachedSubmitHandler&&!this.form.onsubmit){
this.form.onsubmit=function(e){
e=e||event;
return Spry.Widget.Form.onSubmit(e,e.srcElement||e.currentTarget);
};
this.form.attachedSubmitHandler=true;
}
if(!this.form.attachedResetHandler){
Spry.Widget.Utils.addEventListener(this.form,"reset",function(e){
e=e||event;
return Spry.Widget.Form.onReset(e,e.srcElement||e.currentTarget);
},false);
this.form.attachedResetHandler=true;
}
Spry.Widget.Form.onSubmitWidgetQueue.push(this);
}
}
};
Spry.Widget.ValidationTextField.prototype.isDisabled=function(){
return this.input&&(this.input.disabled||this.input.readOnly)||!this.input;
};
Spry.Widget.ValidationTextField.prototype.getElement=function(ele){
if(ele&&typeof ele=="string"){
return document.getElementById(ele);
}
return ele;
};
Spry.Widget.ValidationTextField.addLoadListener=function(_59){
if(typeof window.addEventListener!="undefined"){
window.addEventListener("load",_59,false);
}else{
if(typeof document.addEventListener!="undefined"){
document.addEventListener("load",_59,false);
}else{
if(typeof window.attachEvent!="undefined"){
window.attachEvent("onload",_59);
}
}
}
};
Spry.Widget.ValidationTextField.processLoadQueue=function(_5a){
Spry.Widget.ValidationTextField.onloadDidFire=true;
var q=Spry.Widget.ValidationTextField.loadQueue;
var _5b=q.length;
for(var i=0;i<_5b;i++){
q[i].attachBehaviors();
}
};
Spry.Widget.ValidationTextField.addLoadListener(Spry.Widget.ValidationTextField.processLoadQueue);
Spry.Widget.ValidationTextField.addLoadListener(function(){
Spry.Widget.Utils.addEventListener(window,"unload",Spry.Widget.Form.destroyAll,false);
});
Spry.Widget.ValidationTextField.prototype.setValue=function(_5c){
this.flags.locked=true;
this.input.value=_5c;
this.flags.locked=false;
this.oldValue=_5c;
if(!Spry.is.ie){
this.onChange();
}
};
Spry.Widget.ValidationTextField.prototype.saveState=function(){
this.oldValue=this.input.value;
this.selection.update();
};
Spry.Widget.ValidationTextField.prototype.revertState=function(_5d){
if(_5d!=this.input.value){
this.input.readOnly=true;
this.input.value=_5d;
this.input.readOnly=false;
if(Spry.is.safari&&this.flags.active){
this.input.focus();
}
}
this.selection.moveTo(this.selection.start,this.selection.end);
this.redTextFlash();
};
Spry.Widget.ValidationTextField.prototype.removeHint=function(){
if(this.flags.hintOn){
this.input.value="";
this.flags.hintOn=false;
}
};
Spry.Widget.ValidationTextField.prototype.putHint=function(){
if(this.hint&&this.input&&this.input.type=="text"&&this.input.value==""){
this.flags.hintOn=true;
this.input.value=this.hint;
}
};
Spry.Widget.ValidationTextField.prototype.redTextFlash=function(){
var _5e=this;
this.addClassName(this.element,this.textfieldFlashTextClass);
setTimeout(function(){
_5e.removeClassName(_5e.element,_5e.textfieldFlashTextClass);
},100);
};
Spry.Widget.ValidationTextField.prototype.doValidations=function(_5f,_60){
if(this.isDisabled()){
return false;
}
if(this.flags.locked){
return false;
}
if(_5f.length==0&&!this.isRequired){
this.errors=0;
return false;
}
this.flags.locked=true;
var _61=false;
var _62=true;
if(!this.options.isRequired&&_5f.length==0){
_62=false;
}
var _63=0;
var _64=_5f;
if(this.useCharacterMasking&&this.characterMasking){
for(var i=0;i<_5f.length;i++){
if(!this.characterMasking.test(_5f.charAt(i))){
_63=_63|Spry.Widget.ValidationTextField.ERROR_FORMAT;
_64=_60;
_61=true;
break;
}
}
}
if(!_61&&this.useCharacterMasking&&this.regExpFilter){
if(!this.regExpFilter.test(_64)){
_63=_63|Spry.Widget.ValidationTextField.ERROR_FORMAT;
_61=true;
}
}
if(!_61&&this.pattern){
var _65=this.patternToRegExp(_5f.length);
if(!_65.test(_5f)){
_63=_63|Spry.Widget.ValidationTextField.ERROR_FORMAT;
_61=true;
}else{
if(this.patternLength!=_5f.length){
_63=_63|Spry.Widget.ValidationTextField.ERROR_FORMAT;
}
}
}
if(_64==""){
_63=_63|Spry.Widget.ValidationTextField.ERROR_REQUIRED;
}
if(!_61&&this.pattern&&this.useCharacterMasking){
var n=this.getAutoComplete(_5f.length);
if(n){
_64+=n;
}
}
if(!_61&&this.minChars!==null&&_62){
if(_5f.length<this.minChars){
_63=_63|Spry.Widget.ValidationTextField.ERROR_CHARS_MIN;
_62=false;
}
}
if(!_61&&this.maxChars!==null&&_62){
if(_5f.length>this.maxChars){
_63=_63|Spry.Widget.ValidationTextField.ERROR_CHARS_MAX;
_62=false;
}
}
if(!_61&&this.validation&&_62){
var _66=this.validation(_64,this.options);
if(false===_66){
_63=_63|Spry.Widget.ValidationTextField.ERROR_FORMAT;
_62=false;
}else{
this.typedValue=_66;
}
}
if(!_61&&this.validation&&this.minValue!==null&&_62){
var _67=this.validation(this.minValue,this.options);
if(_67!==false){
if(this.typedValue<_67){
_63=_63|Spry.Widget.ValidationTextField.ERROR_RANGE_MIN;
_62=false;
}
}
}
if(!_61&&this.validation&&this.maxValue!==null&&_62){
var _68=this.validation(this.maxValue,this.options);
if(_68!==false){
if(this.typedValue>_68){
_63=_63|Spry.Widget.ValidationTextField.ERROR_RANGE_MAX;
_62=false;
}
}
}
if(this.useCharacterMasking&&_61){
this.revertState(_60);
}
this.errors=_63;
this.fixedValue=_64;
this.flags.locked=false;
return _61;
};
Spry.Widget.ValidationTextField.prototype.onChange=function(e){
if(Spry.is.opera&&this.flags.operaRevertOnKeyUp){
return true;
}
if(Spry.is.ie&&e&&e.propertyName!="value"){
return true;
}
if(this.flags.drop){
var _69=this;
setTimeout(function(){
_69.flags.drop=false;
_69.onChange(null);
},0);
return;
}
if(this.flags.hintOn){
return true;
}
if(this.keyCode==8||this.keyCode==46){
var _6a=this.doValidations(this.input.value,this.input.value);
this.oldValue=this.input.value;
if((_6a||this.errors)&&this.validateOn&Spry.Widget.ValidationTextField.ONCHANGE){
var _69=this;
setTimeout(function(){
_69.validate();
},0);
return true;
}
}
var _6a=this.doValidations(this.input.value,this.oldValue);
if((!_6a||this.errors)&&this.validateOn&Spry.Widget.ValidationTextField.ONCHANGE){
var _69=this;
setTimeout(function(){
_69.validate();
},0);
}
return true;
};
Spry.Widget.ValidationTextField.prototype.onKeyUp=function(e){
if(this.flags.operaRevertOnKeyUp){
this.setValue(this.oldValue);
Spry.Widget.Utils.stopEvent(e);
this.selection.moveTo(this.selection.start,this.selection.start);
this.flags.operaRevertOnKeyUp=false;
return false;
}
if(this.flags.operaPasteOperation){
window.clearInterval(this.flags.operaPasteOperation);
this.flags.operaPasteOperation=null;
}
};
Spry.Widget.ValidationTextField.prototype.operaPasteMonitor=function(){
if(this.input.value!=this.oldValue){
var _6b=this.doValidations(this.input.value,this.input.value);
if(_6b){
this.setValue(this.oldValue);
this.selection.moveTo(this.selection.start,this.selection.start);
}else{
this.onChange();
}
}
};
Spry.Widget.ValidationTextField.prototype.compileDatePattern=function(){
var _6c="";
var _6d=[];
var _6e=[];
var _6f=[];
var _70=/^([mdy]+)([\.\-\/\\\s]+)([mdy]+)([\.\-\/\\\s]+)([mdy]+)$/i;
var _71=this.options.format.match(_70);
if(_71!==null){
for(var i=1;i<_71.length;i++){
switch(_71[i].toLowerCase()){
case "dd":
_6d[i-1]="\\d{1,2}";
_6e[i-1]="\\d\\d";
_6c+="("+_6d[i-1]+")";
_6f[i-1]=null;
break;
case "mm":
_6d[i-1]="\\d{1,2}";
_6e[i-1]="\\d\\d";
_6c+="("+_6d[i-1]+")";
_6f[i-1]=null;
break;
case "yy":
_6d[i-1]="\\d{1,2}";
_6e[i-1]="\\d\\d";
_6c+="(\\d\\d)";
_6f[i-1]=null;
break;
case "yyyy":
_6d[i-1]="\\d{1,4}";
_6e[i-1]="\\d\\d\\d\\d";
_6c+="(\\d\\d\\d\\d)";
_6f[i-1]=null;
break;
default:
_6d[i-1]=_6e[i-1]=Spry.Widget.ValidationTextField.regExpFromChars(_71[i]);
_6c+="["+_6d[i-1]+"]";
_6f[i-1]=_71[i];
}
}
}
this.dateValidationPattern=new RegExp("^"+_6c+"$","");
this.dateAutocompleteCharacters=_6f;
this.dateGroupPatterns=_6d;
this.dateFullGroupPatterns=_6e;
this.lastDateGroup=_71.length-2;
};
Spry.Widget.ValidationTextField.prototype.getRegExpForGroup=function(_72){
var ret="^";
for(var j=0;j<=_72;j++){
ret+=this.dateGroupPatterns[j];
}
ret+="$";
return new RegExp(ret,"");
};
Spry.Widget.ValidationTextField.prototype.getRegExpForFullGroup=function(_73){
var ret="^";
for(var j=0;j<_73;j++){
ret+=this.dateGroupPatterns[j];
}
ret+=this.dateFullGroupPatterns[_73];
return new RegExp(ret,"");
};
Spry.Widget.ValidationTextField.prototype.getDateGroup=function(_74,pos){
if(pos==0){
return 0;
}
var _75=_74.substring(0,pos);
for(var i=0;i<=this.lastDateGroup;i++){
if(this.getRegExpForGroup(i).test(_75)){
return i;
}
}
return -1;
};
Spry.Widget.ValidationTextField.prototype.isDateGroupFull=function(_76,_77){
return this.getRegExpForFullGroup(_77).test(_76);
};
Spry.Widget.ValidationTextField.prototype.isValueValid=function(_78,pos,_79){
var _7a=_78.substring(0,pos);
return this.getRegExpForGroup(_79).test(_7a);
};
Spry.Widget.ValidationTextField.prototype.isPositionAtEndOfGroup=function(_7b,pos,_7c){
var _7d=_7b.substring(0,pos);
return this.getRegExpForFullGroup(_7c).test(_7d);
};
Spry.Widget.ValidationTextField.prototype.nextDateDelimiterExists=function(_7e,pos,_7f){
var _80=this.dateAutocompleteCharacters[_7f+1];
if(_7e.length<pos+_80.length){
return false;
}else{
var _81=_7e.substring(pos,pos+_80.length);
if(_81==_80){
return true;
}
}
return false;
};
Spry.Widget.ValidationTextField.prototype.onKeyPress=function(e){
if(this.flags.skp){
this.flags.skp=false;
Spry.Widget.Utils.stopEvent(e);
return false;
}
if(e.ctrlKey||e.metaKey||!this.useCharacterMasking){
return true;
}
if(Spry.is.opera&&this.flags.operaRevertOnKeyUp){
Spry.Widget.Utils.stopEvent(e);
return false;
}
if(this.keyCode==8||this.keyCode==46){
var mr=this.doValidations(this.input.value,this.input.value);
if(mr){
return true;
}
}
var _82=Spry.Widget.Utils.getCharacterFromEvent(e);
if(_82&&this.characterMasking){
if(!this.characterMasking.test(_82)){
Spry.Widget.Utils.stopEvent(e);
this.redTextFlash();
return false;
}
}
if(_82&&this.pattern){
var _83=this.patternCharacters[this.selection.start];
if(/[ax]/i.test(_83)){
if(_83.toLowerCase()==_83){
_82=_82.toLowerCase();
}else{
_82=_82.toUpperCase();
}
}
var _84=this.getAutoComplete(this.selection.start);
if(this.selection.start==this.oldValue.length){
if(this.oldValue.length<this.patternLength){
if(_84){
Spry.Widget.Utils.stopEvent(e);
var _85=this.oldValue.substring(0,this.selection.start)+_84+_82;
var _86=this.doValidations(_85,this.oldValue);
if(!_86){
this.setValue(this.fixedValue);
this.selection.moveTo(this.fixedValue.length,this.fixedValue.length);
}else{
this.setValue(this.oldValue.substring(0,this.selection.start)+_84);
this.selection.moveTo(this.selection.start+_84.length,this.selection.start+_84.length);
}
return false;
}
}else{
Spry.Widget.Utils.stopEvent(e);
this.setValue(this.input.value);
return false;
}
}else{
if(_84){
Spry.Widget.Utils.stopEvent(e);
this.selection.moveTo(this.selection.start+_84.length,this.selection.start+_84.length);
return false;
}
}
Spry.Widget.Utils.stopEvent(e);
var _85=this.oldValue.substring(0,this.selection.start)+_82+this.oldValue.substring(this.selection.start+1);
var _86=this.doValidations(_85,this.oldValue);
if(!_86){
_84=this.getAutoComplete(this.selection.start+1);
this.setValue(this.fixedValue);
this.selection.moveTo(this.selection.start+1+_84.length,this.selection.start+1+_84.length);
}else{
this.selection.moveTo(this.selection.start,this.selection.start);
}
return false;
}
if(_82&&this.type=="date"&&this.useCharacterMasking){
var _87=this.getDateGroup(this.oldValue,this.selection.start);
if(_87!=-1){
Spry.Widget.Utils.stopEvent(e);
if((_87%2)!=0){
_87++;
}
if(this.isDateGroupFull(this.oldValue,_87)){
if(this.isPositionAtEndOfGroup(this.oldValue,this.selection.start,_87)){
if(_87==this.lastDateGroup){
this.redTextFlash();
return false;
}else{
var _84=this.dateAutocompleteCharacters[_87+1];
if(this.nextDateDelimiterExists(this.oldValue,this.selection.start,_87)){
var _84=this.dateAutocompleteCharacters[_87+1];
this.selection.moveTo(this.selection.start+_84.length,this.selection.start+_84.length);
if(_82==_84){
return false;
}
if(this.isDateGroupFull(this.oldValue,_87+2)){
_85=this.oldValue.substring(0,this.selection.start)+_82+this.oldValue.substring(this.selection.start+1);
}else{
_85=this.oldValue.substring(0,this.selection.start)+_82+this.oldValue.substring(this.selection.start);
}
if(!this.isValueValid(_85,this.selection.start+1,_87+2)){
this.redTextFlash();
return false;
}else{
this.setValue(_85);
this.selection.moveTo(this.selection.start+1,this.selection.start+1);
}
return false;
}else{
var _84=this.dateAutocompleteCharacters[_87+1];
var _88=_84+_82;
_85=this.oldValue.substring(0,this.selection.start)+_88+this.oldValue.substring(this.selection.start);
if(!this.isValueValid(_85,this.selection.start+_88.length,_87+2)){
_88=_84;
_85=this.oldValue.substring(0,this.selection.start)+_88+this.oldValue.substring(this.selection.start);
this.setValue(_85);
this.selection.moveTo(this.selection.start+_88.length,this.selection.start+_88.length);
this.redTextFlash();
return false;
}else{
this.setValue(_85);
this.selection.moveTo(this.selection.start+_88.length,this.selection.start+_88.length);
return false;
}
}
}
}else{
var _89=1;
_85=this.oldValue.substring(0,this.selection.start)+_82+this.oldValue.substring(this.selection.start+1);
if(!this.isValueValid(_85,this.selection.start+1,_87)){
this.redTextFlash();
return false;
}else{
if(this.isPositionAtEndOfGroup(_85,this.selection.start+1,_87)){
if(_87!=this.lastDateGroup){
if(this.nextDateDelimiterExists(_85,this.selection.start+1,_87)){
var _84=this.dateAutocompleteCharacters[_87+1];
_89=1+_84.length;
}else{
var _84=this.dateAutocompleteCharacters[_87+1];
_85=this.oldValue.substring(0,this.selection.start)+_82+_84+this.oldValue.substring(this.selection.start+1);
_89=1+_84.length;
}
}
}
this.setValue(_85);
this.selection.moveTo(this.selection.start+_89,this.selection.start+_89);
return false;
}
}
}else{
_85=this.oldValue.substring(0,this.selection.start)+_82+this.oldValue.substring(this.selection.start);
var _89=1;
if(!this.isValueValid(_85,this.selection.start+1,_87)&&!this.isValueValid(_85,this.selection.start+1,_87+1)){
this.redTextFlash();
return false;
}else{
var _84=this.dateAutocompleteCharacters[_87+1];
if(_82==_84){
if(this.nextDateDelimiterExists(this.oldValue,this.selection.start,_87)){
_85=this.oldValue;
_89=1;
}
}else{
if(this.isPositionAtEndOfGroup(_85,this.selection.start+1,_87)){
if(_87!=this.lastDateGroup){
if(this.nextDateDelimiterExists(_85,this.selection.start+1,_87)){
var _84=this.dateAutocompleteCharacters[_87+1];
_89=1+_84.length;
}else{
var _84=this.dateAutocompleteCharacters[_87+1];
_85=this.oldValue.substring(0,this.selection.start)+_82+_84+this.oldValue.substring(this.selection.start+1);
_89=1+_84.length;
}
}
}
}
this.setValue(_85);
this.selection.moveTo(this.selection.start+_89,this.selection.start+_89);
return false;
}
}
}
return false;
}
};
Spry.Widget.ValidationTextField.prototype.onKeyDown=function(e){
this.saveState();
this.keyCode=e.keyCode;
if(Spry.is.opera){
if(this.flags.operaPasteOperation){
window.clearInterval(this.flags.operaPasteOperation);
this.flags.operaPasteOperation=null;
}
if(e.ctrlKey){
var _8a=Spry.Widget.Utils.getCharacterFromEvent(e);
if(_8a&&"vx".indexOf(_8a.toLowerCase())!=-1){
var _8b=this;
this.flags.operaPasteOperation=window.setInterval(function(){
_8b.operaPasteMonitor();
},1);
return true;
}
}
}
if(this.keyCode!=8&&this.keyCode!=46&&Spry.Widget.Utils.isSpecialKey(e)){
return true;
}
if(this.keyCode==8||this.keyCode==46){
var mr=this.doValidations(this.input.value,this.input.value);
if(mr){
return true;
}
}
if(this.useCharacterMasking&&this.pattern&&this.keyCode==46){
if(e.ctrlKey){
this.setValue(this.input.value.substring(0,this.selection.start));
}else{
if(this.selection.end==this.input.value.length||this.selection.start==this.input.value.length-1){
return true;
}else{
this.flags.operaRevertOnKeyUp=true;
}
}
if(Spry.is.mozilla&&Spry.is.mac){
this.flags.skp=true;
}
Spry.Widget.Utils.stopEvent(e);
return false;
}
if(this.useCharacterMasking&&this.pattern&&!e.ctrlKey&&this.keyCode==8){
if(this.selection.start==this.input.value.length){
var n=this.getAutoComplete(this.selection.start,-1);
this.setValue(this.input.value.substring(0,this.input.value.length-(Spry.is.opera?0:1)-n.length));
if(Spry.is.opera){
this.selection.start=this.selection.start-1-n.length;
this.selection.end=this.selection.end-1-n.length;
}
}else{
if(this.selection.end==this.input.value.length){
return true;
}else{
this.flags.operaRevertOnKeyUp=true;
}
}
if(Spry.is.mozilla&&Spry.is.mac){
this.flags.skp=true;
}
Spry.Widget.Utils.stopEvent(e);
return false;
}
return true;
};
Spry.Widget.ValidationTextField.prototype.onMouseDown=function(e){
if(this.flags.active){
this.saveState();
}
};
Spry.Widget.ValidationTextField.prototype.onDrop=function(e){
this.flags.drop=true;
this.removeHint();
this.saveState();
this.flags.active=true;
this.addClassName(this.element,this.focusClass);
};
Spry.Widget.ValidationTextField.prototype.onFocus=function(e){
if(this.flags.drop){
return;
}
this.removeHint();
if(this.pattern&&this.useCharacterMasking){
var _8c=this.getAutoComplete(this.selection.start);
this.setValue(this.input.value+_8c);
this.selection.moveTo(this.input.value.length,this.input.value.length);
}
this.saveState();
this.flags.active=true;
this.addClassName(this.element,this.focusClass);
};
Spry.Widget.ValidationTextField.prototype.onBlur=function(e){
this.flags.active=false;
this.removeClassName(this.element,this.focusClass);
var _8d=this.doValidations(this.input.value,this.input.value);
if(this.validateOn&Spry.Widget.ValidationTextField.ONBLUR){
this.validate();
}
var _8e=this;
setTimeout(function(){
_8e.putHint();
},10);
return true;
};
Spry.Widget.ValidationTextField.prototype.compilePattern=function(){
if(!this.pattern){
return;
}
var _8f=[];
var _90=[];
var _91=[];
var idx=0;
var c="",p="";
for(var i=0;i<this.pattern.length;i++){
c=this.pattern.charAt(i);
if(p=="\\"){
if(/[0ABXY\?]/i.test(c)){
_90[idx-1]=c;
}else{
_90[idx-1]=Spry.Widget.ValidationTextField.regExpFromChars(c);
}
_8f[idx-1]=c;
_91[idx-1]=null;
p="";
continue;
}
_90[idx]=Spry.Widget.ValidationTextField.regExpFromChars(c);
if(/[0ABXY\?]/i.test(c)){
_8f[idx]=null;
_91[idx]=c;
}else{
if(c=="\\"){
_8f[idx]=c;
_91[idx]="\\";
}else{
_8f[idx]=c;
_91[idx]=null;
}
}
idx++;
p=c;
}
this.autoCompleteCharacters=_8f;
this.compiledPattern=_90;
this.patternCharacters=_91;
this.patternLength=_8f.length;
};
Spry.Widget.ValidationTextField.prototype.getAutoComplete=function(_92,_93){
if(_93==-1){
var n="",m="";
while(_92&&(n=this.getAutoComplete(--_92))){
m=n;
}
return m;
}
var ret="",c="";
for(var i=_92;i<this.autoCompleteCharacters.length;i++){
c=this.autoCompleteCharacters[i];
if(c){
ret+=c;
}else{
break;
}
}
return ret;
};
Spry.Widget.ValidationTextField.regExpFromChars=function(_94){
var ret="",_95="";
for(var i=0;i<_94.length;i++){
_95=_94.charAt(i);
switch(_95){
case "0":
ret+="\\d";
break;
case "A":
ret+="[A-Z]";
break;
case "a":
ret+="[a-z]";
break;
case "B":
case "b":
ret+="[a-zA-Z]";
break;
case "x":
ret+="[0-9a-z]";
break;
case "X":
ret+="[0-9A-Z]";
break;
case "Y":
case "y":
ret+="[0-9a-zA-Z]";
break;
case "?":
ret+=".";
break;
case "1":
case "2":
case "3":
case "4":
case "5":
case "6":
case "7":
case "8":
case "9":
ret+=_95;
break;
case "c":
case "C":
case "e":
case "E":
case "f":
case "F":
case "r":
case "d":
case "D":
case "n":
case "s":
case "S":
case "w":
case "W":
case "t":
case "v":
ret+=_95;
break;
default:
ret+="\\"+_95;
}
}
return ret;
};
Spry.Widget.ValidationTextField.prototype.patternToRegExp=function(len){
var ret="^";
var end=Math.min(this.compiledPattern.length,len);
for(var i=0;i<end;i++){
ret+=this.compiledPattern[i];
}
ret+="$";
ret=new RegExp(ret,"");
return ret;
};
Spry.Widget.ValidationTextField.prototype.reset=function(){
this.removeHint();
this.oldValue=this.input.defaultValue;
this.removeClassName(this.element,this.requiredClass);
this.removeClassName(this.element,this.invalidFormatClass);
this.removeClassName(this.element,this.invalidRangeMinClass);
this.removeClassName(this.element,this.invalidRangeMaxClass);
this.removeClassName(this.element,this.invalidCharsMinClass);
this.removeClassName(this.element,this.invalidCharsMaxClass);
this.removeClassName(this.element,this.validClass);
var _96=this;
setTimeout(function(){
_96.putHint();
},10);
};
Spry.Widget.ValidationTextField.prototype.validate=function(){
this.removeClassName(this.element,this.requiredClass);
this.removeClassName(this.element,this.invalidFormatClass);
this.removeClassName(this.element,this.invalidRangeMinClass);
this.removeClassName(this.element,this.invalidRangeMaxClass);
this.removeClassName(this.element,this.invalidCharsMinClass);
this.removeClassName(this.element,this.invalidCharsMaxClass);
this.removeClassName(this.element,this.validClass);
if(this.validateOn&Spry.Widget.ValidationTextField.ONSUBMIT){
this.removeHint();
this.doValidations(this.input.value,this.input.value);
if(!this.flags.active){
var _97=this;
setTimeout(function(){
_97.putHint();
},10);
}
}
if(this.isRequired&&this.errors&Spry.Widget.ValidationTextField.ERROR_REQUIRED){
this.addClassName(this.element,this.requiredClass);
return false;
}
if(this.errors&Spry.Widget.ValidationTextField.ERROR_FORMAT){
this.addClassName(this.element,this.invalidFormatClass);
return false;
}
if(this.errors&Spry.Widget.ValidationTextField.ERROR_RANGE_MIN){
this.addClassName(this.element,this.invalidRangeMinClass);
return false;
}
if(this.errors&Spry.Widget.ValidationTextField.ERROR_RANGE_MAX){
this.addClassName(this.element,this.invalidRangeMaxClass);
return false;
}
if(this.errors&Spry.Widget.ValidationTextField.ERROR_CHARS_MIN){
this.addClassName(this.element,this.invalidCharsMinClass);
return false;
}
if(this.errors&Spry.Widget.ValidationTextField.ERROR_CHARS_MAX){
this.addClassName(this.element,this.invalidCharsMaxClass);
return false;
}
this.addClassName(this.element,this.validClass);
return true;
};
Spry.Widget.ValidationTextField.prototype.addClassName=function(ele,_98){
if(!ele||!_98||(ele.className&&ele.className.search(new RegExp("\\b"+_98+"\\b"))!=-1)){
return;
}
ele.className+=(ele.className?" ":"")+_98;
};
Spry.Widget.ValidationTextField.prototype.removeClassName=function(ele,_99){
if(!ele||!_99||(ele.className&&ele.className.search(new RegExp("\\b"+_99+"\\b"))==-1)){
return;
}
ele.className=ele.className.replace(new RegExp("\\s*\\b"+_99+"\\b","g"),"");
};
Spry.Widget.SelectionDescriptor=function(_9a){
this.element=_9a;
this.update();
};
Spry.Widget.SelectionDescriptor.prototype.update=function(){
if(Spry.is.ie&&Spry.is.windows){
if(this.element.nodeName=="TEXTAREA"){
var _9b=this.element.ownerDocument.selection.createRange();
if(_9b.parentElement()==this.element){
var _9c=this.element.ownerDocument.body.createTextRange();
_9c.moveToElementText(this.element);
for(var _9d=0;_9c.compareEndPoints("StartToStart",_9b)<0;_9d++){
_9c.moveStart("character",1);
}
this.start=_9d;
_9c=this.element.ownerDocument.body.createTextRange();
_9c.moveToElementText(this.element);
for(var _9e=0;_9c.compareEndPoints("StartToEnd",_9b)<0;_9e++){
_9c.moveStart("character",1);
}
this.end=_9e;
this.length=this.end-this.start;
this.text=_9b.text;
}
}else{
if(this.element.nodeName=="INPUT"){
this.range=this.element.ownerDocument.selection.createRange();
this.length=this.range.text.length;
var _9f=this.range.duplicate();
this.start=-_9f.moveStart("character",-10000);
_9f=this.range.duplicate();
_9f.collapse(false);
this.end=-_9f.moveStart("character",-10000);
this.text=this.range.text;
}
}
}else{
var tmp=this.element;
var _a0=0;
var _a1=0;
try{
_a0=tmp.selectionStart;
}
catch(err){
}
try{
_a1=tmp.selectionEnd;
}
catch(err){
}
if(Spry.is.safari){
if(_a0==2147483647){
_a0=0;
}
if(_a1==2147483647){
_a1=0;
}
}
this.start=_a0;
this.end=_a1;
this.length=_a1-_a0;
this.text=this.element.value.substring(_a0,_a1);
}
};
Spry.Widget.SelectionDescriptor.prototype.destroy=function(){
try{
delete this.range;
}
catch(err){
}
try{
delete this.element;
}
catch(err){
}
};
Spry.Widget.SelectionDescriptor.prototype.move=function(_a2){
if(Spry.is.ie&&Spry.is.windows){
this.range.move("character",_a2);
this.range.select();
}else{
try{
this.element.selectionStart++;
}
catch(err){
}
}
this.update();
};
Spry.Widget.SelectionDescriptor.prototype.moveTo=function(_a3,end){
if(Spry.is.ie&&Spry.is.windows){
if(this.element.nodeName=="TEXTAREA"){
var _a4=this.element.createTextRange();
this.range=this.element.createTextRange();
this.range.move("character",_a3);
this.range.moveEnd("character",end-_a3);
var c1=this.range.compareEndPoints("StartToStart",_a4);
if(c1<0){
this.range.setEndPoint("StartToStart",_a4);
}
var c2=this.range.compareEndPoints("EndToEnd",_a4);
if(c2>0){
this.range.setEndPoint("EndToEnd",_a4);
}
}else{
if(this.element.nodeName=="INPUT"){
this.range=this.element.ownerDocument.selection.createRange();
this.range.move("character",-10000);
this.start=this.range.moveStart("character",_a3);
this.end=this.start+this.range.moveEnd("character",end-_a3);
}
}
this.range.select();
}else{
this.start=_a3;
try{
this.element.selectionStart=_a3;
}
catch(err){
}
this.end=end;
try{
this.element.selectionEnd=end;
}
catch(err){
}
}
this.ignore=true;
this.update();
};
Spry.Widget.SelectionDescriptor.prototype.moveEnd=function(_a5){
if(Spry.is.ie&&Spry.is.windows){
this.range.moveEnd("character",_a5);
this.range.select();
}else{
try{
this.element.selectionEnd++;
}
catch(err){
}
}
this.update();
};
Spry.Widget.SelectionDescriptor.prototype.collapse=function(_a6){
if(Spry.is.ie&&Spry.is.windows){
this.range=this.element.ownerDocument.selection.createRange();
this.range.collapse(_a6);
this.range.select();
}else{
if(_a6){
try{
this.element.selectionEnd=this.element.selectionStart;
}
catch(err){
}
}else{
try{
this.element.selectionStart=this.element.selectionEnd;
}
catch(err){
}
}
}
this.update();
};
if(!Spry.Widget.Form){
Spry.Widget.Form={};
}
if(!Spry.Widget.Form.onSubmitWidgetQueue){
Spry.Widget.Form.onSubmitWidgetQueue=[];
}
if(!Spry.Widget.Form.validate){
Spry.Widget.Form.validate=function(_a7){
var _a8=true;
var _a9=true;
var q=Spry.Widget.Form.onSubmitWidgetQueue;
var _aa=q.length;
for(var i=0;i<_aa;i++){
if(!q[i].isDisabled()&&q[i].form==_a7){
_a9=q[i].validate();
_a8=_a9&&_a8;
}
}
return _a8;
};
}
if(!Spry.Widget.Form.onSubmit){
Spry.Widget.Form.onSubmit=function(e,_ab){
if(Spry.Widget.Form.validate(_ab)==false){
return false;
}
return true;
};
}
if(!Spry.Widget.Form.onReset){
Spry.Widget.Form.onReset=function(e,_ac){
var q=Spry.Widget.Form.onSubmitWidgetQueue;
var _ad=q.length;
for(var i=0;i<_ad;i++){
if(!q[i].isDisabled()&&q[i].form==_ac&&typeof (q[i].reset)=="function"){
q[i].reset();
}
}
return true;
};
}
if(!Spry.Widget.Form.destroy){
Spry.Widget.Form.destroy=function(_ae){
var q=Spry.Widget.Form.onSubmitWidgetQueue;
for(var i=0;i<Spry.Widget.Form.onSubmitWidgetQueue.length;i++){
if(q[i].form==_ae&&typeof (q[i].destroy)=="function"){
q[i].destroy();
i--;
}
}
};
}
if(!Spry.Widget.Form.destroyAll){
Spry.Widget.Form.destroyAll=function(){
var q=Spry.Widget.Form.onSubmitWidgetQueue;
for(var i=0;i<Spry.Widget.Form.onSubmitWidgetQueue.length;i++){
if(typeof (q[i].destroy)=="function"){
q[i].destroy();
i--;
}
}
};
}
if(!Spry.Widget.Utils){
Spry.Widget.Utils={};
}
Spry.Widget.Utils.punycode_constants={base:36,tmin:1,tmax:26,skew:38,damp:700,initial_bias:72,initial_n:128,delimiter:45,maxint:2<<26-1};
Spry.Widget.Utils.punycode_encode_digit=function(d){
return String.fromCharCode(d+22+75*(d<26));
};
Spry.Widget.Utils.punycode_adapt=function(_af,_b0,_b1){
_af=_b1?_af/this.punycode_constants.damp:_af>>1;
_af+=_af/_b0;
for(var k=0;_af>((this.punycode_constants.base-this.punycode_constants.tmin)*this.punycode_constants.tmax)/2;k+=this.punycode_constants.base){
_af/=this.punycode_constants.base-this.punycode_constants.tmin;
}
return k+(this.punycode_constants.base-this.punycode_constants.tmin+1)*_af/(_af+this.punycode_constants.skew);
};
Spry.Widget.Utils.punycode_encode=function(_b2,_b3){
var _b4=_b2.split("");
_b2=[];
for(var i=0;i<_b4.length;i++){
_b2.push(_b4[i].charCodeAt(0));
}
var _b5="";
var h,b,j,m,q,k,t;
var _b6=_b2.length;
var n=this.punycode_constants.initial_n;
var _b7=0;
var _b8=this.punycode_constants.initial_bias;
var out=0;
for(j=0;j<_b6;j++){
if(_b2[j]<128){
if(_b3-out<2){
return false;
}
_b5+=String.fromCharCode(_b2[j]);
out++;
}
}
h=b=out;
if(b>0){
_b5+=String.fromCharCode(this.punycode_constants.delimiter);
out++;
}
while(h<_b6){
for(m=this.punycode_constants.maxint,j=0;j<_b6;j++){
if(_b2[j]>=n&&_b2[j]<m){
m=_b2[j];
}
}
if(m-n>(this.punycode_constants.maxint-_b7)/(h+1)){
return false;
}
_b7+=(m-n)*(h+1);
n=m;
for(j=0;j<_b6;j++){
if(_b2[j]<n){
if(++_b7==0){
return false;
}
}
if(_b2[j]==n){
for(q=_b7,k=this.punycode_constants.base;;k+=this.punycode_constants.base){
if(out>=_b3){
return false;
}
t=k<=_b8?this.punycode_constants.tmin:k>=_b8+this.punycode_constants.tmax?this.punycode_constants.tmax:k-_b8;
if(q<t){
break;
}
_b5+=this.punycode_encode_digit(t+(q-t)%(this.punycode_constants.base-t));
out++;
q=(q-t)/(this.punycode_constants.base-t);
}
_b5+=this.punycode_encode_digit(q);
out++;
_b8=this.punycode_adapt(_b7,h+1,h==b);
_b7=0;
h++;
}
}
_b7++,n++;
}
return _b5;
};
Spry.Widget.Utils.setOptions=function(obj,_b9,_ba){
if(!_b9){
return;
}
for(var _bb in _b9){
if(_ba&&_b9[_bb]==undefined){
continue;
}
obj[_bb]=_b9[_bb];
}
};
Spry.Widget.Utils.firstValid=function(){
var ret=null;
for(var i=0;i<Spry.Widget.Utils.firstValid.arguments.length;i++){
if(typeof (Spry.Widget.Utils.firstValid.arguments[i])!="undefined"){
ret=Spry.Widget.Utils.firstValid.arguments[i];
break;
}
}
return ret;
};
Spry.Widget.Utils.specialCharacters=",8,9,16,17,18,20,27,33,34,35,36,37,38,40,45,144,192,63232,";
Spry.Widget.Utils.specialSafariNavKeys="63232,63233,63234,63235,63272,63273,63275,63276,63277,63289,";
Spry.Widget.Utils.specialNotSafariCharacters="39,46,91,92,93,";
Spry.Widget.Utils.specialCharacters+=Spry.Widget.Utils.specialSafariNavKeys;
if(!Spry.is.safari){
Spry.Widget.Utils.specialCharacters+=Spry.Widget.Utils.specialNotSafariCharacters;
}
Spry.Widget.Utils.isSpecialKey=function(ev){
return Spry.Widget.Utils.specialCharacters.indexOf(","+ev.keyCode+",")!=-1;
};
Spry.Widget.Utils.getCharacterFromEvent=function(e){
var _bc=e.type=="keydown";
var _bd=null;
var _be=null;
if(Spry.is.mozilla&&!_bc){
if(e.charCode){
_be=String.fromCharCode(e.charCode);
}else{
_bd=e.keyCode;
}
}else{
_bd=e.keyCode||e.which;
if(_bd!=13){
_be=String.fromCharCode(_bd);
}
}
if(Spry.is.safari){
if(_bc){
_bd=e.keyCode||e.which;
_be=String.fromCharCode(_bd);
}else{
_bd=e.keyCode||e.which;
if(Spry.Widget.Utils.specialCharacters.indexOf(","+_bd+",")!=-1){
_be=null;
}else{
_be=String.fromCharCode(_bd);
}
}
}
if(Spry.is.opera){
if(Spry.Widget.Utils.specialCharacters.indexOf(","+_bd+",")!=-1){
_be=null;
}else{
_be=String.fromCharCode(_bd);
}
}
return _be;
};
Spry.Widget.Utils.getFirstChildWithNodeNameAtAnyLevel=function(_bf,_c0){
var _c1=_bf.getElementsByTagName(_c0);
if(_c1){
return _c1[0];
}
return null;
};
Spry.Widget.Utils.getFirstParentWithNodeName=function(_c2,_c3){
while(_c2.parentNode&&_c2.parentNode.nodeName.toLowerCase()!=_c3.toLowerCase()&&_c2.parentNode.nodeName!="BODY"){
_c2=_c2.parentNode;
}
if(_c2.parentNode&&_c2.parentNode.nodeName.toLowerCase()==_c3.toLowerCase()){
return _c2.parentNode;
}else{
return null;
}
};
Spry.Widget.Utils.destroyWidgets=function(_c4){
if(typeof _c4=="string"){
_c4=document.getElementById(_c4);
}
var q=Spry.Widget.Form.onSubmitWidgetQueue;
for(var i=0;i<Spry.Widget.Form.onSubmitWidgetQueue.length;i++){
if(typeof (q[i].destroy)=="function"&&Spry.Widget.Utils.contains(_c4,q[i].element)){
q[i].destroy();
i--;
}
}
};
Spry.Widget.Utils.contains=function(who,_c5){
if(typeof who.contains=="object"){
return _c5&&who&&(who==_c5||who.contains(_c5));
}else{
var el=_c5;
while(el){
if(el==who){
return true;
}
el=el.parentNode;
}
return false;
}
};
Spry.Widget.Utils.addEventListener=function(_c6,_c7,_c8,_c9){
try{
if(_c6.addEventListener){
_c6.addEventListener(_c7,_c8,_c9);
}else{
if(_c6.attachEvent){
_c6.attachEvent("on"+_c7,_c8,_c9);
}
}
}
catch(e){
}
};
Spry.Widget.Utils.removeEventListener=function(_ca,_cb,_cc,_cd){
try{
if(_ca.removeEventListener){
_ca.removeEventListener(_cb,_cc,_cd);
}else{
if(_ca.detachEvent){
_ca.detachEvent("on"+_cb,_cc,_cd);
}
}
}
catch(e){
}
};
Spry.Widget.Utils.stopEvent=function(ev){
try{
this.stopPropagation(ev);
this.preventDefault(ev);
}
catch(e){
}
};
Spry.Widget.Utils.stopPropagation=function(ev){
if(ev.stopPropagation){
ev.stopPropagation();
}else{
ev.cancelBubble=true;
}
};
Spry.Widget.Utils.preventDefault=function(ev){
if(ev.preventDefault){
ev.preventDefault();
}else{
ev.returnValue=false;
}
};


