﻿var Spry;if(!Spry)Spry={};if(!Spry.Widget)Spry.Widget={};Spry.Widget.ValidationCheckbox=function(b,c){this.init(b);Spry.Widget.Utils.setOptions(this,c);var a=["submit"].concat(this.validateOn||[]);a=a.join(",");this.validateOn=0|(a.indexOf("submit")!=-1?Spry.Widget.ValidationCheckbox.ONSUBMIT:0);this.validateOn=this.validateOn|(a.indexOf("blur")!=-1?Spry.Widget.ValidationCheckbox.ONBLUR:0);this.validateOn=this.validateOn|(a.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(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.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(){for(var a=0;a<this.event_handlers.length;a++)Spry.Widget.Utils.removeEventListener(this.event_handlers[a][0],this.event_handlers[a][1],this.event_handlers[a][2],false);try{delete this.element}catch(d){}for(var a=0;a<this.checkboxElements.length;a++)try{delete this.checkboxElements[a]}catch(d){}try{delete this.checkboxElements}catch(d){}try{delete this.form}catch(d){}try{delete this.event_handlers}catch(d){}var b=Spry.Widget.Form.onSubmitWidgetQueue,c=b.length;for(var a=0;a<c;a++)if(b[a]==this){b.splice(a,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(){Spry.Widget.ValidationCheckbox.onloadDidFire=true;var b=Spry.Widget.ValidationCheckbox.loadQueue,c=b.length;for(var a=0;a<c;a++)b[a].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.nodeName=="INPUT")this.checkboxElements=[this.element];else this.checkboxElements=this.getCheckboxes();if(this.checkboxElements){var b=this;this.event_handlers=[];var c=this.checkboxElements.length;for(var a=0;a<c;a++){this.event_handlers.push([this.checkboxElements[a],"focus",function(a){return b.onFocus(a)}]);this.event_handlers.push([this.checkboxElements[a],"blur",function(a){return b.onBlur(a)}]);if(this.validateOn&Spry.Widget.ValidationCheckbox.ONCHANGE)this.event_handlers.push([this.checkboxElements[a],"click",function(a){return b.onClick(a)}])}for(var a=0;a<this.event_handlers.length;a++)Spry.Widget.Utils.addEventListener(this.event_handlers[a][0],this.event_handlers[a][1],this.event_handlers[a][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(a){a=a||event;return Spry.Widget.Form.onSubmit(a,a.srcElement||a.currentTarget)};this.form.attachedSubmitHandler=true}if(!this.form.attachedResetHandler){Spry.Widget.Utils.addEventListener(this.form,"reset",function(a){a=a||event;return Spry.Widget.Form.onReset(a,a.srcElement||a.currentTarget)},false);this.form.attachedResetHandler=true}Spry.Widget.Form.onSubmitWidgetQueue.push(this)}}};Spry.Widget.ValidationCheckbox.prototype.getCheckboxes=function(){var c,a=this.element.getElementsByTagName("INPUT");if(a.length){c=[];var d=a.length;for(var b=0;b<d;b++)if(a[b].type=="checkbox")c.push(a[b]);return c}return null};Spry.Widget.ValidationCheckbox.prototype.addClassName=function(a,b){if(!a||!b||a.className&&a.className.search(new RegExp("\\b"+b+"\\b"))!=-1)return;a.className+=(a.className?" ":"")+b};Spry.Widget.ValidationCheckbox.prototype.removeClassName=function(a,b){if(!a||!b||a.className&&a.className.search(new RegExp("\\b"+b+"\\b"))==-1)return;a.className=a.className.replace(new RegExp("\\s*\\b"+b+"\\b","g"),"")};Spry.Widget.ValidationCheckbox.prototype.onFocus=function(a){var b=a.srcElement!=null?a.srcElement:a.target;if(b.disabled)return;this.hasFocus=true;this.addClassName(this.element,this.focusClass)};Spry.Widget.ValidationCheckbox.prototype.onBlur=function(a){var c=a.srcElement!=null?a.srcElement:a.target;if(c.disabled)return;this.hasFocus=false;var b=false;if(this.validateOn&Spry.Widget.ValidationCheckbox.ONBLUR)b=true;if(b)this.validate();this.removeClassName(this.element,this.focusClass)};Spry.Widget.ValidationCheckbox.prototype.onClick=function(a){var b=a.srcElement!=null?a.srcElement:a.target;if(b.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)};Spry.Widget.ValidationCheckbox.prototype.validate=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);var a=0;if(this.checkboxElements){var c=this.checkboxElements.length;for(var b=0;b<c;b++)if(!this.checkboxElements[b].disabled&&this.checkboxElements[b].checked)a++}if(this.isRequired)if(a==0){this.addClassName(this.element,this.requiredClass);return false}if(this.minSelections)if(this.minSelections>a){this.addClassName(this.element,this.minSelectionsClass);return false}if(this.maxSelections)if(this.maxSelections<a){this.addClassName(this.element,this.maxSelectionsClass);return false}this.addClassName(this.element,this.validClass);return true};Spry.Widget.ValidationCheckbox.prototype.isDisabled=function(){var b=true;if(this.checkboxElements){var c=this.checkboxElements.length;for(var a=0;a<c;a++)if(!this.checkboxElements[a].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(e){var c=true,d=true,b=Spry.Widget.Form.onSubmitWidgetQueue,f=b.length;for(var a=0;a<f;a++)if(!b[a].isDisabled()&&b[a].form==e){d=b[a].validate();c=d&&c}return c};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(e,c){var b=Spry.Widget.Form.onSubmitWidgetQueue,d=b.length;for(var a=0;a<d;a++)if(!b[a].isDisabled()&&b[a].form==c&&typeof b[a].reset=="function")b[a].reset();return true};if(!Spry.Widget.Form.destroy)Spry.Widget.Form.destroy=function(c){var b=Spry.Widget.Form.onSubmitWidgetQueue;for(var a=0;a<Spry.Widget.Form.onSubmitWidgetQueue.length;a++)if(b[a].form==c&&typeof b[a].destroy=="function"){b[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,a,c){if(!a)return;for(var b in a){if(c&&a[b]==undefined)continue;d[b]=a[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(b){if(typeof b=="string")b=document.getElementById(b);var c=Spry.Widget.Form.onSubmitWidgetQueue;for(var a=0;a<Spry.Widget.Form.onSubmitWidgetQueue.length;a++)if(typeof c[a].destroy=="function"&&Spry.Widget.Utils.contains(b,c[a].element)){c[a].destroy();a--}};Spry.Widget.Utils.contains=function(a,b){if(typeof a.contains=="object")return b&&a&&(a==b||a.contains(b));else{var c=b;while(c){if(c==a)return true;c=c.parentNode}return false}};Spry.Widget.Utils.addEventListener=function(a,b,d,c){try{if(a.addEventListener)a.addEventListener(b,d,c);else if(a.attachEvent)a.attachEvent("on"+b,d,c)}catch(e){}};Spry.Widget.Utils.removeEventListener=function(a,b,d,c){try{if(a.removeEventListener)a.removeEventListener(b,d,c);else if(a.detachEvent)a.detachEvent("on"+b,d,c)}catch(e){}}