// Copyright (c) 2007. Adobe Systems Incorporated. // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // // * Redistributions of source code must retain the above copyright notice, // this list of conditions and the following disclaimer. // * Redistributions in binary form must reproduce the above copyright notice, // this list of conditions and the following disclaimer in the documentation // and/or other materials provided with the distribution. // * Neither the name of Adobe Systems Incorporated nor the names of its // contributors may be used to endorse or promote products derived from this // software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. var Spry;if(!Spry){Spry={}}if(!Spry.Widget){Spry.Widget={}}Spry.Widget.BrowserSniff=function(){var i=navigator.appName.toString();var e=navigator.platform.toString();var c=navigator.userAgent.toString();this.mozilla=this.ie=this.opera=this.safari=false;var g=/Opera.([0-9\.]*)/i;var d=/MSIE.([0-9\.]*)/i;var f=/gecko/i;var h=/(applewebkit|safari)\/([\d\.]*)/i;var a=false;if((a=c.match(g))){this.opera=true;this.version=parseFloat(a[1])}else{if((a=c.match(d))){this.ie=true;this.version=parseFloat(a[1])}else{if((a=c.match(h))){this.safari=true;this.version=parseFloat(a[2])}else{if(c.match(f)){var j=/rv:\s*([0-9\.]+)/i;a=c.match(j);this.mozilla=true;this.version=parseFloat(a[1])}}}}this.windows=this.mac=this.linux=false;this.Platform=c.match(/windows/i)?"windows":(c.match(/linux/i)?"linux":(c.match(/mac/i)?"mac":c.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(b,c,a){c=Spry.Widget.Utils.firstValid(c,"none");if(typeof c!="string"){this.showError("The second parameter in the constructor should be the validation type, the options are the third parameter.");return}if(typeof Spry.Widget.ValidationTextField.ValidationDescriptors[c]=="undefined"){this.showError("Unknown validation type received as the second parameter.");return}a=Spry.Widget.Utils.firstValid(a,{});this.type=c;if(!this.isBrowserSupported()){a.useCharacterMasking=false}this.init(b,a);var d=["submit"].concat(Spry.Widget.Utils.firstValid(this.options.validateOn,[]));d=d.join(",");this.validateOn=0;this.validateOn=this.validateOn|(d.indexOf("submit")!=-1?Spry.Widget.ValidationTextField.ONSUBMIT:0);this.validateOn=this.validateOn|(d.indexOf("blur")!=-1?Spry.Widget.ValidationTextField.ONBLUR:0);this.validateOn=this.validateOn|(d.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,c){if(d==""||d=="-"||d=="+"){return false}var b=/^[\-\+]?\d*$/;if(!b.test(d)){return false}c=c||{allowNegative:false};var a=parseInt(d,10);if(!isNaN(a)){var e=true;if(typeof c.allowNegative!="undefined"&&c.allowNegative==false){e=false}if(!e&&d<0){a=false}}else{a=false}return a}},real:{characterMasking:/[\d\.,\-\+e]/i,regExpFilter:/^[\-\+]?\d(?:|\.,\d{0,2})|(?:|e{0,1}[\-\+]?\d{0,})$/i,validation:function(d,c){var b=/^[\+\-]?[0-9]+([\.,][0-9]+)?([eE]{0,1}[\-\+]?[0-9]+)?$/;if(!b.test(d)){return false}var a=parseFloat(d);if(isNaN(a)){a=false}return a}},currency:{formats:{dot_comma:{characterMasking:/[\d\.\,\-\+\$]/,regExpFilter:/^[\-\+]?(?:[\d\.]*)+(|\,\d{0,2})$/,validation:function(c,b){var a=false;if(/^(\-|\+)?\d{1,3}(?:\.\d{3})*(?:\,\d{2}|)$/.test(c)||/^(\-|\+)?\d+(?:\,\d{2}|)$/.test(c)){c=c.toString().replace(/\./gi,"").replace(/\,/,".");a=parseFloat(c)}return a}},comma_dot:{characterMasking:/[\d\.\,\-\+\$]/,regExpFilter:/^[\-\+]?(?:[\d\,]*)+(|\.\d{0,2})$/,validation:function(c,b){var a=false;if(/^(\-|\+)?\d{1,3}(?:\,\d{3})*(?:\.\d{2}|)$/.test(c)||/^(\-|\+)?\d+(?:\.\d{2}|)$/.test(c)){c=c.toString().replace(/\,/gi,"");a=parseFloat(c)}return a}}}},email:{characterMasking:/[^\s]/,validation:function(b,a){var c=/^[\w\.-]+@[\w\.-]+\.\w+$/i;return c.test(b)}},date:{validation:function(k,o){var j=/^([mdy]+)[\.\-\/\\\s]+([mdy]+)[\.\-\/\\\s]+([mdy]+)$/i;var f=this.dateValidationPattern;var a=o.format.match(j);var l=k.match(f);if(a!==null&&l!==null){var b=-1;var e=-1;var c=-1;for(var g=1;g12){return false}switch(m){case 1:case 3:case 5:case 7:case 8:case 10:case 12:h=31;break;case 4:case 6:case 9:case 11:h=30;break;case 2:if((parseInt(d/4,10)*4==d)&&(d%100!=0||d%400==0)){h=29}else{h=28}break}if(n<1||n>h){return false}return(new Date(d,m-1,n))}}else{return false}}},time:{validation:function(m,q){var g=/([hmst]+)/gi;var e=/(\d+|AM?|PM?)/gi;var a=q.format.match(g);var p=m.match(e);if(a!==null&&p!==null){if(a.length!=p.length){return false}var n=-1;var d=-1;var b=-1;var o=-1;var l=0,k=0,j=0,h="AM";for(var f=0;f(a[n]=="HH"?23:12)){return false}}if(d!=-1){var k=parseInt(p[d],10);if(isNaN(k)||k>59){return false}}if(b!=-1){var j=parseInt(p[b],10);if(isNaN(j)||j>59){return false}}if(o!=-1){var h=p[o].toUpperCase();if(a[o].toUpperCase()=="TT"&&!/^a|pm$/i.test(h)||a[o].toUpperCase()=="T"&&!/^a|p$/i.test(h)){return false}}var c=new Date(2000,0,1,l+(h.charAt(0)=="P"?12:0),k,j);return c}else{return false}}},credit_card:{characterMasking:/\d/,validation:function(g,c){var b=null;c.format=c.format||"ALL";switch(c.format.toUpperCase()){case"ALL":b=/^[3-6]{1}[0-9]{12,18}$/;break;case"VISA":b=/^4(?:[0-9]{12}|[0-9]{15})$/;break;case"MASTERCARD":b=/^5[1-5]{1}[0-9]{14}$/;break;case"AMEX":b=/^3(4|7){1}[0-9]{13}$/;break;case"DISCOVER":b=/^6011[0-9]{12}$/;break;case"DINERSCLUB":b=/^3(?:(0[0-5]{1}[0-9]{11})|(6[0-9]{12})|(8[0-9]{12}))$/;break}if(!b.test(g)){return false}var f=[];var a=1,h="";for(var d=g.length-1;d>=0;d--){if((a%2)==0){h=parseInt(g.charAt(d),10)*2;f[f.length]=h.toString().charAt(0);if(h.toString().length==2){f[f.length]=h.toString().charAt(1)}}else{h=g.charAt(d);f[f.length]=h}a++}var e=0;for(d=0;d255||!h.test(b[c])||b[c].length>3||/^0{2,3}$/.test(b[c])){return false}}}if(e&&k.indexOf("/")!=-1){var l=k.match(/\/\d{1,3}$/);if(!l){return false}var d=parseInt(l[0].replace(/^\//,""),10);if(isNaN(d)||d>128||d<1){return false}}return e};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(element,options){this.element=this.getElement(element);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":options.format=Spry.Widget.Utils.firstValid(options.format,"phone_us");break;case"currency":options.format=Spry.Widget.Utils.firstValid(options.format,"comma_dot");break;case"zip_code":options.format=Spry.Widget.Utils.firstValid(options.format,"zip_us5");break;case"date":options.format=Spry.Widget.Utils.firstValid(options.format,"mm/dd/yy");break;case"time":options.format=Spry.Widget.Utils.firstValid(options.format,"HH:mm");options.pattern=options.format.replace(/[hms]/gi,"0").replace(/TT/gi,"AM").replace(/T/gi,"A");break;case"ip":options.format=Spry.Widget.Utils.firstValid(options.format,"ipv4");options.characterMasking=Spry.Widget.ValidationTextField.ValidationDescriptors[this.type].characterMaskingFormats[options.format];break}var validationDescriptor={};if(options.format&&Spry.Widget.ValidationTextField.ValidationDescriptors[this.type].formats){if(Spry.Widget.ValidationTextField.ValidationDescriptors[this.type].formats[options.format]){Spry.Widget.Utils.setOptions(validationDescriptor,Spry.Widget.ValidationTextField.ValidationDescriptors[this.type].formats[options.format])}}else{Spry.Widget.Utils.setOptions(validationDescriptor,Spry.Widget.ValidationTextField.ValidationDescriptors[this.type])}options.useCharacterMasking=Spry.Widget.Utils.firstValid(options.useCharacterMasking,false);options.hint=Spry.Widget.Utils.firstValid(options.hint,"");options.isRequired=Spry.Widget.Utils.firstValid(options.isRequired,true);options.additionalError=Spry.Widget.Utils.firstValid(options.additionalError,false);if(options.additionalError){options.additionalError=this.getElement(options.additionalError)}options.characterMasking=Spry.Widget.Utils.firstValid(options.characterMasking,validationDescriptor.characterMasking);options.regExpFilter=Spry.Widget.Utils.firstValid(options.regExpFilter,validationDescriptor.regExpFilter);options.pattern=Spry.Widget.Utils.firstValid(options.pattern,validationDescriptor.pattern);options.validation=Spry.Widget.Utils.firstValid(options.validation,validationDescriptor.validation);if(typeof options.validation=="string"){options.validation=eval(options.validation)}options.minValue=Spry.Widget.Utils.firstValid(options.minValue,validationDescriptor.minValue);options.maxValue=Spry.Widget.Utils.firstValid(options.maxValue,validationDescriptor.maxValue);options.minChars=Spry.Widget.Utils.firstValid(options.minChars,validationDescriptor.minChars);options.maxChars=Spry.Widget.Utils.firstValid(options.maxChars,validationDescriptor.maxChars);Spry.Widget.Utils.setOptions(this,options);Spry.Widget.Utils.setOptions(this.options,options)};Spry.Widget.ValidationTextField.prototype.destroy=function(){if(this.event_handlers){for(var b=0;bthis.maxChars){l=l|Spry.Widget.ValidationTextField.ERROR_CHARS_MAX;m=false}}if(!c&&this.validation&&m){var k=this.validation(j,this.options);if(false===k){l=l|Spry.Widget.ValidationTextField.ERROR_FORMAT;m=false}else{this.typedValue=k}}if(!c&&this.validation&&this.minValue!==null&&m){var h=this.validation(this.minValue.toString(),this.options);if(h!==false){if(this.typedValuee){l=l|Spry.Widget.ValidationTextField.ERROR_RANGE_MAX;m=false}}}if(this.useCharacterMasking&&c){this.revertState(f)}this.errors=l;this.fixedValue=j;this.flags.locked=false;return c};Spry.Widget.ValidationTextField.prototype.onChange=function(c){if(Spry.is.opera&&this.flags.operaRevertOnKeyUp){return true}if(Spry.is.ie&&c&&c.propertyName!="value"){return true}if(this.flags.drop){var a=this;setTimeout(function(){a.flags.drop=false;a.onChange(null)},0);return}if(this.flags.hintOn){return true}if(this.keyCode==8||this.keyCode==46){var b=this.doValidations(this.input.value,this.input.value);this.oldValue=this.input.value;if((b||this.errors)&&this.validateOn&Spry.Widget.ValidationTextField.ONCHANGE){var a=this;setTimeout(function(){a.validate()},0);return true}}var b=this.doValidations(this.input.value,this.oldValue);if((!b||this.errors)&&this.validateOn&Spry.Widget.ValidationTextField.ONCHANGE){var a=this;setTimeout(function(){a.validate()},0)}return true};Spry.Widget.ValidationTextField.prototype.onKeyUp=function(a){if(this.flags.operaRevertOnKeyUp){this.setValue(this.oldValue);Spry.Widget.Utils.stopEvent(a);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 a=this.doValidations(this.input.value,this.input.value);if(a){this.setValue(this.oldValue);this.selection.moveTo(this.selection.start,this.selection.start)}else{this.onChange()}}};Spry.Widget.ValidationTextField.prototype.compileDatePattern=function(){var d="";var f=[];var b=[];var e=[];var a=/^([mdy]+)([\.\-\/\\\s]+)([mdy]+)([\.\-\/\\\s]+)([mdy]+)$/i;var g=this.options.format.match(a);if(g!==null){for(var c=1;c0){this.range.setEndPoint("EndToEnd",e)}}else{if(this.element.nodeName=="INPUT"){this.range=this.element.ownerDocument.selection.createRange();this.range.move("character",-10000);this.start=this.range.moveStart("character",f);this.end=this.start+this.range.moveEnd("character",a-f)}}this.range.select()}else{this.start=f;try{this.element.selectionStart=f}catch(d){}this.end=a;try{this.element.selectionEnd=a}catch(d){}}this.ignore=true;this.update()};Spry.Widget.SelectionDescriptor.prototype.moveEnd=function(a){if(Spry.is.ie&&Spry.is.windows){this.range.moveEnd("character",a);this.range.select()}else{try{this.element.selectionEnd++}catch(b){}}this.update()};Spry.Widget.SelectionDescriptor.prototype.collapse=function(a){if(Spry.is.ie&&Spry.is.windows){this.range=this.element.ownerDocument.selection.createRange();this.range.collapse(a);this.range.select()}else{if(a){try{this.element.selectionEnd=this.element.selectionStart}catch(b){}}else{try{this.element.selectionStart=this.element.selectionEnd}catch(b){}}}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(f){var e=true;var d=true;var c=Spry.Widget.Form.onSubmitWidgetQueue;var a=c.length;for(var b=0;b>1;d+=d/c;for(var a=0;d>((this.punycode_constants.base-this.punycode_constants.tmin)*this.punycode_constants.tmax)/2;a+=this.punycode_constants.base){d/=this.punycode_constants.base-this.punycode_constants.tmin}return a+(this.punycode_constants.base-this.punycode_constants.tmin+1)*d/(d+this.punycode_constants.skew)};Spry.Widget.Utils.punycode_encode=function(w,c){var e=w.split("");w=[];for(var r=0;r0){f+=String.fromCharCode(this.punycode_constants.delimiter);o++}while(s=d&&w[p](this.punycode_constants.maxint-x)/(s+1)){return false}x+=(g-d)*(s+1);d=g;for(p=0;p=c){return false}z=l<=u?this.punycode_constants.tmin:l>=u+this.punycode_constants.tmax?this.punycode_constants.tmax:l-u;if(a