var FormValidation={rClass:"",vClassPrefix:"",errorsMsg:"",rc:null,setup:function(a,b,d){this.rClass=a;this.vClassPrefix=b;this.errorsMsg=d;this.rc=new RegExp(a,"g")},validate:function(a){a=$(a);if(a!=null){for(var b=[],d=[],e=[],j=[],l=[],f=new Array("input","textarea"),k=new String,g=0;g<f.length;g++)for(var h=a.getElementsByTagName(f[g]),c=0;c<h.length;c++){k=new RegExp(this.vClassPrefix+"_([a-z_]+)","g");if(h[c].className.match(k)!=null){b[b.length]=h[c];k=new String(h[c].className.match(k));
d[d.length]=k.substr(k.indexOf("_")+1);e[e.length]=h[c].className.match(this.rc)!=null}}h=a.getElementsByTagName("label");for(c=0;c<h.length;c++)for(g=0;g<b.length;g++)if(h[c].htmlFor==b[g].id){j[g]=h[c].innerHTML.replace(/:/g,"");l[g]=h[c]}f=[];h=[];g={};for(c=0;c<b.length;c++)if(!b[c].disabled){k=b[c].value;if(d[c]=="empty"&&k=="")f[f.length]=this.makeError("empty",j[c],b[c],l[c]);else if(d[c]=="numeric"&&this.vNumeric(k,c,e[c]))f[f.length]=this.makeError("numeric",j[c],b[c],l[c]);else if(d[c]==
"integer"&&this.vInteger(k,c,e[c]))f[f.length]=this.makeError("integer",j[c],b[c]);else if(d[c]=="date"&&this.vDate(k,c,e[c]))f[f.length]=this.makeError("date",j[c],b[c],l[c]);else if(d[c]=="email"&&this.vEmail(k,c,e[c]))f[f.length]=this.makeError("email",j[c],b[c],l[c]);else if(d[c]=="empty_array")h[h.length]=b[c];else if(d[c]=="checked"){if(g[b[c].name]==null){g[b[c].name]=[];g[b[c].name+"_label"]=[]}g[b[c].name].push(b[c]);g[b[c].name+"_label"].push(j[c])}}if(h.length>0){b=false;for(c=0;c<h.length;c++)if(h[c].checked){b=
true;break}b||(f[f.length]=this.makeError("empty_array","",null,null))}for(var m in g)if(m.indexOf("label")==-1){b=false;for(c=0;c<g[m].length;c++)if(g[m][c].checked){b=true;break}b||(f[f.length]=this.makeError("checked","",null,null,g[m+"_label"].toString(", ")))}if(f.length>0){h=a.getElementsByTagName("button");for(c=0;c<h.length;c++)h[c].blur()}return f}},vNumeric:function(a,b,d){return d&&a==""||a!=""&&a.match(/^[\-]*\d+(\.\d+)*$/)==null},vInteger:function(a,b,d){return d&&a==""||a!=""&&a.match(/^[\-]*\d+$/)==
null},vEmail:function(a,b,d){return(d||a!="")&&!a.match(/^[-_\.a-zA-Z0-9]+@[-a-zA-Z0-9.]+\.[a-zA-Z]{2,4}$/g)},vDate:function(a,b,d){return(d||a!="")&&Calendar.encode(a)==null},makeError:function(a,b,d,e,j){return{item:b,error:this.errorsMsg[a],elem:d,label:e,suffix:j}}},ValidateForm=Class.create();
ValidateForm.prototype={formClass:"validate",initialize:function(){var a=new RegExp(this.formClass,"g"),b=$$("body")[0].getElementsByTagName("form");for(i=0;i<b.length;i++)b[i].className.match(a)!=null&&Event.observe(b[i],"submit",function(d){this.validate(d)}.bind(this))},validate:function(a){var b=Event.element(a);$$("#"+b.id+" label").each(function(d){d.removeClassName("red")});b=FormValidation.validate(b.id);if(b.length>0){Array.from(b).each(function(d){d.label!=null&&$(d.label).addClassName("red")});
a.stop();new ErrorPopUp(FormValidation.errorsMsg,b);return false}return true}};var PopUp=Class.create();
PopUp.prototype={message:null,content:null,hasOverlay:true,initialize:function(a,b){this.message=a;this.setContent(b)},setMessages:function(a){this.message=a},open:function(){this.removeNode();var a=$$("body")[0];if(this.hasOverlay){a.appendChild(Builder.node("div",{id:"ppoverlay"}));$("ppoverlay").setStyle({display:"none"})}var b=this.message.mainText!=null?new Array(Builder.node("p",this.message.mainText),this.content):this.content;a.appendChild(Builder.node("div",{id:"popup"},[Builder.node("h3",
this.message.title),Builder.node("div",b),Builder.node("div",{id:"close"},[Builder.node("a",{id:"popupclose",href:"#",title:this.message.closeTitle},this.message.closeTitle)])]));this.message.popClass&&$("popup").addClassName(this.message.popClass);$("popup").setStyle({display:"none"});$$("select","object","embed").each(function(d){d.style.visibility="hidden"});a=this.getPageSize();if(this.hasOverlay){$("ppoverlay").setStyle({width:a[0]+"px",height:a[1]+"px"});new Effect.Appear("ppoverlay",{duration:0.2,
from:0,to:0.3,queue:"end"})}a=this.getPosition(a);$("popup").setStyle({top:a[1]+"px",left:a[0]+"px"});new Effect.Appear("popup",{duration:0.05,queue:"end"});$("popupclose").observe("click",function(d){d.stop();this.close()}.bind(this));setTimeout(this.center.bind(this),100)},getPosition:function(a){var b=document.viewport.getScrollOffsets();return[parseInt(b[0]+a[0]/2-$("popup").getWidth()/2),parseInt(b[1]+document.viewport.getHeight()/10)]},setContent:function(a){this.content=Builder.node("div",
[a])},setContentText:function(a){this.content=Builder.node("div",a)},close:function(){$$("select","object","embed").each(function(a){a.style.visibility="visible"});this.removeNode()},removeNode:function(){var a=$("popup"),b=$("ppoverlay");a!=null&&a.parentNode.removeChild(a);b!=null&&this.hasOverlay&&b.parentNode.removeChild(b)},center:function(){var a=this.getPageSize(),b=document.viewport.getScrollOffsets();new Effect.Move($("popup"),{x:parseInt(b[0]+a[0]/2-$("popup").getWidth()/2),y:b[1]+document.viewport.getHeight()/
10,mode:"absolute",queue:"end",duration:0.2})},getPageSize:function(){var a,b;if(window.innerHeight&&window.scrollMaxY){a=window.innerWidth+window.scrollMaxX;b=window.innerHeight+window.scrollMaxY}else if(document.body.scrollHeight>document.body.offsetHeight){a=document.body.scrollWidth;b=document.body.scrollHeight}else{a=document.body.offsetWidth;b=document.body.offsetHeight}var d,e;if(self.innerHeight){d=document.documentElement.clientWidth?document.documentElement.clientWidth:self.innerWidth;e=
self.innerHeight}else if(document.documentElement&&document.documentElement.clientHeight){d=document.documentElement.clientWidth;e=document.documentElement.clientHeight}else if(document.body){d=document.body.clientWidth;e=document.body.clientHeight}pageHeight=b<e?e:b;pageWidth=a<d?a:d;return[pageWidth,pageHeight]},highlite:function(a){if(a.inp!=null){$(a.inp).setStyle({backgroundColor:!a.inp.hl?"yellow":"white"});a.inp.hl=!a.inp.hl}}};
var ErrorPopUp=function(a,b){this.message=a;this.setContent(b);this.open()};ErrorPopUp.prototype=new PopUp;ErrorPopUp.prototype.constructor=ErrorPopUp;
ErrorPopUp.prototype.setContent=function(a){this.content=Builder.node("ul");this.content.className="errors";for(var b=0;b<a.length;b++){var d=Builder.node("li");d.className="error";a[b].item!=""&&d.appendChild(Builder.node("b",a[b].item));d.appendChild(Builder._text(" "+a[b].error));a[b].suffix!=null&&a[b].suffix!=""&&d.appendChild(Builder._text(" "+a[b].suffix));this.content.appendChild(d);if(a[b].elem!=null){d.inp=a[b].elem;d.inp.hl=false;$(d).observe("mouseover",function(e){this.highlite(Event.element(e))}.bind(this));
$(d).observe("mouseout",function(e){this.highlite(Event.element(e))}.bind(this))}}};var InfoPopUp=function(a,b,d){this.message=a;this.itemID=d;this.setContent(b);this.open()};InfoPopUp.prototype=new PopUp;InfoPopUp.prototype.constructor=InfoPopUp;
InfoPopUp.prototype.setContent=function(a){this.content=Builder.node("ul",{className:"info"});for(var b=0;b<a.length;b++){var d=Builder.node("b",a[b].item);this.content.appendChild(Builder.node("li",d));d.inp=$(this.itemID+a[b].nr);if(d.inp!=null){d.inp.hl=false;$(d).observe("mouseover",function(e){this.highlite(Event.element(e))}.bind(this));$(d).observe("mouseout",function(e){this.highlite(Event.element(e))}.bind(this))}}};
var NoticePopUp=function(a,b){this.hasOverlay=false;this.message=a;this.setContent(b);this.open()};NoticePopUp.prototype=new PopUp;NoticePopUp.prototype.constructor=NoticePopUp;NoticePopUp.prototype.getPosition=function(a){var b=document.viewport.getScrollOffsets();return[parseInt(b[0]+a[0]/2-$("popup").getWidth()/2),b[1]+a[1]/2-$("popup").getHeight()]};
NoticePopUp.prototype.setContent=function(a){this.content=Builder.node("ul",{className:"notice"});for(var b=0;b<a.length;b++)this.content.appendChild(Builder.node("li",a[b]))};NoticePopUp.prototype.open=function(){PopUp.prototype.open.call(this);var a=this;self.setTimeout(function(){new Effect.Fade("popup",{afterFinish:function(){PopUp.prototype.close.call(a)}})},3E3)};
AjaxInfoPopUp=function(a,b){var d=this;d.message=a;new Ajax.Request(b,{onSuccess:function(e){if(e.responseText!=""){var j=Builder.node("div");j.innerHTML=e.responseText;d.setContent(j);d.open()}}})};AjaxInfoPopUp.prototype=new PopUp;AjaxInfoPopUp.prototype.constructor=AjaxInfoPopUp;
