var Spry;if(!Spry){Spry={}}if(!Spry.Widget){Spry.Widget={}}Spry.Widget.ValidationCheckbox=function(A,B){this.init(A);Spry.Widget.Utils.setOptions(this,B);var C=["submit"].concat(this.validateOn||[]);C=C.join(",");this.validateOn=0|(C.indexOf("submit")!=-1?Spry.Widget.ValidationCheckbox.ONSUBMIT:0);this.validateOn=this.validateOn|(C.indexOf("blur")!=-1?Spry.Widget.ValidationCheckbox.ONBLUR:0);this.validateOn=this.validateOn|(C.indexOf("change")!=-1?Spry.Widget.ValidationCheckbox.ONCHANGE:0);if(!isNaN(this.minSelections)){this.minSelections=(this.minSelections>0)?parseInt(this.minSelections,10):null}if(!isNaN(this.maxSelections)){this.maxSelections=(this.maxSelections>0)?parseInt(this.maxSelections,10):null}if(this.additionalError){this.additionalError=this.getElement(this.additionalError)}if(Spry.Widget.ValidationCheckbox.onloadDidFire){this.attachBehaviors()}else{Spry.Widget.ValidationCheckbox.loadQueue.push(this)}};Spry.Widget.ValidationCheckbox.ONCHANGE=1;Spry.Widget.ValidationCheckbox.ONBLUR=2;Spry.Widget.ValidationCheckbox.ONSUBMIT=4;Spry.Widget.ValidationCheckbox.prototype.init=function(A){this.element=this.getElement(A);this.checkboxElements=null;this.additionalError=false;this.form=null;this.event_handlers=[];this.hasFocus=false;this.requiredClass="checkboxRequiredState";this.minSelectionsClass="checkboxMinSelectionsState";this.maxSelectionsClass="checkboxMaxSelectionsState";this.focusClass="checkboxFocusState";this.validClass="checkboxValidState";this.isRequired=true;this.minSelections=null;this.maxSelections=null;this.validateOn=["submit"]};Spry.Widget.ValidationCheckbox.prototype.destroy=function(){if(this.event_handlers){for(var B=0;B<this.event_handlers.length;B++){Spry.Widget.Utils.removeEventListener(this.event_handlers[B][0],this.event_handlers[B][1],this.event_handlers[B][2],false)}}try{delete this.element}catch(C){}if(this.checkboxElements){for(var B=0;B<this.checkboxElements.length;B++){try{delete this.checkboxElements[B]}catch(C){}}}try{delete this.checkboxElements}catch(C){}try{delete this.form}catch(C){}try{delete this.event_handlers}catch(C){}var D=Spry.Widget.Form.onSubmitWidgetQueue;var A=D.length;for(var B=0;B<A;B++){if(D[B]==this){D.splice(B,1);break}}};Spry.Widget.ValidationCheckbox.onloadDidFire=false;Spry.Widget.ValidationCheckbox.loadQueue=[];Spry.Widget.ValidationCheckbox.prototype.getElement=function(A){if(A&&typeof A=="string"){return document.getElementById(A)}return A};Spry.Widget.ValidationCheckbox.processLoadQueue=function(C){Spry.Widget.ValidationCheckbox.onloadDidFire=true;var D=Spry.Widget.ValidationCheckbox.loadQueue;var A=D.length;for(var B=0;B<A;B++){D[B].attachBehaviors()}};Spry.Widget.ValidationCheckbox.addLoadListener=function(A){if(typeof window.addEventListener!="undefined"){window.addEventListener("load",A,false)}else{if(typeof document.addEventListener!="undefined"){document.addEventListener("load",A,false)}else{if(typeof window.attachEvent!="undefined"){window.attachEvent("onload",A)}}}};Spry.Widget.ValidationCheckbox.addLoadListener(Spry.Widget.ValidationCheckbox.processLoadQueue);Spry.Widget.ValidationCheckbox.addLoadListener(function(){Spry.Widget.Utils.addEventListener(window,"unload",Spry.Widget.Form.destroyAll,false)});Spry.Widget.ValidationCheckbox.prototype.attachBehaviors=function(){if(!this.element){return }if(this.element.nodeName=="INPUT"){this.checkboxElements=[this.element]}else{this.checkboxElements=this.getCheckboxes()}if(this.checkboxElements){var B=this;this.event_handlers=[];var A=this.checkboxElements.length;for(var C=0;C<A;C++){this.event_handlers.push([this.checkboxElements[C],"focus",function(D){return B.onFocus(D)}]);this.event_handlers.push([this.checkboxElements[C],"blur",function(D){return B.onBlur(D)}]);if(this.validateOn&Spry.Widget.ValidationCheckbox.ONCHANGE){this.event_handlers.push([this.checkboxElements[C],"click",function(D){return B.onClick(D)}])}}for(var C=0;C<this.event_handlers.length;C++){Spry.Widget.Utils.addEventListener(this.event_handlers[C][0],this.event_handlers[C][1],this.event_handlers[C][2],false)}this.form=Spry.Widget.Utils.getFirstParentWithNodeName(this.element,"FORM");if(this.form){if(!this.form.attachedSubmitHandler&&!this.form.onsubmit){this.form.onsubmit=function(D){D=D||event;return Spry.Widget.Form.onSubmit(D,D.srcElement||D.currentTarget)};this.form.attachedSubmitHandler=true}if(!this.form.attachedResetHandler){Spry.Widget.Utils.addEventListener(this.form,"reset",function(D){D=D||event;return Spry.Widget.Form.onReset(D,D.srcElement||D.currentTarget)},false);this.form.attachedResetHandler=true}Spry.Widget.Form.onSubmitWidgetQueue.push(this)}}};Spry.Widget.ValidationCheckbox.prototype.getCheckboxes=function(){var D;var C=this.element.getElementsByTagName("INPUT");if(C.length){D=[];var A=C.length;for(var B=0;B<A;B++){if(C[B].type=="checkbox"){D.push(C[B])}}return D}return null};Spry.Widget.ValidationCheckbox.prototype.addClassName=function(B,A){if(!B||!A||(B.className&&B.className.search(new RegExp("\\b"+A+"\\b"))!=-1)){return }B.className+=(B.className?" ":"")+A};Spry.Widget.ValidationCheckbox.prototype.removeClassName=function(B,A){if(!B||!A||(B.className&&B.className.search(new RegExp("\\b"+A+"\\b"))==-1)){return }B.className=B.className.replace(new RegExp("\\s*\\b"+A+"\\b","g"),"")};Spry.Widget.ValidationCheckbox.prototype.onFocus=function(B){var A=(B.srcElement!=null)?B.srcElement:B.target;if(A.disabled){return }this.hasFocus=true;this.addClassName(this.element,this.focusClass);this.addClassName(this.additionalError,this.focusClass)};Spry.Widget.ValidationCheckbox.prototype.onBlur=function(C){var B=(C.srcElement!=null)?C.srcElement:C.target;if(B.disabled){return }this.hasFocus=false;var A=false;if(this.validateOn&Spry.Widget.ValidationCheckbox.ONBLUR){A=true}if(A){this.validate()}this.removeClassName(this.element,this.focusClass);this.removeClassName(this.additionalError,this.focusClass)};Spry.Widget.ValidationCheckbox.prototype.onClick=function(B){var A=(B.srcElement!=null)?B.srcElement:B.target;if(A.disabled){return }this.validate()};Spry.Widget.ValidationCheckbox.prototype.reset=function(){this.removeClassName(this.element,this.validClass);this.removeClassName(this.element,this.requiredClass);this.removeClassName(this.element,this.minSelectionsClass);this.removeClassName(this.element,this.maxSelectionsClass);this.removeClassName(this.additionalError,this.validClass);this.removeClassName(this.additionalError,this.requiredClass);this.removeClassName(this.additionalError,this.minSelectionsClass);this.removeClassName(this.additionalError,this.maxSelectionsClass)};Spry.Widget.ValidationCheckbox.prototype.validate=function(){this.reset();var C=0;if(this.checkboxElements){var A=this.checkboxElements.length;for(var B=0;B<A;B++){if(!this.checkboxElements[B].disabled&&this.checkboxElements[B].checked){C++}}}if(this.isRequired){if(C==0){this.addClassName(this.element,this.requiredClass);this.addClassName(this.additionalError,this.requiredClass);return false}}if(this.minSelections){if(this.minSelections>C){this.addClassName(this.element,this.minSelectionsClass);this.addClassName(this.additionalError,this.minSelectionsClass);return false}}if(this.maxSelections){if(this.maxSelections<C){this.addClassName(this.element,this.maxSelectionsClass);this.addClassName(this.additionalError,this.maxSelectionsClass);return false}}this.addClassName(this.element,this.validClass);this.addClassName(this.additionalError,this.validClass);return true};Spry.Widget.ValidationCheckbox.prototype.isDisabled=function(){var B=true;if(this.checkboxElements){var A=this.checkboxElements.length;for(var C=0;C<A;C++){if(!this.checkboxElements[C].disabled){B=false;break}}}return B};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<A;B++){if(!C[B].isDisabled()&&C[B].form==F){D=C[B].validate();E=D&&E}}return E}}if(!Spry.Widget.Form.onSubmit){Spry.Widget.Form.onSubmit=function(B,A){if(Spry.Widget.Form.validate(A)==false){return false}return true}}if(!Spry.Widget.Form.onReset){Spry.Widget.Form.onReset=function(D,E){var C=Spry.Widget.Form.onSubmitWidgetQueue;var A=C.length;for(var B=0;B<A;B++){if(!C[B].isDisabled()&&C[B].form==E&&typeof (C[B].reset)=="function"){C[B].reset()}}return true}}if(!Spry.Widget.Form.destroy){Spry.Widget.Form.destroy=function(B){var C=Spry.Widget.Form.onSubmitWidgetQueue;for(var A=0;A<Spry.Widget.Form.onSubmitWidgetQueue.length;A++){if(C[A].form==B&&typeof (C[A].destroy)=="function"){C[A].destroy();A--}}}}if(!Spry.Widget.Form.destroyAll){Spry.Widget.Form.destroyAll=function(){var B=Spry.Widget.Form.onSubmitWidgetQueue;for(var A=0;A<Spry.Widget.Form.onSubmitWidgetQueue.length;A++){if(typeof (B[A].destroy)=="function"){B[A].destroy();A--}}}}if(!Spry.Widget.Utils){Spry.Widget.Utils={}}Spry.Widget.Utils.setOptions=function(D,C,A){if(!C){return }for(var B in C){if(A&&C[B]==undefined){continue}D[B]=C[B]}};Spry.Widget.Utils.getFirstParentWithNodeName=function(A,B){while(A.parentNode&&A.parentNode.nodeName.toLowerCase()!=B.toLowerCase()&&A.parentNode.nodeName!="BODY"){A=A.parentNode}if(A.parentNode&&A.parentNode.nodeName.toLowerCase()==B.toLowerCase()){return A.parentNode}else{return null}};Spry.Widget.Utils.destroyWidgets=function(A){if(typeof A=="string"){A=document.getElementById(A)}var C=Spry.Widget.Form.onSubmitWidgetQueue;for(var B=0;B<Spry.Widget.Form.onSubmitWidgetQueue.length;B++){if(typeof (C[B].destroy)=="function"&&Spry.Widget.Utils.contains(A,C[B].element)){C[B].destroy();B--}}};Spry.Widget.Utils.contains=function(B,C){if(typeof B.contains=="object"){return C&&B&&(B==C||B.contains(C))}else{var A=C;while(A){if(A==B){return true}A=A.parentNode}return false}};Spry.Widget.Utils.addEventListener=function(C,B,D,A){try{if(C.addEventListener){C.addEventListener(B,D,A)}else{if(C.attachEvent){C.attachEvent("on"+B,D,A)}}}catch(E){}};Spry.Widget.Utils.removeEventListener=function(C,B,D,A){try{if(C.removeEventListener){C.removeEventListener(B,D,A)}else{if(C.detachEvent){C.detachEvent("on"+B,D,A)}}}catch(E){}};