(function(a){getBubble=function(c){var d=c.attr("id")+c.data("jyxoBubble").bubbleClass;var b=a("#"+d);if(0===b.length){b=a("<div></div>").attr("id",d);a("body").append(b)}return b};jyxoBubbleAlign=function(c,b){var d=c.data("jyxoBubble");if(typeof b==="undefined"){b=getBubble(c)}var f;if("top"===d.vAlign){f=c.offset().top-b.outerHeight()}else{f=c.offset().top+c.outerHeight()}b.css("top",(f+d.vOffset)+"px");var e=c.offset().left;if("right"===d.hAlign){e+=c.outerWidth()}b.css("left",(e+d.hOffset)+"px")};a.fn.extend({jyxoBubble:function(b){var c={fade:0,hAlign:"left",hOffset:0,vAlign:"top",vOffset:0,bubbleClass:"jyxoBubble",onClose:function(){}};if(this.length){this.each(function(){$this=a(this);var d=$this.data("jyxoBubble")?a.extend({},$this.data("jyxoBubble"),b):a.extend({},c,b);$this.data("jyxoBubble",d);$bubble=getBubble($this).addClass($this.data("jyxoBubble").bubbleClass).css("display","none").html('<span class="topSpan"></span><a class="control" href="#">&nbsp;</a><span class="bottomSpan">&nbsp;</span>');$bubble.find("a").click(function(e){this.parentNode.style.display="none";d.onClose(e);return false})})}},jyxoBubbleShow:function(c,d,e){$this=a(this);if(typeof $this.data("jyxoBubble")==="undefined"){return}if(typeof e==="undefined"){e=$this.data("jyxoBubble").fade}a("."+$this.data("jyxoBubble").bubbleClass).animate({opacity:"hide"},"fast");var b=getBubble($this);if(""!==d){b.children(".topSpan").html(d);jyxoBubbleAlign($this,b);b.toggleClass("note","note"===c).animate({opacity:"show"},"slow");if(a(document).scrollTop()>b.position().top){a(document).scrollTop(b.position().top)}if(0<e){setTimeout(function(){b.animate({opacity:"hide"},"slow")},e*1000)}}},tagName:function(){try{return this[0].tagName.toLowerCase()}catch(b){return"undefined"}},jyxoFill:function(b){var c=null;if(typeof b!="undefined"){for(key in b){var d=b[key];var e=a(this);if(0<=key.indexOf("[")){c=a(document.getElementsByName(key).item(0))}else{c=e.find("*[name*="+key+"]")}c.each(function(){e=a(this);switch(e.tagName()){case"input":switch(e.attr("type")){case"text":case"button":case"submit":case"hidden":e.val(d);break;case"checkbox":if(true===d){e.attr("checked","checked")}else{e.removeAttr("checked")}break;case"radio":if(e.attr("value")==d){e.attr("checked","checked")}else{e.removeAttr("checked")}break;default:break}break;case"textarea":case"button":e.val(d);break;case"select":e.children().each(function(){e.removeAttr("selected")});e.find("[value="+d+"]").attr("selected","selected");break;default:break}})}}},jyxoSendForm:function(c,e){var d={cache:true,ajaxLoader:"ajaxLoader",debugMode:false,processData:false};c=a.extend(d,c);var b=a(this);b.prepend('<div id="'+c.ajaxLoader+'"></div>');return b.each(function(){result=a.ajax({url:b.attr("action"),type:b.attr("method"),dataType:"json",cache:c.cache,timeout:5000,data:b.serializeArray(),success:function(h){if(true===h.resend){b.unbind("submit").submit()}var i=h.formData;var g=h.messages;var f=h.callbackData;b.jyxoFill(i);b.jyxoMessenger(g);if(e&&g.Error==undefined){if(c.processData){e(h)}else{e(f)}}b.find("#"+c.ajaxLoader).remove();if(true===c.debugMode){console.log(h)}return true},error:function(f,h,g){b.unbind("submit").submit()},complete:function(f,g){b.find("#"+c.ajaxLoader).remove()}});if(true===c.debugMode){console.log(result)}})},jyxoMessenger:function(c){if(c!=undefined){var b="";var d=a(this);if(c.Error!=undefined){d.jyxoBubble({bubbleClass:"bubbleError"});message="";for(key in c.Error){message+="<p>"+c.Error[key]+"</p>"}b+=message;if(b!==""){d.jyxoBubbleShow("error",b)}}if(c.Success!=undefined){d.jyxoBubble({bubbleClass:"bubbleSuccess"});b="";message="";for(key in c.Success){message+="<p>"+c.Success[key]+"</p>"}b+=message;if(b!==""){d.jyxoBubbleShow("note",b,5)}}}}})})(jQuery);(function(e){function a(){}e.extend({jyxoFormHandler:a});a.hint=function(i){var h=e(i.target);if(h.val()===h.data("jyxoFormHintText")){h.val("")}i.stopPropagation()};a.display=function(j,i,h){$field=e(j.target);if("undefined"===typeof $field.data("jyxoBubble")){$field.jyxoBubble({bubbleClass:"bubbleError"})}$field.jyxoBubbleShow(h,i);j.stopPropagation()};a.toggle=function(j,i){var k=b(e(j.target)),h=!(""===k||false===k);i.siblings("[for="+i.attr("id")+"]").andSelf().toggle(h);j.stopPropagation()};a.validateVal=function(k,i,n){try{return a.validateVal.extended(k,i,n)}catch(l){switch(i){case"crossField":return a.validateVal(b(n[0]),n[1],n[2]);case"fieldEquals":return k==b(n);case"isBankAccountNumber":return null!==k.match(/^(?:(\d{1,6})-)?(\d{2,10})\/(\d{4})$/);case"isBirthNumber":return null!==k.match(/^(\d{6})[ \/]*(\d{3})(\d?)$/);case"isBirthYear":if(null===k.match(/^\d{4}$/)){return false}var j=new Date();return parseInt(k)<=j.getFullYear();case"isCompanyId":return null!==k.match(/^\d{8}$/);case"isCountryCode":return null!==k.match(/^\[A-Z]{2}$/);case"isDate":return null!==k.match(/^(\d{4})-(\d{2})-(\d{2})$/);case"isDateTime":return null!==k.match(/^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})$/);case"isDay":if(null===k.match(/^\d{1,2}$/)){return false}var h=parseInt(k);return 1<=h&&31>=h;case"isEducationLevel":return k==="ZS"||k==="SS"||k==="SSM"||k==="VS";case"isEmail":return null!==k.match(/^[-.+\w]{1,64}@[-+\w]+(\.[-+\w]+){0,252}\.[a-z]{2,6}$/i);case"isIban":return null!==k.replace(/\s+/,"").match(/^CZ\d{22}$/i);case"isInt":return null!==k.match(/^\d+$/);case"isIpV4":return null!==k.match(/^(\d{3}.){3}\d{3}$/);case"isIpV6":return null!==k.match(/^(\d{3}.){5}\d{3}$/);case"isMonth":if(null===k.match(/^\d{1,2}$/)){return false}var m=parseInt(k);return 1<=m&&12>=m;case"isSex":return"M"===k||"F"===k;case"isUrl":return null!==k.match(/^(http(s)?:\/\/)?[-\w]+(\.[-\w]+)*\.[a-z]{2,6}(:\d+)?(\/.*)?$/i);case"isZipCode":return null!==k.match(/^\d{3} ?\d{2}$/);case"lessThan":return k<n;case"notEmpty":return k!==0&&k!==""&&k!==false&&k!==null&&"undefined"!==typeof k;case"regex":return null!==k.match(n);case"stringLengthBetween":return k.length>=n[0]&&k.length<=n[1];case"stringLengthGreaterThan":return k.length>n;case"stringLengthLessThan":return k.length<n;default:throw new Error("Unknown validator.");return true}}};a.filterVal=function(i,h,k){try{return a.filterVal.extended(i,h,k)}catch(j){switch(h){case"trim":return e.trim(i);case"lowerCase":return i.toLowerCase();case"sanitizeUrl":if(""!==i&&null===i.match(/^(?:http|ftp)s?:\/\//i)){i="http://"+i}return i;default:return i}}};a.validateVal.extended=function(i,h,j){throw new Error("Unknown validator.")};a.filterVal.extended=function(i,h,j){throw new Error("Unknown filter.")};a.handleEvent=function(l){var k=e(l.target);chain=a.walkChain(k,l.type,l.data.filter,l.data.validator);for(var j in chain){var h=chain[j];switch(h[0]){case"hint":k.trigger("jyxoFormHint");break;case"display":k.trigger("jyxoFormDisplay",[h[2],h[3]]);break;case"toggle":k.trigger("jyxoFormToggle",[h[3]]);break;default:break}}};a.walkChain=function(u,o,n,l){var j=b(u),k=u.data("jyxoHandlerParams")[o],w=[],r=false,q=0,m=0,v=null;for(var s in k){var p=k[s];if("validate"===p[0]&&false!==v){v=true}if(false===r||"close"===p[0]){switch(p[0]){case"filter":u.val(n(u.val(),p[1],p[3]));j=b(u);break;case"validate":try{if(false===l(j,p[1],p[3])){w.push(["display",p[1],p[2],"error"]);return w}}catch(t){if("Unknown validator."!==t.message){throw t}}break;case"condition":m++;var h=false;try{h=l(j,p[1],p[3])}catch(t){if("Unknown validator."!==t.message){throw t}}if(false===h){r=true;q=m}break;case"close":if(m>0){if(m===q){r=false}m--}break;case"display":v=false;default:w.push(p);break}}}if(true===v){w.push(["display",null,"","note"])}return w};a.forgetArchived=function(o,j,n){if((document.cookie)&&(""!==document.cookie)){var m=document.cookie.split(";");var l="",p="",h=false;for(var k=0;k<m.length;k++){l=e.trim(m[k]);if(0===l.indexOf(j)){p=l.split("=")[0];e.cookie(p,null,{path:"/",domain:n});if(false===h){e("#"+o+" .cookieArchive").each(function(){e(this).val("")});h=true}}}}};validateAll=function(n){var j=e(n.target),h=j.data("jyxoFormFields"),k=j.data("jyxoFormOptions"),p=[];for(var l in h){var m=e(h[l]),o=a.walkChain(m,"blur",k.filter,k.validate).pop();if(("undefined"!==typeof o)&&o[0]==="display"&&o[3]==="error"){p.push(o[2])}}if(0<p.length){j.trigger("jyxoFormDisplay",["<span>"+p.join("</span><span>")+"</span>","error"]);n.stopImmediatePropagation();n.preventDefault();return false}return true};function c(l){var h="",k="";for(var j in l){if(0<j.indexOf("[")){var i=j.match(/^[^\[]+/);if(i[0]!==k){k=i[0];h+="[name^="+k+"], "}}else{h+="[name="+j+"], "}}return h.substr(0,h.length-2)}function b(h){var i=h.val();if(h.data("jyxoFormHintText")===i){return""}if("checkbox"===h.context.type){i=h.attr("checked")}return i}function d(k,l,h){var i=l[k.name];if("undefined"!==typeof i){e(k).data("jyxoHandlerParams",g(k,i));for(var j in i){e(k).bind(j,{validator:h.validate,filter:h.filter},a.handleEvent)}}}function g(l,k){for(var m in k){var j=k[m];for(var h in j){if("crossField"===j[h][1]){j[h][3][0]=f(l,j[h][3][0])}else{if("fieldEquals"===j[h][1]){j[h][3]=f(l,j[h][3])}else{if("hint"===j[h][0]){e(l).data("jyxoFormHintText",j[h][2])}else{if("toggle"===j[h][0]){if(j[h][3].match(/^\?i:/)){j[h][3]=f(l,j[h][3].substr(3),"id")}else{if(j[h][3].match(/^\?n:/)){j[h][3]=f(l,j[h][3].substr(3))}else{j[h][3]=e(j[h][3])}}e(l).trigger("jyxoFormToggle",[j[h][3]])}}}}}}return k}function f(j,h,k){if("undefined"===typeof k){k="name"}switch(k){case"id":if(0<j.name.indexOf("[")){var l=/\[(\d+)]/.exec(j.name);h+="_"+l.pop()}return e("#"+h);case"name":default:if(0<j.name.indexOf("[")){var i=j.name.replace(/\[([^\]]+)\]$/,"["+h+"]");return e(document.getElementsByName(i).item(0))}else{return e("[name="+h+"]")}}}e.fn.extend({jyxoFormUI:function(k,i){$form=e(this);var j={validate:a.validateVal,filter:a.filterVal,hintHandler:a.hint,displayHandler:a.display,toggleHandler:a.toggle};i=e.extend({},j,i);$form.bind("jyxoFormHint",i.hintHandler).bind("jyxoFormDisplay",i.displayHandler).bind("jyxoFormToggle",i.toggleHandler);var h=[];$form.submit(validateAll).data("jyxoFormOptions",i).find(c(k)).each(function(){h.push(this);d(this,k,i)});$form.data("jyxoFormFields",h);return $form}})})(jQuery);