// SpryValidationConfirm.js - version 0.1 - Spry Pre-Release 1.6 // // 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 b=navigator.appName.toString();var up=navigator.platform.toString();var ua=navigator.userAgent.toString();this.mozilla=this.ie=this.opera=r=false;var re_opera=/Opera.([0-9\.]*)/i;var re_msie=/MSIE.([0-9\.]*)/i;var re_gecko=/gecko/i;var re_safari=/safari\/([\d\.]*)/i;if(ua.match(re_opera)){r=ua.match(re_opera);this.opera=true;this.version=parseFloat(r[1]);}else if(ua.match(re_msie)){r=ua.match(re_msie);this.ie=true;this.version=parseFloat(r[1]);}else if(ua.match(re_safari)){this.safari=true;this.version=1.4;}else if(ua.match(re_gecko)){var re_gecko_version=/rv:\s*([0-9\.]+)/i;r=ua.match(re_gecko_version);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.ValidationConfirm=function(element,firstInput,options) {options=Spry.Widget.Utils.firstValid(options,{});if(!this.isBrowserSupported()) return;if(this.init(element,firstInput,options)===false) return false;var validateOn=['submit'].concat(Spry.Widget.Utils.firstValid(this.options.validateOn,[]));validateOn=validateOn.join(",");this.validateOn=0;this.validateOn=this.validateOn|(validateOn.indexOf('submit')!=-1?Spry.Widget.ValidationConfirm.ONSUBMIT:0);this.validateOn=this.validateOn|(validateOn.indexOf('blur')!=-1?Spry.Widget.ValidationConfirm.ONBLUR:0);this.validateOn=this.validateOn|(validateOn.indexOf('change')!=-1?Spry.Widget.ValidationConfirm.ONCHANGE:0);if(Spry.Widget.ValidationConfirm.onloadDidFire) this.attachBehaviors();else Spry.Widget.ValidationConfirm.loadQueue.push(this);};Spry.Widget.ValidationConfirm.ONCHANGE=1;Spry.Widget.ValidationConfirm.ONBLUR=2;Spry.Widget.ValidationConfirm.ONSUBMIT=4;Spry.Widget.ValidationConfirm.prototype.init=function(element,firstInput,options) {options=Spry.Widget.Utils.firstValid(options,[]);this.options=[];this.element=this.getElement(element);if(!this.element) {return false;} else {if(this.element.nodeName.toUpperCase()=='INPUT'&&(typeof this.element.type=='undefined'||',RADIO,CHECKBOX,BUTTON,SUBMIT,IMAGE,'.indexOf(','+this.element.type.toUpperCase+',')==-1)) {this.input=this.element;} else {this.input=Spry.Widget.Utils.getFirstChildWithNodeNameAtAnyLevel(this.element,'INPUT');}} if(!this.input) {Spry.Widget.Utils.showError('Element '+element+' doesn\'t exists!');return false;} var elm=this.getElement(firstInput);this.firstInput=false;if(elm.nodeName.toUpperCase()!='INPUT') {this.firstInput=Spry.Widget.Utils.getFirstChildWithNodeNameAtAnyLevel(elm,'INPUT');} else if(typeof elm.type=='undefined'||',RADIO,CHECKBOX,BUTTON,SUBMIT,IMAGE,'.indexOf(','+elm.type.toUpperCase()+',')==-1) {this.firstInput=elm;} if(!this.firstInput) {Spry.Widget.Utils.showError('Element '+firstInput+' doesn\'t exists!');return false;} this.event_handlers=[];this.validClass="confirmValidState";this.focusClass="confirmFocusState";this.requiredClass="confirmRequiredState";this.invalidClass="confirmInvalidState";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);Spry.Widget.Utils.setOptions(this,options);Spry.Widget.Utils.setOptions(this.options,options);};Spry.Widget.ValidationConfirm.loadQueue=[];Spry.Widget.ValidationConfirm.onloadDidFire=false;Spry.Widget.ValidationConfirm.prototype.getElement=function(ele) {if(ele&&typeof ele=="string") ele=document.getElementById(ele);return ele;};Spry.Widget.ValidationConfirm.processLoadQueue=function(handler) {Spry.Widget.ValidationConfirm.onloadDidFire=true;var q=Spry.Widget.ValidationConfirm.loadQueue;var qlen=q.length;for(var i=0;i0) return;var handlers=this.event_handlers;if(this.input) {var self=this;this.input.setAttribute("AutoComplete","off");if(this.validateOn&Spry.Widget.ValidationConfirm.ONCHANGE) {var changeEvent=Spry.is.mozilla||Spry.is.opera||Spry.is.safari?"input":Spry.is.ie?"propertychange":"change";handlers.push([this.input,changeEvent,function(e){if(self.isDisabled())return true;return self.validate(e||event);}]);if(Spry.is.mozilla||Spry.is.safari) handlers.push([this.input,"dragdrop",function(e){if(self.isDisabled())return true;return self.validate(e);}]);else if(Spry.is.ie) handlers.push([this.input,"drop",function(e){if(self.isDisabled())return true;return self.validate(event);}]);} handlers.push([this.input,"blur",function(e){if(self.isDisabled())return true;return self.onBlur(e||event);}]);handlers.push([this.input,"focus",function(e){if(self.isDisabled())return true;return self.onFocus(e||event);}]);for(var i=0;i0&&this.input.value!=this.firstInput.value) {this.switchClassName(this.element,this.invalidClass);this.switchClassName(this.additionalError,this.invalidClass);return false;} this.switchClassName(this.element,this.validClass);this.switchClassName(this.additionalError,this.validClass);return true;};Spry.Widget.ValidationConfirm.prototype.onBlur=function(e) {this.removeClassName(this.element,this.focusClass);this.removeClassName(this.additionalError,this.focusClass);if(this.validateOn&Spry.Widget.ValidationConfirm.ONBLUR) this.validate(e);};Spry.Widget.ValidationConfirm.prototype.onFocus=function() {this.addClassName(this.element,this.focusClass);this.addClassName(this.additionalError,this.focusClass);};Spry.Widget.ValidationConfirm.prototype.switchClassName=function(ele,className) {var classes=[this.validClass,this.requiredClass,this.invalidClass];for(var i=0;i=5&&Spry.is.windows||Spry.is.mozilla&&Spry.is.v>=1.4||Spry.is.safari||Spry.is.opera&&Spry.is.v>=9;};Spry.Widget.ValidationConfirm.prototype.isDisabled=function() {return this.input&&(this.input.disabled||this.input.readOnly)||!this.input;};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(vform) {var isValid=true;var isElementValid=true;var q=Spry.Widget.Form.onSubmitWidgetQueue;var qlen=q.length;for(var i=0;i