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 _4=/Opera.([0-9\.]*)/i;
var _5=/MSIE.([0-9\.]*)/i;
var _6=/gecko/i;
var _7=/safari\/([\d\.]*)/i;
if(ua.match(_4)){
r=ua.match(_4);
this.opera=true;
this.version=parseFloat(r[1]);
}else{
if(ua.match(_5)){
r=ua.match(_5);
this.ie=true;
this.version=parseFloat(r[1]);
}else{
if(ua.match(_7)){
this.safari=true;
this.version=1.4;
}else{
if(ua.match(_6)){
var _8=/rv:\s*([0-9\.]+)/i;
r=ua.match(_8);
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(_9,_a,_b){
_a=Spry.Widget.Utils.firstValid(_a,"none");
if(typeof _a!="string"){
return;
}
if(typeof Spry.Widget.ValidationTextField.ValidationDescriptors[_a]=="undefined"){
return;
}
_b=Spry.Widget.Utils.firstValid(_b,{});
this.type=_a;
if(!this.isBrowserSupported()){
_b.useCharacterMasking=false;
}
this.init(_9,_b);
var _c=["submit"].concat(Spry.Widget.Utils.firstValid(this.options.validateOn,[]));
_c=_c.join(",");
this.validateOn=0;
this.validateOn=this.validateOn|(_c.indexOf("submit")!=-1?Spry.Widget.ValidationTextField.ONSUBMIT:0);
this.validateOn=this.validateOn|(_c.indexOf("blur")!=-1?Spry.Widget.ValidationTextField.ONBLUR:0);
this.validateOn=this.validateOn|(_c.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(_d,_e){
if(_d==""||_d=="-"||_d=="+"){
return false;
}
var _f=/^[\-\+]?\d*$/;
if(!_f.test(_d)){
return false;
}
_e=_e||{allowNegative:false};
var ret=parseInt(_d,10);
if(!isNaN(ret)){
var _11=true;
if(typeof _e.allowNegative!="undefined"&&_e.allowNegative==false){
_11=false;
}
if(!_11&&_d<0){
ret=false;
}
}else{
ret=false;
}
return ret;
}},"real":{characterMasking:/[\d\.,\-\+e]/i,regExpFilter:/^[\-\+]?\d(?:|\.,\d{0,2})|(?:|e{0,1}[\-\+]?\d{0,})$/i,validation:function(_12,_13){
var _14=/^[\+\-]?[0-9]+([\.,][0-9]+)?([eE]{0,1}[\-\+]?[0-9]+)?$/;
if(!_14.test(_12)){
return false;
}
var ret=parseFloat(_12);
if(isNaN(ret)){
ret=false;
}
return ret;
}},"currency":{formats:{"dot_comma":{characterMasking:/[\d\.\,\-\+\$]/,regExpFilter:/^[\-\+]?(?:[\d\.]*)+(|\,\d{0,2})$/,validation:function(_16,_17){
var ret=false;
if(/^(\-|\+)?\d{1,3}(?:\.\d{3})*(?:\,\d{2}|)$/.test(_16)||/^(\-|\+)?\d+(?:\,\d{2}|)$/.test(_16)){
_16=_16.toString().replace(/\./gi,"").replace(/\,/,".");
ret=parseFloat(_16);
}
return ret;
}},"comma_dot":{characterMasking:/[\d\.\,\-\+\$]/,regExpFilter:/^[\-\+]?(?:[\d\,]*)+(|\.\d{0,2})$/,validation:function(_19,_1a){
var ret=false;
if(/^(\-|\+)?\d{1,3}(?:\,\d{3})*(?:\.\d{2}|)$/.test(_19)||/^(\-|\+)?\d+(?:\.\d{2}|)$/.test(_19)){
_19=_19.toString().replace(/\,/gi,"");
ret=parseFloat(_19);
}
return ret;
}}}},"email":{characterMasking:/[^\s]/,validation:function(_1c,_1d){
var rx=/^[\w\.-]+@[\w\.-]+\.\w+$/i;
return rx.test(_1c);
}},"date":{validation:function(_1f,_20){
var _21=/^([mdy]+)[\.\-\/\\\s]+([mdy]+)[\.\-\/\\\s]+([mdy]+)$/i;
var _22=this.dateValidationPattern;
var _23=_20.format.match(_21);
var _24=_1f.match(_22);
if(_23!==null&&_24!==null){
var _25=-1;
var _26=-1;
var _27=-1;
for(var i=1;i<_23.length;i++){
switch(_23[i].toLowerCase()){
case "dd":
_25=i;
break;
case "mm":
_26=i;
break;
case "yy":
case "yyyy":
_27=i;
break;
}
}
if(_25!=-1&&_26!=-1&&_27!=-1){
var _29=-1;
var _2a=parseInt(_24[_25],10);
var _2b=parseInt(_24[_26],10);
var _2c=parseInt(_24[_27],10);
if(_2b<1||_2b>12){
return false;
}
switch(_2b){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
_29=31;
break;
case 4:
case 6:
case 9:
case 11:
_29=30;
break;
case 2:
if((parseInt(_2c/4,10)*4==_2c)&&(_2c%100!=0||_2c%400==0)){
_29=29;
}else{
_29=28;
}
break;
}
if(_2a<1||_2a>_29){
return false;
}
return (new Date(_2c,_2b,_2a));
}
}else{
return false;
}
}},"time":{validation:function(_2d,_2e){
var _2f=/([hmst]+)/gi;
var _30=/(\d+|AM?|PM?)/gi;
var _31=_2e.format.match(_2f);
var _32=_2d.match(_30);
if(_31!==null&&_32!==null){
if(_31.length!=_32.length){
return false;
}
var _33=-1;
var _34=-1;
var _35=-1;
var _36=-1;
var _37=0,theMinute=0,theSecond=0,theT="AM";
for(var i=0;i<_31.length;i++){
switch(_31[i].toLowerCase()){
case "hh":
_33=i;
break;
case "mm":
_34=i;
break;
case "ss":
_35=i;
break;
case "t":
case "tt":
_36=i;
break;
}
}
if(_33!=-1){
var _39=parseInt(_32[_33],10);
if(isNaN(_39)||_39>(_31[_33]=="HH"?23:12)){
return false;
}
}
if(_34!=-1){
var _3a=parseInt(_32[_34],10);
if(isNaN(_3a)||_3a>59){
return false;
}
}
if(_35!=-1){
var _3b=parseInt(_32[_35],10);
if(isNaN(_3b)||_3b>59){
return false;
}
}
if(_36!=-1){
var _3c=_32[_36].toUpperCase();
if(_31[_36].toUpperCase()=="TT"&&!/^a|pm$/i.test(_3c)||_31[_36].toUpperCase()=="T"&&!/^a|p$/i.test(_3c)){
return false;
}
}
var _3d=new Date(2000,0,1,_39+(_3c.charAt(0)=="P"?12:0),_3a,_3b);
return _3d;
}else{
return false;
}
}},"credit_card":{characterMasking:/\d/,validation:function(_3e,_3f){
var _40=null;
_3f.format=_3f.format||"ALL";
switch(_3f.format.toUpperCase()){
case "ALL":
_40=/^[3-6]{1}[0-9]{12,15}$/;
break;
case "VISA":
_40=/^4[0-9]{12,15}$/;
break;
case "MASTERCARD":
_40=/^5[1-5]{1}[0-9]{14}$/;
break;
case "AMEX":
_40=/^3(4|7){1}[0-9]{13}$/;
break;
case "DISCOVER":
_40=/^6011[0-9]{12}$/;
break;
case "DINERSCLUB":
_40=/^3((0[0-5]{1}[0-9]{11})|(6[0-9]{12})|(8[0-9]{12}))$/;
break;
}
if(!_40.test(_3e)){
return false;
}
var _41=[];
var j=1,digit="";
for(var i=_3e.length-1;i>=0;i--){
if((j%2)==0){
digit=parseInt(_3e.charAt(i),10)*2;
_41[_41.length]=digit.toString().charAt(0);
if(digit.toString().length==2){
_41[_41.length]=digit.toString().charAt(1);
}
}else{
digit=_3e.charAt(i);
_41[_41.length]=digit;
}
j++;
}
var sum=0;
for(i=0;i<_41.length;i++){
sum+=parseInt(_41[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(_45,_46){
return /^[A-Z]{1,2}\d[\dA-Z]?\s?\d[A-Z]{2}$/.test(_45);
}},"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(_47,_48){
return Spry.Widget.ValidationTextField.validateIP(_47,_48.format);
}},"url":{characterMasking:/[^\s]/,validation:function(_49,_4a){
var _4b=/^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;
var _4c=_49.match(_4b);
if(_4c&&_4c[4]){
var _4d=_4c[4].split(".");
var _4e="";
for(var i=0;i<_4d.length;i++){
_4e=Spry.Widget.Utils.punycode_encode(_4d[i],64);
if(!_4e){
return false;
}else{
if(_4e!=(_4d[i]+"-")){
_4d[i]="xn--"+_4e;
}
}
}
_4d=_4d.join(".");
_49=_49.replace(_4b,"$1//"+_4d+"$5$6$8");
}
var _50=/^(?: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 _51=_49.match(_50);
if(_51){
var _52=_51[1];
if(_52){
if(_52=="[]"){
return false;
}
if(_52.charAt(0)=="["){
_52=_52.replace(/^\[|\]$/gi,"");
return Spry.Widget.ValidationTextField.validateIP(_52,"ipv6_ipv4");
}else{
if(/[^0-9\.]/.test(_52)){
return true;
}else{
return Spry.Widget.ValidationTextField.validateIP(_52,"ipv4");
}
}
}else{
return true;
}
}else{
return false;
}
}}};
Spry.Widget.ValidationTextField.validateIP=function(_53,_54){
var _55=[/^(?:[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 _56=[/^(\d{1,3}\.){3}\d{1,3}$/i];
var _57=[];
if(_54=="ipv6"||_54=="ipv6_ipv4"){
_57=_57.concat(_55);
}
if(_54=="ipv4"||_54=="ipv6_ipv4"){
_57=_57.concat(_56);
}
var ret=false;
for(var i=0;i<_57.length;i++){
if(_57[i].test(_53)){
ret=true;
break;
}
}
if(ret&&_53.indexOf(".")!=-1){
var _5a=_53.match(/:?(?:\d{1,3}\.){3}\d{1,3}/i);
if(!_5a){
return false;
}
_5a=_5a[0].replace(/^:/,"");
var _5b=_5a.split(".");
if(_5b.length!=4){
return false;
}
var _5c=/^[\-\+]?\d*$/;
for(var i=0;i<_5b.length;i++){
if(_5b[i]==""){
return false;
}
var _5e=parseInt(_5b[i],10);
if(isNaN(_5e)||_5e>255||!_5c.test(_5b[i])||_5b[i].length>3||/^0{2,3}$/.test(_5b[i])){
return false;
}
}
}
if(ret&&_53.indexOf("/")!=-1){
var _5f=_53.match(/\/\d{1,3}$/);
if(!_5f){
return false;
}
var _60=parseInt(_5f[0].replace(/^\//,""),10);
if(isNaN(_60)||_60>128||_60<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(_61,_62){
this.element=this.getElement(_61);
this.errors=0;
this.flags={locked:false,restoreSelection:true};
this.options={};
this.event_handlers=[];
this.validClass="textfieldValidState";
this.focusClass="textfieldFocusState";
this.requiredClass="textfieldRequiredState";
this.hintClass="textfieldHintState";
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":
_62.format=Spry.Widget.Utils.firstValid(_62.format,"phone_us");
break;
case "currency":
_62.format=Spry.Widget.Utils.firstValid(_62.format,"comma_dot");
break;
case "zip_code":
_62.format=Spry.Widget.Utils.firstValid(_62.format,"zip_us5");
break;
case "date":
_62.format=Spry.Widget.Utils.firstValid(_62.format,"mm/dd/yy");
break;
case "time":
_62.format=Spry.Widget.Utils.firstValid(_62.format,"HH:mm");
_62.pattern=_62.format.replace(/[hms]/gi,"0").replace(/TT/gi,"AM").replace(/T/gi,"A");
break;
case "ip":
_62.format=Spry.Widget.Utils.firstValid(_62.format,"ipv4");
_62.characterMasking=Spry.Widget.ValidationTextField.ValidationDescriptors[this.type].characterMaskingFormats[_62.format];
break;
}
var _63={};
if(_62.format&&Spry.Widget.ValidationTextField.ValidationDescriptors[this.type].formats){
if(Spry.Widget.ValidationTextField.ValidationDescriptors[this.type].formats[_62.format]){
Spry.Widget.Utils.setOptions(_63,Spry.Widget.ValidationTextField.ValidationDescriptors[this.type].formats[_62.format]);
}
}else{
Spry.Widget.Utils.setOptions(_63,Spry.Widget.ValidationTextField.ValidationDescriptors[this.type]);
}
_62.useCharacterMasking=Spry.Widget.Utils.firstValid(_62.useCharacterMasking,false);
_62.hint=Spry.Widget.Utils.firstValid(_62.hint,"");
_62.isRequired=Spry.Widget.Utils.firstValid(_62.isRequired,true);
_62.additionalError=Spry.Widget.Utils.firstValid(_62.additionalError,false);
if(_62.additionalError){
_62.additionalError=this.getElement(_62.additionalError);
}
_62.characterMasking=Spry.Widget.Utils.firstValid(_62.characterMasking,_63.characterMasking);
_62.regExpFilter=Spry.Widget.Utils.firstValid(_62.regExpFilter,_63.regExpFilter);
_62.pattern=Spry.Widget.Utils.firstValid(_62.pattern,_63.pattern);
_62.validation=Spry.Widget.Utils.firstValid(_62.validation,_63.validation);
if(typeof _62.validation=="string"){
_62.validation=eval(_62.validation);
}
_62.minValue=Spry.Widget.Utils.firstValid(_62.minValue,_63.minValue);
_62.maxValue=Spry.Widget.Utils.firstValid(_62.maxValue,_63.maxValue);
_62.minChars=Spry.Widget.Utils.firstValid(_62.minChars,_63.minChars);
_62.maxChars=Spry.Widget.Utils.firstValid(_62.maxChars,_63.maxChars);
Spry.Widget.Utils.setOptions(this,_62);
Spry.Widget.Utils.setOptions(this.options,_62);
};
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 _66=q.length;
for(var i=0;i<_66;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 _68=this;
this.event_handlers=[];
this.event_handlers.push([this.input,"keydown",function(e){
if(_68.isDisabled()){
return true;
}
return _68.onKeyDown(e||event);
}]);
this.event_handlers.push([this.input,"keypress",function(e){
if(_68.isDisabled()){
return true;
}
return _68.onKeyPress(e||event);
}]);
if(Spry.is.opera){
this.event_handlers.push([this.input,"keyup",function(e){
if(_68.isDisabled()){
return true;
}
return _68.onKeyUp(e||event);
}]);
}
this.event_handlers.push([this.input,"focus",function(e){
if(_68.isDisabled()){
return true;
}
return _68.onFocus(e||event);
}]);
this.event_handlers.push([this.input,"blur",function(e){
if(_68.isDisabled()){
return true;
}
return _68.onBlur(e||event);
}]);
this.event_handlers.push([this.input,"mousedown",function(e){
if(_68.isDisabled()){
return true;
}
return _68.onMouseDown(e||event);
}]);
var _6f=Spry.is.mozilla||Spry.is.opera||Spry.is.safari?"input":Spry.is.ie?"propertychange":"change";
this.event_handlers.push([this.input,_6f,function(e){
if(_68.isDisabled()){
return true;
}
return _68.onChange(e||event);
}]);
if(Spry.is.mozilla||Spry.is.safari){
this.event_handlers.push([this.input,"dragdrop",function(e){
if(_68.isDisabled()){
return true;
}
_68.removeHint();
return _68.onChange(e||event);
}]);
}else{
if(Spry.is.ie){
this.event_handlers.push([this.input,"drop",function(e){
if(_68.isDisabled()){
return true;
}
return _68.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(_77){
if(typeof window.addEventListener!="undefined"){
window.addEventListener("load",_77,false);
}else{
if(typeof document.addEventListener!="undefined"){
document.addEventListener("load",_77,false);
}else{
if(typeof window.attachEvent!="undefined"){
window.attachEvent("onload",_77);
}
}
}
};
Spry.Widget.ValidationTextField.processLoadQueue=function(_78){
Spry.Widget.ValidationTextField.onloadDidFire=true;
var q=Spry.Widget.ValidationTextField.loadQueue;
var _7a=q.length;
for(var i=0;i<_7a;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(_7c){
this.flags.locked=true;
this.input.value=_7c;
this.flags.locked=false;
this.oldValue=_7c;
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(_7d){
if(_7d!=this.input.value){
this.input.readOnly=true;
this.input.value=_7d;
this.input.readOnly=false;
if(Spry.is.safari&&this.flags.active){
this.input.focus();
}
}
if(this.flags.restoreSelection){
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;
this.removeClassName(this.element,this.hintClass);
this.removeClassName(this.additionalError,this.hintClass);
}
};
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;
this.addClassName(this.element,this.hintClass);
this.addClassName(this.additionalError,this.hintClass);
}
};
Spry.Widget.ValidationTextField.prototype.redTextFlash=function(){
var _7e=this;
this.addClassName(this.element,this.textfieldFlashTextClass);
setTimeout(function(){
_7e.removeClassName(_7e.element,_7e.textfieldFlashTextClass);
},100);
};
Spry.Widget.ValidationTextField.prototype.doValidations=function(_7f,_80){
if(this.isDisabled()){
return false;
}
if(this.flags.locked){
return false;
}
if(_7f.length==0&&!this.isRequired){
this.errors=0;
return false;
}
this.flags.locked=true;
var _81=false;
var _82=true;
if(!this.options.isRequired&&_7f.length==0){
_82=false;
}
var _83=0;
var _84=_7f;
if(this.useCharacterMasking&&this.characterMasking){
for(var i=0;i<_7f.length;i++){
if(!this.characterMasking.test(_7f.charAt(i))){
_83=_83|Spry.Widget.ValidationTextField.ERROR_FORMAT;
_84=_80;
_81=true;
break;
}
}
}
if(!_81&&this.useCharacterMasking&&this.regExpFilter){
if(!this.regExpFilter.test(_84)){
_83=_83|Spry.Widget.ValidationTextField.ERROR_FORMAT;
_81=true;
}
}
if(!_81&&this.pattern){
var _86=this.patternToRegExp(_7f.length);
if(!_86.test(_7f)){
_83=_83|Spry.Widget.ValidationTextField.ERROR_FORMAT;
_81=true;
}else{
if(this.patternLength!=_7f.length){
_83=_83|Spry.Widget.ValidationTextField.ERROR_FORMAT;
}
}
}
if(_84==""){
_83=_83|Spry.Widget.ValidationTextField.ERROR_REQUIRED;
}
if(!_81&&this.pattern&&this.useCharacterMasking){
var n=this.getAutoComplete(_7f.length);
if(n){
_84+=n;
}
}
if(!_81&&this.minChars!==null&&_82){
if(_7f.length<this.minChars){
_83=_83|Spry.Widget.ValidationTextField.ERROR_CHARS_MIN;
_82=false;
}
}
if(!_81&&this.maxChars!==null&&_82){
if(_7f.length>this.maxChars){
_83=_83|Spry.Widget.ValidationTextField.ERROR_CHARS_MAX;
_82=false;
}
}
if(!_81&&this.validation&&_82){
var _88=this.validation(_84,this.options);
if(false===_88){
_83=_83|Spry.Widget.ValidationTextField.ERROR_FORMAT;
_82=false;
}else{
this.typedValue=_88;
}
}
if(!_81&&this.validation&&this.minValue!==null&&_82){
var _89=this.validation(this.minValue,this.options);
if(_89!==false){
if(this.typedValue<_89){
_83=_83|Spry.Widget.ValidationTextField.ERROR_RANGE_MIN;
_82=false;
}
}
}
if(!_81&&this.validation&&this.maxValue!==null&&_82){
var _8a=this.validation(this.maxValue,this.options);
if(_8a!==false){
if(this.typedValue>_8a){
_83=_83|Spry.Widget.ValidationTextField.ERROR_RANGE_MAX;
_82=false;
}
}
}
if(this.useCharacterMasking&&_81){
this.revertState(_80);
}
this.errors=_83;
this.fixedValue=_84;
this.flags.locked=false;
return _81;
};
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 _8c=this;
setTimeout(function(){
_8c.flags.drop=false;
_8c.onChange(null);
},0);
return;
}
if(this.flags.hintOn){
return true;
}
if(this.keyCode==8||this.keyCode==46){
var _8d=this.doValidations(this.input.value,this.input.value);
this.oldValue=this.input.value;
if((_8d||this.errors)&&this.validateOn&Spry.Widget.ValidationTextField.ONCHANGE){
var _8e=this;
setTimeout(function(){
_8e.validate();
},0);
return true;
}
}
var _8f=this.doValidations(this.input.value,this.oldValue);
if((!_8f||this.errors)&&this.validateOn&Spry.Widget.ValidationTextField.ONCHANGE){
var _90=this;
setTimeout(function(){
_90.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 _92=this.doValidations(this.input.value,this.input.value);
if(_92){
this.setValue(this.oldValue);
this.selection.moveTo(this.selection.start,this.selection.start);
}else{
this.onChange();
}
}
};
Spry.Widget.ValidationTextField.prototype.compileDatePattern=function(){
var _93="";
var _94=[];
var _95=[];
var _96=[];
var _97=/^([mdy]+)([\.\-\/\\\s]+)([mdy]+)([\.\-\/\\\s]+)([mdy]+)$/i;
var _98=this.options.format.match(_97);
if(_98!==null){
for(var i=1;i<_98.length;i++){
switch(_98[i].toLowerCase()){
case "dd":
_94[i-1]="\\d{1,2}";
_95[i-1]="\\d\\d";
_93+="("+_94[i-1]+")";
_96[i-1]=null;
break;
case "mm":
_94[i-1]="\\d{1,2}";
_95[i-1]="\\d\\d";
_93+="("+_94[i-1]+")";
_96[i-1]=null;
break;
case "yy":
_94[i-1]="\\d{1,2}";
_95[i-1]="\\d\\d";
_93+="(\\d\\d)";
_96[i-1]=null;
break;
case "yyyy":
_94[i-1]="\\d{1,4}";
_95[i-1]="\\d\\d\\d\\d";
_93+="(\\d\\d\\d\\d)";
_96[i-1]=null;
break;
default:
_94[i-1]=_95[i-1]=Spry.Widget.ValidationTextField.regExpFromChars(_98[i]);
_93+="["+_94[i-1]+"]";
_96[i-1]=_98[i];
}
}
}
this.dateValidationPattern=new RegExp("^"+_93+"$","");
this.dateAutocompleteCharacters=_96;
this.dateGroupPatterns=_94;
this.dateFullGroupPatterns=_95;
this.lastDateGroup=_98.length-2;
};
Spry.Widget.ValidationTextField.prototype.getRegExpForGroup=function(_9a){
var ret="^";
for(var j=0;j<=_9a;j++){
ret+=this.dateGroupPatterns[j];
}
ret+="$";
return new RegExp(ret,"");
};
Spry.Widget.ValidationTextField.prototype.getRegExpForFullGroup=function(_9d){
var ret="^";
for(var j=0;j<_9d;j++){
ret+=this.dateGroupPatterns[j];
}
ret+=this.dateFullGroupPatterns[_9d];
return new RegExp(ret,"");
};
Spry.Widget.ValidationTextField.prototype.getDateGroup=function(_a0,pos){
if(pos==0){
return 0;
}
var _a2=_a0.substring(0,pos);
for(var i=0;i<=this.lastDateGroup;i++){
if(this.getRegExpForGroup(i).test(_a2)){
return i;
}
}
return -1;
};
Spry.Widget.ValidationTextField.prototype.isDateGroupFull=function(_a4,_a5){
return this.getRegExpForFullGroup(_a5).test(_a4);
};
Spry.Widget.ValidationTextField.prototype.isValueValid=function(_a6,pos,_a8){
var _a9=_a6.substring(0,pos);
return this.getRegExpForGroup(_a8).test(_a9);
};
Spry.Widget.ValidationTextField.prototype.isPositionAtEndOfGroup=function(_aa,pos,_ac){
var _ad=_aa.substring(0,pos);
return this.getRegExpForFullGroup(_ac).test(_ad);
};
Spry.Widget.ValidationTextField.prototype.nextDateDelimiterExists=function(_ae,pos,_b0){
var _b1=this.dateAutocompleteCharacters[_b0+1];
if(_ae.length<pos+_b1.length){
return false;
}else{
var _b2=_ae.substring(pos,pos+_b1.length);
if(_b2==_b1){
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 _b5=Spry.Widget.Utils.getCharacterFromEvent(e);
if(_b5&&this.characterMasking){
if(!this.characterMasking.test(_b5)){
Spry.Widget.Utils.stopEvent(e);
this.redTextFlash();
return false;
}
}
if(_b5&&this.pattern){
var _b6=this.patternCharacters[this.selection.start];
if(/[ax]/i.test(_b6)){
if(_b6.toLowerCase()==_b6){
_b5=_b5.toLowerCase();
}else{
_b5=_b5.toUpperCase();
}
}
var _b7=this.getAutoComplete(this.selection.start);
if(this.selection.start==this.oldValue.length){
if(this.oldValue.length<this.patternLength){
if(_b7){
Spry.Widget.Utils.stopEvent(e);
var _b8=this.oldValue.substring(0,this.selection.start)+_b7+_b5;
var _b9=this.doValidations(_b8,this.oldValue);
if(!_b9){
this.setValue(this.fixedValue);
this.selection.moveTo(this.fixedValue.length,this.fixedValue.length);
}else{
this.setValue(this.oldValue.substring(0,this.selection.start)+_b7);
this.selection.moveTo(this.selection.start+_b7.length,this.selection.start+_b7.length);
}
return false;
}
}else{
Spry.Widget.Utils.stopEvent(e);
this.setValue(this.input.value);
return false;
}
}else{
if(_b7){
Spry.Widget.Utils.stopEvent(e);
this.selection.moveTo(this.selection.start+_b7.length,this.selection.start+_b7.length);
return false;
}
}
Spry.Widget.Utils.stopEvent(e);
var _ba=this.oldValue.substring(0,this.selection.start)+_b5+this.oldValue.substring(this.selection.start+1);
var _bb=this.doValidations(_ba,this.oldValue);
if(!_bb){
_b7=this.getAutoComplete(this.selection.start+1);
this.setValue(this.fixedValue);
this.selection.moveTo(this.selection.start+1+_b7.length,this.selection.start+1+_b7.length);
}else{
this.selection.moveTo(this.selection.start,this.selection.start);
}
return false;
}
if(_b5&&this.type=="date"&&this.useCharacterMasking){
var _bc=this.getDateGroup(this.oldValue,this.selection.start);
if(_bc!=-1){
Spry.Widget.Utils.stopEvent(e);
if((_bc%2)!=0){
_bc++;
}
if(this.isDateGroupFull(this.oldValue,_bc)){
if(this.isPositionAtEndOfGroup(this.oldValue,this.selection.start,_bc)){
if(_bc==this.lastDateGroup){
this.redTextFlash();
return false;
}else{
var _bd=this.dateAutocompleteCharacters[_bc+1];
if(this.nextDateDelimiterExists(this.oldValue,this.selection.start,_bc)){
var _be=this.dateAutocompleteCharacters[_bc+1];
this.selection.moveTo(this.selection.start+_be.length,this.selection.start+_be.length);
if(_b5==_be){
return false;
}
if(this.isDateGroupFull(this.oldValue,_bc+2)){
_ba=this.oldValue.substring(0,this.selection.start)+_b5+this.oldValue.substring(this.selection.start+1);
}else{
_ba=this.oldValue.substring(0,this.selection.start)+_b5+this.oldValue.substring(this.selection.start);
}
if(!this.isValueValid(_ba,this.selection.start+1,_bc+2)){
this.redTextFlash();
return false;
}else{
this.setValue(_ba);
this.selection.moveTo(this.selection.start+1,this.selection.start+1);
}
return false;
}else{
var _bf=this.dateAutocompleteCharacters[_bc+1];
var _c0=_bf+_b5;
_ba=this.oldValue.substring(0,this.selection.start)+_c0+this.oldValue.substring(this.selection.start);
if(!this.isValueValid(_ba,this.selection.start+_c0.length,_bc+2)){
_c0=_bf;
_ba=this.oldValue.substring(0,this.selection.start)+_c0+this.oldValue.substring(this.selection.start);
this.setValue(_ba);
this.selection.moveTo(this.selection.start+_c0.length,this.selection.start+_c0.length);
this.redTextFlash();
return false;
}else{
this.setValue(_ba);
this.selection.moveTo(this.selection.start+_c0.length,this.selection.start+_c0.length);
return false;
}
}
}
}else{
var _c1=1;
_ba=this.oldValue.substring(0,this.selection.start)+_b5+this.oldValue.substring(this.selection.start+1);
if(!this.isValueValid(_ba,this.selection.start+1,_bc)){
this.redTextFlash();
return false;
}else{
if(this.isPositionAtEndOfGroup(_ba,this.selection.start+1,_bc)){
if(_bc!=this.lastDateGroup){
if(this.nextDateDelimiterExists(_ba,this.selection.start+1,_bc)){
var _c2=this.dateAutocompleteCharacters[_bc+1];
_c1=1+_c2.length;
}else{
var _c3=this.dateAutocompleteCharacters[_bc+1];
_ba=this.oldValue.substring(0,this.selection.start)+_b5+_c3+this.oldValue.substring(this.selection.start+1);
_c1=1+_c3.length;
}
}
}
this.setValue(_ba);
this.selection.moveTo(this.selection.start+_c1,this.selection.start+_c1);
return false;
}
}
}else{
_ba=this.oldValue.substring(0,this.selection.start)+_b5+this.oldValue.substring(this.selection.start);
var _c4=1;
if(!this.isValueValid(_ba,this.selection.start+1,_bc)&&!this.isValueValid(_ba,this.selection.start+1,_bc+1)){
this.redTextFlash();
return false;
}else{
var _c5=this.dateAutocompleteCharacters[_bc+1];
if(_b5==_c5){
if(this.nextDateDelimiterExists(this.oldValue,this.selection.start,_bc)){
_ba=this.oldValue;
_c4=1;
}
}else{
if(this.isPositionAtEndOfGroup(_ba,this.selection.start+1,_bc)){
if(_bc!=this.lastDateGroup){
if(this.nextDateDelimiterExists(_ba,this.selection.start+1,_bc)){
var _c6=this.dateAutocompleteCharacters[_bc+1];
_c4=1+_c6.length;
}else{
var _c7=this.dateAutocompleteCharacters[_bc+1];
_ba=this.oldValue.substring(0,this.selection.start)+_b5+_c7+this.oldValue.substring(this.selection.start+1);
_c4=1+_c7.length;
}
}
}
}
this.setValue(_ba);
this.selection.moveTo(this.selection.start+_c4,this.selection.start+_c4);
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 _c9=Spry.Widget.Utils.getCharacterFromEvent(e);
if(_c9&&"vx".indexOf(_c9.toLowerCase())!=-1){
var _ca=this;
this.flags.operaPasteOperation=window.setInterval(function(){
_ca.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);
this.addClassName(this.additionalError,this.focusClass);
};
Spry.Widget.ValidationTextField.prototype.onFocus=function(e){
if(this.flags.drop){
return;
}
this.removeHint();
if(this.pattern&&this.useCharacterMasking){
var _d0=this.getAutoComplete(this.selection.start);
this.setValue(this.input.value+_d0);
this.selection.moveTo(this.input.value.length,this.input.value.length);
}
this.saveState();
this.flags.active=true;
this.addClassName(this.element,this.focusClass);
this.addClassName(this.additionalError,this.focusClass);
};
Spry.Widget.ValidationTextField.prototype.onBlur=function(e){
this.flags.active=false;
this.removeClassName(this.element,this.focusClass);
this.removeClassName(this.additionalError,this.focusClass);
this.flags.restoreSelection=false;
var _d2=this.doValidations(this.input.value,this.input.value);
this.flags.restoreSelection=true;
if(this.validateOn&Spry.Widget.ValidationTextField.ONBLUR){
this.validate();
}
var _d3=this;
setTimeout(function(){
_d3.putHint();
},10);
return true;
};
Spry.Widget.ValidationTextField.prototype.compilePattern=function(){
if(!this.pattern){
return;
}
var _d4=[];
var _d5=[];
var _d6=[];
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)){
_d5[idx-1]=c;
}else{
_d5[idx-1]=Spry.Widget.ValidationTextField.regExpFromChars(c);
}
_d4[idx-1]=c;
_d6[idx-1]=null;
p="";
continue;
}
_d5[idx]=Spry.Widget.ValidationTextField.regExpFromChars(c);
if(/[0ABXY\?]/i.test(c)){
_d4[idx]=null;
_d6[idx]=c;
}else{
if(c=="\\"){
_d4[idx]=c;
_d6[idx]="\\";
}else{
_d4[idx]=c;
_d6[idx]=null;
}
}
idx++;
p=c;
}
this.autoCompleteCharacters=_d4;
this.compiledPattern=_d5;
this.patternCharacters=_d6;
this.patternLength=_d4.length;
};
Spry.Widget.ValidationTextField.prototype.getAutoComplete=function(_da,_db){
if(_db==-1){
var n="",m="";
while(_da&&(n=this.getAutoComplete(--_da))){
m=n;
}
return m;
}
var ret="",c="";
for(var i=_da;i<this.autoCompleteCharacters.length;i++){
c=this.autoCompleteCharacters[i];
if(c){
ret+=c;
}else{
break;
}
}
return ret;
};
Spry.Widget.ValidationTextField.regExpFromChars=function(_df){
var ret="",character="";
for(var i=0;i<_df.length;i++){
character=_df.charAt(i);
switch(character){
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+=character;
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+=character;
break;
default:
ret+="\\"+character;
}
}
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.resetClasses=function(){
var _e6=[this.requiredClass,this.invalidFormatClass,this.invalidRangeMinClass,this.invalidRangeMaxClass,this.invalidCharsMinClass,this.invalidCharsMaxClass,this.validClass];
for(var i=0;i<_e6.length;i++){
this.removeClassName(this.element,_e6[i]);
this.removeClassName(this.additionalError,_e6[i]);
}
};
Spry.Widget.ValidationTextField.prototype.reset=function(){
this.removeHint();
this.oldValue=this.input.defaultValue;
this.resetClasses();
if(Spry.is.ie){
this.input.forceFireFirstOnPropertyChange=true;
this.input.removeAttribute("forceFireFirstOnPropertyChange");
}
var _e8=this;
setTimeout(function(){
_e8.putHint();
},10);
};
Spry.Widget.ValidationTextField.prototype.validate=function(){
this.resetClasses();
if(this.validateOn&Spry.Widget.ValidationTextField.ONSUBMIT){
this.removeHint();
this.doValidations(this.input.value,this.input.value);
if(!this.flags.active){
var _e9=this;
setTimeout(function(){
_e9.putHint();
},10);
}
}
if(this.isRequired&&this.errors&Spry.Widget.ValidationTextField.ERROR_REQUIRED){
this.addClassName(this.element,this.requiredClass);
this.addClassName(this.additionalError,this.requiredClass);
return false;
}
if(this.errors&Spry.Widget.ValidationTextField.ERROR_FORMAT){
this.addClassName(this.element,this.invalidFormatClass);
this.addClassName(this.additionalError,this.invalidFormatClass);
return false;
}
if(this.errors&Spry.Widget.ValidationTextField.ERROR_RANGE_MIN){
this.addClassName(this.element,this.invalidRangeMinClass);
this.addClassName(this.additionalError,this.invalidRangeMinClass);
return false;
}
if(this.errors&Spry.Widget.ValidationTextField.ERROR_RANGE_MAX){
this.addClassName(this.element,this.invalidRangeMaxClass);
this.addClassName(this.additionalError,this.invalidRangeMaxClass);
return false;
}
if(this.errors&Spry.Widget.ValidationTextField.ERROR_CHARS_MIN){
this.addClassName(this.element,this.invalidCharsMinClass);
this.addClassName(this.additionalError,this.invalidCharsMinClass);
return false;
}
if(this.errors&Spry.Widget.ValidationTextField.ERROR_CHARS_MAX){
this.addClassName(this.element,this.invalidCharsMaxClass);
this.addClassName(this.additionalError,this.invalidCharsMaxClass);
return false;
}
this.addClassName(this.element,this.validClass);
this.addClassName(this.additionalError,this.validClass);
return true;
};
Spry.Widget.ValidationTextField.prototype.addClassName=function(ele,_eb){
if(!ele||!_eb||(ele.className&&ele.className.search(new RegExp("\\b"+_eb+"\\b"))!=-1)){
return;
}
ele.className+=(ele.className?" ":"")+_eb;
};
Spry.Widget.ValidationTextField.prototype.removeClassName=function(ele,_ed){
if(!ele||!_ed||(ele.className&&ele.className.search(new RegExp("\\b"+_ed+"\\b"))==-1)){
return;
}
ele.className=ele.className.replace(new RegExp("\\s*\\b"+_ed+"\\b","g"),"");
};
Spry.Widget.SelectionDescriptor=function(_ee){
this.element=_ee;
this.update();
};
Spry.Widget.SelectionDescriptor.prototype.update=function(){
if(Spry.is.ie&&Spry.is.windows){
if(this.element.nodeName=="TEXTAREA"){
var sel=this.element.ownerDocument.selection;
if(sel.type!="None"){
var _f0=this.element.ownerDocument.selection.createRange();
if(_f0.parentElement()==this.element){
var _f1=this.element.ownerDocument.body.createTextRange();
_f1.moveToElementText(this.element);
for(var _f2=0;_f1.compareEndPoints("StartToStart",_f0)<0;_f2++){
_f1.moveStart("character",1);
}
this.start=_f2;
_f1=this.element.ownerDocument.body.createTextRange();
_f1.moveToElementText(this.element);
for(var _f3=0;_f1.compareEndPoints("StartToEnd",_f0)<0;_f3++){
_f1.moveStart("character",1);
}
this.end=_f3;
this.length=this.end-this.start;
this.text=_f0.text;
}
}
}else{
if(this.element.nodeName=="INPUT"){
var sel=this.element.ownerDocument.selection;
this.range=this.element.ownerDocument.selection.createRange();
this.length=this.range.text.length;
var _f5=this.range.duplicate();
this.start=-_f5.moveStart("character",-10000);
_f5=this.range.duplicate();
_f5.collapse(false);
this.end=-_f5.moveStart("character",-10000);
this.text=this.range.text;
}
}
}else{
var tmp=this.element;
var _f7=0;
var _f8=0;
try{
_f7=tmp.selectionStart;
}
catch(err){
}
try{
_f8=tmp.selectionEnd;
}
catch(err){
}
if(Spry.is.safari){
if(_f7==2147483647){
_f7=0;
}
if(_f8==2147483647){
_f8=0;
}
}
this.start=_f7;
this.end=_f8;
this.length=_f8-_f7;
this.text=this.element.value.substring(_f7,_f8);
}
};
Spry.Widget.SelectionDescriptor.prototype.destroy=function(){
try{
delete this.range;
}
catch(err){
}
try{
delete this.element;
}
catch(err){
}
};
Spry.Widget.SelectionDescriptor.prototype.move=function(_f9){
if(Spry.is.ie&&Spry.is.windows){
this.range.move("character",_f9);
this.range.select();
}else{
try{
this.element.selectionStart++;
}
catch(err){
}
}
this.update();
};
Spry.Widget.SelectionDescriptor.prototype.moveTo=function(_fa,end){
if(Spry.is.ie&&Spry.is.windows){
if(this.element.nodeName=="TEXTAREA"){
var _fc=this.element.createTextRange();
this.range=this.element.createTextRange();
this.range.move("character",_fa);
this.range.moveEnd("character",end-_fa);
var c1=this.range.compareEndPoints("StartToStart",_fc);
if(c1<0){
this.range.setEndPoint("StartToStart",_fc);
}
var c2=this.range.compareEndPoints("EndToEnd",_fc);
if(c2>0){
this.range.setEndPoint("EndToEnd",_fc);
}
}else{
if(this.element.nodeName=="INPUT"){
this.range=this.element.ownerDocument.selection.createRange();
this.range.move("character",-10000);
this.start=this.range.moveStart("character",_fa);
this.end=this.start+this.range.moveEnd("character",end-_fa);
}
}
this.range.select();
}else{
this.start=_fa;
try{
this.element.selectionStart=_fa;
}
catch(err){
}
this.end=end;
try{
this.element.selectionEnd=end;
}
catch(err){
}
}
this.ignore=true;
this.update();
};
Spry.Widget.SelectionDescriptor.prototype.moveEnd=function(_ff){
if(Spry.is.ie&&Spry.is.windows){
this.range.moveEnd("character",_ff);
this.range.select();
}else{
try{
this.element.selectionEnd++;
}
catch(err){
}
}
this.update();
};
Spry.Widget.SelectionDescriptor.prototype.collapse=function(_100){
if(Spry.is.ie&&Spry.is.windows){
this.range=this.element.ownerDocument.selection.createRange();
this.range.collapse(_100);
this.range.select();
}else{
if(_100){
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(_101){
var _102=true;
var _103=true;
var q=Spry.Widget.Form.onSubmitWidgetQueue;
var qlen=q.length;
for(var i=0;i<qlen;i++){
if(!q[i].isDisabled()&&q[i].form==_101){
_103=q[i].validate();
_102=_103&&_102;
}
}
return _102;
};
}
if(!Spry.Widget.Form.onSubmit){
Spry.Widget.Form.onSubmit=function(e,form){
if(Spry.Widget.Form.validate(form)==false){
return false;
}
return true;
};
}
if(!Spry.Widget.Form.onReset){
Spry.Widget.Form.onReset=function(e,_10a){
var q=Spry.Widget.Form.onSubmitWidgetQueue;
var qlen=q.length;
for(var i=0;i<qlen;i++){
if(!q[i].isDisabled()&&q[i].form==_10a&&typeof (q[i].reset)=="function"){
q[i].reset();
}
}
return true;
};
}
if(!Spry.Widget.Form.destroy){
Spry.Widget.Form.destroy=function(form){
var q=Spry.Widget.Form.onSubmitWidgetQueue;
for(var i=0;i<Spry.Widget.Form.onSubmitWidgetQueue.length;i++){
if(q[i].form==form&&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(_114,_115,_116){
_114=_116?_114/this.punycode_constants.damp:_114>>1;
_114+=_114/_115;
for(var k=0;_114>((this.punycode_constants.base-this.punycode_constants.tmin)*this.punycode_constants.tmax)/2;k+=this.punycode_constants.base){
_114/=this.punycode_constants.base-this.punycode_constants.tmin;
}
return k+(this.punycode_constants.base-this.punycode_constants.tmin+1)*_114/(_114+this.punycode_constants.skew);
};
Spry.Widget.Utils.punycode_encode=function(_118,_119){
var _11a=_118.split("");
_118=[];
for(var i=0;i<_11a.length;i++){
_118.push(_11a[i].charCodeAt(0));
}
var _11c="";
var h,b,j,m,q,k,t;
var _11e=_118.length;
var n=this.punycode_constants.initial_n;
var _120=0;
var bias=this.punycode_constants.initial_bias;
var out=0;
for(j=0;j<_11e;j++){
if(_118[j]<128){
if(_119-out<2){
return false;
}
_11c+=String.fromCharCode(_118[j]);
out++;
}
}
h=b=out;
if(b>0){
_11c+=String.fromCharCode(this.punycode_constants.delimiter);
out++;
}
while(h<_11e){
for(m=this.punycode_constants.maxint,j=0;j<_11e;j++){
if(_118[j]>=n&&_118[j]<m){
m=_118[j];
}
}
if(m-n>(this.punycode_constants.maxint-_120)/(h+1)){
return false;
}
_120+=(m-n)*(h+1);
n=m;
for(j=0;j<_11e;j++){
if(_118[j]<n){
if(++_120==0){
return false;
}
}
if(_118[j]==n){
for(q=_120,k=this.punycode_constants.base;;k+=this.punycode_constants.base){
if(out>=_119){
return false;
}
t=k<=bias?this.punycode_constants.tmin:k>=bias+this.punycode_constants.tmax?this.punycode_constants.tmax:k-bias;
if(q<t){
break;
}
_11c+=this.punycode_encode_digit(t+(q-t)%(this.punycode_constants.base-t));
out++;
q=(q-t)/(this.punycode_constants.base-t);
}
_11c+=this.punycode_encode_digit(q);
out++;
bias=this.punycode_adapt(_120,h+1,h==b);
_120=0;
h++;
}
}
_120++,n++;
}
return _11c;
};
Spry.Widget.Utils.setOptions=function(obj,_124,_125){
if(!_124){
return;
}
for(var _126 in _124){
if(_125&&_124[_126]==undefined){
continue;
}
obj[_126]=_124[_126];
}
};
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 _12b=e.type=="keydown";
var code=null;
var _12d=null;
if(Spry.is.mozilla&&!_12b){
if(e.charCode){
_12d=String.fromCharCode(e.charCode);
}else{
code=e.keyCode;
}
}else{
code=e.keyCode||e.which;
if(code!=13){
_12d=String.fromCharCode(code);
}
}
if(Spry.is.safari){
if(_12b){
code=e.keyCode||e.which;
_12d=String.fromCharCode(code);
}else{
code=e.keyCode||e.which;
if(Spry.Widget.Utils.specialCharacters.indexOf(","+code+",")!=-1){
_12d=null;
}else{
_12d=String.fromCharCode(code);
}
}
}
if(Spry.is.opera){
if(Spry.Widget.Utils.specialCharacters.indexOf(","+code+",")!=-1){
_12d=null;
}else{
_12d=String.fromCharCode(code);
}
}
return _12d;
};
Spry.Widget.Utils.getFirstChildWithNodeNameAtAnyLevel=function(node,_12f){
var _130=node.getElementsByTagName(_12f);
if(_130){
return _130[0];
}
return null;
};
Spry.Widget.Utils.getFirstParentWithNodeName=function(node,_132){
while(node.parentNode&&node.parentNode.nodeName.toLowerCase()!=_132.toLowerCase()&&node.parentNode.nodeName!="BODY"){
node=node.parentNode;
}
if(node.parentNode&&node.parentNode.nodeName.toLowerCase()==_132.toLowerCase()){
return node.parentNode;
}else{
return null;
}
};
Spry.Widget.Utils.destroyWidgets=function(_133){
if(typeof _133=="string"){
_133=document.getElementById(_133);
}
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(_133,q[i].element)){
q[i].destroy();
i--;
}
}
};
Spry.Widget.Utils.contains=function(who,what){
if(typeof who.contains=="object"){
return what&&who&&(who==what||who.contains(what));
}else{
var el=what;
while(el){
if(el==who){
return true;
}
el=el.parentNode;
}
return false;
}
};
Spry.Widget.Utils.addEventListener=function(_139,_13a,_13b,_13c){
try{
if(_139.addEventListener){
_139.addEventListener(_13a,_13b,_13c);
}else{
if(_139.attachEvent){
_139.attachEvent("on"+_13a,_13b,_13c);
}
}
}
catch(e){
}
};
Spry.Widget.Utils.removeEventListener=function(_13d,_13e,_13f,_140){
try{
if(_13d.removeEventListener){
_13d.removeEventListener(_13e,_13f,_140);
}else{
if(_13d.detachEvent){
_13d.detachEvent("on"+_13e,_13f,_140);
}
}
}
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;
}
};


