/*
 * amTools
 * Copyright (c) 2008, AMteam vormgevers + programmeurs
 */
var amTools={version:"0.2"};amTools.Slideshow=new Class({Implements:[Events,Options],options:{container:"slideshow",elements:"img",wait:4000,transition:Fx.Transitions.Sine.easeInOut,duration:1000,autoStart:true,onStart:Class.empty,onChange:Class.empty,onStop:Class.empty},initialize:function(A){this.setOptions(A);this.container=$(this.options.container);if(this.container==null){return }this.container.setStyle("position","relative");this.elements=$$(this.container.getElements(this.options.elements));for(var B=1;B<this.elements.length;B++){this.elements[B].setStyles({position:"absolute",top:0,left:0,opacity:0})}this.index=0;this.intervalId=-1;if(this.options.autoStart){this.start()}},start:function(){if(this.elements.length>1&&this.intervalId<0){this.fireEvent("start");this.intervalId=this.next.bind(this).periodical(this.options.wait)}},stop:function(){if(this.intervalId>0){$clear(this.intervalId);this.intervalId=-1;this.fireEvent("stop")}},next:function(){if(this.elements.length<=1){return }var A=this.index;if(this.index>=(this.elements.length-1)){this.elements[(this.index=0)].setStyle("opacity",1);this.elements[A].set("tween",{duration:this.options.duration,transition:this.options.transition,link:"chain",onComplete:function(){this.fireEvent("change")}.bind(this)}).fade("out")}else{this.elements[++this.index].set("tween",{duration:this.options.duration,transition:this.options.transition,link:"chain",onComplete:function(){this.elements[A].setStyle("opacity",0);this.fireEvent("change")}.bind(this)}).fade("in")}},previous:function(){if(this.elements.length<=1){return }var A=this.index;if(this.index<=0){this.elements[(this.index=(this.elements.length-1))].set("tween",{duration:this.options.duration,transition:this.options.transition,link:"chain",onComplete:function(){this.elements[A].setStyle("opacity",0);this.fireEvent("change")}.bind(this)}).fade("in")}else{this.elements[--this.index].setStyle("opacity",1);this.elements[A].set("tween",{duration:this.options.duration,transition:this.options.transition,link:"chain",onComplete:function(){this.fireEvent("change")}.bind(this)}).fade("out")}}});amTools.StyledForm=new Class({Implements:[Options],options:{autoStart:true,styledInputClass:"styled",checkboxImageHeight:25,radioImageHeight:25},initialize:function(A){this.setOptions(A);if(this.options.autoStart){this.start()}},start:function(){$$("input").each(function(A){if((A.getProperty("type")!="checkbox"&&A.getProperty("type")!="radio")||A.hasClass(this.options.styledInputClass)){return }A.setStyles({position:"absolute",left:"-9999px"});A.addClass(this.options.styledInputClass);var B=new Element("span",{"class":A.getProperty("type"),styles:{"background-position":[0,((A.getProperty("checked"))?((A.getProperty("type")=="checkbox")?this.options.checkboxImageHeight:this.options.radioImageHeight)*-2+"px":0)]}});B.inject(A,"before");B.addEvent("mousedown",this.pushed.bind(B,[this.options.checkboxImageHeight,this.options.radioImageHeight]));B.addEvent("mouseup",this.check.bind(B,[this.options.checkboxImageHeight,this.options.radioImageHeight]));A.addEvent("change",this.clear.bind(A,[this.options.checkboxImageHeight,this.options.radioImageHeight]));document.addEvent("mouseup",this.clear.bind(A,[this.options.checkboxImageHeight,this.options.radioImageHeight]));A.addEvent("focus",function(C){B.setStyle("outline","1px dotted")});A.addEvent("blur",function(C){B.setStyle("outline",0)})},this)},pushed:function(B,C){var A=this.getNext();if(A.getProperty("checked")&&A.getProperty("type")=="checkbox"){this.setStyle("background-position",[0,(B*-3)+"px"])}else{if(A.getProperty("checked")&&A.getProperty("type")=="radio"){this.setStyle("background-position",[0,(C*-3)+"px"])}else{if(!A.getProperty("checked")&&A.getProperty("type")=="checkbox"){this.setStyle("background-position",[0,-B+"px"])}else{this.setStyle("background-position",[0,-C+"px"])}}}},check:function(A,B){inputElement=this.getNext();if(inputElement.getProperty("checked")&&inputElement.getProperty("type")=="checkbox"){inputElement.setProperty("checked",false);this.setStyle("background-position",[0,0])}else{if(inputElement.getProperty("type")=="checkbox"){this.setStyle("background-position",[0,(A*-2)+"px"])}else{this.setStyle("background-position",[0,(B*-2)+"px"]);inputElementGroup=inputElement.getProperty("name");$$("input").each(function(C){if(C.getProperty("name")==inputElementGroup&&C!=inputElement){C.getPrevious().setStyle("background-position",[0,0])}})}inputElement.setProperty("checked",true)}},clear:function(A,B){$$("input").each(function(C){if(C.getProperty("type")=="checkbox"&&C.getProperty("checked")&&C.hasClass("styled")){C.getPrevious().setStyle("background-position",[0,(A*-2)+"px"])}else{if(C.getProperty("type")=="checkbox"&&C.hasClass("styled")){C.getPrevious().setStyle("background-position",[0,0])}else{if(C.getProperty("type")=="radio"&&C.getProperty("checked")&&C.hasClass("styled")){C.getPrevious().setStyle("background-position",[0,(B*-2)+"px"])}else{if(C.getProperty("type")=="radio"&&C.hasClass("styled")){C.getPrevious().setStyle("background-position",[0,0])}}}}})}});amTools.ValidatedForm=new Class({Implements:[Events,Options],options:{validateOnBlur:true,errorClass:"error",addErrorClassToParent:false,emailRegex:/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/,postcodeRegex:/^[0-9]{4} ?[A-Za-z]{2}$/,numberRegex:/^[0-9]+$/,onFail:Class.empty,onSuccess:Class.empty},initialize:function(B,A){this.setOptions(A);this.form=$(B);this.elements=this.form.getElements(".required");if(this.options.validateOnBlur){this.elements.each(function(C){C.addEvent("blur",this.validate.pass(C,this))}.bind(this))}this.form.addEvent("submit",function(D){var C=new Event(D);if(this.validateForm()){this.fireEvent("success")}else{C.stop();this.fireEvent("fail",this.form,this.form.getElements(".required.error"))}}.bind(this))},validateForm:function(){var A=true;this.elements.each(function(B){if(!this.validate(B)){A=false}}.bind(this));return A},validate:function(A){var B=true;switch(A.get("type")){case"text":case"textarea":case"password":case"select-one":if(A.get("value")!=""){if(A.hasClass("email")){B=A.get("value").test(this.options.emailRegex)}else{if(A.hasClass("postcode")){B=A.get("value").test(this.options.postcodeRegex)}else{if(A.hasClass("number")){B=A.get("value").test(this.options.numberRegex)}}}}else{B=false}break;case"checkbox":B=A.get("checked");break;case"radio":B=$$(this.form[A.get("name")]).some(function(C){return C.get("checked")});break}if(B&&this.options.addErrorClassToParent){A.getParent().removeClass(this.options.errorClass)}else{if(B){A.removeClass(this.options.errorClass)}else{if(!B&&this.options.addErrorClassToParent){A.getParent().addClass(this.options.errorClass)}else{if(!B){A.addClass(this.options.errorClass)}}}}return B}});
