var FormControlWrapper=new Class({initialize:function(a){if(a.get("type")=="checkbox"){a.addEvent("click",this.on_blur.bind(this))}else{a.addEvent("focus",this.on_focus.bind(this));a.addEvent("blur",this.on_blur.bind(this))}this.form_control=a},on_focus:$empty,on_blur:$empty});var AbstractFormControlValidatorWrapper=new Class({Extends:FormControlWrapper,Implements:[Events],validators:[],validate:function(b){b=b||false;var a=[],c;if(this.form_control.get("type")!="checkbox"||this.form_control.get("checked")){c=this.form_control.get("value")}else{c=""}this.validators.each(function(d){if(d.constructor==FormRemoteValidator||d.constructor==FormRemoteLoginValidator){d.is_valid(c,function(e){if(!e){a.push(d.error_msg)}}.bind(this))}else{if(!d.is_valid(c)){a.push(d.error_msg)}}}.bind(this));if(!b&&a.length>0){this.fireEvent("invalid")}return a},create_validation_info:$empty,register_validator:function(a){this.validators.push(a)},register_validators:function(a){if(!(a instanceof Array)){this.register_validator(a)}a.each(function(b){this.register_validator(b)}.bind(this))}});var FormControlValidationWrapper=new Class({Extends:AbstractFormControlValidatorWrapper,hint_box:null,get_hint_box:function(a){return new Element("div",{"class":"hint error"})},on_focus:function(){if(this.hint_box){this.hint_box.destroy()}},on_blur:function(){var a=this.validate();if(a.length>0){this.create_validation_info(a)}},create_validation_info:function(a){if(this.hint_box){this.hint_box.destroy()}this.hint_box=this.get_hint_box();var b=new Element("ul");$each(a.flatten(),function(c){b.grab(new Element("li",{html:c.wbr_entities(10)}))});this.hint_box.grab(b);this.inject_hint_box()},inject_hint_box:function(){this.hint_box.inject(this.form_control,"before")}});var FormControlLoginWrapper=new Class({Extends:AbstractFormControlValidatorWrapper,filters:[],register_filter:function(a){this.filters.push(a)},register_filters:function(a){if(!(a instanceof Array)){this.register_filter(a)}a.each(function(b){this.register_filter(b)}.bind(this))},filter:function(){this.filters.each(function(a){this.form_control.set("value",a.run(this.form_control.get("value")))}.bind(this))},get_field_id:function(){return this.form_control.get("id")},get_error_list:function(){return this.get_warning_box().getElements("p:not(:empty)")},get_field_row:function(){return $(this.get_field_id()+"_div_id")},on_blur:function(){this.filter();var a=this.validate();if(a.length>0){this.create_validation_info(a)}else{this.clear_validation_info()}},create_validation_info:function(a){var b=a.shift();this.show_error_icon(b);this.show_error_msg(b)},clear_validation_info:function(){this.show_ok_icon();this.set_title_on_ico("");this.hide_error_msg()},get_warning_box:function(a){return this.warning_box},set_warning_box:function(a){this.warning_box=a},hide_warning_box:function(){this.get_warning_box().addClass("hidden")},show_warning_box:function(){this.get_warning_box().removeClass("hidden")},show_error_msg:function(a){this.get_field_row().addClass("row_with_error");this.get_field_row().getElement("label").addClass("error");if(this.get_warning_box()&&!this.get_warning_box().hasClass("static")){this.show_warning_box();this.set_error_msg(a);this.get_warning_box().getElements("p").hide();this.get_error_list()[0].show()}},hide_error_msg:function(){this.get_field_row().removeClass("row_with_error");this.get_field_row().getElement("label").removeClass("error");if(this.get_warning_box()&&!this.get_warning_box().hasClass("static")){this.get_warning_box().getElements("p").hide();this.set_error_msg("");if(this.get_error_list().length==0){this.hide_warning_box()}else{this.get_error_list()[0].show()}}},set_error_msg:function(a){var b=$(this.get_field_id()+"_message_content_id");if(b){b.innerHTML=a}},show_ok_icon:function(){$(this.get_field_id()+"_error_ico_id").removeClass("hidden");$(this.get_field_id()+"_error_ico_id").removeClass("form_valid_ico_error");$(this.get_field_id()+"_error_ico_id").addClass("form_valid_ico_ok");this.set_title_on_ico("")},show_error_icon:function(a){$(this.get_field_id()+"_error_ico_id").removeClass("hidden");$(this.get_field_id()+"_error_ico_id").removeClass("form_valid_ico_ok");$(this.get_field_id()+"_error_ico_id").addClass("form_valid_ico_error");this.set_title_on_ico(a)},set_title_on_ico:function(a){if($(this.get_field_id()+"_error_ico_id").title==""||a==""){$(this.get_field_id()+"_error_ico_id").title=a.replace(/<[^>]*>/g," ").replace(/[ ]+/g," ")}}});var FormControlLoginConcatWrapper=new Class({Extends:FormControlLoginWrapper,form_control:[],field_group_id:null,join_with:"",get_field_id:function(){return this.field_group_id},initialize:function(c,a,b){this.field_group_id=a;if(b){this.join_with=b}c.each(function(d){if(d.get("type")=="checkbox"){d.addEvent("click",this.on_blur.bind(this))}else{d.addEvent("blur",this.on_blur.bind(this))}this.form_control.push(d)}.bind(this))},validate:function(b){var a=[],c=[];this.form_control.each(function(d){c.push(d.get("value"))});c=c.join(this.join_with);this.validators.each(function(d){if(!d.is_valid(c)){a.push(d.error_msg)}});if(!b&&a.length>0){this.fireEvent("invalid")}return a}});var FormValidatorAbstract=new Class({error_msg:"",initialize:function(a){if(a){this.error_msg=a}},is_valid:function(a){return true}});var FormNotEmptyValidator=new Class({Extends:FormValidatorAbstract,error_msg:"nie może być puste - proszę uzupełnij",is_valid:function(a){return a!==""}});var FormRegExValidator=new Class({Extends:FormValidatorAbstract,error_msg:"nie może być puste - proszę uzupełnij",initialize:function(b,a){this.regex=b;this.parent(a)},is_valid:function(a){return this.regex.test(a)}});var FormNameValidator=new Class({Extends:FormRegExValidator,error_msg:"musi zawierać dwie litery i nie może zawierać nawiasów kwadratowych",initialize:function(a){this.parent(/^[^\[\]]*[a-zA-ZąćęłńóśźżĄĆĘŁŃÓŚŹŻ][^\[\]]*[a-zA-ZąćęłńóśźżĄĆĘŁŃÓŚŹŻ][^\[\]]*$/,a)}});var FormDateValidator=new Class({Extends:FormValidatorAbstract,error_msg:"Data jest niepoprawna",format:"%x",initialize:function(b,a){if(b){this.format=b}this.parent(a)},is_valid:function(a){a=a.replace(/(\b)([\d])(\b)/g,"$10$2$3");var b=new Date(a).format(this.format);return new Date(a).format(this.format)==a}});var FormEqualValidator=new Class({Extends:FormValidatorAbstract,initialize:function(b,a){this.field=b;this.parent(a)},is_valid:function(a){return a==this.field.get("value")}});var FormRemoteValidator=new Class({Extends:FormValidatorAbstract,Implements:Events,initialize:function(c,a,b){this.uri=c;this.variable=a;this.parent(b)},is_valid:function(b,c){var a={};if(b==""){return false}a[this.variable]=b;new nk.Request.JSON({url:this.uri,data:a,method:"post",async:false,on_success:function(d){this.validate(d,c)}.bind(this)}).send()},validate:function(a,b){b=b||$empty;if(a.valid){b(true);return true}else{b(false);this.fireEvent("failed");return false}}});var FormRemoteLoginValidator=new Class({Extends:FormRemoteValidator,validate:function(a,b){if(a.hint){this.error_msg="Taki login już istnieje. Proponowany login: "+a.hint}this.parent(a,b)}});var FormInputLengthValidator=new Class({Extends:FormNotEmptyValidator,min:null,max:null,initialize:function(c,a,b){this.min=c;this.max=a;this.error_msg="liczba znaków musi być pomiędzy "+c+" a "+a;this.parent(b)},is_valid:function(b){if(!this.parent(b)){return this.min==0}b=b.length;var a=true;if(null!==this.min&&bthis.max){a=false}return a}});var FormControlHint=new Class({Extends:FormControlWrapper,initialize:function(b,a){this.msg=a;this.parent(b)},get_hint_box:function(){return new Element("div",{"class":"hint"})},create_hint:function(){this.hint_box=this.get_hint_box();this.hint_box.grab(new Element("p",{text:this.msg}));this.hint_box.inject(this.form_control,"before")},on_focus:function(){this.create_hint()},on_blur:function(){if(this.hint_box){this.hint_box.destroy()}}});var AbstractFormFilter=new Class({run:function(a){return a}});var FormTrimFilter=new Class({Extends:AbstractFormFilter,run:function(a){return a.trim()}});